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

Tom Goddard goddard at sonic.net
Tue Feb 25 18:57:52 PST 2014

```Hi Yen,
​​​​​​​​​​​​​​
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), 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 CA sel" 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). 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/9dba2200/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: changeaxes.py
Type: text/x-python-script
Size: 1274 bytes
Desc: not available
URL: <http://plato.cgl.ucsf.edu/pipermail/chimera-users/attachments/20140225/9dba2200/attachment-0001.bin>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://plato.cgl.ucsf.edu/pipermail/chimera-users/attachments/20140225/9dba2200/attachment-0003.html>
```