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

Reply via email to