HI Thomas,
the selection works now with "near_to", also the get_raw_distances
module is doing the job, see below. The only nag is how to convert atom IDs in
i1 and i2 into atom names?
Thanks a lot,
Krisztina
from pymol import cmd
#import get_raw_distances
from get_raw_distances import get_raw_distances, select_distances
f=open('dist.txt','w')
hcpl1=cmd.select('hcpl1', 'resi 1-10 and hydro')
hcpl2=cmd.select('hcpl2', 'resi 11-20 and hydro')
inoe12=cmd.select('inoe12', 'hcpl1 near_to 5 of hcpl2')
inoe21=cmd.select('inoe21', 'hcpl2 near_to 5 of hcpl1')
cmd.distance('tmp', 'inoe12' ,'inoe21', 5, mode=0)
#for (i1, i2, dst) in get_raw_distances.get_raw_distances('tmp'):
dist= get_raw_distances('tmp')
for (i1, i2, dist) in dist:
print i1, i2, dst
n1=i1[1]
print n1
f.write("%8.3f\n"%dst)
f.close()
Re: [PyMOL] distances
Thomas Holder
Mon, 30 Jul 2012 11:31:54 -0700
Hi Krisztina,
the syntax for the "around" operator is wrong, there is no "of" keyword.
One of these would be correct:
hcpl1 within 5 of hcpl2
hcpl2 around 5 and hcpl1
See also:
http://pymolwiki.org/index.php/Selection_Algebra#Comparison_of_distance_operators
To iterate over atoms of a selection, you can use "cmd.pop". There is no
PyMOLWiki page, but you'll get a nice example from:
PyMOL> help pop
Also very powerful for iteration over atoms:
http://pymolwiki.org/index.php/Iterate
What you actually want is to iterate over distances, not atoms. There is
a script on the PyMOLWiki which provides that:
http://pymolwiki.org/index.php/Get_raw_distances
cmd.distance('tmp', 'hcpl1' ,'hcpl2', 5.0)
for (i1, i2, dst) in get_raw_distances('tmp'):
f.write("%8.3f\n" % dst)
Hope that helps.
Cheers,
Thomas
On 30.07.2012 19:34, Krisztina Feher wrote:
> Hi Everyone,
>
> I would like to write a script, which writes out intermolecular
> distances shorter than 5A between hydrogens into a text file. Here is
> what I made so far on the basis of the Measure distance script in the
> respository:
>
> from pymol import cmd
>
> # open dist.txt for writing
> f=open('dist.txt','w')
>
> hcpl1=cmd.select('hcpl1', 'resi 1-10 and hydro')
> hcpl2=cmd.select('hcpl2', 'resi 11-20 and hydro')
> inoe12=cmd.select('inoe12', 'hcpl1 around 5 of hcpl2')
>
> for i in range(len(hcpl1)):
> dst=cmd.distance('tmp', 'hcpl1' ,'hcpl2')
> f.write("%8.3f\n"%dst)
> f.close()
>
> What do not understand is the following:
> - why inoe12 selection is not being made (it works from pymol command
> line as
> "select inoe12, hcpl1 around 5 of hcpl2" )
> - how can I loop over the atoms of a selection (hcpl1 seems to be not a
> list, but a single interger)
>
> Thanks for any help in advance!
> Krisztina
--
Thomas Holder
MPI for Developmental Biology
Spemannstr. 35
D-72076 Tübingen
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net)
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net)
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net