Hi There,
I am looking to automate the calculation of centre of mass and placing a
pseudo atom on the COM and save it as a pdb file . Going through the forum [
https://sourceforge.net/p/pymol/mailman/message/34458943/] , I found some
useful scripts for this, but, I am having trouble getting it done for all
files in a directory. My script does what I need for the first file alone.
Some looping or other is not correct. Or there could be an easy and better
way to do it. I couldn't figure that out. So, could some one please help
me solve this?
I have 100 files F01, F02, F100 ... in the directory dockout. I would like
to calculate the COM and place a pseudo atom on the COM and save it as a
pdb for all the 100 files.
'out' in the script corresponds to the list of all the 100 files.
import pymol
from pymol import cmd
pymol.finish_launching()
import numpy as np
import glob
import fileinput
def center(selection, com=True):
model = cmd.get_model(selection)
xyz = np.array(model.get_coord_list())
mass = [i.get_mass() for i in model.atom]
xyz_m = xyz * np.array([mass]).T
if com:
return tuple(np.sum(xyz_m, 0)/model.get_mass())
else:
return tuple(np.average(xyz, 0))
def GetListOfFiles (filename):
l = []
for line in fileinput.input( filename ):
tokens = line.split( )
l.append(tokens)
return l
def Calculate_COM (list):
for i in range (len(list)):
print list[i][0]
X=1
if (X<101):
os.system("cp ./dockout/F"+ str(X).zfill(2)+ " ./lig.pdb")
for pdb in glob.glob("lig.pdb"):
cmd.load(pdb)
COM = center('resn UNK')
cmd.pseudoatom('ligCOM', pos=COM)
cmd.save("complex_dummy.pdb", "all")
os.system("mv complex_dummy.pdb complex_" + str(X).zfill(2)
+ "_dummy.pdb")
os.system("rm lig.pdb")
X=X+1
else:
break
listofFiles = GetListOfFiles ("./out")
print listofFiles
Calculate_COM(listofFiles)
Thanks,
Subha
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
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