Hi Ed,
I tried what you proposed...
========================
from generic_fns.mol_res_spin import spin_loop
pipe.create()
sequence.read()
structure.read_pdb()
structure.vectors()
for spin, spin_id in spin_loop(return_id=True):
print "%s %s" % (spin_id, spin.xh_vect)
========================
However, there is something quite annoying (but predictable)... If the
sequence used contains residues for which the N-H vector does not exist
(e.g. N-terminal residue, or proline), the spin loop will produce an
error message such as:
========================
for spin, spin_id in spin_loop(return_id=True):
print "%s %s" % (spin_id, spin.xh_vect)
Traceback (most recent call last):
File "<console>", line 2, in <module>
AttributeError: 'SpinContainer' object has no attribute 'xh_vect'
========================
Using the function 'deselect_read()' does not solve this problem...
One way to avoid this is to read a sequence not including the spins
without attached spin... However, the ideal would be to have relax
output something like:
========================
:141&:a...@n [ 0.8840636 0.0631474 0.46308093]
:142&:p...@n [ None None None]
...
========================
What do you think ? Is that some bug ?
Maybe, also, we could add a system test and a sample script for this
kind of analysis which could be useful to some people...
Regards,
Sébastien :)
Edward d'Auvergne wrote:
> Oh, maybe you want the spin loop set up like:
>
> for spin, spin_id in spin_loop(return_id=True):
> print "%s %s" % (spin_id, spin.xh_vect)
>
> So you know which molecule/residue/atom you are looking at.
>
> Regards,
>
> Edward
>
>
> On Sun, Jan 18, 2009 at 1:26 PM, Edward d'Auvergne <[email protected]>
> wrote:
>
>> Hi,
>>
>> relax already stores all the bond vectors in the spin container, if
>> the ave argument to structure.vectors() is set to False and multiple
>> models are loaded. There's nothing to dump these values to a file yet
>> though (value.write() I don't think can output lists or vectors), or
>> nothing to really process these vectors. A script skeleton that could
>> access all these vectors though would be something like:
>>
>> from generic_fns.mol_res_spin import spin_loop
>> pipe.create()
>> structure.read_pdb()
>> structure.vectors()
>> for spin in spin_loop():
>> print spin.xh_vect
>>
>> This gives you access to the data you require - you just have to set
>> up the arguments correctly and dump the data as you wish.
>>
>> Regards,
>>
>> Edward
>>
>>
>> On Sat, Jan 17, 2009 at 10:33 PM, Sébastien Morin
>> <[email protected]> wrote:
>>
>>> Hi Ed,
>>>
>>> Thanks for the detailed and rapid answer !
>>>
>>> These functionalities would be great ! The use of X-H vectors
>>> orientations spread could be used in cases where several structures are
>>> present to assess flexibility from different structures ! This would
>>> allow a better use of these structures, but also a better
>>> rationalization of NMR dynamics !
>>>
>>> I propose these ideas could be added in the (already quite long) todo
>>> list... ;)
>>>
>>> As for what will soon be possible within relax, i.e. the possibility for
>>> the spin container to be filled with a list of orientations, how would
>>> you use relax to extract these orientations and output a list for each
>>> spin ? Is there a sample script for doing something like that ? This
>>> would be useful for someone interested in getting the orientations and
>>> analysing them out of relax, until the code is present... ;)
>>>
>>> Regards,
>>>
>>>
>>> Séb :)
>>>
>>>
>>>
>>>
>>> Edward d'Auvergne wrote:
>>>
>>>> Hi,
>>>>
>>>> I'm actually changing that code at the moment. If you follow my
>>>> commit messages you'll see how this will be handled in relax, very
>>>> soon. The changes are happening in the multi_structure branch where I
>>>> am introducing the distinction between different models (the same
>>>> molecules but with different conformations) verses different molecules
>>>> within one model. I'm modifying the structure.vectors() user function
>>>> now, and this is probably the one you are interested in. Using this
>>>> function, you can extract the vectors from all different models and
>>>> these will be placed in the spin container. With the 'ave' arg set to
>>>> False, each spin container will have a list of 3D vectors for all
>>>> models.
>>>>
>>>> As for analysing the spread of these vectors and then doing something
>>>> with that, nothing is present in relax. If you would like to have
>>>> this functionality, a little work will need to be done and a few
>>>> algorithms designed. The eliminate() user function for deselecting
>>>> spins is close but not quite what you need. It accepts an arbitrary
>>>> function but is not the correct place for this idea. Better would be
>>>> something like:
>>>>
>>>> deselect.mobile()
>>>> deselect.structural_noise()
>>>> deselect.vectors()
>>>> deselect.spread_vectors()
>>>>
>>>> with an argument such as (vector_spread_cutoff=0.53), where 0.53 is
>>>> some measure of the spread. This might be expandable to B-factors.
>>>> If the name deselect.mobile() is used, this could cover a vector
>>>> spread, B-factors, low S2 values, etc. Oh, with the deselect user
>>>> functions, there should always be a counterpart in the select user
>>>> function class. This will allow the deselected spins of the first
>>>> analysis to be used in a second with local tm values rather than a
>>>> global diffusion tensor. Is this what you had in mind?
>>>>
>>>> Regards,
>>>>
>>>> Edward
>>>>
>>>>
>>>> On Thu, Jan 15, 2009 at 4:33 PM, Sébastien Morin
>>>> <[email protected]> wrote:
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> We are currently studying a system for which many structures are
>>>>> available.
>>>>>
>>>>> We thought it would be a great idea to compare X-H (N-H in our case)
>>>>> orientations to spot residues for which the orientation varies in the
>>>>> different structures, i.e. for which there might be important motions.
>>>>>
>>>>> We thought this could be useful to eliminate such residues with
>>>>> tremendous motions from diffusion tensor optimization and test them as
>>>>> diffusing independently (local tm).
>>>>>
>>>>> Is there a way to do that in relax ?
>>>>>
>>>>> We saw the sample script 'xh_vector_dist.py' which allows one to plot
>>>>> the vector orientations distribution. However, what we would like to get
>>>>> would be a file containing the orientations which could allow us to
>>>>> compare different structures quantitatively on a per residue basis...
>>>>>
>>>>> Thanks for help !
>>>>>
>>>>>
>>>>> Sébastien Morin
>>>>>
>>>>> _______________________________________________
>>>>> relax (http://nmr-relax.com)
>>>>>
>>>>> This is the relax-users mailing list
>>>>> [email protected]
>>>>>
>>>>> To unsubscribe from this list, get a password
>>>>> reminder, or change your subscription options,
>>>>> visit the list information page at
>>>>> https://mail.gna.org/listinfo/relax-users
>>>>>
>>>>>
>>>>>
>>>>
>>>
>
>
_______________________________________________
relax (http://nmr-relax.com)
This is the relax-users mailing list
[email protected]
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-users