mailRe: Relaxation dispersion comparison: The LM63 model results from relax, NESSY and CPMGFit.


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

Header


Content

Posted by Edward d'Auvergne on May 29, 2013 - 15:54:
Hi again,

Please ignore the comment about the constraints algorithm not being
implemented ;)  The relax_disp branch now uses the log barrier
algorithm 
(http://en.wikipedia.org/wiki/Barrier_function#logarithmic_barrier_function)
to constrain the parameters without gradient target functions.  This
was a very simple and quick fix.

Regards,

Edward




On 29 May 2013 12:01, Edward d'Auvergne <edward@xxxxxxxxxxxxx> wrote:
Hi,

Troels, you might be interested in the following comparison.  The
reviving Sebastien Morin's relaxation dispersion branch in relax is
now complete.  The relax_disp branch can now correctly optimise one of
the dispersion models, that of Luz and Meiboom 1963 for 2-site fast
exchange for CPMG-type experiments.  This does not implement the
gradients or Hessians yet, and parameter constraints are still to be
added.  But nevertheless relax can find the correct parameter values.
This should be a good test of the dispersion code in relax as the
addition of other models - such as that for R1rho data, more
complicated models for CPMG-type data, and numerical integration of
the Bloch-McConnell equations - should be trivial after that
(requiring only 20-50 lines of new code, not counting comments and
docstrings).

Through relax user functions, I can now generate the input for CPMGFit
and NESSY.  These are the relax_disp.cpmgfit_input and
relax_disp.nessy_input user functions.  We can now also execute
CPMGFit within relax using relax_disp.cpmgfit_execute.  This can be
completed later, but the idea is to follow the concept of model-free
user functions:

dasha.create
dasha.execute
dasha.extract
palmer.create
palmer.execute
palmer.extract

These are for the Dasha and Modelfree4 programs respectively.
Implementing the 3 user functions for creating input files, executing
the program in-line, and extracting the results from the program's
output will allow relax to use external programs as optimisation
engines.  This is useful for comparing the results from different
programs and really eliminating all bugs from the dispersion field.

Back to the comparison, I have used Flemming Hansen's 500 and 800 MHz
CPMG data from:

Hansen, Vallurupalli & Kay, 2008, JPhysChemB, 112: 5898-5904.

which he donated to Seb to be added to relax (located in
test_suite/shared_data/dispersion/Hansen/).  Looking at a single
randomly chosen residue (number 70), I see different results from the
3 programs:

Param       relax       NESSY       CPMGFit
R2 (500)        6.806       7.639       6.866
R2 (800)        6.679       7.387       6.866
phi         1.259e-13       0.259   1.226e-13
phi (500)   31464.605   26292.031   30644.496
phi (800)   80549.390   67307.598   78449.180
kex          4763.249    3906.180      4.683
tau         4.199e-05   5.120e-05       0.427
chi2          106.393     156.446     106.471

tau = 2/kex (I think that CPMGFit works with ms units).

Obviously NESSY is not doing so well (likely due to using the horribly
buggy scipy optimisation code) and relax and CPMGFit find the same
result for this model.  The slight difference between relax and
CPMGFit is that it looks like CPMGFit assumes the same R2 value for
all static fields - which I think would be a little strange,
especially if fast internal motions are also present for that spin
system.

Therefore I believe that this relax branch is in a state to accept
code for the other models.  The backends for the
relax_disp.cpmgfit_input and relax_disp.nessy_input could be also
modified to handle these new models to allow for rigorous comparisons
and debugging.  The dispersion infrastructure should no longer have
any large changes, so feel free to start playing.

Regards,

Edward



Related Messages


Powered by MHonArc, Updated Thu May 30 15:20:09 2013