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 <mgler...@gmail.com> 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.nak...@mail.mfour.med.kyoto-u.ac.jp> 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/pymol-users@lists.sourceforge.net/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 (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
>>
>
>
>
> --
> 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
------------------------------------------------------------------------------
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 (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