Jules Jacobsen wrote:
Hi Andrea,
It depends on how you've written it.... It does sound more than a
little slow if you are just selecting a single residue. I had a script
which ended up looping through several sets of atoms which took ages
for larger models. I finally got fed-up with this and re-wrote it
properly. Now it's practically instantaneous. If you post the script
I'm sure someone will be able to offer you a pointer as to where you
might be going wrong.
Jules
Hi Jules, here it is:
-------------------------------------------------
from pymol import cmd
import string, sys, os
if ("dist.out"):
os.system("rm -f dist.out")
if ("full.out"):
os.system("rm -f full.out")
nam = open("file.nam",'r')
KeepStruc = []
readnam = nam.readlines()
deep = int(15)
for j in range(0,deep):
readnam[j] = string.strip(readnam[j])
KeepStruc.append(readnam[j])
for i in KeepStruc:
cmd.load(i,i)
print i
cmd.select("lig","segi B")
cmd.select("pro","all and not segi B")
amb = open("amb",'r')
out = open("dist.out","a")
full = open("full.out","a")
out.write("%4s\n"%(i))
full.write("%4s\n"%(i))
count = 0
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)
if (atomlig == "*"):
ligand = cmd.select("ligand","segi B and "+i)
atoms_lig = cmd.get_model('ligand')
for atomsL in atoms_lig.atom:
t = cmd.select("t","name "+atomsL.name)
di = cmd.distance("di","t","p")
full.write("%4s%8s%8s%8.3f%12s\n"%(resname,atompro,atomsL.name,di,"DISTANCE"))
if (di < 4):
count = count + 1
# print resname,atompro,count
if (count == 0):
out.write("%4s%8s%8s%12s\n"%(resname,atompro,"*",">VIOLATED"))
count = 0
else:
l = cmd.select("l","name "+atomlig+" and segi B and "+i)
d = cmd.distance("dist_"+str(i),"p","l")
full.write("%4s%8s%8s%8.3f%12s\n"%(resname,atompro,atomlig,d,"DISTANCE"))
if (d > 5):
out.write("%4s%8s%8s%8.3f%10s\n"%(resname,atompro,atomlig,d,"VIOLATED"))
out.close()
--------------------------------------------------
At the beginning I thought that problem was the memory because when I
run it it starts fast and then aftr 4 structures it goes slowly slowly
per every molecule, but I see my free memory always 50% and the cpu
100%. I tried to empty the list in the script at end of each iteration
but it didn't work.
thanks
andrea