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 <edw...@nmr-relax.com> > 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.mori...@ulaval.ca> 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.mori...@ulaval.ca> 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@gna.org >>>>> >>>>> 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 relax-users@gna.org 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