mailr20699 - in /branches/relax_disp/specific_analyses/relax_disp: api.py disp_data.py


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

Header


Content

Posted by edward on August 27, 2013 - 14:49:
Author: bugman
Date: Tue Aug 27 14:49:36 2013
New Revision: 20699

URL: http://svn.gna.org/viewcvs/relax?rev=20699&view=rev
Log:
The dispersion specific code is now assembling the R1 data and passing it to 
the target function.

The new specific_analyses.relax_disp.disp_data.return_r1_data() function 
creates a data structure
holding all the R1 data.  This is used in the off-resonance R1rho experiments.


Modified:
    branches/relax_disp/specific_analyses/relax_disp/api.py
    branches/relax_disp/specific_analyses/relax_disp/disp_data.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=20699&r1=20698&r2=20699&view=diff
==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/api.py (original)
+++ branches/relax_disp/specific_analyses/relax_disp/api.py Tue Aug 27 
14:49:36 2013
@@ -46,7 +46,7 @@
 from pipe_control.mol_res_spin import exists_mol_res_spin_data, return_spin, 
spin_loop
 from specific_analyses.api_base import API_base
 from specific_analyses.api_common import API_common
-from specific_analyses.relax_disp.disp_data import average_intensity, 
find_intensity_keys, loop_cluster, loop_frq, loop_frq_point, 
loop_frq_point_key, loop_frq_point_time, loop_point, loop_time, relax_time, 
return_cpmg_frqs, return_index_from_disp_point, return_index_from_frq, 
return_key_from_disp_point_index, return_offset_data, 
return_param_key_from_data, return_r2eff_arrays, return_spin_lock_nu1, 
return_value_from_frq_index, spin_ids_to_containers
+from specific_analyses.relax_disp.disp_data import average_intensity, 
find_intensity_keys, loop_cluster, loop_frq, loop_frq_point, 
loop_frq_point_key, loop_frq_point_time, loop_point, loop_time, relax_time, 
return_cpmg_frqs, return_index_from_disp_point, return_index_from_frq, 
return_key_from_disp_point_index, return_offset_data, 
return_param_key_from_data, return_r1_data, return_r2eff_arrays, 
return_spin_lock_nu1, return_value_from_frq_index, spin_ids_to_containers
 from specific_analyses.relax_disp.parameters import assemble_param_vector, 
assemble_scaling_matrix, disassemble_param_vector, linear_constraints, 
loop_parameters, param_conversion, param_index_to_param_info, param_num
 from specific_analyses.relax_disp.variables import CPMG_EXP, FIXED_TIME_EXP, 
MODEL_LIST_FULL, MODEL_LM63, MODEL_LM63_3SITE, MODEL_CR72, MODEL_CR72_FULL, 
MODEL_DPL94, MODEL_IT99, MODEL_M61, MODEL_M61B, MODEL_NOREX, 
MODEL_NS_2SITE_3D, MODEL_NS_2SITE_3D_FULL, MODEL_NS_2SITE_EXPANDED, 
MODEL_NS_2SITE_STAR, MODEL_NS_2SITE_STAR_FULL, MODEL_R2EFF, MODEL_TP02, 
MODEL_TSMFK01, R1RHO_EXP, VAR_TIME_EXP
 from target_functions.relax_disp import Dispersion
@@ -129,11 +129,14 @@
         # Initialise the data structures for the target function.
         values, errors, missing, frqs = return_r2eff_arrays(spins=[spin], 
spin_ids=[spin_id], fields=fields, field_count=field_count)
 
-        # The offset data.
-        chemical_shifts, offsets, tilt_angles = 
return_offset_data(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]:
+            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)
 
         # Initialise the relaxation dispersion fit functions.
-        model = Dispersion(model=spin.model, 
num_params=param_num(spins=[spin]), num_spins=1, num_frq=field_count, 
num_disp_points=cdp.dispersion_points, values=values, errors=errors, 
missing=missing, frqs=frqs, cpmg_frqs=return_cpmg_frqs(ref_flag=False), 
spin_lock_nu1=return_spin_lock_nu1(ref_flag=False), 
chemical_shifts=chemical_shifts, spin_lock_offsets=offsets, 
tilt_angles=tilt_angles, relax_time=cdp.relax_time_list[0], 
scaling_matrix=scaling_matrix)
+        model = Dispersion(model=spin.model, 
num_params=param_num(spins=[spin]), num_spins=1, num_frq=field_count, 
num_disp_points=cdp.dispersion_points, values=values, errors=errors, 
missing=missing, frqs=frqs, cpmg_frqs=return_cpmg_frqs(ref_flag=False), 
spin_lock_nu1=return_spin_lock_nu1(ref_flag=False), 
chemical_shifts=chemical_shifts, spin_lock_offsets=offsets, 
tilt_angles=tilt_angles, r1=r1, relax_time=cdp.relax_time_list[0], 
scaling_matrix=scaling_matrix)
 
         # Make a single function call.  This will cause back calculation and 
the data will be stored in the class instance.
         model.func(param_vector)
@@ -1165,8 +1168,11 @@
             # The R2eff/R1rho data.
             values, errors, missing, frqs = return_r2eff_arrays(spins=spins, 
spin_ids=spin_ids, fields=fields, field_count=field_count, 
sim_index=sim_index)
 
-            # The offset data.
-            chemical_shifts, offsets, tilt_angles = 
return_offset_data(spins=spins, spin_ids=spin_ids, 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 spins[0].model in [MODEL_DPL94, MODEL_TP02]:
+                chemical_shifts, offsets, tilt_angles = 
return_offset_data(spins=spins, spin_ids=spin_ids, fields=fields, 
field_count=field_count)
+                r1 = return_r1_data(spins=spins, spin_ids=spin_ids, 
fields=fields, field_count=field_count, sim_index=sim_index)
 
             # Create the initial parameter vector.
             param_vector = assemble_param_vector(spins=spins)
@@ -1199,7 +1205,7 @@
                     print("Unconstrained grid search size: %s (constraints 
may decrease this size).\n" % grid_size)
 
             # Initialise the function to minimise.
-            model = Dispersion(model=spins[0].model, 
num_params=param_num(spins=spins), num_spins=len(spins), num_frq=field_count, 
num_disp_points=cdp.dispersion_points, values=values, errors=errors, 
missing=missing, frqs=frqs, cpmg_frqs=return_cpmg_frqs(ref_flag=False), 
spin_lock_nu1=return_spin_lock_nu1(ref_flag=False), 
chemical_shifts=chemical_shifts, spin_lock_offsets=offsets, 
tilt_angles=tilt_angles, relax_time=cdp.relax_time_list[0], 
scaling_matrix=scaling_matrix)
+            model = Dispersion(model=spins[0].model, 
num_params=param_num(spins=spins), num_spins=len(spins), num_frq=field_count, 
num_disp_points=cdp.dispersion_points, values=values, errors=errors, 
missing=missing, frqs=frqs, cpmg_frqs=return_cpmg_frqs(ref_flag=False), 
spin_lock_nu1=return_spin_lock_nu1(ref_flag=False), 
chemical_shifts=chemical_shifts, spin_lock_offsets=offsets, 
tilt_angles=tilt_angles, r1=r1, relax_time=cdp.relax_time_list[0], 
scaling_matrix=scaling_matrix)
 
             # Grid search.
             if search('^[Gg]rid', min_algor):

Modified: branches/relax_disp/specific_analyses/relax_disp/disp_data.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/disp_data.py?rev=20699&r1=20698&r2=20699&view=diff
==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/disp_data.py (original)
+++ branches/relax_disp/specific_analyses/relax_disp/disp_data.py Tue Aug 27 
14:49:36 2013
@@ -912,6 +912,51 @@
     return "%s_%s" % (frq/1e6, point)
 
 
+def return_r1_data(spins=None, spin_ids=None, fields=None, field_count=None, 
sim_index=None):
+    """Return the R1 data structures for off-resonance R1rho experiments.
+
+    @keyword spins:         The list of spin containers in the cluster.
+    @type spins:            list of SpinContainer instances
+    @keyword spin_ids:      The list of spin IDs for the cluster.
+    @type spin_ids:         list of str
+    @keyword fields:        The list of spectrometer field strengths.
+    @type fields:           list of float
+    @keyword field_count:   The number of spectrometer field strengths.  
This may not be equal to the length of the fields list as the user may not 
have set the field strength.
+    @type field_count:      int
+    @keyword sim_index:     The index of the simulation to return the R1 
data of.  This should be None if the normal data is required.
+    @type sim_index:        None or int
+    @return:                The R1 relaxation data.
+    @rtype:                 numpy rank-2 float array
+    """
+
+    # The spin count.
+    spin_num = len(spins)
+
+    # Initialise the data structure.
+    r1 = zeros((spin_num, field_count), float64)
+
+    # Loop over the Rx IDs.
+    for ri_id in cdp.ri_ids:
+        # Only use R1 data.
+        if cdp.ri_type[ri_id] != 'R1':
+            continue
+
+        # The frequency.
+        frq = cdp.spectrometer_frq[ri_id]
+        frq_index = return_index_from_frq(frq)
+
+        # Spin loop.
+        for spin_index in range(spin_num):
+            # Store the data.
+            if sim_index != None:
+                r1[spin_index, frq_index] = 
spins[spin_index].ri_data_sim[ri_id][sim_index]
+            else:
+                r1[spin_index, frq_index] = spins[spin_index].ri_data[ri_id]
+
+    # Return the data.
+    return r1
+
+
 def return_r2eff_arrays(spins=None, spin_ids=None, fields=None, 
field_count=None, sim_index=None):
     """Return numpy arrays of the R2eff/R1rho values and errors.
 




Related Messages


Powered by MHonArc, Updated Tue Aug 27 15:20:01 2013