From: Joseph A. <and...@gm...> - 2011-08-18 07:54:13
|
Hi Tsjerk, Thanks for the script. It works great on my protein. However when I try to load the solvated system > 100.000 atoms I have problems with water molecules. Is it possible to handle gro files with more than 100.000 atoms and 9999 residues? Best On Thu, Aug 18, 2011 at 9:39 AM, Tsjerk Wassenaar <ts...@gm...> wrote: > Hey :) > > Here is an all Python solution to load a .gro file, including the box > vectors. It simply converts to PDB format and calls cmd.read_pdbstr... > It supports multimodel files. I'll probably add a mechanism to > identify chains from breaks, as the .gro format does not use chain > identifiers, and may add gzip support. Later I'll also add MARTINI > coarse graining, while I'm at it :) > > Hope it helps, > > Tsjerk > > > ### > > from pymol import cmd > import math > > _pdbline = "ATOM %5i %-3s %3s%2s%4i %8.3f%8.3f%8.3f%6.2f%6.2f > %1s \n" > _pdbBoxLine = "CRYST1%9.3f%9.3f%9.3f%7.2f%7.2f%7.2f P 1 1\n" > > d2r = math.pi/180 > > def cos_angle(a,b): > p = sum([i*j for i,j in zip(a,b)]) > q = math.sqrt(sum([i*i for i in a])*sum([j*j for j in b])) > return min(max(-1,p/q),1) > > def norm2(a): > return sum([i*i for i in a]) > > def norm(a): > return math.sqrt(norm2(a)) > > def groBoxRead(a): > b = [10*float(i) for i in a.split()] + 6*[0] # Padding for rectangular > boxes > return b[0],b[3],b[4],b[5],b[1],b[6],b[7],b[8],b[2] > > def groAtom(a): > #012345678901234567890123456789012345678901234567890 > # 1PRN N 1 4.168 11.132 5.291 > ## ===> atom name, res name, res id, chain > x, y, z > return (a[10:15].strip(),a[5:10].strip(),int(a[:5])," > ",10*float(a[20:28]),10*float(a[28:36]),10*float(a[36:44])) > > # Simple GRO iterator > def groFrameIterator(stream): > while True: > title = stream.readline() > natoms = stream.readline().strip() > if not natoms: > break > natoms = int(natoms) > atoms = [groAtom(stream.readline()) for i in range(natoms)] > box = groBoxRead(stream.readline()) > yield title, atoms, box > > def pdbOut(atom,i=1): > return _pdbline%((i,) + (atom[0][:3],) + (atom[1],) + (atom[3],) + > (atom[2],) + atom[4:] + (1,40) + (atom[0][0],)) > > def pdbBoxString(box): > nu = math.sqrt(norm2(box[0:3])) > nv = math.sqrt(norm2(box[3:6])) > nw = math.sqrt(norm2(box[6:9])) > > alpha = nv*nw == 0 and 90 or math.acos(cos_angle(box[3:6],box[6:9]))/d2r > beta = nu*nw == 0 and 90 or math.acos(cos_angle(box[0:3],box[6:9]))/d2r > gamma = nu*nv == 0 and 90 or math.acos(cos_angle(box[0:3],box[6:9]))/d2r > > return _pdbBoxLine % > (norm(box[0:3]),norm(box[3:6]),norm(box[6:9]),alpha,beta,gamma) > > def gro(filename): > objname = filename[1+filename.rfind("/"):filename.rfind(".")] > pdb = [] > model = 1 > for title, atoms, box in groFrameIterator(open(filename)): > pdb.append("MODEL %8d"%model) > pdb.append(pdbBoxString(box)) > pdb.extend([pdbOut(atom,i) for atom, i in > zip(atoms,range(1,len(atoms)+1))]) > pdb.append("ENDMDL") > model += 1 > cmd.read_pdbstr("\n".join(pdb),objname) > > cmd.extend("gro",gro) > > ### > > On Wed, Aug 17, 2011 at 5:11 AM, Jason Vertrees > <jas...@sc...> wrote: > > Hi Michael, > > > > PyMOL knows about gromacs files, but needs to better handle .gro > > files, specifically. Currently you have to export to a PDB to read the > > topology. > > > > Please file this on the open-source tracker > > (https://sourceforge.net/tracker/?group_id=4546) and I'll get to it > > ASAP. > > > > Cheers, > > > > -- Jason > > > > On Mon, Aug 15, 2011 at 8:19 PM, Michael Daily <mda...@gm...> > wrote: > >> Hi all, > >> > >> Is there a direct way to load a gromacs structure file (.gro) in PyMOL? > I > >> know it's simple to convert them to pdb using editconf, but I want to > load > >> gro files directly (as you can in vmd) because they permit higher max. > atom > >> and residue numbers (100K vs. 10K for pdb) and permit longer residue > names > >> (4 chars vs. 3 for vmd). > >> > >> Thanks, > >> Mike > >> > >> -- > >> ==================================== > >> Michael D. Daily > >> Postdoctoral research associate > >> Pacific Northwest National Lab (PNNL) > >> 509-375-4581 > >> (formerly Qiang Cui group, University of Wisconsin-Madison) > >> > >> > ------------------------------------------------------------------------------ > >> uberSVN's rich system and user administration capabilities and model > >> configuration take the hassle out of deploying and managing Subversion > and > >> the tools developers use with it. Learn more about uberSVN and get a > free > >> download at: http://p.sf.net/sfu/wandisco-dev2dev > >> > >> _______________________________________________ > >> PyMOL-users mailing list (PyM...@li...) > >> Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users > >> Archives: http://www.mail-archive.com/pym...@li... > >> > > > > > > > > -- > > Jason Vertrees, PhD > > PyMOL Product Manager > > Schrodinger, LLC > > > > (e) Jas...@sc... > > (o) +1 (603) 374-7120 > > > > > ------------------------------------------------------------------------------ > > Get a FREE DOWNLOAD! and learn more about uberSVN rich system, > > user administration capabilities and model configuration. Take > > the hassle out of deploying and managing Subversion and the > > tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2 > > _______________________________________________ > > PyMOL-users mailing list (PyM...@li...) > > Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users > > Archives: http://www.mail-archive.com/pym...@li... > > > > > > -- > Tsjerk A. Wassenaar, Ph.D. > > post-doctoral researcher > Molecular Dynamics Group > * Groningen Institute for Biomolecular Research and Biotechnology > * Zernike Institute for Advanced Materials > University of Groningen > The Netherlands > > > ------------------------------------------------------------------------------ > Get a FREE DOWNLOAD! and learn more about uberSVN rich system, > user administration capabilities and model configuration. Take > the hassle out of deploying and managing Subversion and the > tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2 > _______________________________________________ > PyMOL-users mailing list (PyM...@li...) > Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users > Archives: http://www.mail-archive.com/pym...@li... > -- Joseph ANDRE |