Author: bugman Date: Tue Jul 21 21:39:44 2009 New Revision: 9263 URL: http://svn.gna.org/viewcvs/relax?rev=9263&view=rev Log: Bug fix for the diffusion tensor MC sim data structures. All structures are now properly updated when a value for a single simulation changes. Modified: 1.3/data/diff_tensor.py Modified: 1.3/data/diff_tensor.py URL: http://svn.gna.org/viewcvs/relax/1.3/data/diff_tensor.py?rev=9263&r1=9262&r2=9263&view=diff ============================================================================== --- 1.3/data/diff_tensor.py (original) +++ 1.3/data/diff_tensor.py Tue Jul 21 21:39:44 2009 @@ -717,8 +717,15 @@ # Get the target object. target_obj = getattr(self, target+'_sim') + # Missing data. + skip = False + for i in range(len(deps)): + if deps[i] == None: + skip = True + # Calculate and set the value. - target_obj.set_untouchable_item(index, fn(*deps)) + if not skip: + target_obj.set_untouchable_item(index, fn(*deps)) def __update_object(self, param_name, target, update_if_set, depends, category): @@ -829,27 +836,36 @@ # Initialise an empty array to store the MC simulation object elements (if it doesn't already exist). if not target+'_sim' in self.__dict__: - if param_name == 'Dr': - "Initialising dict" self.__dict__[target+'_sim'] = DiffTensorSimList(target, self, elements=num_sim) # Repackage the deps structure. args = [] + skip = False for i in range(num_sim): args.append(()) + + # Loop over the dependent structures. for j in range(len(deps)): + # None, so skip. + if deps[j] == None or deps[j][i] == None: + skip = True + + # String data type. if type(deps[j]) == str: args[-1] = args[-1] + (deps[j],) + + # List data type. else: args[-1] = args[-1] + (deps[j][i],) - # Loop over the sims. - for i in range(num_sim): - # Calculate the value. - value = fn(*args[i]) - - # Set the attribute. - self.__dict__[target+'_sim'][i] = value + # Loop over the sims and set the values. + if not skip: + for i in range(num_sim): + # Calculate the value. + value = fn(*args[i]) + + # Set the attribute. + self.__dict__[target+'_sim'][i] = value def from_xml(self, diff_tensor_node):