mailr25322 - /trunk/specific_analyses/relax_disp/estimate_r2eff.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by tlinnet on August 27, 2014 - 09:19:
Author: tlinnet
Date: Wed Aug 27 09:19:45 2014
New Revision: 25322

URL: http://svn.gna.org/viewcvs/relax?rev=25322&view=rev
Log:
Modified estimate R2eff module, to use C-code.

But systemtest Relax_disp.test_estimate_r2eff_error shows that the Jacobian 
is not correctly implemented
to be called in minfx.

Modified:
    trunk/specific_analyses/relax_disp/estimate_r2eff.py

Modified: trunk/specific_analyses/relax_disp/estimate_r2eff.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/estimate_r2eff.py?rev=25322&r1=25321&r2=25322&view=diff
==============================================================================
--- trunk/specific_analyses/relax_disp/estimate_r2eff.py        (original)
+++ trunk/specific_analyses/relax_disp/estimate_r2eff.py        Wed Aug 27 
09:19:45 2014
@@ -41,6 +41,8 @@
 from specific_analyses.relax_disp.parameters import disassemble_param_vector
 from specific_analyses.relax_disp.variables import MODEL_R2EFF
 from target_functions.chi2 import chi2_rankN
+from target_functions.relax_fit import setup, func, dfunc, d2func, 
back_calc_I
+
 
 # Scipy installed.
 if scipy_module:
@@ -381,7 +383,7 @@
 
 # 'minfx'
 # 'scipy.optimize.leastsq'
-def estimate_r2eff(spin_id=None, ftol=1e-15, xtol=1e-15, maxfev=10000000, 
factor=100.0, method='scipy.optimize.leastsq', verbosity=1):
+def estimate_r2eff(spin_id=None, ftol=1e-15, xtol=1e-15, maxfev=10000000, 
factor=100.0, method='minfx', verbosity=1):
     """Estimate r2eff and errors by exponential curve fitting with 
scipy.optimize.leastsq.
 
     scipy.optimize.leastsq is a wrapper around MINPACK's lmdif and lmder 
algorithms.
@@ -703,19 +705,33 @@
 
     E.set_settings_minfx(min_algor=min_algor)
 
-    # Define function to minimise for minfx.
-    if match('^[Ss]implex$', E.min_algor):
-        func = E.func_exp
-
-        dfunc = None
-        d2func = None
+    # Do C code
+    do_C = True
+
+    if do_C:
+        # Initialise the function to minimise.
+        scaling_list = [1.0, 1.0]
+        setup(num_params=len(x0), num_times=len(E.times), values=E.values, 
sd=E.errors, relax_times=E.times, scaling_matrix=scaling_list)
+
+        t_func = func
+        t_dfunc = dfunc
+        t_d2func = d2func
+
     else:
-        func = E.func_exp
-        dfunc = E.func_exp_grad
-        d2func = E.func_exp_hess
-
-    # Minimise with minfx.
-    results_minfx = generic_minimise(func=func, dfunc=dfunc, d2func=d2func, 
args=(), x0=x0, min_algor=E.min_algor, min_options=E.min_options, 
func_tol=E.func_tol, grad_tol=E.grad_tol, maxiter=E.max_iterations, A=E.A, 
b=E.b, full_output=True, print_flag=E.verbosity)
+        # Minimise with minfx.
+        # Define function to minimise for minfx.
+        if match('^[Ss]implex$', E.min_algor):
+            t_func = E.func_exp
+
+            t_dfunc = None
+            t_d2func = None
+        else:
+            t_func = E.func_exp
+            t_dfunc = E.func_exp_grad
+            t_d2func = E.func_exp_hess
+
+    # Minimise.
+    results_minfx = generic_minimise(func=t_func, dfunc=t_dfunc, 
d2func=t_d2func, args=(), x0=x0, min_algor=E.min_algor, 
min_options=E.min_options, func_tol=E.func_tol, grad_tol=E.grad_tol, 
maxiter=E.max_iterations, A=E.A, b=E.b, full_output=True, 
print_flag=E.verbosity)
 
     # Unpack
     param_vector, chi2, iter_count, f_count, g_count, h_count, warning = 
results_minfx




Related Messages


Powered by MHonArc, Updated Wed Aug 27 10:00:07 2014