mailSupport for SQ and MQ dispersion data in relax.


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on September 04, 2013 - 16:47:
The following are reference development notes for how to modify relax
to handle multi-quantum (MQ) data.  Currently relax supports
single-quantum (SQ) data but not MQ data.  There are three aspects to
this problem, detailed below.  Note that the changes for part 2) will
likely break the code of the relax_disp branch for a short time.


1)  The MQ models.

Firstly the specific MQ model(s) must be added to relax (following the
steps at 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax).
 This part is relatively trivial, especially if the code already
exists, a published reference exists, and equations can be copied from
a paper directly into the relax manual.  For example the 'MQ CR72'
model supported by GUARDD (http://dx.doi.org/10.1021/ja049968b).


2) Infrastructure changes.

There is one infrastructure change required to support this.  The
reason is because most people with MQ data will want to analyse it
simultaneously with SQ data (well, that is my guess from the
literature data).  Support for optimising both SQ and MQ data
simultaneously needs to be added.  Currently relax only handles one
type of dispersion data per data pipe.  This should not be too hard to
change.  Such a change could allow CPMG-type and R1rho-type data to be
analysed simultaneously as well.  In each individual data combination
case, a specific combined model such as 'SQ+MQ CR72' would need to be
created.  This model would be independent of the 'CR72' and 'MQ CR72'
models, and the user will have to explicitly select it.

The only change from the perspective of the user would the
relax_disp.exp_type user function.  This user function currently sets
the experiment type for all data in the current data pipe.  This needs
to be changed to be similar to the relax_disp.cpmg_frq,
relax_disp.relax_time, relax_disp.spin_lock_field, etc user functions,
where the experiment type is associated with a spectrum ID.  The GUI
would be changed so that this user function is not presented when
setting up a new analysis, but rather when the peak lists are being
loaded.  The GUI element displaying the experiment type would need to
be removed and the data presented in the peak list GUI element
instead.

The backend changes would be more extensive.  The following generator
functions would need to be added to
specific_analyses.relax_disp.disp_data:

loop_exp() - for new usages.
loop_exp_frq() - to replace calls to loop_frq().
loop_exp_frq_point() - to replace calls to loop_frq_point().
loop_exp_frq_point_time() - to replace calls to loop_frq_point_time().

The the code in specific_analyses.relax_disp and
target_functions.relax_disp need to be modified around this new
concept.  I.e. a new top level looping needs to be inserted.  The
looping hierarchy from highest level to lowest would become:
experiment type, magnetic field strength, dispersion point (CPMG
frequency or spin-lock field strength), and finally relaxation time.
The only difference to now is the highest level experiment type
looping.

The cdp.exp_type data structure will need to be converted into a
dictionary where the keys are the spectrum IDs.


3) Test data.

More of an issue is data!  Test data is essential to be sure that the
code is functional.  And in relax it needs to be incorporated into a
system test.  The most important point is that the data needs to be
independent of relax - the same code for fitting cannot be used to
generate synthetic data.  The more independence between relax and this
test data, the better.

Literature data for MQ data appears not to be available.  It looks
like corresponding authors would need to be emailed for access to the
base data and numerical results.  An alternative is provided by the
Matlab software GUARDD.  It has a module for simulating dispersion
data 
(http://code.google.com/p/guardd/#Optimization_and_education_with_RD_Simulator).
 This could be used to generate the test data to be included with
relax.  Some test data is also provided by the program.  This could
also be used, but it suffers from the fact that the real parameter
values are not known.  But it can be used to directly compare relax
and GUARDD.

Regards,

Edawrd



Related Messages


Powered by MHonArc, Updated Wed Sep 04 20:40:09 2013