mailr25998 - /branches/frame_order_cleanup/target_functions/frame_order.py


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

Header


Content

Posted by edward on September 24, 2014 - 10:53:
Author: bugman
Date: Wed Sep 24 10:53:03 2014
New Revision: 25998

URL: http://svn.gna.org/viewcvs/relax?rev=25998&view=rev
Log:
Clean up for the frame order target function aliasing.

The Scipy quadratic integration and the quasi-random Sobol' integration 
target functions are now
aliased using the getattr() Python method to programmatically choose one or 
the other.  The rigid
model has been removed from the list as it is not a numeric model, and the 
func_double_rotor()
target function has been renamed to func_double_rotor_qrint() to make it 
consistent with the naming
of the other target functions.


Modified:
    branches/frame_order_cleanup/target_functions/frame_order.py

Modified: branches/frame_order_cleanup/target_functions/frame_order.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/target_functions/frame_order.py?rev=25998&r1=25997&r2=25998&view=diff
==============================================================================
--- branches/frame_order_cleanup/target_functions/frame_order.py        
(original)
+++ branches/frame_order_cleanup/target_functions/frame_order.py        Wed 
Sep 24 10:53:03 2014
@@ -136,6 +136,7 @@
         self.sobol_oversample = sobol_oversample
         self.com = com
         self.pivot_opt = pivot_opt
+        self.quad_int = quad_int
 
         # Tensor setup.
         self._init_tensors()
@@ -303,67 +304,45 @@
             self.drdc_theta = zeros((self.total_num_params, self.num_align, 
self.num_interatom), float64)
             self.d2rdc_theta = zeros((self.total_num_params, 
self.total_num_params, self.num_align, self.num_interatom), float64)
 
-        # The quasi-random integration.
-        if not quad_int and model not in ['rigid']:
-            # The Sobol' sequence data and target function aliases 
(quasi-random integration).
+        # The target function extension.
+        ext = '_qrint'
+        if self.quad_int:
+            ext = ''
+
+        # Non-numerical models.
+        if model in [MODEL_RIGID]:
+            if model == MODEL_RIGID:
+                self.func = self.func_rigid
+
+        # The Sobol' sequence data and target function aliases.
+        else:
             if model == MODEL_PSEUDO_ELLIPSE:
                 self.create_sobol_data(dims=['theta', 'phi', 'sigma'])
-                self.func = self.func_pseudo_ellipse_qrint
+                self.func = getattr(self, 'func_pseudo_ellipse'+ext)
             elif model == MODEL_PSEUDO_ELLIPSE_TORSIONLESS:
                 self.create_sobol_data(dims=['theta', 'phi'])
-                self.func = self.func_pseudo_ellipse_torsionless_qrint
+                self.func = getattr(self, 
'func_pseudo_ellipse_torsionless'+ext)
             elif model == MODEL_PSEUDO_ELLIPSE_FREE_ROTOR:
                 self.create_sobol_data(dims=['theta', 'phi', 'sigma'])
-                self.func = self.func_pseudo_ellipse_free_rotor_qrint
+                self.func = getattr(self, 
'func_pseudo_ellipse_free_rotor'+ext)
             elif model == MODEL_ISO_CONE:
                 self.create_sobol_data(dims=['theta', 'phi', 'sigma'])
-                self.func = self.func_iso_cone_qrint
+                self.func = getattr(self, 'func_iso_cone'+ext)
             elif model == MODEL_ISO_CONE_TORSIONLESS:
                 self.create_sobol_data(dims=['theta', 'phi'])
-                self.func = self.func_iso_cone_torsionless_qrint
+                self.func = getattr(self, 'func_iso_cone_torsionless'+ext)
             elif model == MODEL_ISO_CONE_FREE_ROTOR:
                 self.create_sobol_data(dims=['theta', 'phi', 'sigma'])
-                self.func = self.func_iso_cone_free_rotor_qrint
+                self.func = getattr(self, 'func_iso_cone_free_rotor'+ext)
             elif model == MODEL_ROTOR:
                 self.create_sobol_data(dims=['sigma'])
-                self.func = self.func_rotor_qrint
-            elif model == MODEL_RIGID:
-                self.func = self.func_rigid
+                self.func = getattr(self, 'func_rotor'+ext)
             elif model == MODEL_FREE_ROTOR:
                 self.create_sobol_data(dims=['sigma'])
-                self.func = self.func_free_rotor_qrint
+                self.func = getattr(self, 'func_free_rotor'+ext)
             elif model == MODEL_DOUBLE_ROTOR:
                 self.create_sobol_data(dims=['sigma', 'sigma2'])
-                self.func = self.func_double_rotor
-
-        # The target function aliases (Scipy numerical integration).
-        else:
-            if model == 'pseudo-ellipse':
-                self.func = self.func_pseudo_ellipse
-            elif model == 'pseudo-ellipse, torsionless':
-                self.func = self.func_pseudo_ellipse_torsionless
-            elif model == 'pseudo-ellipse, free rotor':
-                self.func = self.func_pseudo_ellipse_free_rotor
-            elif model == 'iso cone':
-                self.func = self.func_iso_cone
-            elif model == 'iso cone, torsionless':
-                self.func = self.func_iso_cone_torsionless
-            elif model == 'iso cone, free rotor':
-                self.func = self.func_iso_cone_free_rotor
-            elif model == 'line':
-                self.func = self.func_line
-            elif model == 'line, torsionless':
-                self.func = self.func_line_torsionless
-            elif model == 'line, free rotor':
-                self.func = self.func_line_free_rotor
-            elif model == 'rotor':
-                self.func = self.func_rotor
-            elif model == 'rigid':
-                self.func = self.func_rigid
-            elif model == 'free rotor':
-                self.func = self.func_free_rotor
-            elif model == 'double rotor':
-                self.func = self.func_double_rotor
+                self.func = getattr(self, 'func_double_rotor'+ext)
 
 
     def _init_tensors(self):
@@ -402,7 +381,7 @@
         self.R = zeros((3, 3), float64)
 
 
-    def func_double_rotor(self, params):
+    def func_double_rotor_qrint(self, params):
         """Target function for the optimisation of the double rotor frame 
order model.
 
         This function optimises the model parameters using the RDC and PCS 
base data.  Quasi-random, Sobol' sequence based, numerical integration is 
used for the PCS.
@@ -1912,6 +1891,10 @@
         @keyword dims:      The list of parameters.
         @type dims:         list of str
         """
+
+        # Quadratic integration active, so nothing to do here!
+        if self.quad_int:
+            return
 
         # The number of dimensions.
         m = len(dims)




Related Messages


Powered by MHonArc, Updated Wed Sep 24 11:40:02 2014