Hi Jason e.a., I usually do the hashing like:
aa1 = list("ACDEFGHIKLMNPQRSTVWY") aa3 = "ALA CYS ASP GLU PHE GLY HIS ILE LYS MET ASN PRO GLN ARG SER THR VAL TRP TYR".split() aa123 = dict(zip(aa1,aa3)) aa321 = dict(zip(aa3,aa1)) The real convenience in there is that you can easily construct any kind of hash by just adding a matching list, and zipping. Then to extract a sequence, I tend to go for a construction like: sequence = [ aa321[i.resn] for i in cmd.get_model(selection + " and n. ca").atom ] Cheers, Tsjerk On Mon, Sep 13, 2010 at 12:30 AM, Jason Vertrees <jason.vertr...@schrodinger.com> wrote: > 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 > -- Tsjerk A. Wassenaar, Ph.D. post-doctoral researcher Molecular Dynamics Group Groningen Institute for Biomolecular Research and Biotechnology / University of Groningen The Netherlands ------------------------------------------------------------------------------ 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