Author: tlinnet
Date: Thu Aug 21 19:44:44 2014
New Revision: 25188
URL: http://svn.gna.org/viewcvs/relax?rev=25188&view=rev
Log:
Inserted intermediate systemtest, to profile R2eff calculation for R1rho.
Systemtest is: Relax_disp.test_bug_9999_slow_r1rho_r2eff_error_with_mc
This systemtest actually fails, if one tries to do a Grid Search.
This is related to the R2eff values stored as dictionary, and
pipe_control.minimise.grid_setup() will fail.
The function 'isNaN(values[i])' cannot handle dictionary.
Modified:
trunk/test_suite/system_tests/relax_disp.py
Modified: trunk/test_suite/system_tests/relax_disp.py
URL:
http://svn.gna.org/viewcvs/relax/trunk/test_suite/system_tests/relax_disp.py?rev=25188&r1=25187&r2=25188&view=diff
==============================================================================
--- trunk/test_suite/system_tests/relax_disp.py (original)
+++ trunk/test_suite/system_tests/relax_disp.py Thu Aug 21 19:44:44 2014
@@ -35,7 +35,7 @@
from lib.io import get_file_path
from pipe_control.mol_res_spin import generate_spin_string, return_spin,
spin_loop
from specific_analyses.relax_disp.checks import check_missing_r1
-from specific_analyses.relax_disp.data import generate_r20_key,
get_curve_type, has_r1rho_exp_type, loop_exp_frq, loop_exp_frq_offset_point,
return_grace_file_name_ini, return_param_key_from_data
+from specific_analyses.relax_disp.data import generate_r20_key,
get_curve_type, has_exponential_exp_type, has_r1rho_exp_type, loop_exp_frq,
loop_exp_frq_offset_point, loop_exp_frq_offset_point_time,
return_grace_file_name_ini, return_param_key_from_data
from specific_analyses.relax_disp.data import INTERPOLATE_DISP,
INTERPOLATE_OFFSET, X_AXIS_DISP, X_AXIS_W_EFF, X_AXIS_THETA, Y_AXIS_R2_R1RHO,
Y_AXIS_R2_EFF
from specific_analyses.relax_disp.model import models_info, nesting_param
from specific_analyses.relax_disp.variables import EXP_TYPE_CPMG_DQ,
EXP_TYPE_CPMG_MQ, EXP_TYPE_CPMG_PROTON_MQ, EXP_TYPE_CPMG_PROTON_SQ,
EXP_TYPE_CPMG_SQ, EXP_TYPE_CPMG_ZQ, EXP_TYPE_LIST, EXP_TYPE_R1RHO,
MODEL_B14_FULL, MODEL_CR72, MODEL_CR72_FULL, MODEL_DPL94, MODEL_IT99,
MODEL_LIST_ANALYTIC_CPMG, MODEL_LIST_FULL, MODEL_LIST_NUMERIC_CPMG, MODEL_LM63,
MODEL_M61, MODEL_M61B, MODEL_MP05, MODEL_NOREX, MODEL_NS_CPMG_2SITE_3D_FULL,
MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_NS_CPMG_2SITE_STAR_FULL,
MODEL_NS_R1RHO_2SITE, MODEL_NS_R1RHO_3SITE, MODEL_NS_R1RHO_3SITE_LINEAR,
MODEL_PARAMS, MODEL_R2EFF, MODEL_TP02, MODEL_TAP03
@@ -1352,6 +1352,86 @@
# Assert that the number of columns is equal, plus 1 for "#".
self.assertEqual(nr_split_header, len(line_split_val) + 1)
+
+
+ def test_bug_9999_slow_r1rho_r2eff_error_with_mc(self):
+ """Catch U{bug #9999<https://gna.org/bugs/?9999>}, The slow
optimisation of R1rho R2eff error estimation with Monte Carlo simulations."""
+
+ # Define path to data
+ prev_data_path = status.install_path +
sep+'test_suite'+sep+'shared_data'+sep+'dispersion'+sep+'Kjaergaard_et_al_2013'
+sep+ "check_graphs" +sep+ "mc_2000" +sep+ "R2eff"
+
+ # Read data.
+ self.interpreter.results.read(prev_data_path + sep + 'results')
+
+ # Get initial offset, point, time
+ for exp_type, frq, offset, point, time, ei, mi, oi, di, ti in
loop_exp_frq_offset_point_time(return_indices=True):
+ offset_i = offset
+ point_i = point
+ time_i = time
+ break
+
+ # Now count number
+ graph_nr = 0
+ for exp_type, frq, offset, point, time, ei, mi, oi, di, ti in
loop_exp_frq_offset_point_time(return_indices=True):
+ print(exp_type, frq, offset, point, time)
+
+ # If different, count 1 graph.
+ if offset != offset_i or point != point_i:
+ offset_i = offset
+ point_i = point
+ graph_nr += 1
+ print("Graph %i complete\n" % graph_nr)
+
+ print(graph_nr + 1)
+
+ # Check if intensity errors have already been calculated by the user.
+ precalc = True
+ for spin in spin_loop(skip_desel=True):
+ # No structure.
+ if not hasattr(spin, 'peak_intensity_err'):
+ precalc = False
+ break
+
+ # Determine if a spectrum ID is missing from the list.
+ for id in cdp.spectrum_ids:
+ if id not in spin.peak_intensity_err:
+ precalc = False
+ break
+
+ # Skip.
+ if precalc:
+ print("Skipping the error analysis as it has already been
performed.")
+
+ else:
+ # Loop over the spectrometer frequencies.
+ for frq in loop_frq():
+ # Generate a list of spectrum IDs matching the frequency.
+ ids = []
+ for id in cdp.spectrum_ids:
+ # Check that the spectrometer frequency matches.
+ match_frq = True
+ if frq != None and cdp.spectrometer_frq[id] != frq:
+ match_frq = False
+
+ # Add the ID.
+ if match_frq:
+ ids.append(id)
+
+ # Run the error analysis on the subset.
+ self.interpreter.spectrum.error_analysis(subset=ids)
+
+ print("has_exponential_exp_type:", has_exponential_exp_type())
+
+ model = 'R2eff'
+ self.interpreter.relax_disp.select_model(model)
+
+ # Do Grid Search
+ self.interpreter.minimise.grid_search(lower=None, upper=None, inc=11,
constraints=True, verbosity=1)
+
+ # Do minimisation.
+ set_func_tol = 1e-11
+ set_max_iter = 10000
+ self.interpreter.minimise.execute(min_algor='simplex',
func_tol=set_func_tol, max_iter=set_max_iter, constraints=True, scaling=True,
verbosity=1)
def test_check_missing_r1(self):
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits 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-commits