Difference between revisions of "Iterate State"

From PyMOLWiki
Jump to navigation Jump to search
(space argument)
Line 1: Line 1:
 
 
Iterate state can be used to extract position data from an object or selection.  The expression can use the variables x, y, and z which are the position of the current atom.  One common usage is to extract the positions as a python list to alter then write back to the molecule using alter_state.
 
Iterate state can be used to extract position data from an object or selection.  The expression can use the variables x, y, and z which are the position of the current atom.  One common usage is to extract the positions as a python list to alter then write back to the molecule using alter_state.
  
Line 18: Line 17:
 
</source>
 
</source>
 
==From Python==
 
==From Python==
To get a list of positions (import stored first)
+
To get a list of positions
 
<source lang="python">
 
<source lang="python">
 +
# either with global stored object
 
from pymol import stored
 
from pymol import stored
 
 
stored.pos = []
 
stored.pos = []
 
cmd.iterate_state(1, 'all', 'stored.pos.append((x,y,z))')
 
cmd.iterate_state(1, 'all', 'stored.pos.append((x,y,z))')
 +
 +
# or with local object, passed with space argument
 +
pos = []
 +
cmd.iterate_state(1, 'all', 'pos.append((x,y,z))', space={'pos': pos})
 
</source>
 
</source>
  

Revision as of 12:20, 31 March 2011

Iterate state can be used to extract position data from an object or selection. The expression can use the variables x, y, and z which are the position of the current atom. One common usage is to extract the positions as a python list to alter then write back to the molecule using alter_state.

USAGE

iterate_state state,(selection),expression

EXAMPLES

From PyMOL command line

To get the sum of x coordinates:

stored.sum_x = 0.0
iterate_state 1,(all),stored.sum_x = stored.sum_x + x

To get a list of the positions in a selection

stored.pos = []
iterate_state 1, (all), stored.pos.append((x,y,z))

From Python

To get a list of positions

# either with global stored object
from pymol import stored
stored.pos = []
cmd.iterate_state(1, 'all', 'stored.pos.append((x,y,z))')

# or with local object, passed with space argument
pos = []
cmd.iterate_state(1, 'all', 'pos.append((x,y,z))', space={'pos': pos})

SEE ALSO

iterate, alter, Alter_State