Hi Subha,

Sorry, my bad. It should've been object='pseudo' and not name='pseudo'.
Should've tested it first.

Cheers,

Tsjerk

On Wed, Oct 12, 2016 at 9:56 PM, Subha K <subhal...@gmail.com> wrote:

> Thanks David and Tsjerk for the kind reply and suggestion.
>
> I Figured a solution by combining both of your suggestions
>
> 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))
>
>
> with open("./out") as f:
>
>     for line in f:
>
>         in_pdb_file = line.strip()
>
>         print in_pdb_file
>
>         cmd.load(in_pdb_file, 'tmp')
>
>         COM = center('resn UNK')
>
>         cmd.pseudoatom('ligCOM', pos=COM)
>
>         cmd.save(in_pdb_file[:-4] + "_dummy.pdb", "all")
>
>         cmd.delete('ligCOM')
>
>         cmd.delete('tmp')
>
>
> @Tsjerk: Don't know why I got an error: Selector-Error: Invalid selection
> name "pseudo".
> pseudo<--
>
> Thanks again for the support.
>
> Best Regards,
> Subha
>
>
>
>
>
> On Wed, Oct 12, 2016 at 12:53 PM, Tsjerk Wassenaar <tsje...@gmail.com>
> wrote:
>
>>
>> Hi Subha,
>>
>> Probably this will get close:
>>
>> for pdb in open('./out').readlines():
>>     pdb = pdb.strip()
>>     cmd.load(pdb,'tmp')
>>     cmd.pseudoatom('tmp',name='pseudo')
>>     cmd.save(pdb[:-4]+'-pseudo.pdb','pseudo')
>>     cmd.delete('tmp')
>>     cmd.delete('pseudo')
>>
>> ... Just a bit too much for a oneliner ;)
>>
>> Hope it helps,
>>
>> Tsjerk
>>
>>
>> On Wed, Oct 12, 2016 at 8:16 PM, Subha K <subhal...@gmail.com> wrote:
>>
>>> 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
>>>
>>
>>
>>
>> --
>> Tsjerk A. Wassenaar, Ph.D.
>>
>>
>


-- 
Tsjerk A. Wassenaar, Ph.D.
------------------------------------------------------------------------------
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

Reply via email to