I'm beginning to see things.
When I issue:

for value in rot_lib[('ASP', 40, -100)]:
     rl.write(str(value) + '\n')

rot_lib is being initiated by

rot_lib = 
pickle.load(open("/Applications/PyMOLX11Hybrid.app/pymol/data/chempy/sidechains/sc_bb_dep.pkl",'r'))


I get the following output:
{('N', 'CA', 'CB', 'CG'): -169.69999999999999, 'FREQ': 
0.47735699999999998, ('CA', 'CB', 'CG', 'OD1'): 3.6000000000000001}
{('N', 'CA', 'CB', 'CG'): -173.5, 'FREQ': 0.19134399999999999, ('CA', 
'CB', 'CG', 'OD1'): 56.799999999999997}
{('N', 'CA', 'CB', 'CG'): -72.099999999999994, 'FREQ': 
0.11949799999999999, ('CA', 'CB', 'CG', 'OD1'): -12.9}
{('N', 'CA', 'CB', 'CG'): -167.80000000000001, 'FREQ': 0.108205, ('CA', 
'CB', 'CG', 'OD1'): -55.5}
{('N', 'CA', 'CB', 'CG'): -64.599999999999994, 'FREQ': 
0.075302999999999995, ('CA', 'CB', 'CG', 'OD1'): -50.0}
{('N', 'CA', 'CB', 'CG'): 62.399999999999999, 'FREQ': 0.013899, ('CA', 
'CB', 'CG', 'OD1'): 1.3}

I understand these are dictionaries containing the phi, psi values for a 
rotamer. Now this would mean in this case there are six rotamers for 
this situation. Starting to get closer to what i want.
Still, if there is a easy way to get PDB files of every rotamer, that 
would solve my problem.
So the thing left to figure out is how to find the right key for the 
rot_lib to give me the rotamers of the residue i am actually interested in.

Thanks again for the support.

Martin






Am 14.09.10 01:01, schrieb Jason Vertrees:
> 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
>>>>>>
>>>
>>
>
>


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

Reply via email to