Dear James,
> I wonder if anyone can point me in the right direction for converting an
> isomesh (eg representing electron density at a particular sigma level)
> to a cgo? I have looked around, but can't seem to find an example of
> this.
Undocumented function "dump" can dump coordinates of
isomesh/isosurface to a file, which can be easily parsed into CGO.
I wrote a small script for this. Use as
dump2CGO object_name_to_convert
Converting isosurface may take a while.
The script uses undocumented functions (dump, get_session) so that
there might be a compatibility issue. Please let me know
if it doesn't work.
Takanori Nakane
================ SCRIPT ===============
from pymol import cmd
from pymol.cgo import *
def dump2surfaceCGO():
CGOobj = []
dumpedFile = open("dump.tmp").read()
for block in dumpedFile.split('\n\n'):
CGOobj.append(BEGIN)
CGOobj.append(TRIANGLES)
for line in block.split('\n'):
if line == '':
continue
vals = line.split()
CGOobj.append(NORMAL)
CGOobj.append(float(vals[3]))
CGOobj.append(float(vals[4]))
CGOobj.append(float(vals[5]))
CGOobj.append(VERTEX)
CGOobj.append(float(vals[0]))
CGOobj.append(float(vals[1]))
CGOobj.append(float(vals[2]))
CGOobj.append(END)
return CGOobj
def dump2meshCGO():
CGOobj = []
dumpedFile = open("dump.tmp").read()
for block in dumpedFile.split('\n\n'):
CGOobj.append(BEGIN)
CGOobj.append(LINE_STRIP)
for line in block.split('\n'):
if line == '':
continue
CGOobj.append(VERTEX)
vals = line.split()
CGOobj.append(float(vals[0]))
CGOobj.append(float(vals[1]))
CGOobj.append(float(vals[2]))
CGOobj.append(END)
return CGOobj
def getType(objname):
session = cmd.get_session()['names']
for obj in session:
if obj == None:
continue
if obj[0] != objname:
continue
return obj[4]
return -1
def dump2CGO(obj):
cmd.dump("dump.tmp", obj)
type = getType(obj)
cgo = []
if (type == 3): # Mesh
cgo = dump2meshCGO()
elif (type == 7): #Surface
cgo = dump2surfaceCGO()
else:
print "Unknown type"
return
cmd.load_cgo(cgo, "CGO " + obj)
cmd.extend('dump2CGO', dump2CGO)
cmd.auto_arg[0]['dump2CGO'] = [cmd.object_sc, 'object', '']
------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create
new or port existing apps to sell to consumers worldwide. Explore the
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
PyMOL-users mailing list ([email protected])
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/[email protected]