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&:ala@N [ 0.8840636 0.0631474 0.46308093] :142&:pro@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 <edward@xxxxxxxxxxxxx> 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 <sebastien.morin.1@xxxxxxxxx> 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 <sebastien.morin.1@xxxxxxxxx> 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 relax-users@xxxxxxx 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