Hi all,
Can anyone help me with a problem that I am having trying to run a python
script?
I am trying to run the bbPlane script from the PyMOLWiki
<http://www.pymolwiki.org/index.php/BbPlane>
I have copied the script from the web page, to a plain text document, saved it
as "bbPlane.py" but when I run it I get:
------------
PyMOL>run bbPlane.py
Traceback (most recent call last):
File "/Volumes/Port 3/software/MacPyMOL.app/pymol/modules/pymol/parser.py",
line 332, in parse
File "/Volumes/Port 3/software/MacPyMOL.app/pymol/modules/pymol/parsing.py",
line 455, in run_file
File "bbPlane.py", line 14
^
SyntaxError: invalid syntax
-------------
script is here:
#
# -- bbPlane.py - draws a CGO plane across the backbone atoms of
# neighboring amino acids
#
# Author: Jason Vertrees, 06/2010
# Modified by Thomas Holder, 06/2010
# Modified by Blaine Bell, 08/2011
# Copyright (C) Schrodinger
# Open Source License: MIT
#
from pymol.cgo import * # get constants
from pymol import cmd, stored
from chempy import cpv
def bbPlane(objSel='(all)', color='white', transp=0.0):
"""
DESCRIPTION
Draws a plane across the backbone for a selection
ARGUMENTS
objSel = string: protein object or selection {default: (all)}
color = string: color name or number {default: white}
transp = float: transparency component (0.0--1.0) {default: 0.0}
NOTES
You need to pass in an object or selection with at least two
amino acids. The plane spans CA_i, O_i, N-H_(i+1), and CA_(i+1)
"""
# format input
transp = float(transp)
stored.AAs = []
coords = dict()
# need hydrogens on peptide nitrogen
cmd.h_add('(%s) and n. N' % objSel)
# get the list of residue ids
for obj in cmd.get_object_list(objSel):
sel = obj + " and (" + objSel + ")"
for a in cmd.get_model(sel + " and n. CA").atom:
key = '/%s/%s/%s/%s' % (obj,a.segi,a.chain,a.resi)
stored.AAs.append(key)
coords[key] = [a.coord,None,None]
for a in cmd.get_model(sel + " and n. O").atom:
key = '/%s/%s/%s/%s' % (obj,a.segi,a.chain,a.resi)
if key in coords:
coords[key][1] = a.coord
for a in cmd.get_model("(hydro or n. CD) and nbr. (" + sel + " and n.
N)").atom:
key = '/%s/%s/%s/%s' % (obj,a.segi,a.chain,a.resi)
if key in coords:
coords[key][2] = a.coord
# need at least two amino acids
if len(stored.AAs) <= 1:
print "ERROR: Please provide at least two amino acids, the alpha-carbon
on the 2nd is needed."
return
# prepare the cgo
obj = [
BEGIN, TRIANGLES,
COLOR,
]
obj.extend(cmd.get_color_tuple(color))
for res in range(0, len(stored.AAs)-1):
curIdx, nextIdx = str(stored.AAs[res]), str(stored.AAs[res+1])
# populate the position array
pos = [coords[curIdx][0], coords[curIdx][1], coords[nextIdx][2],
coords[nextIdx][0]]
# if the data are incomplete for any residues, ignore
if None in pos:
print 'peptide bond %s -> %s incomplete' % (curIdx, nextIdx)
continue
if cpv.distance(pos[0], pos[3]) > 4.0:
print '%s and %s not adjacent' % (curIdx, nextIdx)
continue
# need to order vertices to generate correct triangles for plane
# modified/added by B.Bell 8/18/2011
sumpos = cpv.add(pos[0], cpv.add(pos[1], cpv.add(pos[2], pos[3])))
centerpos = [ sumpos[0]/4., sumpos[1]/4., sumpos[2]/4. ]
angles = [ [ 0., 0 ] ]
s00 = cpv.sub(pos[0], centerpos)
for i in range(1,4):
s = cpv.sub(pos[i], centerpos)
ang = cpv.get_angle(s00, s)
angles.append( [ ang, i] )
def sortfirst(a, b):
return cmp(a[0], b[0])
angles.sort(sortfirst)
verts = map(lambda x: x[1], angles)
vorder = [ verts[0], verts[1], verts[2],
verts[1], verts[3], verts[2] ]
# fill in the vertex data for the triangles;
for i in vorder:
obj.append(VERTEX)
obj.extend(pos[i])
# finish the CGO
obj.append(END)
# update the UI
newName = cmd.get_unused_name("backbonePlane")
cmd.load_cgo(obj, newName)
cmd.set("cgo_transparency", transp, newName)
cmd.extend("bbPlane", bbPlane)
artforscience
H. Adam Steinberg
Artist, Scientist, Developmental Editor
www.artforscience.com
7904 Bowman Rd
Lodi, WI 53555
608/729-5944
------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management
Up to 160% more powerful than alternatives and 25% more efficient.
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
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