Hi Martin, Try replacing
> (phi, psi) = cmd.phi_psi("br. first my_res") with (phi, psi) = cmd.phi_psi("br. first my_res").values()[0] Here's what I have now, for the script (I fixed one more bug): import pickle rot_lib = pickle.load(open("/Applications/PyMOLX11Hybrid.app/pymol/data/chempy/sidechains/sc_bb_dep.pkl",'r')) from pymol import stored from pymol import cmd stored.r = '' # What are we doing here? What is 'first'? cmd.iterate("first my_res", "stored.r = resn") (phi, psi) = cmd.phi_psi("br. first my_res").values()[0] key = (stored.r, int(10*round(phi/10)), int(10*round(psi/10))) if key in rot_lib.keys(): print "This rot has %s possible positions" % len(rot_lib[key]) Cheers, -- Jason On Mon, Sep 13, 2010 at 5:04 PM, Martin Hediger <ma....@bluewin.ch> wrote: > Hi Jason and PyMOL users > I tried to run the script to get the number of rotamers, but I seem to have > something missing. > The script looks as follows: > > import pickle > rot_lib = > pickle.load(open("/Applications/PyMOLX11Hybrid.app/pymol/data/chempy/sidechains/sc_bb_dep.pkl",'r')) > from pymol import stored > from pymol import cmd > stored.r = '' > > # What are we doing here? What is 'first'? > cmd.iterate("first my_res", "stored.r = resn") > > (phi, psi) = cmd.phi_psi("br. first my_res") > key = (stored.r, int(10*round(ph/10)), int(10*round(psi/10))) > if key in rot_lib.keys(): > print "This rot has %s possible positions" % len(rot_lib[key]) > > Now, I save this into rotlib.py, 'cd' PyMOL into the directory where this > script lies, select a residue from the GUI, rename the selection to 'my_res' > and then 'run rotlib.py' the script. This returns the following ERROR > message in PyMOL: > > Traceback ... > (phi, psi) = cmd.phi_psi("br. first my_res") > ValueError: need more than 0 values to unpack > > Unfortunately, I dont understand what this is trying to tell me right now, > ok, some Argument seems to be missing, but I cant tell what exactly. Also, > could you possibly extend your explanation on what the 'iterate' method is > used for. I think this would help me a lot. > > As I said, all I want is a PDB file for every rotamer itself. If there is a > simpler way to achieve this, that is fine with me. The number of rotamers is > only important to me, since I need to know how many times i should issue > 'cmd.forward()' and save. > > Thanks for the help. > Martin > > > > Am 13.09.10 00:30, schrieb Jason Vertrees: >> >> Hi Martin, >> >>> iterate first my_res, stored.r = resn >> >> is syntactically correct, but could also be written, >> >> cmd.iterate("first my_res", "stored.r = resn"); >> >> The command could be read as, "iterate over just first atom from the >> selection called 'my_res' and place the residue name in which that >> atom resides into 'stored.r'." So, "first" is a new-ish selection >> modifier that takes just the first atom from a selection. It's _very_ >> handy: why iterate through all atoms in a residue to get a residue >> name, when just the first will do? "resn" indeed returns the 3-letter >> residue code. >> >> A more efficient way might be: >> >> # select a residue, here #50 (or use the mouse) >> select mySelection, i. 50 >> >> # get it's one-letter residue id >> print string.split(cmd.get_fastastr("mySelection"),'\n')[1] >> # get it's three-letter residue id >> print three_letter[string.split(cmd.get_fastastr("mySelection"),'\n')[1]] >> >> I just posted this on http://www.pymolwiki.org/index.php/Aa_codes. >> (You will need the two dictionaries found there.) >> >> There really should be a much easier way to do that... Maybe someone >> has a far easier command? >> >> Cheers, >> >> -- Jason >> >> >> >> >> On Sun, Sep 12, 2010 at 4:25 PM, Martin Hediger<ma....@bluewin.ch> wrote: >>> >>> Hi Jason, thanks for the comprehensive answer. >>> One question though, is the line >>> >>> iterate first my_res, stored.r = resn >>> >>> >>> >>> correct this way? Are there no braces or quotation marks needed? Its not >>> perfectly clear to me if 'first' and 'my_res' are selections (indicated >>> by >>> braces) or objects (name without braces in the main window). >>> I understand 'resn' is something like 'GLU', if I want to know how many >>> GLU >>> rotamers are in the library. >>> >>> Thanks again >>> Martin >>> >>> >>> >>> >>> Am 12.09.10 22:00, schrieb Jason Vertrees: >>>> >>>> Hi Martin, >>>> >>>> PyMOL first searches the Dunbrack rotamer library for hits based upon >>>> the amino acid type and it's original phi/psi angles. If it cannot >>>> find a hit, it will then look for backbone independent positions. To >>>> get the number of available rotamers given a residue, you need to >>>> unpickle the library, create the lookup key into the library and then >>>> count the results. It might look something like this: >>>> >>>> # unpickle the library >>>> import pickle >>>> rot_lib = >>>> >>>> pickle.load(open("$PYMOL_HOME/data/chempy/sidechains/sc_bb_dep.pkl",'r')) >>>> >>>> # get residue name, you need to select the residue >>>> # into "my_res" >>>> from pymol import stored >>>> stored.r = '' >>>> iterate first my_res, stored.r = resn >>>> >>>> # get residue info; prepare dictionary key >>>> (phi,psi) = cmd.phi_psi("br. first my_res") >>>> >>>> # warren also does 20 and 60 in place of 10--three possible lookups >>>> key = ( stored.r, int(10*round(phi/10)), int(10*round(psi/10))) >>>> >>>> if key in rot_lib.keys(): >>>> print "This rotamer has %s possible positions" % len(rot_lib[key]) >>>> >>>> Lookups in the independent library are easier--just provide a residue >>>> name. >>>> >>>> Cheers, >>>> >>>> -- Jason >>>> >>>> >>>> On Sun, Sep 12, 2010 at 11:04 AM, Martin Hediger<ma....@bluewin.ch> >>>> wrote: >>>>> >>>>> Dear all, let me rephrase my question in a less confusing way. >>>>> For a given mutant, I need a PDB file for every available rotamer. I >>>>> guess thats the simplest way of putting it. How can I achieve that? >>>>> >>>>> Thanks for hints. >>>>> Martin >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Am 12.09.10 00:08, schrieb Martin Hediger: >>>>>> >>>>>> Hi all >>>>>> I want to do some scripted mutations on a range of residues. Say I >>>>>> want >>>>>> to mutate residue 189 to every rotamer of [Asp, His, Glu, Thr, Lys] >>>>>> available in the PyMOL internal rotamer library. I'm seeing that PyMOL >>>>>> issues cmd.get_wizard().do_state(i) to select rotamer 'i' for a >>>>>> mutation. Now, if I want to iterate over all available rotamers, I >>>>>> need >>>>>> the limit rotamer number. How can I obtain the maximum number of >>>>>> rotamers available for every amino acid? >>>>>> >>>>>> Thanks for hints on this >>>>>> >>>>>> Martin >>>>>> >>>>>> >>>>>> >>>>>> ------------------------------------------------------------------------------ >>>>>> Start uncovering the many advantages of virtual appliances >>>>>> and start using them to simplify application deployment and >>>>>> accelerate your shift to cloud computing >>>>>> http://p.sf.net/sfu/novell-sfdev2dev >>>>>> _______________________________________________ >>>>>> 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 >>>>>> >>>>> >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> Start uncovering the many advantages of virtual appliances >>>>> and start using them to simplify application deployment and >>>>> accelerate your shift to cloud computing >>>>> http://p.sf.net/sfu/novell-sfdev2dev >>>>> _______________________________________________ >>>>> 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 >>>>> >>>> >>> >> >> > > -- Jason Vertrees, PhD PyMOL Product Manager Schrodinger, LLC (e) jason.vertr...@schrodinger.com (o) +1 (603) 374-7120 ------------------------------------------------------------------------------ Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing. http://p.sf.net/sfu/novell-sfdev2dev _______________________________________________ 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