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