Hi Troels, I've now implemented the exponential curve-fitting dfunc() function for calculating the gradient. This includes:
- The Python wrapper function specific_analyses.relax_fit.optimisation.dfunc_wrapper(), - The target_functions/c_chi2.c function dchi2(), - The target_functions/exponential.c functions exponential_dI0() and exponential_dR(), - The target_functions.relax_fit C module dfunc() Python function. I have tested the gradient using the numerical integration in the test_suite/shared_data/curve_fitting/numeric_gradient/integrate.py file to determine what the chi-squared gradient should be at different parameter combinations. And this has been converted into a few unit tests. As this works, that means that the jacobian() function of the C module should also be correct and bug-free, hence you should be able to use it to obtain the covariance matrix. This is all I will do for now. All that is left is to do for the target_functions.relax_fit C module is simply the same thing, but for the Hessian. Feel free to give this a go if you are interested. If I have time in the future, I might add this too. Regards, Edward On 24 August 2014 17:56, Troels E. Linnet <[email protected]> wrote: > URL: > <http://gna.org/task/?7822> > > Summary: Implement user function to estimate R2eff and > associated errors for exponential curve fitting. > Project: relax > Submitted by: tlinnet > Submitted on: Sun 24 Aug 2014 03:56:36 PM UTC > Should Start On: Sun 24 Aug 2014 12:00:00 AM UTC > Should be Finished on: Sun 24 Aug 2014 12:00:00 AM UTC > Category: relax's source code > Priority: 5 - Normal > Status: In Progress > Percent Complete: 0% > Assigned to: tlinnet > Open/Closed: Open > Discussion Lock: Any > Effort: 0.00 > > _______________________________________________________ > > Details: > > A verification script, showed that using scipy.optimize.leastsq reaches the > exact same parameters as minfx for exponential curve fitting. > > The verification script is in: > test_suite/shared_data/curve_fitting/profiling/profiling_relax_fit.py > test_suite/shared_data/curve_fitting/profiling/verify_error.py > > The profiling script shows that a 10 X increase in speed can be reached by > removing > the linear constraints when using minfx. > > The profiling also shows that scipy.optimize.leastsq is 10X as fast as using > minfx, even without linear constraints. > > scipy.optimize.leastsq is a wrapper around wrapper around MINPACK's lmdif and > lmder algorithms. > > MINPACK is a FORTRAN90 library which solves systems of nonlinear equations, or > carries out the least squares minimization of the residual of a set of linear > or nonlinear equations. > > The verification script also shows, that a very heavy and time consuming > monte carlo simulation of 2000 steps, reaches the same errors as the errors > reported by scipy.optimize.leastsq. > > The return from scipy.optimize.leastsq, gives the estimated co-variance. > Taking the square root of the co-variance corresponds with 2X error reported > by minfx after 2000 Monte-Carlo simulations. > > This could be an extremely time saving step, when performing model fitting in > R1rho, where the errors of the R2eff values, are estimated by Monte-Carlo > simulations. > > The following setup illustrates the problem. > This was analysed on a: MacBook Pro, 13-inch, Late 2011. > With no multi-core setup. > > Script running is: > test_suite/shared_data/dispersion/Kjaergaard_et_al_2013/2_pre_run_r2eff.py > > This script analyses just the R2eff values for 15 residues. > It estimates the errors of R2eff based on 2000 Monte Carlo simulations. > For each residues, there is 14 exponential graphs. > > The script was broken after 35 simulations. > This was measured to 20 minutes. > So 500 simulations would take about 4.8 Hours. > > The R2eff values and errors can by scipy.optimize.leastsq can instead be > calculated in: 15 residues * 0.02 seconds = 0.3 seconds. > > > > > _______________________________________________________ > > Reply to this item at: > > <http://gna.org/task/?7822> > > _______________________________________________ > Message sent via/by Gna! > http://gna.org/ > > > _______________________________________________ > relax (http://www.nmr-relax.com) > > This is the relax-devel mailing list > [email protected] > > 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 _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list [email protected] 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

