mailr5178 - in /1.3/specific_fns/model_free: mf_minimise.py model_free.py


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

Header


Content

Posted by edward on March 23, 2008 - 13:31:
Author: bugman
Date: Sun Mar 23 13:31:02 2008
New Revision: 5178

URL: http://svn.gna.org/viewcvs/relax?rev=5178&view=rev
Log:
Updated the model-free assemble_scaling_matrix() method to the new relax 
design.


Modified:
    1.3/specific_fns/model_free/mf_minimise.py
    1.3/specific_fns/model_free/model_free.py

Modified: 1.3/specific_fns/model_free/mf_minimise.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/specific_fns/model_free/mf_minimise.py?rev=5178&r1=5177&r2=5178&view=diff
==============================================================================
--- 1.3/specific_fns/model_free/mf_minimise.py (original)
+++ 1.3/specific_fns/model_free/mf_minimise.py Sun Mar 23 13:31:02 2008
@@ -856,7 +856,7 @@
                 param_vector = self.assemble_param_vector(spin=spin, 
sim_index=sim_index)
 
                 # Diagonal scaling.
-                scaling_matrix = self.assemble_scaling_matrix(index=index, 
scaling=scaling)
+                scaling_matrix = self.assemble_scaling_matrix(spin=spin, 
scaling=scaling)
                 if scaling_matrix:
                     param_vector = dot(inv(scaling_matrix), param_vector)
 

Modified: 1.3/specific_fns/model_free/model_free.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/specific_fns/model_free/model_free.py?rev=5178&r1=5177&r2=5178&view=diff
==============================================================================
--- 1.3/specific_fns/model_free/model_free.py (original)
+++ 1.3/specific_fns/model_free/model_free.py Sun Mar 23 13:31:02 2008
@@ -317,19 +317,31 @@
         return array(param_vector, float64)
 
 
-    def assemble_scaling_matrix(self, index=None, scaling=1):
-        """Function for creating the scaling matrix."""
+    def assemble_scaling_matrix(self, num_params=None, spin=None, 
spin_id=None, scaling=True):
+        """Create and return the scaling matrix.
+
+        If the spin argument is supplied, then the spin_id argument will be 
ignored.
+
+        @keyword num_params:    The number of parameters in the model.
+        @type num_params:       int
+        @keyword spin:          The spin data container.
+        @type spin:             SpinContainer instance
+        @keyword spin_id:       The spin identification string.
+        @type spin_id:          str
+        @return:                An array of the parameter values of the 
model-free model.
+        @rtype:                 numpy diagonal matrix
+        """
 
         # Initialise.
-        if len(self.param_vector) == 0:
-            self.scaling_matrix = zeros((0, 0), float64)
+        if num_params == 0:
+            scaling_matrix = zeros((0, 0), float64)
         else:
-            self.scaling_matrix = identity(len(self.param_vector), float64)
+            scaling_matrix = identity(num_params, float64)
         i = 0
 
-        # No diagonal scaling.
+        # No diagonal scaling, so return the identity matrix.
         if not scaling:
-            return
+            return scaling_matrix
 
         # tm, te, tf, and ts (must all be the same for diagonal scaling!).
         ti_scaling = 1e-12
@@ -337,69 +349,74 @@
         # Diffusion tensor parameters.
         if self.param_set == 'diff' or self.param_set == 'all':
             # Spherical diffusion.
-            if relax_data_store.diff[self.run].type == 'sphere':
+            if cdp.diff_tensor.type == 'sphere':
                 # tm.
-                self.scaling_matrix[i, i] = ti_scaling
+                scaling_matrix[i, i] = ti_scaling
 
                 # Increment i.
                 i = i + 1
 
             # Spheroidal diffusion.
-            elif relax_data_store.diff[self.run].type == 'spheroid':
+            elif cdp.diff_tensor.type == 'spheroid':
                 # tm, Da, theta, phi
-                self.scaling_matrix[i, i] = ti_scaling
-                self.scaling_matrix[i+1, i+1] = 1e7
-                self.scaling_matrix[i+2, i+2] = 1.0
-                self.scaling_matrix[i+3, i+3] = 1.0
+                scaling_matrix[i, i] = ti_scaling
+                scaling_matrix[i+1, i+1] = 1e7
+                scaling_matrix[i+2, i+2] = 1.0
+                scaling_matrix[i+3, i+3] = 1.0
 
                 # Increment i.
                 i = i + 4
 
             # Ellipsoidal diffusion.
-            elif relax_data_store.diff[self.run].type == 'ellipsoid':
+            elif cdp.diff_tensor.type == 'ellipsoid':
                 # tm, Da, Dr, alpha, beta, gamma.
-                self.scaling_matrix[i, i] = ti_scaling
-                self.scaling_matrix[i+1, i+1] = 1e7
-                self.scaling_matrix[i+2, i+2] = 1.0
-                self.scaling_matrix[i+3, i+3] = 1.0
-                self.scaling_matrix[i+4, i+4] = 1.0
-                self.scaling_matrix[i+5, i+5] = 1.0
+                scaling_matrix[i, i] = ti_scaling
+                scaling_matrix[i+1, i+1] = 1e7
+                scaling_matrix[i+2, i+2] = 1.0
+                scaling_matrix[i+3, i+3] = 1.0
+                scaling_matrix[i+4, i+4] = 1.0
+                scaling_matrix[i+5, i+5] = 1.0
 
                 # Increment i.
                 i = i + 6
 
         # Model-free parameters.
         if self.param_set != 'diff':
-            # Loop over all residues.
-            for j in xrange(len(relax_data_store.res[self.run])):
-                # Skip unselected residues.
-                if not relax_data_store.res[self.run][j].select:
+            # The loop.
+            if spin:
+                loop = [spin]
+            else:
+                loop = spin_loop(spin_id)
+
+            # Loop over the spins.
+            for spin in loop:
+                # Skip unselected spins.
+                if not spin.select:
                     continue
 
-                # Only add parameters for a single residue if index has a 
value.
-                if index != None and j != index:
-                    continue
-
                 # Loop over the model-free parameters.
-                for k in 
xrange(len(relax_data_store.res[self.run][j].params)):
+                for k in xrange(len(spin.params)):
                     # Local tm, te, tf, and ts (must all be the same for 
diagonal scaling!).
-                    if relax_data_store.res[self.run][j].params[k] == 
'local_tm' or search('^t', relax_data_store.res[self.run][j].params[k]):
-                        self.scaling_matrix[i, i] = ti_scaling
+                    if spin.params[k] == 'local_tm' or search('^t', 
spin.params[k]):
+                        scaling_matrix[i, i] = ti_scaling
 
                     # Rex.
-                    elif relax_data_store.res[self.run][j].params[k] == 
'Rex':
-                        self.scaling_matrix[i, i] = 1.0 / (2.0 * pi * 
relax_data_store.res[self.run][j].frq[0]) ** 2
+                    elif spin.params[k] == 'Rex':
+                        scaling_matrix[i, i] = 1.0 / (2.0 * pi * 
spin.frq[0]) ** 2
 
                     # Bond length.
-                    elif relax_data_store.res[self.run][j].params[k] == 'r':
-                        self.scaling_matrix[i, i] = 1e-10
+                    elif spin.params[k] == 'r':
+                        scaling_matrix[i, i] = 1e-10
 
                     # CSA.
-                    elif relax_data_store.res[self.run][j].params[k] == 
'CSA':
-                        self.scaling_matrix[i, i] = 1e-4
+                    elif spin.params[k] == 'CSA':
+                        scaling_matrix[i, i] = 1e-4
 
                     # Increment i.
                     i = i + 1
+
+        # Return the scaling matrix.
+        return scaling_matrix
 
 
     def create_mc_data(self, run, i):




Related Messages


Powered by MHonArc, Updated Sun Mar 23 14:00:17 2008