mailr21615 - in /branches/relax_disp/specific_analyses/relax_disp: api.py optimisation.py


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

Header


Content

Posted by edward on November 23, 2013 - 18:23:
Author: bugman
Date: Sat Nov 23 18:23:15 2013
New Revision: 21615

URL: http://svn.gna.org/viewcvs/relax?rev=21615&view=rev
Log:
Converted the dispersion api method _back_calc_r2eff() into a function of the 
optimisation module.


Modified:
    branches/relax_disp/specific_analyses/relax_disp/api.py
    branches/relax_disp/specific_analyses/relax_disp/optimisation.py

Modified: branches/relax_disp/specific_analyses/relax_disp/api.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/api.py?rev=21615&r1=21614&r2=21615&view=diff
==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/api.py (original)
+++ branches/relax_disp/specific_analyses/relax_disp/api.py Sat Nov 23 
18:23:15 2013
@@ -46,7 +46,7 @@
 from specific_analyses.api_common import API_common
 from specific_analyses.relax_disp.checks import check_c_modules, 
check_disp_points, check_exp_type, check_exp_type_fixed_time, 
check_model_type, check_pipe_type, check_spectra_id_setup
 from specific_analyses.relax_disp.disp_data import average_intensity, 
find_intensity_keys, get_curve_type, has_exponential_exp_type, 
has_proton_mmq_cpmg, loop_cluster, loop_exp_frq_point, 
loop_exp_frq_point_time, loop_frq, loop_time, pack_back_calc_r2eff, 
return_cpmg_frqs, return_index_from_disp_point, return_index_from_exp_type, 
return_index_from_frq, return_offset_data, return_param_key_from_data, 
return_r1_data, return_r2eff_arrays, return_spin_lock_nu1, 
spin_ids_to_containers
-from specific_analyses.relax_disp.optimisation import Disp_memo, 
Disp_minimise_command, grid_search_setup
+from specific_analyses.relax_disp.optimisation import Disp_memo, 
Disp_minimise_command, back_calc_r2eff, grid_search_setup
 from specific_analyses.relax_disp.parameters import assemble_param_vector, 
assemble_scaling_matrix, disassemble_param_vector, get_param_names, 
linear_constraints, param_index_to_param_info, param_num
 from specific_analyses.relax_disp.variables import EXP_TYPE_CPMG_PROTON_MQ, 
EXP_TYPE_CPMG_PROTON_SQ, MODEL_LIST_FULL, MODEL_LM63, MODEL_LM63_3SITE, 
MODEL_CR72, MODEL_CR72_FULL, MODEL_DPL94, MODEL_IT99, MODEL_LIST_MMQ, 
MODEL_M61, MODEL_M61B, MODEL_MMQ_2SITE, MODEL_MP05, MODEL_MQ_CR72, 
MODEL_NOREX, MODEL_NS_CPMG_2SITE_3D, MODEL_NS_CPMG_2SITE_3D_FULL, 
MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_NS_CPMG_2SITE_STAR, 
MODEL_NS_CPMG_2SITE_STAR_FULL, MODEL_NS_R1RHO_2SITE, MODEL_R2EFF, 
MODEL_TAP03, MODEL_TP02, MODEL_TSMFK01
 from target_functions.relax_disp import Dispersion
@@ -105,65 +105,6 @@
         self.PARAMS.add_min_data(min_stats_global=False, min_stats_spin=True)
 
 
-    def _back_calc_r2eff(self, spin=None, spin_id=None):
-        """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
-        @return:            The back-calculated R2eff/R1rho value for the 
given spin.
-        @rtype:             numpy rank-1 float array
-        """
-
-        # Skip protons for MMQ data.
-        if spin.model in MODEL_LIST_MMQ and spin.isotope == '1H':
-            return
-
-        # Create the initial parameter vector.
-        param_vector = assemble_param_vector(spins=[spin])
-
-        # Create a scaling matrix.
-        scaling_matrix = assemble_scaling_matrix(spins=[spin], scaling=False)
-
-        # Number of spectrometer fields.
-        fields = [None]
-        field_count = 1
-        if hasattr(cdp, 'spectrometer_frq_count'):
-            fields = cdp.spectrometer_frq_list
-            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)
-
-        # The offset and R1 data for R1rho off-resonance models.
-        chemical_shifts, offsets, tilt_angles, r1 = None, None, None, None
-        if spin.model in [MODEL_DPL94, MODEL_TP02, MODEL_TAP03, MODEL_MP05, 
MODEL_NS_R1RHO_2SITE]:
-            chemical_shifts, offsets, tilt_angles = 
return_offset_data(spins=[spin], spin_ids=[spin_id], fields=fields, 
field_count=field_count)
-            r1 = return_r1_data(spins=[spin], spin_ids=[spin_id], 
fields=fields, field_count=field_count)
-
-        # The dispersion data.
-        cpmg_frqs = return_cpmg_frqs(ref_flag=False)
-        spin_lock_nu1 = return_spin_lock_nu1(ref_flag=False)
-
-        # 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, spin_lock_offsets=offsets, 
tilt_angles=tilt_angles, r1=r1, relax_times=relax_times, 
scaling_matrix=scaling_matrix)
-
-        # 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 chi2 value.
-        spin.chi2 = chi2
-
-        # Reconstruct the back_calc data structure.
-        back_calc = model.back_calc
-        if spin.model not in MODEL_LIST_MMQ:
-            back_calc = [back_calc]
-
-        # Return the structure.
-        return back_calc
-
-
     def _back_calc_peak_intensities(self, spin=None, exp_type=None, 
frq=None, point=None):
         """Back-calculation of peak intensity for the given relaxation time.
 
@@ -749,7 +690,7 @@
                     proton = return_attached_protons(spin_id)[0]
 
                 # The back calculated values.
-                back_calc = self._back_calc_r2eff(spin=spin, spin_id=spin_id)
+                back_calc = back_calc_r2eff(spin=spin, spin_id=spin_id)
 
                 # Pack the data.
                 pack_back_calc_r2eff(spin=spin, spin_id=spin_id, 
spin_index=0, back_calc=back_calc, proton_mmq_flag=proton_mmq_flag)
@@ -792,12 +733,12 @@
             spin, spin_id = data_id
 
             # Back calculate the R2eff/R1rho data.
-            back_calc = self._back_calc_r2eff(spin=spin, spin_id=spin_id)
+            back_calc = back_calc_r2eff(spin=spin, spin_id=spin_id)
 
             # Get the attached proton data.
             if proton_mmq_flag:
                 proton = return_attached_protons(spin_id)[0]
-                proton_back_calc = self._back_calc_r2eff(spin=proton, 
spin_id=spin_id)
+                proton_back_calc = back_calc_r2eff(spin=proton, 
spin_id=spin_id)
 
             # Convert to a dictionary matching the R2eff data structure.
             values = {}

Modified: branches/relax_disp/specific_analyses/relax_disp/optimisation.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/optimisation.py?rev=21615&r1=21614&r2=21615&view=diff
==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/optimisation.py 
(original)
+++ branches/relax_disp/specific_analyses/relax_disp/optimisation.py Sat Nov 
23 18:23:15 2013
@@ -36,9 +36,68 @@
 from lib.text.sectioning import subsection
 from multi import Memo, Result_command, Slave_command
 from specific_analyses.relax_disp.disp_data import has_disp_data, 
has_proton_mmq_cpmg, loop_exp_frq, loop_exp_frq_point, loop_point, 
pack_back_calc_r2eff, return_cpmg_frqs, return_index_from_disp_point, 
return_index_from_exp_type, return_index_from_frq, return_offset_data, 
return_param_key_from_data, return_r1_data, return_r2eff_arrays, 
return_spin_lock_nu1, return_value_from_frq_index
-from specific_analyses.relax_disp.parameters import assemble_param_vector, 
disassemble_param_vector, linear_constraints, loop_parameters, 
param_conversion, param_num
+from specific_analyses.relax_disp.parameters import assemble_param_vector, 
assemble_scaling_matrix, disassemble_param_vector, linear_constraints, 
loop_parameters, param_conversion, param_num
 from specific_analyses.relax_disp.variables import EXP_TYPE_CPMG_PROTON_MQ, 
EXP_TYPE_CPMG_PROTON_SQ, MODEL_CR72, MODEL_CR72_FULL, MODEL_DPL94, 
MODEL_LIST_MMQ, MODEL_LM63, MODEL_M61, MODEL_M61B, MODEL_MP05, 
MODEL_NS_R1RHO_2SITE, MODEL_TAP03, MODEL_TP02
 from target_functions.relax_disp import Dispersion
+
+
+def back_calc_r2eff(spin=None, spin_id=None):
+    """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
+    @return:            The back-calculated R2eff/R1rho value for the given 
spin.
+    @rtype:             numpy rank-1 float array
+    """
+
+    # Skip protons for MMQ data.
+    if spin.model in MODEL_LIST_MMQ and spin.isotope == '1H':
+        return
+
+    # Create the initial parameter vector.
+    param_vector = assemble_param_vector(spins=[spin])
+
+    # Create a scaling matrix.
+    scaling_matrix = assemble_scaling_matrix(spins=[spin], scaling=False)
+
+    # Number of spectrometer fields.
+    fields = [None]
+    field_count = 1
+    if hasattr(cdp, 'spectrometer_frq_count'):
+        fields = cdp.spectrometer_frq_list
+        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)
+
+    # The offset and R1 data for R1rho off-resonance models.
+    chemical_shifts, offsets, tilt_angles, r1 = None, None, None, None
+    if spin.model in [MODEL_DPL94, MODEL_TP02, MODEL_TAP03, MODEL_MP05, 
MODEL_NS_R1RHO_2SITE]:
+        chemical_shifts, offsets, tilt_angles = 
return_offset_data(spins=[spin], spin_ids=[spin_id], fields=fields, 
field_count=field_count)
+        r1 = return_r1_data(spins=[spin], spin_ids=[spin_id], fields=fields, 
field_count=field_count)
+
+    # The dispersion data.
+    cpmg_frqs = return_cpmg_frqs(ref_flag=False)
+    spin_lock_nu1 = return_spin_lock_nu1(ref_flag=False)
+
+    # 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, spin_lock_offsets=offsets, 
tilt_angles=tilt_angles, r1=r1, relax_times=relax_times, 
scaling_matrix=scaling_matrix)
+
+    # 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 chi2 value.
+    spin.chi2 = chi2
+
+    # Reconstruct the back_calc data structure.
+    back_calc = model.back_calc
+    if spin.model not in MODEL_LIST_MMQ:
+        back_calc = [back_calc]
+
+    # Return the structure.
+    return back_calc
 
 
 def grid_search_setup(spins=None, spin_ids=None, param_vector=None, 
lower=None, upper=None, inc=None, scaling_matrix=None):




Related Messages


Powered by MHonArc, Updated Sun Nov 24 13:20:03 2013