Difference between revisions of "ListSelection2"

From PyMOLWiki
Jump to: navigation, search
(small script to list the content of pymol selections)
 
m (small code update)
Line 5: Line 5:
 
* account for different chains/objects
 
* account for different chains/objects
 
* produce a screen/printed output
 
* produce a screen/printed output
 +
  
 
= Usage =
 
= Usage =
Line 10: Line 11:
 
listselection selection, [output=N/S/P, [HOH=Y/N ]]
 
listselection selection, [output=N/S/P, [HOH=Y/N ]]
 
</source>
 
</source>
 +
where:
 +
* '''selection''' can be any existing or newly-defined selection
 +
* '''output''' controls if the list is hidden (default), printed on screen (S) or saved in a file (P)
 +
* '''HOH''' (default Y) allows to exclude (N) water residues from the list
 +
 +
 +
= Examples =
 +
<source lang="python">
 +
PyMOL>listselection 1efa, output=P
 +
Residues in '1efa': 1043
 +
Results saved in listselection_1efa.txt
 +
</source>
 +
 +
 +
<source lang="python">
 +
PyMOL>listselection sele, output=S, HOH=N
 +
Residues in 'sele, without HOH': 5
 +
2P9H\A\101\ARG
 +
2P9H\A\102\SER
 +
2P9H\A\103\GLY
 +
2P9H\A\104\VAL
 +
2P9H\A\105\GLU
 +
</source>
 +
 +
 +
<source lang="python">
 +
PyMOL>listselection 1efa and resn LEU, output=S
 +
Residues in '1EFA and resn LEU': 108
 +
1efa\A\6\LEU
 +
1efa\A\45\LEU
 +
[...]
 +
1efa\C\323\LEU
 +
1efa\C\330\LEU
 +
</source>
 +
  
 
= Code =
 
= Code =
 +
Copy the following text and save it as listselection.py
 +
 
<source lang="python">
 
<source lang="python">
 
from pymol import cmd, stored
 
from pymol import cmd, stored
Line 28: Line 66:
 
sel=selection+" and not resn HOH"
 
sel=selection+" and not resn HOH"
 
extra=", without HOH"
 
extra=", without HOH"
+
 
for a in range(len(objs)):
 
for a in range(len(objs)):
 
m1=cmd.get_model(sel+" and "+objs[a])
 
m1=cmd.get_model(sel+" and "+objs[a])
for x in range(len(m1.atom)-1):
+
for x in range(len(m1.atom)):
if m1.atom[x].resi!=m1.atom[x+1].resi:
+
if m1.atom[x-1].resi!=m1.atom[x].resi:
 
printedselection+="%s\%s\%s\%s\n" % (objs[a], m1.atom[x].chain, m1.atom[x].resi, m1.atom[x].resn)
 
printedselection+="%s\%s\%s\%s\n" % (objs[a], m1.atom[x].chain, m1.atom[x].resi, m1.atom[x].resn)
 
counter+=1
 
counter+=1
+
 
print "Residues in '%s%s': %s" % (selection, extra, counter)
 
print "Residues in '%s%s': %s" % (selection, extra, counter)
 
if output=="S": print printedselection
 
if output=="S": print printedselection

Revision as of 06:42, 14 March 2013

Overview

Alternative script to List_Selection that will:

  • list multiple residues once
  • include water and hetatoms
  • account for different chains/objects
  • produce a screen/printed output


Usage

listselection selection, [output=N/S/P, [HOH=Y/N ]]

where:

  • selection can be any existing or newly-defined selection
  • output controls if the list is hidden (default), printed on screen (S) or saved in a file (P)
  • HOH (default Y) allows to exclude (N) water residues from the list


Examples

PyMOL>listselection 1efa, output=P
Residues in '1efa': 1043
Results saved in listselection_1efa.txt


PyMOL>listselection sele, output=S, HOH=N
Residues in 'sele, without HOH': 5
2P9H\A\101\ARG
2P9H\A\102\SER
2P9H\A\103\GLY
2P9H\A\104\VAL
2P9H\A\105\GLU


PyMOL>listselection 1efa and resn LEU, output=S
Residues in '1EFA and resn LEU': 108
1efa\A\6\LEU
1efa\A\45\LEU
[...]
1efa\C\323\LEU
1efa\C\330\LEU


Code

Copy the following text and save it as listselection.py

from pymol import cmd, stored
 
def listselection (selection, output="N", HOH="Y"):
	"""	
	usage: listselection selection, [output=N/S/P, [HOH=Y/N ]]
	"""
	printedselection=""
	extra=""
	counter=0
	sel=selection
	objs=cmd.get_object_list(sel)

	if HOH=="N":
		sel=selection+" and not resn HOH"
		extra=", without HOH"
	
	for a in range(len(objs)):
		m1=cmd.get_model(sel+" and "+objs[a])
		for x in range(len(m1.atom)):
			if m1.atom[x-1].resi!=m1.atom[x].resi:
				printedselection+="%s\%s\%s\%s\n" % (objs[a], m1.atom[x].chain, m1.atom[x].resi, m1.atom[x].resn)
				counter+=1
				
	print "Residues in '%s%s': %s" % (selection, extra, counter)
	if output=="S": print printedselection
	if output=="P":
		f=open('listselection_'+selection+'.txt','w')
		f.write("Residues in '%s%s': %s\n" % (selection, extra, counter))
		f.write(printedselection)
		f.close()
		print "Results saved in listselection_%s.txt" % selection
		
cmd.extend('listselection',listselection)