[Chimera-users] Script

Eric Pettersen pett at cgl.ucsf.edu
Thu Aug 20 16:02:45 PDT 2009


On Aug 20, 2009, at 11:23 AM, Damien Larivière wrote:

> Hi Eric and Elaine,
>
> Thank you very much for your answers !
>
> I was blocked in fact by the "cd command" that does not work on my  
> machine for opening a file. I reported the bug this morning.

I will be looking into that.

> So, I have used Eric's suggestions and it works very well.
>
> I am not a python programmer (but I know Matlab well enough). So in  
> Chimera I would like to open successive pdb files (dock000i.pdb with  
> i = 1 to 20) and perform some actions on each one and then close  
> each session that are previously saved in a Chimera session. The  
> loop "for" in Matlab starts with "for i = 1:20" then the block of  
> actions and ends with "end". What's about in Python programming ?

As Elaine mentioned, if you need to do looping you will need to resort  
to Python.  There is a function in Chimera named runCommand which  
allows you to execute Chimera commands in Python, so that way you  
don't have to spend a lot of time figuring out the equivalent Python  
functions.  This lets us write your script pretty easily in Python:

> I suggest the following but I know it can't work:
>
> for i = 1 to 20
>   open C:\Users\damien\Fondation\LifeExplorer\3D models\FtsZ_ring 
> \Bond_Set\Docking_Hex\Results_190809\dock\dock000i.pdb
>   color orange red :38-227.A
>   color blue :228-356.A
>   color magenta :203-227.A
>   color green :261-271.A
>   color green :297-307.A
>   save C:\Users\damien\Fondation\LifeExplorer\3D models\FtsZ_ring 
> \Bond_Set\Docking_Hex\Results_190809\dock\dock000i.py
>   close session
> end

from chimera import runCommand as rc
for i in range(1, 21):
	rc(r"open C:\Users\damien\Fondation\LifeExplorer\3D models\FtsZ_ring 
\Bond_Set\Docking_Hex\Results_190809\dock\dock%04d.pdb" % i)
	rc("color orange red :38-227.A")
	rc("color blue :228-356.A")
	rc("color magenta :203-227.A")
	rc("color green :261-271.A")
	rc("color green :297-307.A")
	rc(r"save C:\Users\damien\Fondation\LifeExplorer\3D models\FtsZ_ring 
\Bond_Set\Docking_Hex\Results_190809\dock\dock%04d.pdb" % i)
	rc("close session")

The script is really pretty self-explanatory except for a couple of  
tricky things.  One is that the quoted strings that contained  
backslashes needed to be preceded by an 'r' (marking them as a "raw"  
string) to prevent Python from doing special backslash processing on  
the string.  The other is getting the zero-padded version of 'i' into  
the open and save commands.  This is accomplished with the special  
text %04d which means replace that text with a zero-padded 4-digit  
decimal integer.  The "% i" after the string indicates that the  
variable 'i' should be used in the text replacement.

Good luck! :-)

--Eric

	Eric Pettersen
	UCSF Computer Graphics Lab





More information about the Chimera-users mailing list