0
$\begingroup$

I want to select multiple residues from different PDB files loaded on the same pymol session.

select resi LIG
get_area sele

How do I loop the above command to enable the command below:

select ligands,resn LIG
$\endgroup$
1
$\begingroup$

from https://www.blopig.com/blog/2019/08/how-to-iterate-in-pymol/

Example 1: Print the names of all the selected objects

You’ve selected several objects in PyMOL, and you want to see their names. By default, a new selection object called “(sele)” is created. We can create a Python variable called seleobjs, say, and then loop over them:

seleobjs = cmd.get_object_list('(sele)')
    for obj in seleobjs: print obj

Example 2: Disable all the selected objects

If you still have your selection, “(sele)”, you can disable them (effectively turn them off on the right-hand sidebar):

seleobjs = cmd.get_object_list('(sele)')
    for obj in seleobjs: cmd.disable(obj)

Example 3: Delete all the selected objects

You’re done with the objects in your selection, “(sele)”: you might be able to delete them using “delete ”, but if you can’t write a wildcard that covers all the names of the objects, you can iterate over a selection and delete them:

seleobjs = cmd.get_object_list('(sele)')
    for obj in seleobjs: cmd.delete(obj)

from https://pymolwiki.org/index.php/Get_Area

get_area calculates the surface area in square Angstroms of the selection given. Note that the accessibility is assessed in the context of the object(s) that the selection is part of. So, to get the surface areas of e.g. a component of a complex, you should make a new object containing a copy of just that component and calculate its area.

please let us know if it worked

$\endgroup$
6
  • $\begingroup$ Thanks, this code is working, but I am still not able to calculate the area of selected residues. My main hurdle is how to use the get_area pymol command and incorporate in the loop. $\endgroup$
    – shome
    Dec 15 '20 at 22:50
  • $\begingroup$ @shome edited my answer $\endgroup$
    – pippo1980
    Dec 16 '20 at 13:50
  • $\begingroup$ I typed : seleobjs = cmd.get_object_list('(sele)') for obj in seleobjs: get_area obj It is showing me invalid syntax.. $\endgroup$
    – shome
    Dec 16 '20 at 14:00
  • $\begingroup$ cmd.get_area(str selection="(all)", int state=1, int load_b=0) try with Parentheses (Round Berackets) $\endgroup$
    – pippo1980
    Dec 16 '20 at 14:24
  • $\begingroup$ showing invalid syntax $\endgroup$
    – shome
    Dec 16 '20 at 15:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.