mailr4693 - /1.3/specific_fns/model_free/model_free.py


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

Header


Content

Posted by edward on January 13, 2008 - 20:02:
Author: bugman
Date: Sun Jan 13 20:02:17 2008
New Revision: 4693

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


Modified:
    1.3/specific_fns/model_free/model_free.py

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=4693&r1=4692&r2=4693&view=diff
==============================================================================
--- 1.3/specific_fns/model_free/model_free.py (original)
+++ 1.3/specific_fns/model_free/model_free.py Sun Jan 13 20:02:17 2008
@@ -150,167 +150,161 @@
                 param_names = param_names + spin.params
 
 
-    def assemble_param_vector(self, index=None, sim_index=None, 
param_set=None):
-        """Function for assembling various pieces of data into a Numeric 
parameter array."""
+    def assemble_param_vector(self, model_type, spin_id=None, 
sim_index=None):
+        """Assemble the model-free parameter vector (as numpy array).
+
+        @param model_type:  The model-free model type.  This must be one of 
'mf', 'local_tm',
+                            'diff', or 'all'.
+        @type model_type:   str
+        @param spin_id:     The spin identification string.
+        @type spin_id:      str
+        @return:            An array of the parameter values of the 
model-free model.
+        @rtype:             numpy array
+        """
 
         # Initialise.
         param_vector = []
-        if param_set == None:
-            param_set = self.param_set
-
-        # Monte Carlo diffusion tensor parameters.
-        if sim_index != None and (param_set == 'diff' or param_set == 'all'):
-            # Spherical diffusion.
-            if relax_data_store.diff[self.run].type == 'sphere':
-                
param_vector.append(relax_data_store.diff[self.run].tm_sim[sim_index])
-
-            # Spheroidal diffusion.
-            elif relax_data_store.diff[self.run].type == 'spheroid':
-                
param_vector.append(relax_data_store.diff[self.run].tm_sim[sim_index])
-                
param_vector.append(relax_data_store.diff[self.run].Da_sim[sim_index])
-                
param_vector.append(relax_data_store.diff[self.run].theta_sim[sim_index])
-                
param_vector.append(relax_data_store.diff[self.run].phi_sim[sim_index])
-
-            # Ellipsoidal diffusion.
-            elif relax_data_store.diff[self.run].type == 'ellipsoid':
-                
param_vector.append(relax_data_store.diff[self.run].tm_sim[sim_index])
-                
param_vector.append(relax_data_store.diff[self.run].Da_sim[sim_index])
-                
param_vector.append(relax_data_store.diff[self.run].Dr_sim[sim_index])
-                
param_vector.append(relax_data_store.diff[self.run].alpha_sim[sim_index])
-                
param_vector.append(relax_data_store.diff[self.run].beta_sim[sim_index])
-                
param_vector.append(relax_data_store.diff[self.run].gamma_sim[sim_index])
+
+        # Alias the current data pipe.
+        cdp = relax_data_store[relax_data_store.current_pipe]
 
         # Diffusion tensor parameters.
-        elif param_set == 'diff' or param_set == 'all':
-            # Spherical diffusion.
-            if relax_data_store.diff[self.run].type == 'sphere':
-                param_vector.append(relax_data_store.diff[self.run].tm)
-
-            # Spheroidal diffusion.
-            elif relax_data_store.diff[self.run].type == 'spheroid':
-                param_vector.append(relax_data_store.diff[self.run].tm)
-                param_vector.append(relax_data_store.diff[self.run].Da)
-                param_vector.append(relax_data_store.diff[self.run].theta)
-                param_vector.append(relax_data_store.diff[self.run].phi)
-
-            # Ellipsoidal diffusion.
-            elif relax_data_store.diff[self.run].type == 'ellipsoid':
-                param_vector.append(relax_data_store.diff[self.run].tm)
-                param_vector.append(relax_data_store.diff[self.run].Da)
-                param_vector.append(relax_data_store.diff[self.run].Dr)
-                param_vector.append(relax_data_store.diff[self.run].alpha)
-                param_vector.append(relax_data_store.diff[self.run].beta)
-                param_vector.append(relax_data_store.diff[self.run].gamma)
+        if model_type == 'diff' or model_type == 'all':
+            # Normal parameters.
+            if sim_index == None:
+                # Spherical diffusion.
+                if cdp.diff.type == 'sphere':
+                    param_vector.append(cdp.diff.tm)
+
+                # Spheroidal diffusion.
+                elif cdp.diff.type == 'spheroid':
+                    param_vector.append(cdp.diff.tm)
+                    param_vector.append(cdp.diff.Da)
+                    param_vector.append(cdp.diff.theta)
+                    param_vector.append(cdp.diff.phi)
+
+                # Ellipsoidal diffusion.
+                elif cdp.diff.type == 'ellipsoid':
+                    param_vector.append(cdp.diff.tm)
+                    param_vector.append(cdp.diff.Da)
+                    param_vector.append(cdp.diff.Dr)
+                    param_vector.append(cdp.diff.alpha)
+                    param_vector.append(cdp.diff.beta)
+                    param_vector.append(cdp.diff.gamma)
+
+            # Monte Carlo diffusion tensor parameters.
+            else:
+                # Spherical diffusion.
+                if cdp.diff.type == 'sphere':
+                    param_vector.append(cdp.diff.tm_sim[sim_index])
+
+                # Spheroidal diffusion.
+                elif cdp.diff.type == 'spheroid':
+                    param_vector.append(cdp.diff.tm_sim[sim_index])
+                    param_vector.append(cdp.diff.Da_sim[sim_index])
+                    param_vector.append(cdp.diff.theta_sim[sim_index])
+                    param_vector.append(cdp.diff.phi_sim[sim_index])
+
+                # Ellipsoidal diffusion.
+                elif cdp.diff.type == 'ellipsoid':
+                    param_vector.append(cdp.diff.tm_sim[sim_index])
+                    param_vector.append(cdp.diff.Da_sim[sim_index])
+                    param_vector.append(cdp.diff.Dr_sim[sim_index])
+                    param_vector.append(cdp.diff.alpha_sim[sim_index])
+                    param_vector.append(cdp.diff.beta_sim[sim_index])
+                    param_vector.append(cdp.diff.gamma_sim[sim_index])
 
         # Model-free parameters (residue specific parameters).
-        if param_set != 'diff':
-            for i in xrange(len(relax_data_store.res[self.run])):
+        if model_type != 'diff':
+            # Loop over the spins.
+            for spin in spin_loop(spin_id):
                 # Skip unselected residues.
-                if not relax_data_store.res[self.run][i].select:
+                if not spin.select:
                     continue
 
-                # Only add parameters for a single residue if index has a 
value.
-                if (param_set == 'mf' or param_set == 'local_tm') and index 
!= None and i != index:
-                    continue
-
                 # Loop over the model-free parameters.
-                for j in 
xrange(len(relax_data_store.res[self.run][i].params)):
+                for i in xrange(len(spin.params)):
                     # local tm.
-                    if relax_data_store.res[self.run][i].params[j] == 
'local_tm':
-                        if relax_data_store.res[self.run][i].local_tm == 
None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].local_tm_sim[sim_index])
+                    if spin.params[i] == 'local_tm':
+                        if sim_index == None:
+                            param_vector.append(spin.local_tm)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].local_tm)
+                            param_vector.append(spin.local_tm_sim[sim_index])
 
                     # S2.
-                    elif relax_data_store.res[self.run][i].params[j] == 'S2':
-                        if relax_data_store.res[self.run][i].s2 == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].s2_sim[sim_index])
+                    elif spin.params[i] == 'S2':
+                        if sim_index == None:
+                            param_vector.append(spin.s2)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].s2)
+                            param_vector.append(spin.s2_sim[sim_index])
 
                     # S2f.
-                    elif relax_data_store.res[self.run][i].params[j] == 
'S2f':
-                        if relax_data_store.res[self.run][i].s2f == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].s2f_sim[sim_index])
+                    elif spin.params[i] == 'S2f':
+                        if sim_index == None:
+                            param_vector.append(spin.s2f)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].s2f)
+                            param_vector.append(spin.s2f_sim[sim_index])
 
                     # S2s.
-                    elif relax_data_store.res[self.run][i].params[j] == 
'S2s':
-                        if relax_data_store.res[self.run][i].s2s == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].s2s_sim[sim_index])
+                    elif spin.params[i] == 'S2s':
+                        if sim_index == None:
+                            param_vector.append(spin.s2s)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].s2s)
+                            param_vector.append(spin.s2s_sim[sim_index])
 
                     # te.
-                    elif relax_data_store.res[self.run][i].params[j] == 'te':
-                        if relax_data_store.res[self.run][i].te == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].te_sim[sim_index])
+                    elif spin.params[i] == 'te':
+                        if sim_index == None:
+                            param_vector.append(spin.te)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].te)
+                            param_vector.append(spin.te_sim[sim_index])
 
                     # tf.
-                    elif relax_data_store.res[self.run][i].params[j] == 'tf':
-                        if relax_data_store.res[self.run][i].tf == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].tf_sim[sim_index])
+                    elif spin.params[i] == 'tf':
+                        if sim_index == None:
+                            param_vector.append(spin.tf)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].tf)
+                            param_vector.append(spin.tf_sim[sim_index])
 
                     # ts.
-                    elif relax_data_store.res[self.run][i].params[j] == 'ts':
-                        if relax_data_store.res[self.run][i].ts == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].ts_sim[sim_index])
+                    elif spin.params[i] == 'ts':
+                        if sim_index == None:
+                            param_vector.append(spin.ts)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].ts)
+                            param_vector.append(spin.ts_sim[sim_index])
 
                     # Rex.
-                    elif relax_data_store.res[self.run][i].params[j] == 
'Rex':
-                        if relax_data_store.res[self.run][i].rex == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].rex_sim[sim_index])
+                    elif spin.params[i] == 'Rex':
+                        if sim_index == None:
+                            param_vector.append(spin.rex)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].rex)
+                            param_vector.append(spin.rex_sim[sim_index])
 
                     # r.
-                    elif relax_data_store.res[self.run][i].params[j] == 'r':
-                        if relax_data_store.res[self.run][i].r == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].r_sim[sim_index])
+                    elif spin.params[i] == 'r':
+                        if sim_index == None:
+                            param_vector.append(spin.r)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].r)
+                            param_vector.append(spin.r_sim[sim_index])
 
                     # CSA.
-                    elif relax_data_store.res[self.run][i].params[j] == 
'CSA':
-                        if relax_data_store.res[self.run][i].csa == None:
-                            param_vector.append(0.0)
-                        elif sim_index != None:
-                            
param_vector.append(relax_data_store.res[self.run][i].csa_sim[sim_index])
+                    elif spin.params[i] == 'CSA':
+                        if sim_index == None:
+                            param_vector.append(spin.csa)
                         else:
-                            
param_vector.append(relax_data_store.res[self.run][i].csa)
+                            param_vector.append(spin.csa_sim[sim_index])
 
                     # Unknown parameter.
                     else:
                         raise RelaxError, "Unknown parameter."
 
-        # Return a Numeric array.
-        return array(param_vector, Float64)
+        # Replace all instances of None with 0.0 to allow the list to be 
converted to a numpy array.
+        for i in xrange(len(param_vector)):
+            if param_vector[i] == None:
+                param_vector[i] = 0.0
+
+        # Return a numpy array.
+        return array(param_vector, float64)
 
 
     def assemble_scaling_matrix(self, index=None, scaling=1):




Related Messages


Powered by MHonArc, Updated Sun Jan 13 23:00:23 2008