[Chimera-users] place fragment (again)

Elaine Meng meng at cgl.ucsf.edu
Tue May 4 12:20:48 PDT 2010

As a non-programmer, I would probably take a different approach, but  
there are several steps:

(a) use Build Structure (under Tools... Structure Editing), Modify  
Atom tab, to build out farther from the "stump" where you want to  
attach the fragment.  Let's call the first structure "frag1" and the  
fragment you want to attach "frag2." What you build onto frag1 should  
be similar to the part of frag2 that will be attached, because it will  
be used to match frag2 into the proper location.

(b) open the fragment as a separate model, use the "match" command to  
superimpose the corresponding atoms from frag2 onto those in frag1.   
This should give you the correct bond angles (those angles measured  
for three atoms).  Don't worry about the bond length or the torsion  
angles (those measured on four atoms), they can be fixed up later.

(c) use the "combine" command (or copy/combine from the Model Panel)  
to make frag1 and frag2 into a single model

(d) either save as PDB, then text-edit the PDB file to remove the  
extra frag1 atoms, or delete the extra atoms in Chimera before saving  
the PDB file

(e) re-open the PDB file and use Build Structure to add the bond and  
to modify it to the desired length.  Use Adjust Torsions (under  
Tools... Structure Editing) as needed to fix the torsion angles.

In the future, we hope to include more control over fragment  
attachment in the Build Structure tool, so you wouldn't have to do all  
this stuff, but it is not available yet.
Elaine C. Meng, Ph.D.
UCSF Computer Graphics Lab (Chimera team) and Babbitt Lab
Department of Pharmaceutical Chemistry
University of California, San Francisco

On May 4, 2010, at 11:58 AM, Eric Pettersen wrote:

> On May 4, 2010, at 7:44 AM, Elisabeth Ortega wrote:
>> Dear all,
>> We are trying to place a fragment in an exact position. We created a
>> fragment with tetrahedral symmetry and we are trying to link an  
>> atom of
>> other molecule at 2.00 A of the central atom of the new fragment and
>> making a certain angle (120 degrees for example) with one of the
>> substituents to get the correct orientation of the new fragment.
>> Has anybody an idea that how can we do that?
> Hi Elisabeth,
> 	I think you'll find that you've under-defined the positioning -- I  
> think you'll need another angle and a dihedral at least to uniquely  
> position the fragment, but nonetheless I can provide some code to  
> get you pointed in the right direction.  First, of course, you would  
> use placeFragment() to get your fragment to some (arbitrary) initial  
> position.  The function will return a Residue that contains your  
> fragment's atoms.  From this you can find the central atom, etc.  So  
> let's say you've found the relevant atoms for positioning and you  
> have these variables:
> fca = central fragment atom
> fsa = fragment substituent atom (for angle positioning)
> oa = atom from other atom (for distance)
> r = fragment residue
> --- start code ---
> # make fca-oa distance 2.0 [assumes fragment in same model as other  
> molecule]
> dv = fca.coord() - oa.coord()
> dv.length = 2.0 - dv.length
> for a in r.atoms:
> 	a.setCoord(a.coord() + dv)
> # make fsa-fca-oa angle 120
> from chimera import cross, angle, Point, Xform
> fscrd, fccrd, ocrd = [a.coord() for a in (fsa, fca, oa)]
> axis = cross(fscrd-fccrd, fccrd-ocrd) # axis the rotation will be  
> around
> delta = 120.0 - angle(fscrd, fccrd, ocrd)
> v = fccrd - Point(0.0, 0.0, 0.0) # rotation is about origin, so move  
> center atom there
> trans1 = Xform.translation(v) # translation to origin
> v.negate()
> trans2 = Xform.translation(v) # translation back from origin
> trans1.multiply(Xform.rotation(axis, delta))
> trans1.multiply(trans2)
> for a in r.atoms:
> 	a.setCoord(trans1.apply(a.coord()))
> --- end code ---
> 	If your initial positioning of the fragment places the center atom  
> in the proper direction from the other molecule atom you may be able  
> to get away with only one angle (may still need a dihedral though).
> 	I am working on a function for bonding molecules together that  
> would have been helpful here but it isn't done yet (the partially- 
> completed function is bind() which you can look at in BuildStructure/ 
> __init__.py).  Also, I cc'ed chimera-dev on this and redirected  
> replies there since this is pretty programming intensive.  Good luck  
> and don't hesitate to ask more questions.
> --Eric
>                         Eric Pettersen
>                         UCSF Computer Graphics Lab
>                         http://www.cgl.ucsf.edu
> _______________________________________________
> Chimera-users mailing list
> Chimera-users at cgl.ucsf.edu
> http://www.cgl.ucsf.edu/mailman/listinfo/chimera-users

More information about the Chimera-users mailing list