Hi,

I contacted a few people concerning the sharing of CPMG relaxation
dispersion data to put in the system tests... These are data from papers
published by the Kay, Wright and Torchia labs... I should have news from
them in the coming week.

If someone knows of a few good papers for R1rho dispersion relaxation,
it could be a great idea to contact them to get the raw and fitted data
to input into our system tests... I can take care of that part too if I
know who to contact and for which paper...

Regards,


Séb  :)


Edward d'Auvergne wrote:
> On Thu, Jan 8, 2009 at 5:40 AM, Sébastien Morin
> <[email protected]> wrote:
>   
>> Hi,
>>
>> I thought about the task (Should I add the implementation of relaxation
>> dispersion as a task on the Gna web site ?) and here is how I see the
>> flow-through of an analysis...
>>     
>
> If you would like to add it as a task, feel free and then assign it to 
> yourself.
>
>
>   
>> 1.
>> A user will want to perform relaxation dispersion analysis. The user
>> will first have to chose whether CPMG or R1rho experiments were
>> recorded, the choice of which will determine if intensities are
>> associated to different CPMG pulse train frequencies or to different
>> R1rho spin lock field strength.
>>
>> Let's say the user types the command:
>>    relax_disp.exp_type('cpmg')
>> and chooses the CPMG experiment.
>>
>> The intensities will then be associated to different CPMG pulse train
>> frequencies, or to a null frequency (for the reference spectrum).
>>     
>
> Having a value of None or something like a string value of 'ref' for
> the CPMG frequencies would be enough to identify the reference
> spectrum.
>
>
>   
>> We can now assume that the user recorded CPMG experiment from which
>> R2eff values are extracted as follows:
>>    R2eff = ( 1 / T ) * Ln( Icpmg / Iref )
>> where T is the constant time relaxation delay, Icpmg is the peak height
>> with CPMG, and Iref is the peak height without CPMG (reference).
>>
>> There should be a function to input the delay T used... Should this
>> function be called something like:
>>    relax_disp.cpmg_delayT()
>> and accept a float ?
>>     
>
> This should accept a float, and it should be a value in seconds.
> Other suggestions for the name of the user function:
>
> relax_disp.tau_cpmg(),
> relax_disp.CT_period(),
> relax_disp.CT_length(),
> relax_disp.cmpg_delay(),
> etc.
>
> I'm not sure of the equation yet, but If we have to convert to the
> unitless radial units this can be done later within relax.
>
>
>   
>> From this step, peak intensities will be used to calculate R2eff for the
>> different frequencies used. How should duplicated reference spectra (if
>> present) be treated (since they have an effect in every R2eff calculated) ?
>>     
>
> I think they should be treated exactly the same as in the exponential
> relaxation curve-fitting - i.e. treat each duplicate spectrum as a
> separate time point.  The exception would be the reference spectrum
> where the average value must, obviously because of the equation you
> give above, be used.  I think a better error analysis for relaxation
> dispersion would not be replicated spectra but rather measuring the
> RMSD of the base plane noise and using that as the errors for the
> minimisation and Monte Carlo simulations.  Does anyone know how error
> analysis is performed in relaxation dispersion?  I'm not familiar with
> it enough.
>
>
>   
>> In the future, we could add a function for selecting this approach or
>> another (if others exist and are of interest).
>>     
>
> All this infrastructure is already within relax, and is independent
> from the analysis type.  I developed it all in the 'spectral_errors'
> branch which was merged back into the mainline at r8093.  The only
> code missing would be for handling duplicated reference spectra, but
> this should be code specific to relaxation dispersion.  And it could
> be developed later on as I don't know if people collect the reference
> spectrum in duplicate.
>
>
>   
>> 2.
>> The user will then need to chose which mathematical model to use, fast
>> or slow exchange. Let's say the user types a command like:
>>    relax_disp.select_model('fast')
>> and chooses fast exchange.
>>
>> (Should this function be renamed to something like:
>> relax_disp.cpmg_select_model() since it is associated to CPMG experiments ?)
>>     
>
> For simplicity, I think that this function should handle both the CPMG
> and the R1rho and simply raise a RelaxError if 'r1rho' is set and a
> CMPG equation is selected (and probably raise a RelaxError if no
> experiment type is set).  Are there any equations shared between the
> CMPG and R1rho analyses?  If each model identifies the experiment type
> unambiguously, then the relax_disp.exp_type() user function is not
> necessary.  I'm not sure what is best here until I see all the
> equations - even those for the accordion type experiments.
>
> I saw the code you added here, and I think that putting the equations,
> references, and descriptions into the user function docstrings as you
> did in your Mathematica notebook would be very useful.
>
>
>   
>> The R2eff values calculated in part 1 will then be input in the chosen
>> equation and minimised.
>>
>> This is different as in standard curve fitting for R1 and R2, since the
>> R2eff values are first calculated and then are passed to the dispersion
>> equations to be minimised.
>>
>> Am I right ?
>>     
>
> This is correct.  There should be a method added to the
> specific_fns.relax_disp.Relax_disp class which calculates R2eff using
> the equation you gave above.  This method can then be called by
> methods such as calc(), back_calc(), grid_search(), minimise(), etc.
> to generate the R2eff values.
>
>
>   
>> In the case of CPMG data in the fast-exchange limit, should the
>> relaxation dispersion specific user commands be as follows:
>>
>>    relax_disp.exp_type('cpmg')
>>    relax_disp.cpmg_delayT(0.040)
>>    relax_disp.cpmg_select_model('fast')
>>
>> and should the data go as follows:
>>
>>    intensities  -->  calculated [R2eff]  -->  minimised [R2, Rex, kex]
>>     
>
> Here in the script you would use:
>
> spectrum.read_intensities()
> spectrum.replicated() or spectrum.baseplane_rmsd()
> spectrum.error_analysis()
> frq.set()    (set the spectrometer frequency)
> relax_disp.nu_cmpg()   (or maybe tcp_cmpg in seconds, and then relax
> will convert to radial units)
> grid_search(inc=11)
> minimise('simplex', scaling=False, constraints=False)
>
> The grid_search() and minimise() functions should automatically at the
> start calculate R2eff.
>
>
>   
>> ======================================
>> ======================================
>>
>> Moreover, what about the intermediate-exchange limit ? Is that of any
>> importance and should it be implemented also in relax ?
>>    I propose yes, although I'll have to check for the equations, and
>> everything...
>>     
>
> Again this can be treated as another model - which can be added later.
>  If the infrastructure for the other models is in place, then adding
> this will be insanely trivial.
>
>
>   
>> Also, as for choosing whether slow-, intermediate- or fast-exchange
>> equations are best suited for the data, there is, of course, the use of
>> model selection implemented into relax, but also the use of the alpha
>> parameter (Millet et al., JACS, 2000, 122: 2867-2877 (equation 14))
>> which can help determining the exchange limit...
>>    How could we combine both ?
>>     
>
> If alpha is found within an equation and is optimised - then this is
> again another model.  This model tells you where in the exchange
> regime you are.  This can go directly into AIC and BIC model selection
> for comparison to the other models such as 'fast', 'slow', etc.  When
> ever there is a different equation, even slightly, then this is a new
> mathematical model.
>
>
>   
>> Finally, what about group fitting of dispersion data to extract better
>> parameters based on a common exchange rate (kex or kA, for fast- or
>> slow-exchange, respectively) ? Should this be thought about in the
>> beginning of the development or will it be easy to implement this when
>> the rest works ?
>>     
>
> Do you mean have one parameter that spans multiple spins?  This again
> would be another model.  It would be global though as it affects more
> than one spin.  It will require a different set of equations - ones
> that loop over the relevant spins.  It will be a bit like the global
> model-free models where the diffusion tensor is optimised affecting
> the model-free parameters of individual spins.  This, like all new
> models, can be added later with zero redesign of relax.  The
> infrastructure will be in place and you just have to code the
> equations into a new function in maths_fns (and add some documentation
> to the relax_disp.select_model() user function).
>
> Cheers,
>
> Edward
>
>   


_______________________________________________
relax (http://nmr-relax.com)

This is the relax-devel 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-devel

Reply via email to