Here is the solution. Wonder if someone can help explain why the line below 
gives an error about print is not defined:
out=x.cmd.do("iterate mysel and name CA, print(resi)")

Thanks!
~~~~

import pymol2
x=pymol2.PyMOL()
x.start()
x.cmd.do("fetch 1crn; select mysel, /1crn//A/10-20")
out=[]
def f(chain, resi): out.append((chain,resi))
myspace={'f':f}
x.cmd.iterate("mysel and name CA", "f(chain, resi)", space=myspace)
print(out)

From: Zhou, Yingyao
Sent: Tuesday, May 28, 2024 3:57 PM
To: pymol-users@lists.sourceforge.net
Subject: How to obtain a PyMOL selection within Python

Hi,

In the example code below, there is a selection object "myself" within PyMOL, I 
try to obtain the selected residues within Python.
The "out=x.cmd.do" prints the selection to stdout, but the variable out remains 
None. What would be a good way to get the selection without going through disk 
I/O?

import pymol2
x=pymol2.PyMOL()
x.start()
x.cmd.do("fetch 1crn; select mysel, /1crn//A/10-20")
out=x.cmd.do("iterate mysel and name CA, (resi)")
print(out)

A separate question, when I run the following line of Python, I got an error 
(however the command works using PyMOL's command interface):

out=x.cmd.do("iterate mysel and name CA, print(resi)")

I got an error:
return _cmd.alter(_self._COb, selection, expression, True,
  File "", line 1, in <module>
NameError: name 'print' is not defined

What's the syntax error in this line?

Thank you,
Yingyao

_______________________________________________
PyMOL-users mailing list
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
Unsubscribe: 
https://sourceforge.net/projects/pymol/lists/pymol-users/unsubscribe

Reply via email to