ListSelection2: Difference between revisions
Jump to navigation
Jump to 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) | for x in range(len(m1.atom)): | ||
if m1.atom[x].resi!=m1.atom[x | 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 05: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)