From: Ashar Malik (asharjm_at_gmail.com)
Date: Tue Mar 20 2018 - 12:15:10 CDT

So I did a quick test with the matrix you have provided. It turns out that
the matrix you have provided is supposed to give the result you are
getting.

So the first time you multiply it, it will generate a transformation ds1
and the second time it will take you back to the parent structure (almost).
It doesn't recover the exact structure but it is quite close.

It is very likely that the program that generated this transformation
matrix did this on purpose (or it just happened by chance???) so the
operation would become order free (this is my thought and might be
completely wrong). Meaning it didn't matter which structure you applied the
matrix to, you would get the other structure. So e.g. if you had applied it
to the initial conformation you obtain the final one and applying it to the
final would return the initial.

If you want the parent structure to undergo a certain transformation and
for all subsequent iterations to be replicas of that - you should perhaps
compute the transformation that does that (which the current one doesn't).

However, I think that is not what you want to do. Having a quick skim of
the paper attached, they applied the transformation to a structure just
once. It appears (i think) that they used different conformers 1 selected
from each of the clusters and applied the transformation once so that it
comes to a position next to the dimer (i think).

You however are applying the same transformation twice? Why?

On Wed, Mar 21, 2018 at 4:17 AM, Peter Mawanga <
peter.mawanga.lagos_at_gmail.com> wrote:

> Hello Ashar
>
> Thanks for the quick revert. I am first doing rotation along three Euler
> angles (denoted by 3 x 3 matrix excluding the 4th row and column) and then
> applying the translation along xyz axes (4th column entries). Please find
> the matrix below.
>
> -8.260116e-01 -3.044969e-01 -4.743274e-01 5.280182e+01
> -3.042386e-01 -4.675523e-01 8.299601e-01 8.201990e+00
> -4.744932e-01 8.298653e-01 2.935639e-01 1.421723e+01
> 0.000000e+00 0.000000e+00 0.000000e+00 1.000000e+00
>
> The structure is a small peptide (20 residues long) used as a test. I got
> the transformation matrix by comparing the initial and final coordinates
> obtained from a docking server.
>
> Yes, I am still trying to perform the same operation i.e. do multiple
> transformations. I have attached a representative image below that denotes
> my objective.
>
>
> On Tue, Mar 20, 2018 at 8:30 PM, Ashar Malik <asharjm_at_gmail.com> wrote:
>
>> Your transformation matrix was calculated for a certain angle of
>> rotation. Right? What is that angle?
>> If the angle was say 180 degrees than 2 rotations will bring the
>> structure back to its starting point.
>>
>> What is the structure that you are working with? Is it a protein?
>> something symmetric?
>>
>> Are you still trying to do the same thing as before? By before I mean
>> when you question was originally answered?
>>
>> On Wed, Mar 21, 2018 at 3:29 AM, Peter Mawanga <
>> peter.mawanga.lagos_at_gmail.com> wrote:
>>
>>> Hello VMD users
>>>
>>> I want to apply a 4*4 Quaternion Transformation Matrix "M" to a set of
>>> PDB coordinates to get propagating structures.
>>>
>>> Upon applying the matrix M successively to the PDB coordinates, I don't
>>> get propagating structures. But instead get back to the starting
>>> coordinates after second successive transformation.
>>>
>>> The first transformation works well and gives me a dataset "ds2".
>>> However, upon applying the transformation matrix M to ds2, I get back to
>>> the original dataset "ds1", instead of a distinct dataset "ds3".
>>>
>>> Is there any way of escaping this? Please check the text and link given
>>> below:
>>>
>>> "Then we consecutively docked to each of the dimers additional copies of
>>> the centroid (one at a time) with docking rotation and translation
>>> parameters, as were used in the initial docking complex configuration
>>> selected by the Hex program, to extend the dimers. This procedure used
>>> three-dimensional (3D) transformation matrices that were preliminarily
>>> calculated for each of the starting dimers."
>>>
>>> https://content.iospress.com/download/journal-of-alzheimers-
>>> disease/jad131589?id=journal-of-alzheimers-disease%2Fjad131589
>>>
>>>
>>> Forwarded conversation
>>> Subject: vmd-l: Writing all transformed coordinates into single file
>>> ------------------------
>>>
>>> From: Peter Mawanga <peter.mawanga.lagos_at_gmail.com>
>>> Date: Thu, Mar 15, 2018 at 12:53 AM
>>> To: Vmd l <vmd-l_at_ks.uiuc.edu>
>>>
>>>
>>> Dear VMD users
>>>
>>> I am trying to apply a transformation matrix successively to a set of
>>> pdb coordinates and save the coordinates after each transformation into a
>>> single pdb file. I have been able to write the coordinates separately to
>>> multiple files though. My code (attempt) is given below:
>>>
>>> set sel [atomselect top all]
>>> set matrix {<4 * 4 transformation matrix>}
>>> set n {10}
>>>
>>> for {set i 0} {$i < $n} {incr i} {
>>> animate write pdb $i.pdb
>>> $sel move $matrix
>>> $sel update
>>> }
>>>
>>> $sel delete
>>>
>>> The "beg <first frame> end <last frame>" could not be applied in this
>>> case, since only one frame is involved. Kindly let me know your suggestions.
>>>
>>> --
>>> Cheers
>>> Peter
>>>
>>> ----------
>>> From: Vermaas, Joshua <Joshua.Vermaas_at_nrel.gov>
>>> Date: Thu, Mar 15, 2018 at 2:21 AM
>>> To: Peter Mawanga <peter.mawanga.lagos_at_gmail.com>, Vmd l <
>>> vmd-l_at_ks.uiuc.edu>
>>>
>>>
>>> Hi Peter,
>>>
>>> If I understand this correctly, you start from one molecule loaded with
>>> a single frame, apply a single transformation matrix n times, and end up
>>> with n+1 total frames written out to some file. If so, you just need to
>>> call "animate dup" at the appropriate time, making your script look like
>>> this:
>>>
>>>
>>> set sel [atomselect top all]
>>> set matrix {<4 * 4 transformation matrix>}
>>> set n {10}
>>>
>>> for {set i 1} {$i <= $n} {incr i} {
>>> animate dup frame [expr {$i-1}] top
>>> $sel frame $i
>>> $sel move $matrix
>>> }
>>> animate write pdb $i.pdb
>>> $sel delete
>>>
>>>
>>> The other (slower) alternative is to load your initial pdb multiple
>>> times until you have as many frames as you need, and then apply your
>>> transformation successively.
>>>
>>> -Josh
>>>
>>> ----------
>>> From: Peter Mawanga <peter.mawanga.lagos_at_gmail.com>
>>> Date: Thu, Mar 15, 2018 at 6:05 PM
>>> To: "Vermaas, Joshua" <Joshua.Vermaas_at_nrel.gov>
>>> Cc: Vmd l <vmd-l_at_ks.uiuc.edu>
>>>
>>>
>>> Hello Josh
>>>
>>> Thanks a lot! Yes what you have written is the case. I had never used
>>> "dup" before. The above command works except:
>>>
>>> animate dup frame [expr {$i-1}] top
>>>
>>> Needs to be replaced with:
>>>
>>> animate dup frame [expr {$i-1}] <molID>
>>>
>>> I then replaced all the "END" keywords in the output PDB file with
>>> "TER"; as I want to view all of the transformations together.
>>>
>>> --
>>> Cheers
>>> Peter
>>>
>>>
>>>
>>>
>>> --
>>> Cheers
>>> Peter
>>>
>>
>>
>>
>> --
>> Best,
>> /A
>>
>
>
>
> --
> Cheers
> Peter
>

-- 
Best,
/A