mailr26154 - /trunk/specific_analyses/relax_disp/optimisation.py


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

Header


Content

Posted by tlinnet on October 06, 2014 - 02:39:
Author: tlinnet
Date: Mon Oct  6 02:39:50 2014
New Revision: 26154

URL: http://svn.gna.org/viewcvs/relax?rev=26154&view=rev
Log:
Made back_calc_r2eff() in optimisation module use the spin and id list 
instead.

Bug #22754 (https://gna.org/bugs/index.php?22754): The minimise.calculate() 
does not calculate chi2 value for clustered residues.

Modified:
    trunk/specific_analyses/relax_disp/optimisation.py

Modified: trunk/specific_analyses/relax_disp/optimisation.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/optimisation.py?rev=26154&r1=26153&r2=26154&view=diff
==============================================================================
--- trunk/specific_analyses/relax_disp/optimisation.py  (original)
+++ trunk/specific_analyses/relax_disp/optimisation.py  Mon Oct  6 02:39:50 
2014
@@ -112,13 +112,13 @@
     return results
 
 
-def back_calc_r2eff(spin=None, spin_id=None, cpmg_frqs=None, 
spin_lock_offset=None, spin_lock_nu1=None, relax_times_new=None, 
store_chi2=False):
+def back_calc_r2eff(spins=None, spin_ids=None, cpmg_frqs=None, 
spin_lock_offset=None, spin_lock_nu1=None, relax_times_new=None, 
store_chi2=False):
     """Back-calculation of R2eff/R1rho values for the given spin.
 
-    @keyword spin:              The specific spin data container.
-    @type spin:                 SpinContainer instance
-    @keyword spin_id:           The spin ID string for the spin container.
-    @type spin_id:              str
+    @keyword spins:             The list of specific spin data container for 
cluster.
+    @type spins:                List of SpinContainer instances
+    @keyword spin_ids:          The list of spin ID strings for the spin 
containers in cluster.
+    @type spin_ids:             list of str
     @keyword cpmg_frqs:         The CPMG frequencies to use instead of the 
user loaded values - to enable interpolation.
     @type cpmg_frqs:            list of lists of numpy rank-1 float arrays
     @keyword spin_lock_offset:  The spin-lock offsets to use instead of the 
user loaded values - to enable interpolation.
@@ -134,11 +134,12 @@
     """
 
     # Skip protons for MMQ data.
-    if spin.model in MODEL_LIST_MMQ and spin.isotope == '1H':
-        return
+    for spin in spins:
+        if spin.model in MODEL_LIST_MMQ and spin.isotope == '1H':
+            return
 
     # Create the initial parameter vector.
-    param_vector = assemble_param_vector(spins=[spin])
+    param_vector = assemble_param_vector(spins=spins)
 
     # Number of spectrometer fields.
     fields = [None]
@@ -148,12 +149,12 @@
         field_count = cdp.spectrometer_frq_count
 
     # Initialise the data structures for the target function.
-    values, errors, missing, frqs, frqs_H, exp_types, relax_times = 
return_r2eff_arrays(spins=[spin], spin_ids=[spin_id], fields=fields, 
field_count=field_count)
+    values, errors, missing, frqs, frqs_H, exp_types, relax_times = 
return_r2eff_arrays(spins=spins, spin_ids=spin_ids, fields=fields, 
field_count=field_count)
 
     # The offset and R1 data.
     r1_setup()
-    offsets, spin_lock_fields_inter, chemical_shifts, tilt_angles, 
Delta_omega, w_eff = return_offset_data(spins=[spin], spin_ids=[spin_id], 
field_count=field_count, spin_lock_offset=spin_lock_offset, 
fields=spin_lock_nu1)
-    r1 = return_r1_data(spins=[spin], spin_ids=[spin_id], 
field_count=field_count)
+    offsets, spin_lock_fields_inter, chemical_shifts, tilt_angles, 
Delta_omega, w_eff = return_offset_data(spins=spins, spin_ids=spin_ids, 
field_count=field_count, spin_lock_offset=spin_lock_offset, 
fields=spin_lock_nu1)
+    r1 = return_r1_data(spins=spins, spin_ids=spin_ids, 
field_count=field_count)
     r1_fit = is_r1_optimised(spin.model)
 
     # The relaxation times.
@@ -179,7 +180,7 @@
             values.append([])
             errors.append([])
             missing.append([])
-            for si in range(1):
+            for si in range(len(spins)):
                 values[ei].append([])
                 errors[ei].append([])
                 missing[ei].append([])
@@ -204,7 +205,7 @@
             values.append([])
             errors.append([])
             missing.append([])
-            for si in range(1):
+            for si in range(len(spins)):
                 values[ei].append([])
                 errors[ei].append([])
                 missing[ei].append([])
@@ -222,14 +223,15 @@
                         missing[ei][si][mi].append(zeros(num, int32))
 
     # Initialise the relaxation dispersion fit functions.
-    model = Dispersion(model=spin.model, num_params=param_num(spins=[spin]), 
num_spins=1, num_frq=field_count, exp_types=exp_types, values=values, 
errors=errors, missing=missing, frqs=frqs, frqs_H=frqs_H, 
cpmg_frqs=cpmg_frqs, spin_lock_nu1=spin_lock_nu1, 
chemical_shifts=chemical_shifts, offset=offsets, tilt_angles=tilt_angles, 
r1=r1, relax_times=relax_times, recalc_tau=recalc_tau, r1_fit=r1_fit)
+    model = Dispersion(model=spin.model, num_params=param_num(spins=spins), 
num_spins=len(spins), num_frq=field_count, exp_types=exp_types, 
values=values, errors=errors, missing=missing, frqs=frqs, frqs_H=frqs_H, 
cpmg_frqs=cpmg_frqs, spin_lock_nu1=spin_lock_nu1, 
chemical_shifts=chemical_shifts, offset=offsets, tilt_angles=tilt_angles, 
r1=r1, relax_times=relax_times, recalc_tau=recalc_tau, r1_fit=r1_fit)
 
     # Make a single function call.  This will cause back calculation and the 
data will be stored in the class instance.
     chi2 = model.func(param_vector)
 
     # Store the chi-squared value.
     if store_chi2:
-        spin.chi2 = chi2
+        for spin in spins:
+            spin.chi2 = chi2
 
     # Return the structure.
     return model.get_back_calc()




Related Messages


Powered by MHonArc, Updated Mon Oct 06 02:40:02 2014