On 3 June 2016 at 10:28, Edward d'Auvergne <edw...@nmr-relax.com> wrote:
> On 13 May 2016 at 04:07, Henry <no-reply.invalid-addr...@gna.org> 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.

Hi Henry,

I have now re-derived the gradients and Hessians for the inversion
recovery equation, and implemented these and the correct equation in
the corresponding optimisation target function
(target_functions/exponential_inv.c).  If you would like to test this
out, I would suggest obtaining relax from the source code repository:

    http://www.nmr-relax.com/download.html#Source_code_repository

I do not know when the next relax release will be made, so this would
be the quickest way to obtain the fixes.

Cheers,

Edward

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

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

Reply via email to