[chimera-dev] printing "zone" search

Eric Pettersen pett at cgl.ucsf.edu
Fri Dec 14 23:16:02 PST 2007


Hi Ryan,
	The difference is that when you print a list, the residues in the list  
are shown with repr().  When you print a residue directly, it is shown  
with str().  Quoting the Python Tutorial, the difference between str()  
and repr() is:

"The str() function is meant to return representations of values which  
are fairly human-readable, while repr() is meant to generate  
representations which can be read by the interpreter..."

	Since there is no representation of a Residue object that can be  
directly read by the interpreter, you get the output you saw when  
printing the list.
	The result of str() when you directly print the residue is controlled  
by the "Atomspec display style" preference in the General preferences  
category (Favorites->Preferences).  It seems you have that preference  
set to "command-line specifier".  If you change it to "simple" instead  
you will get output like "LYS 12.A" etc.  Alternatively you could use  
the chimeraLabel function, e.g.:

	print chimera.misc.chimeraLabel(r, style="simple")

	Programmer documentation for Chimera is considerably less complete  
than user documentation.  My best advice is to read through some of the  
Programmer's Examples  
(http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/Examples/ 
index.html) and look through the Programmer's FAQ  
(http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/faq.html).  If  
you know that some Chimera tool does something similar to what you want  
then browse through its source code.  If you don't know Python that  
well you might want to work through the Python Tutorial if you have  
time (http://www.python.org/doc/current/tut/tut.html).  And feel free  
to ask questions; we're happy to help.

--Eric

On Dec 14, 2007, at 4:55 PM, Ryan wrote:

> Hi Eric, thanks for your help.  I'm getting closer to achieving the  
> results i'd like.
>
> So i've been able to properly select the residues within a specified  
> radius of my ligand, but am a little confused as to how Chimera  
> handles the selection list.  If i try:
>
>   print chimera.selection.currentResidues()
>
> i get a list like this:
>
>> [<_chimera.Residue object at 0x578d2020>, <_chimera.Residue object at  
>> 0x578cbfb0>, ... ]
>
> but if i try:
>
>   for x in chimera.selection.currentResidues():
>     print x
>
> i get output that is much closer to what i'm looking for:
>
>> #0:499
>> #0:496
>> ...
>
> What is the reason for the difference between these two forms of  
> output that seem to be accessing the same list?  Also, is there a way  
> i can get more detailed output with residue names and numbers, such as  
> ['#0:TYR499','#0:TRP496',...]?
>
> Sorry if these questions are answered elsewhere, but i could not find  
> the answers online.  Is there a document out there that can teach me  
> how to better master the Chimera Python modules for scripting?  I'm no  
> Python expert -- i've so far only been learning things as i need them.  
>  Thanks again,
>
> ryan
>




More information about the Chimera-dev mailing list