Hi all,
this script below runs well in pymol. It loads pdb files and
calculates the distance of some atoms contained in the fileAmb whose
format is:
26,O11:HN
28,*:HE1
...............
With * I select whole ligand (segi B) and pymol returns only one
value, the average distance for all atoms to the HE1 atoms. I need to
print out all the distances, atom by atom.
any helps??
thanks a lot
andrea
----------------------
from pymol import cmd
import string, sys, os
def viol(fileAmb,deep):
cmd.reinitialize()
if ("dist.out"):
os.system("rm -f dist.out")
nam = open("file.nam",'r')
KeepStruc = []
readnam = nam.readlines()
deep = int(deep)
for j in range(0,deep):
readnam[j] = string.strip(readnam[j])
KeepStruc.append(readnam[j])
for i in KeepStruc:
cmd.load(i,i)
cmd.select("lig","segi B")
cmd.select("pro","all and not segi B")
amb = open(fileAmb,'r')
out = open("dist.out","a")
out.write("%4s\n"%(i))
for lines in amb.readlines():
lines = string.strip(lines)
tmp = string.split(lines,",")
resname = tmp[0]
atomtypes = tmp[1]
tmp1 =string.split(atomtypes,":")
atomlig = tmp1[0]
atompro = tmp1[1]
p = cmd.select("p","resi "+resname+" and name "+atompro+" and "+i)
l = cmd.select("l","name "+atomlig+" and segi B and "+i)
d = cmd.distance("dist_"+str(i),"p","l")
if (d > 5):
print resname,":",atompro,"->",atomlig,d
out.write("%4s%8s%8s%8.3f\n"%(resname,atompro,atomlig,d))
out.close()
cmd.extend('viol',viol)
----------------------------------------
--
"La conoscenza libera il genere umano dalla superstizione"
J. Watson