mailRe: [sr #3345] Inversion recovery curve fitting


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

Header


Content

Posted by Edward d'Auvergne on June 03, 2016 - 10:29:
On 13 May 2016 at 04:07, Henry <NO-REPLY.INVALID-ADDRESS@xxxxxxx> wrote:
URL:
  <http://gna.org/support/?3345>

                 Summary: Inversion recovery curve fitting
                 Project: relax
            Submitted by: orton_henry
            Submitted on: Fri 13 May 2016 02:07:09 UTC
                Category: None
                Priority: 5 - Normal
                Severity: 4 - Important
                  Status: None
             Assigned to: None
        Originator Email:
             Open/Closed: Open
         Discussion Lock: Any
        Operating System: GNU/Linux

    _______________________________________________________

Details:

Hi Edward,

The relax software has been working well for exponential curve fitting of R2
relaxation, however I have run into a few problems fitting the R1 parameter.

The grid search seems to fail to provide a good starting point for initial
parameters when the 'inv' model is chosen and always sets the R1 parameter 
to
zero. The subsequent minimisation then seems to fail to converge giving 
either
n> I(t) = Iinf - (Iinf - I0) * exp(-R1 * t)egative or very small values. 
The minimisation gives the same results when I
constrain the grid search to the exact parameters also.

I'm wondering if the functional form of the inversion recovery model is 
right.
The model is given as:

I(t) = Iinf - I0 * exp(-R1 * t)

This model claims that the intensity at t=0 is (Iinf - I0) which doesn't 
seem
right. Maybe the following model could work better?

I(t) = Iinf - (Iinf - I0) * exp(-R1 * t)

However, even with the default model, I would expect it to fit the data well
(at least for the R1 parameter) despite the Iinf and I0 parameters maybe 
being
fit incorrectly.

In order to avoid the general complexity that seems to come with 3 parameter
models over 2 parameter models, it would be great to see the inclusion of a 
2
parameter inversion recovery model that is something like this:

I(t) = Iinf * (1 - 2 * exp(-R1 * t))

I had a go at implementing this model simply by modifying the definition of
the saturation recovery model in the 'exponential_sat.c' file as it is very
similar. However I got poor results again where the R1 parameter was 4 
orders
of magnitude too large (even when constraining the parameters in the grid
search). The R1 should be around 0.6 /s

One final thing, I noticed that relax can't handle negative intensities for
the inversion recovery  model so I had to convert my data to positive.

I've included the script and data I have been using. My data has fairly 
short
relaxation delays as I wanted to prevent NOE biexponentials and I'm not sure
if this is contributing to errors.

Any help would be greatly appreciated.
Thanks so much,
Henry

P.S. The data 'gb1Y_t1_relax.csv' is arranged in the following columns and 
is
read directly using the script 'relaxmac_t1.py'

[Assignment, 1Hppm, 15Nppm, 1H point, 15N point, tot. num peaks, contrib. 
num
peaks, RMSD noise, delay1, delay2, delay3, delay4, intens. 1, intens. 2,
intens. 3, intens. 4]

The delays are in milliseconds but the script converts this to seconds 
before
fitting.

Hi Henry,

Welcome to the relax mailing lists!  Sorry for the late response.
I've been quite busy, and double and triple checking a challenge of an
implementation takes rather some time.  I think you might be correct
with the inversion recovery experiment.  I went back to my original
source:

    Palmer, A. G. and Rance, M. and Wright, P. E. (1991)
Intramolecular Motions of a Zinc Finger DNA-Binding Domain from Xfin
Characterized by Proton-Detected Natural Abundance 3C Heteronuclear
NMR Spectroscopy.  J. Am. Chem.Soc., 113, 4371-4380

There the equation is:

    I(t) = Iinf - (Iinf - I0) * exp(-R1 * t)

This was the equation as I knew it. I checked the
target_functions/exponential_inv.c and can see that our implementation
is:

    I(t) = Iinf - I0 * exp(-R1 * t)

This is clearly incorrect.  And I have no idea how this happened, as I
am quite familiar with this equation.  However no one has picked this
up as, in the 15 year history of relax, no one has measured the
inversion recovery experiment and tested relax with it.  The
experiment is far inferior to the saturation recovery experiment (the
3 parameter fit absorbs significantly more noise into the R1 value
compared to a 2 parameter fit).  Are you sure you measured the
inversion recovery experiment?  Anyway, this is why this bug has never
been seen before.  I am in the process of updating the code and will
get back to you once this bug is fixed.

Regards,

Edward



Related Messages


Powered by MHonArc, Updated Fri Jun 03 11:20:13 2016