Hi Adam,
I updated the wiki page to remove the spurious spaces--good idea.
> I am trying to follow the example in the Wiki to make sure it works before I
> try it on my pdb. However, when I run the command "bbPlane i. 4-10" I get a
> new error:
>
> PyMOL>bbPlane i. 4-10
> Traceback (most recent call last):
> File "/Volumes/Port 3/software/MacPyMOL.app/pymol/modules/pymol/parser.py",
> line 250, in parse
> File "bbPlane.py", line 110, in bbPlane
> newName = cmd.get_unused_name("backbonePlane")
> AttributeError: 'module' object has no attribute 'get_unused_name'
This sounds like you need to update your version of PyMOL. What
version are you using?
Cheers,
-- Jason
On Thu, Aug 25, 2011 at 12:41 PM, H. Adam Steinberg <[email protected]> wrote:
> I erased all of the spaces in the "blank" lines and now the script works.
> When I erased them in line 14 then it found them in kine 38, etc. You may
> want to update the script on the WIki to one without spaces.
>
> I am trying to follow the example in the Wiki to make sure it works before I
> try it on my pdb. However, when I run the command "bbPlane i. 4-10" I get a
> new error:
>
> PyMOL>bbPlane i. 4-10
> Traceback (most recent call last):
> File "/Volumes/Port 3/software/MacPyMOL.app/pymol/modules/pymol/parser.py",
> line 250, in parse
> File "bbPlane.py", line 110, in bbPlane
> newName = cmd.get_unused_name("backbonePlane")
> AttributeError: 'module' object has no attribute 'get_unused_name'
>
> On Aug 25, 2011, at 11:09 AM, Jason Vertrees wrote:
>
>> Hi Adam,
>>
>> I just copy/pasted the script you attached in your email and it worked
>> fine. There are, however two spaces on line 14--maybe the parser
>> thinks it found a block indent? Try erasing line 14 (the line
>> following "from chempy import cpv") and re-running the script.
>>
>> Cheers,
>>
>> -- Jason
>>
>> On Thu, Aug 25, 2011 at 11:34 AM, H. Adam Steinberg <[email protected]>
>> wrote:
>>> 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 ([email protected])
>>> Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
>>> Archives: http://www.mail-archive.com/[email protected]
>>>
>>
>>
>>
>> --
>> Jason Vertrees, PhD
>> PyMOL Product Manager
>> Schrodinger, LLC
>>
>> (e) [email protected]
>> (o) +1 (603) 374-7120
>
> H. Adam Steinberg
> 7904 Bowman Rd
> Lodi, WI 53555
> 608/592-2366
>
>
--
Jason Vertrees, PhD
PyMOL Product Manager
Schrodinger, LLC
(e) [email protected]
(o) +1 (603) 374-7120
------------------------------------------------------------------------------
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 ([email protected])
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/[email protected]