Test it and see ;)  And if you are interested in the speed up in this
part of the analysis, you can take it one more step and implement the
Hessian in the C modules and then time the Newton algorithm!

Regards,

Edward

On 26 August 2014 13:26, Troels Emtekær Linnet <[email protected]> wrote:
> Should this be used instead then in R2eff minimisation?
>
> Is it faster than simplex?
>
> Best
> Troels
>
> 2014-08-26 13:04 GMT+02:00 Edward d'Auvergne <[email protected]>:
>> Oh, I forgot to mention, but I also converted the
>> Relax_fit.test_curve_fitting_height and
>> Relax_fit.test_curve_fitting_volume system tests to use BFGS
>> optimisation.  This is one of the best optimisation techniques when
>> only the function and gradient are present, as it tries to numerically
>> approximate the Hessian matrix, updating it as the algorithm moves
>> along.  It is fast and performs incredibly well, so it is a widely
>> used algorithm.  The system tests using BFGS demonstrate that the
>> gradient works very well for optimisation.  It isn't as fast as Newton
>> optimisation however.
>>
>> Regards,
>>
>> Edward
>>
>>
>>
>>
>> On 26 August 2014 13:00, Edward d'Auvergne <[email protected]> wrote:
>>> 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