mailr17751 - /branches/tensor_data/data/diff_tensor.py


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

Header


Content

Posted by edward on October 08, 2012 - 17:57:
Author: bugman
Date: Mon Oct  8 17:57:50 2012
New Revision: 17751

URL: http://svn.gna.org/viewcvs/relax?rev=17751&view=rev
Log:
Fix for the diffusion tensor __deepcopy__() replacement method for the new 
design.


Modified:
    branches/tensor_data/data/diff_tensor.py

Modified: branches/tensor_data/data/diff_tensor.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/tensor_data/data/diff_tensor.py?rev=17751&r1=17750&r2=17751&view=diff
==============================================================================
--- branches/tensor_data/data/diff_tensor.py (original)
+++ branches/tensor_data/data/diff_tensor.py Mon Oct  8 17:57:50 2012
@@ -580,23 +580,31 @@
     """An empty data container for the diffusion tensor elements."""
 
     # List of modifiable attributes.
-    _mod_attr = ['type',
-                    'fixed',
-                    'spheroid_type',
-                    'tm',       'tm_sim',       'tm_err',
-                    'Da',       'Da_sim',       'Da_err',
-                    'Dr',       'Dr_sim',       'Dr_err',
-                    'theta',    'theta_sim',    'theta_err',
-                    'phi',      'phi_sim',      'phi_err',
-                    'alpha',    'alpha_sim',    'alpha_err',
-                    'beta',     'beta_sim',     'beta_err',
-                    'gamma',    'gamma_sim',    'gamma_err']
+    _mod_attr = [
+        'type',
+        'fixed',
+        'spheroid_type',
+        'tm',       'tm_sim',       'tm_err',
+        'Da',       'Da_sim',       'Da_err',
+        'Dr',       'Dr_sim',       'Dr_err',
+        'theta',    'theta_sim',    'theta_err',
+        'phi',      'phi_sim',      'phi_err',
+        'alpha',    'alpha_sim',    'alpha_err',
+        'beta',     'beta_sim',     'beta_err',
+        'gamma',    'gamma_sim',    'gamma_err'
+    ]
 
     def __deepcopy__(self, memo):
         """Replacement deepcopy method."""
 
         # Make a new object.
         new_obj = self.__class__.__new__(self.__class__)
+
+        # Initialise it.
+        new_obj.__init__()
+
+        # Copy over the simulation number.
+        new_obj.__dict__['_sim_num'] = self._sim_num
 
         # Loop over all modifiable objects in self and make deepcopies of 
them.
         for name in self._mod_attr:
@@ -604,24 +612,33 @@
             if not hasattr(self, name):
                 continue
 
+            # The category.
+            if search('_err$', name):
+                category = 'err'
+                param = name.replace('_err', '')
+            elif search('_sim$', name):
+                category = 'sim'
+                param = name.replace('_sim', '')
+            else:
+                category = 'val'
+                param = name
+
             # Get the object.
             value = getattr(self, name)
 
-
-            # Replace the object with a deepcopy of it.
-            setattr(new_obj, name, deepcopy(value, memo))
-
-            # Place the new class object into the namespace of 
DiffTensorSimList objects.
-            if isinstance(value, DiffTensorSimList):
-                # Get the new list.
-                new_value = getattr(new_obj, name)
-
-                # Place the new class object into the namespace of 
DiffTensorSimList objects.
-                new_value.diff_element = new_obj
-
+            # Normal parameters.
+            if category == 'val':
+                new_obj.set(param=param, value=deepcopy(value, memo))
+
+            # Errors.
+            elif category == 'err':
+                new_obj.set(param=param, value=deepcopy(value, memo), 
category='err')
+
+            # Simulation objects objects.
+            else:
                 # Recreate the list elements.
                 for i in range(len(value)):
-                    new_value.append(value[i])
+                    new_obj.set(param=param, value=value[i], category='sim', 
sim_index=i)
 
         # Return the new object.
         return new_obj




Related Messages


Powered by MHonArc, Updated Mon Oct 08 18:20:02 2012