[Chimera-users] weighted distance

Eric Pettersen pett at cgl.ucsf.edu
Wed May 19 14:07:03 PDT 2010


Hi Bala,

On May 18, 2010, at 2:04 AM, Bala subramanian wrote:

> Dear Eric and Elaine,
>
> Thank you so much for your inputs. I could implement the 'weighted  
> distance' representation. I have certain queries. I would appreciate  
> your inputs for the same.
>
> 1) When i type help(object) in chimera's python shell, it shows the  
> help message, is there any to way to make the help information to be  
> displayed in a separate window. I tried in config setting but i  
> couldnt make it.

I don't know of any way to make help() output go elsewhere.

> 2) Is there any way to invoke chimera within normal python  
> interpreter. I am able to do this for pymol. But i dnt know if i can  
> do the same with chimera. I tried to set PYTHONPATH, but it vain.
>
> [cbala at RAMANA ~]$ python
> Python 2.5.2 (r252:60911, Sep 30 2008, 15:41:38)
> [GCC 4.3.2 20080917 (Red Hat 4.3.2-4)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import pymol

Francesco's reply seemed like the right approach.

> 3) In the following code, i am collecting Cbeta atoms from two  
> groups of residues and calculating the cb-cb distance. If instead of  
> Cbeta, i have to calculate the side chain COM-COM (center of mass)  
> distance between two groups of residues, how can i do it or which  
> module should i use.

The general approach I would use is to:
3a) gather the residues' atoms
3b) screen out all hydrogens (since it will be tricky to eliminate  
only main-chain hydrogens due to possible variant naming schemes)
3c) screen out main-chain heavy atoms
3d) compute center of mass

If one of the groups of residues was named 'rg1', then something like  
this:

atoms = [a for r in rg1 for a in r]
heavys = [a for a in atoms if a.element.number > 1]
sides = [a for a in heavys if a.name not in ['C', 'CA', 'N', 'O',  
'OXT']]
from chimera import Point
com = Point([a.xformCoord() for a in sides], [a.element.mass for a in  
sides])

If you had computed 'com1' and 'com2', then the distance would be:
com1.distance(com2)

> 4)What is the syntax to change the color of pseudobonds ?

You assign a Color object to the pseudobond's 'color' attribute.  If  
you know the colors' red, green, blue, and alpha (opacity) values  
(each in the range 0-1), you could get a Color object with:

from chimera import MaterialColor
color = MaterialColor(r, g, b, a)

If you know the color name you'd like to use, then:

from chimera.colorTable import getColorByName
color = getColorByName("spring green")

>
> I am pasting the script below so that it may be useful to someone  
> who wants to do a similar thing.
>
> >>> import chimera
> >>> from StructMeasure.DistMonitor import *
>
> >>> model=chimera.openModels.open('trial.pdb')
> >>> res=model[0].residues
> >>> don_atom=[];acp_atom=[]
>
> #collecting CB atoms of donor and acceptor residues
>
> >>> for x in res:
>     if x.type in ['ARG','GLN']: don_atom.append(x.atomsMap['CB'][0])
>     elif x.type=='GLU': acp_atom.append(x.atomsMap['CB'][0])
>     else: continue
>
> #open the distance weight data
>
> >>> weight={}
> >>> for line in open('rad.dat'):
>     line=line.split()
>     weight[float(line[0])]=line[1]
>
> >>> b=[]
> #pseudo bond list
>
> >>> for v1 in don_atom:
>                for v2 in acp_atom:  
> b.append(distanceMonitor.newPseudoBond(v1,v2))
>
> #changing pseudo bond features
> >>> for pb in b:
>                pb.drawMode=1
>                chi=round(pb.length())
>                if chi in weight: pb.radius=float(weight[chi])
>
>
> Thanks,
> Bala
>
> On Mon, May 10, 2010 at 8:07 PM, Eric Pettersen <pett at cgl.ucsf.edu>  
> wrote:
> Oops.  The module name is "StructMeasure", not "StructureMeasure",  
> so the correct line of Python would be:
>
> from StructMeasure.DistMonitor import distanceMonitor
>
> --Eric
>
>
> On May 10, 2010, at 3:36 AM, Bala subramanian wrote:
>
>> Dear Elaine and Eric,
>> Thanks for the inputs. I started the chimera interface and tried to  
>> use the StructureMeasure module using the IDLE that is present in  
>> chimera but it shows me import Error. I dnt understand why. I am  
>> using chimera 1.5 alpha version 29904. Do i need to set some path  
>> to use the module.
>>
>> >>> from StructureMeasure import *
>> Traceback (most recent call last):
>>   File "<pyshell#8>", line 1, in <module>
>>     from StructureMeasure import *
>> ImportError: No module named StructureMeasure
>>
>>
>> Bala
>>
>> On Wed, May 5, 2010 at 8:37 PM, Eric Pettersen <pett at cgl.ucsf.edu>  
>> wrote:
>> On May 5, 2010, at 10:28 AM, Elaine Meng wrote:
>>
>>> With Chimera commands, you can create a distance monitor and set  
>>> its stick thickness, color, etc.:
>>> open 1zik
>>> alias pair1 #0:22.a at oe2:25 at ne
>>> dist pair1
>>> setattr p drawMode 1 pair1
>>> setattr p radius .05 pair1
>>> setattr p color hot pink pair1
>>> setattr p label " " pair1
>>>
>>> However, it sounds like python will be necessary to conditionally  
>>> set radius or color depending on the value of the distance.
>>
>> A little more info on this possibility.  You can get the distance- 
>> monitor pseudobond group in Chimera with:
>>
>> from StructureMeasure.DistMonitor import distanceMonitor
>>
>> and run through the distance-monitor pseudobonds with:
>>
>> for pb in distanceMonitor.pseudoBonds:
>> 	...do something that sets pb.radius based on pb.length()...
>>
>> --Eric
>>
>>                         Eric Pettersen
>>                         UCSF Computer Graphics Lab
>>                         http://www.cgl.ucsf.edu
>>
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://plato.cgl.ucsf.edu/pipermail/chimera-users/attachments/20100519/ab626fb1/attachment.html>


More information about the Chimera-users mailing list