[Chimera-users] Using sym command to generate icosahedral cage

Yen-Ting Lai yentingl at gmail.com
Tue Feb 25 21:58:15 PST 2014

Hi Tom,

Cool! Thanks for saving me a week of time. I really appreciate it! I'll
give it a thorough test and will let you know how it works.


On Tue, Feb 25, 2014 at 6:57 PM, Tom Goddard <goddard at sonic.net> wrote:

> Hi Yen,
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
> <https://plato.cgl.ucsf.edu/trac/chimera/raw-attachment/wiki/Scripts/changeaxes.py>
>   Here is a Python script that will change your atom coordinates to rotate
> a given vector to the z axis, and another given vector into the yz plane
> with y > 0, and a given point is moved to 0,0,0. The vectors and point are
> specified each as 3 numbers separated by commas.  For example, Chimera
> command
> runscript ~/Desktop/changeaxes.py    #1   .7,.2,0    0,-.5,.5    16,7,-5
> will change the coordinates of atoms to make the new z-axis in direction
> .7,.2,0 from the original coords, with 0,-.5,.5 from original coords
> pointing in the new yz plane with y>0 and the original point 16,7,-5 will
> move to the origin 0,0,0.  Notice the first two vectors need not have unit
> length.  They will be normalized by the code.  This should allow you to
> specify your 5-fold symmetry axis as z and put the 2-fold symmetry axis in
> the yz plane.  I only did one test so if the results look wrong, tell me.
>  The script is attached and is also available on the Chimera Python scripts
> web page, called changeaxes.py
> http://plato.cgl.ucsf.edu/trac/chimera/wiki/Scripts
> I hope this lets you take vacation for a week!
>   Tom
> On Feb 25, 2014, at 4:11 PM, Yen-Ting Lai wrote:
> Hi Tom,
> Thanks a lot for the instructions. Your procedure to dock the pentamer and
> dimer to the icosahedral cage is very straight forward. I wish I asked
> before I implemented mine. My current procedure (written in Perl and
> Python, plus a little bit of Chimera command script) is more cumbersome (I
> am not trained as a programmer), but it seems able to spit out some
> plausible designs. Let's assume I have a design that has perfect geometry
> (the two axes intersected at a correct, precise angle). So all I need to do
> now is to orient the two symmetry axes to one of the canonical orientation
> (n25, for example).
> My plan to do this will be:
> first, move the point where the two axes intersected (this is also the
> center of the whole cage) to the origin
> second, calculate the cross product of the 5-fold axis of the designed
> monomer and the z-axis, this will be the rotation axis to align the 5-fold
> axis to z-axis.
> then the dot product of the 5-fold axis and the z-axis will be calculated
> to derive the angle needs to be rotated to align 5-fold axis to z-axis.
> After these steps, I'll need to align a 2-fold axis to the y-axis, this
> 2-fold axis, however is not the 2-fold of the monomer that I am working on.
> As can be see in many of the axes relations in icosahedron (one here<http://chem.rutgers.edu/~lawson/pointsuite0.7/html/index.html>),
> the 2-fold axis to be oriented can be derived from the known 5-fold and
> 2-fold axes of the monomers.
> Finally, I can use the z-axis as the rotation angle and align the target
> 2-fold axis to the y-axis.
> Once these are done, I'll use the sym command to generate the complete
> cage.
> I estimate these will take me about a week to do. I'll give update when I
> manage to do so, or when I get stuck.
> Thanks again!
> Yen
> On Tue, Feb 25, 2014 at 10:40 AM, Tom Goddard wrote:
>> Hi Yen,
>>   That's neat.  Here are some ideas about how to build an icosahedral
>> model from a fusion protein of a protein A that likes to form pentamers
>> with another protein B that likes to form dimers.  An icosahedron has 12
>> 5-fold symmetry axes and 30 2-fold symmetry axes.  So 60 monomers of the A
>> protein to form the pentamers, and 60 monomers of the B protein to make the
>> dimers.  So joining one A monomer to one B monomer looks promising.  The
>> trick to making the icosahedral model though seems to be that the pentamer
>> 5-fold symmetry axis and a dimer 2-fold symmetry axis in an icosahedron
>> have a precise relative orientation to one another, both axes passing
>> through the center of the icosahedron, and a certain angle between them.
>>  So if first you make a fusion PDB model then try to make an icosahedron,
>> it is unlikely you are going to get both the native pentamers and dimers
>> unless the fusion combines the two monomers in exactly the right relative
>> orientation.  So some of the problem seems to be how to get the two in the
>> right relative orientation.
>>   So here is how I would do it in Chimera.  The basic plan would be to
>> make an icoshedral cage with one atom at each vertex.  Use that to align a
>> pentamer crystal structure of protein A to one pentamer of the cage and use
>> the sym command to copy it so I have 12 pentamers in an icosahedral
>> arrangement.  Then do the same with a dimer crystal structure of protein B
>> with its 2-fold axis aligned to a 2-fold axis of the cage and use sym to
>> duplicate it.  So now I have the pentamer and dimer proteins in an
>> icosahedral arrangement.  But there are 4 adjustable parameters in the
>> previous description.  First I can radially move the pentamers and I can
>> radially move the dimers from the center of the cage (2 parameters).  If I
>> place the pentamers and dimers at too small a radius then the molecules
>> clash with each other.  If I place them at too large a radius then the
>> dimers and pentamers don't even touch each other.  Also I can rotate a
>> pentamer about its 5-fold axis (and all other pentamers rotated by same
>> amount) by any angle.  And likewise I can rotate a dimer about its 2-fold
>> axis.  Those are the other 2 parameters.  By using the sym command auto
>> update option I can do radial motions and rotations with Chimera commands
>> (move, turn) and see how the whole icosahedral arrangement changes.  What I
>> would be looking for is parameters that put the an A monomer (from a
>> pentamer) close to a B monomer (from a dimer) so that I could join the two
>> by a linker in the fusion protein.  Then I could save that A monomer and B
>> monomer in the correct relative positions and build a linker (maybe with
>> Chimera Build Structure tool and energy minimization) to join them.
>>   Here are some of the details of the above procedure.  I'm going to just
>> sketch them because it would be an extremely long email to explain every
>> detail.  To make an icosahedral cage I'd use the "shape icosahedron"
>> command (e.g. "shape icos divisions 1 mesh true radius 100").  That makes a
>> surface which is not usable for aligning PDB models, so I'd convert it to a
>> fake molecule with atoms at the icosahedron vertices with the "meshmol"
>> command (e.g. "meshmol #0 2").  To align a pentamer PDB model to it with
>> chains A,B,C,D,E I'd select 5 cage atoms (in counter-clockwise order) using
>> ctrl-click and shift-ctrl-click then use a command like "match #1:5.A-E at CAsel" to align the CA atom of residue 5 of each monomer to one cage atom.
>>  Aligning a dimer is slightly trickier.  Each dimer axis passes through an
>> icosahedral cage edge.  I'd use the vertices of two triangles joined at
>> that edge and match those to 4 atoms in the dimers (2 equivalent atoms in
>> each monomer).  Now it would really simplify model building if my crystal
>> structure pentamer had symmetry axis on z and passed through 0,0,0.  But
>> the x-ray coordinates won't have that.  So after I do the above alignment
>> to a cage with the 5-fold axis pointing directly out of the screen I'd
>> resave the PDB pentamer (File / Save PDB..., option Save relative to "cage
>> model").  Likewise I'd save a copy of the dimer with its 2-fold axis along
>> z and passing through the origin.  This going to help alot when it comes to
>> wanting to adjust the radial position and rotation of these in the
>> icosahedron.  Now I can use the sym command to make icoshedral symmetry
>> copies of the pentamer and use it again for the dimer.  But this makes way
>> too many copies, 60 copies of the pentamer and 60 of the dimer because it
>> doesn't understand that I already have the 5-fold symmetry monomers.  The
>> easy solution is delete all but one monomer of the pentamer ("delete
>> #1:.B-E") then use the sym command.  Same with the dimer.  Now assuming you
>> built this model with the pentamer and dimer models having symmetry axes
>> along z and through the origin you can easily move them with the move and
>> turn commands.  For example if model #3 is the pentamer monomer used to
>> make sym copies (with auto update enabled), then do "move z 15.5 model #3
>> coordinateSystem #3" or "turn z 45 model #3 coord #3 center 0,0,0".
>>   Check out the Chimera command documentation for details of the needed
>> command.  The above procedure requires many steps, would take me an hour or
>> two, and will be harder if you are not familiar with the command options
>> you'll need.
>>   If you still really would like to have a command that simply takes a
>> model and orients it using z-axis and y-axis vectors that you specify (3
>> numbers each) I can write a simple Python script that does that.
>>   Good luck!
>> Tom
>> On Feb 24, 2014, at 8:33 PM, Yen-Ting Lai  wrote:
>> Hi Tom,
>> Thanks for the advice. Yes, I am working on a not very common case. In my
>> lab, we are designing protein molecules that can assemble into cages (Science
>> 2012, 336(6085) p1129<https://www.sciencemag.org/content/336/6085/1129.short>).
>> This method was used successfully to generate tetrahedral cages and now I
>> am trying to make icosahedral cages. At the design stage, we fuse in
>> silico a natural C2 protein dimer (taken from PDB) to a natural C5 protein
>> pentamer (also from PDB) with a long helix linker. In this way a fusion
>> molecule with both 5-fold and 2-fold symmetries can be generated. However,
>> such model won't be oriented in any specific ways that can be used with the
>> sym command. One way to fix this is to write a python script to align the
>> 5-fold axis of the fusion molecule to the z-axis and then align the 2-fold
>> axis (not of the molecule, need to be derived) to the y-axis. Then the sym
>> command can be used by specifying n25 as the orientation. I am just
>> wondering if there's any quick way of doing this.
>> Yen
>> On Mon, Feb 24, 2014 at 6:10 PM, Tom Goddard wrote:
>>> Hi Yen,
>>> There is no simple way to specify a coordinate frame in Chimera using
>>> vectors (although it is easy in Python).  For symmetries with a single
>>> symmetry axis like cyclic symmetry you can specify the "axis" keyword and a
>>> vector (3 comma-separated numbers) to the sym command and it will use that
>>> as the symmetry axis.  This will work for icosahedral symmetry but only
>>> allows you to reorient the z axis of one of the standard orientations.  The
>>> coordinateSystem option to the sym command lets you use the axes of another
>>> model for the symmetry.  But there is no Chimera command to specify the
>>> coordinate axes of one model as vectors relative to the coordinate system
>>> of another model.
>>> You are asking for something pretty exotic.  If you explain more about
>>> your problem (how you get this coordinate system as vectors) maybe I'll
>>> have and idea for how to make the symmetry work.  For instance the Chimera
>>> matrixget can read vector coordinate frames from a file and maybe that
>>> could be used in your situation.
>>>         Tom
>>> On Feb 21, 2014, at 4:49 PM, Yen-Ting Lai wrote:
>>> > Hi,
>>> >
>>> > I noticed that the sym command can be used to generate icosahedral
>>> symmetry, but it requires that the molecule to be oriented in specific ways
>>> (222, 2n5, n25, ...), which requires aligning the symmetry axes to the X, Y
>>> or Z axes. I am wondering if there is a way to specify the symmetries axes
>>> by vectors (instead of aligning them to the three principal axes) and then
>>> use sym command to generate the whole icosahedral cage?
>>> >
>>> > Yen
>>> >
>>> > _______________________________________________
>>> > Chimera-users mailing list
>>> > Chimera-users at cgl.ucsf.edu
>>> > http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://plato.cgl.ucsf.edu/pipermail/chimera-users/attachments/20140225/6d0a73c1/attachment.html>

More information about the Chimera-users mailing list