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 >>>> >>> >> > > ------------------------------------------------------------------------------ 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