From: Michael L. <mgl...@gm...> - 2012-07-15 02:05:45
|
I finally got back to this, and I'm still having some trouble. The surface I write out seems to be offset from what I'm viewing in PyMOL. I define the following functions: def getIndexedFaceSet(wrlname): f = file(wrlname) for line in f: if 'geometry IndexedFaceSet {' in line: break else: print "Could not find IndexedFaceSet" return None assert 'coord Coordinate' in f.next() assert 'point' in f.next() points = [] for line in f: if not line.strip(): continue line = line.strip() if ']' in line: break if line.endswith(','): line = line[:-1] points.append(','.join(line.split()) + '\n') return points def pts2pdb(ptsname,pdbname): f = file(pdbname,'w') atomid,resi = 1,1 for line in open(ptsname): line = line.strip() if not line: continue c = [float(x) for x in line.split(',')] f.write('ATOM %06s %4s PHO %04s %8.3f%8.3f%8.3f\n'%(atomid,resi,'C',c[0],c[1],c[2])) atomid += 1 f.close() def writeSurfaceValue(objname,wrlname='/tmp/tmp.wrl',ptsname='/tmp/tmp.pts',pdbname='/tmp/tmp.pdb'): cmd.hide('everything') cmd.show('surface',objname) cmd.save(wrlname) points = getIndexedFaceSet(wrlname) f = file(ptsname,'w') f.writelines(points) f.close() pts2pdb(ptsname,pdbname) cmd.extend('write_surface_value',writeSurfaceValue) and then do fetch 1rx1 set surface_solvent, 1 show surface run <whatever file defines the above functions> write_surface_value 1rx1 load /tmp/tmp.pdb show spheres, tmp and the tmp object looks like it has the right shape, but is clearly offset from 1rx1. I have a feeling I'm doing something simple and obvious wrong, but I'm not sure what. Thanks, -Michael On Mon, Jun 11, 2012 at 10:47 PM, Michael Lerner <mgl...@gm...> wrote: > Hi all, > > Tsjerk- Thanks. I'm not sure how I missed that, given that it's even > mentioned on the wiki on the surface page under the clear heading > "Exporting Surface/Mesh Coordinates to File" :-|. ( > http://www.pymolwiki.org/index.php/Surface#Exporting_Surface.2FMesh_Coordinates_to_File). > I don't know anything about VRML, but I found some documentation online at > http://www.c3.hu/cryptogram/vrmltut/part5.html and it looks really > straightforward. The surface will show up in the VRML file as an > IndexedFaceSet, and the points are just XYZ triples, and I can safely > ignore everything else. > > Darrell- Thanks. I'll build that in as an option. > > Takanori- Thanks. That's really cool. I happen to want solvent accessible > surfaces rather than isosurfaces, but "dump" is definitely going into my > bag of tricks. > > Cheers, > -Michael > > On Mon, Jun 11, 2012 at 8:57 PM, Takanori Nakane < > t.n...@ma...> wrote: > >> Hi, >> >> Another way: >> There is an undocumented API called 'dump', which can >> dump coordinates of isomesh/isosurface to a file. >> >> For mesh, it dumps a list of vertex coordinates, which >> can be rendered as GL_LINE_STRIP. >> For surface, it dumps a list of pairs of a vertex coordinate >> and its vertex normal vector, which can be rendered as GL_TRIANGLES. >> >> Please examine my old post for a script example. >> >> http://www.mail-archive.com/pym...@li.../msg10012.html >> >> Best regards, >> >> Takanori Nakane >> >> >> ------------------------------------------------------------------------------ >> Live Security Virtual Conference >> Exclusive live event will cover all the ways today's security and >> threat landscape has changed and how IT managers can respond. Discussions >> will include endpoint security, mobile security and the latest in malware >> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >> _______________________________________________ >> PyMOL-users mailing list (PyM...@li...) >> Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users >> Archives: http://www.mail-archive.com/pym...@li... >> > > > > -- > Michael Lerner > Department of Physics and Astronomy > Earlham College - Drawer 111 > 801 National Road West > Richmond, IN 47374-4095 > > -- Michael Lerner Department of Physics and Astronomy Earlham College - Drawer 111 801 National Road West Richmond, IN 47374-4095 |