mailr21512 - 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 19, 2013 - 08:38:
Author: bugman
Date: Tue Nov 19 08:38:46 2013
New Revision: 21512

URL: http://svn.gna.org/viewcvs/relax?rev=21512&view=rev
Log:
Fixes for the dispersion optimisation Disp_result_command.run() method.

The dispersion point loop is fixed over all dispersion points, but the 
'missing' data structure has
a variable length.


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=21512&r1=21511&r2=21512&view=diff
==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/api.py (original)
+++ branches/relax_disp/specific_analyses/relax_disp/api.py Tue Nov 19 
08:38:46 2013
@@ -993,7 +993,7 @@
             command = Disp_minimise_command(spins=spins, spin_ids=spin_ids, 
sim_index=sim_index, scaling_matrix=scaling_matrix, min_algor=min_algor, 
min_options=min_options, func_tol=func_tol, grad_tol=grad_tol, 
max_iterations=max_iterations, constraints=constraints, verbosity=verbosity, 
lower=lower, upper=upper, inc=inc, fields=fields, 
param_names=get_param_names(spins))
 
             # Set up the memo.
-            memo = Disp_memo(spins=spins, sim_index=sim_index, 
scaling_matrix=scaling_matrix, verbosity=verbosity)
+            memo = Disp_memo(spins=spins, spin_ids=spin_ids, 
sim_index=sim_index, scaling_matrix=scaling_matrix, verbosity=verbosity)
 
             # Add the slave command and memo to the processor queue.
             processor.add_to_queue(command, memo)

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=21512&r1=21511&r2=21512&view=diff
==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/optimisation.py 
(original)
+++ branches/relax_disp/specific_analyses/relax_disp/optimisation.py Tue Nov 
19 08:38:46 2013
@@ -35,7 +35,7 @@
 from lib.errors import RelaxError
 from lib.text.sectioning import subsection
 from multi import Memo, Result_command, Slave_command
-from specific_analyses.relax_disp.disp_data import loop_exp_frq_point, 
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.disp_data import has_disp_data, 
loop_exp_frq, loop_exp_frq_point, loop_point, 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.variables import MODEL_CR72, 
MODEL_CR72_FULL, MODEL_DPL94, MODEL_LIST_CPMG_NUM, MODEL_LM63, MODEL_M61, 
MODEL_M61B, MODEL_MMQ_2SITE, MODEL_MP05, MODEL_NS_R1RHO_2SITE, MODEL_TAP03, 
MODEL_TP02
 from target_functions.relax_disp import Dispersion
@@ -186,7 +186,7 @@
 class Disp_memo(Memo):
     """The relaxation dispersion memo class."""
 
-    def __init__(self, spins=None, sim_index=None, scaling_matrix=None, 
verbosity=None):
+    def __init__(self, spins=None, spin_ids=None, sim_index=None, 
scaling_matrix=None, verbosity=None):
         """Initialise the relaxation dispersion memo class.
 
         This is used for handling the optimisation results returned from a 
slave processor.  It runs on the master processor and is used to store data 
which is passed to the slave processor and then passed back to the master via 
the results command.
@@ -194,6 +194,8 @@
 
         @keyword spins:             The list of spin data container for the 
cluster.  If this argument is supplied, then the spin_id argument will be 
ignored.
         @type spins:                list of SpinContainer instances
+        @keyword spin_ids:          The spin ID strings for the cluster.
+        @type spin_ids:             list of str
         @keyword sim_index:         The optional MC simulation index.
         @type sim_index:            int
         @keyword scaling_matrix:    The diagonal, square scaling matrix.
@@ -207,6 +209,7 @@
 
         # Store the arguments.
         self.spins = spins
+        self.spin_ids = spin_ids
         self.sim_index = sim_index
         self.scaling_matrix = scaling_matrix
         self.verbosity = verbosity
@@ -488,21 +491,27 @@
                     spin.r2eff_bc = {}
 
                 # Loop over the R2eff data.
-                for exp_type, frq, point in loop_exp_frq_point():
-                    # The indices.
-                    exp_type_index = 
return_index_from_exp_type(exp_type=exp_type)
-                    disp_pt_index = return_index_from_disp_point(point, 
exp_type=exp_type)
-                    frq_index = return_index_from_frq(frq)
-
-                    # Missing data.
-                    if 
self.missing[exp_type_index][spin_index][frq_index][disp_pt_index]:
-                        continue
-
-                    # The R2eff key.
-                    key = return_param_key_from_data(frq=frq, point=point)
-
-                    # Store the back-calculated data.
-                    if memo.spins[0].model in [MODEL_MMQ_2SITE]:
-                        spin.r2eff_bc[key] = 
self.back_calc[exp_type_index][spin_index][frq_index][disp_pt_index]
-                    else:
-                        spin.r2eff_bc[key] = 
self.back_calc[spin_index][frq_index][disp_pt_index]
+                for exp_type, frq in loop_exp_frq():
+                    disp_pt_index = -1
+                    for point in loop_point(exp_type=exp_type):
+                        # No data.
+                        if not has_disp_data(spins=memo.spins, 
spin_ids=memo.spin_ids, exp_type=exp_type, frq=frq, point=point):
+                            continue
+
+                        # The indices.
+                        exp_type_index = 
return_index_from_exp_type(exp_type=exp_type)
+                        disp_pt_index += 1
+                        frq_index = return_index_from_frq(frq)
+
+                        # Missing data.
+                        if 
self.missing[exp_type_index][spin_index][frq_index][disp_pt_index]:
+                            continue
+
+                        # The R2eff key.
+                        key = return_param_key_from_data(frq=frq, 
point=point)
+
+                        # Store the back-calculated data.
+                        if memo.spins[0].model in [MODEL_MMQ_2SITE]:
+                            spin.r2eff_bc[key] = 
self.back_calc[exp_type_index][spin_index][frq_index][disp_pt_index]
+                        else:
+                            spin.r2eff_bc[key] = 
self.back_calc[spin_index][frq_index][disp_pt_index]




Related Messages


Powered by MHonArc, Updated Tue Nov 19 10:40:02 2013