def dynamic_function_from_file(obj, filename): """ Load a dynamic function from a file and attach it to the obj. (A Network or Trajectory.) The filename must be <function_name>.py """ f = file(filename, 'r') function_body = f.read() f.close() basename = os.path.basename(filename) func = os.path.splitext(basename)[0] file_type = os.path.splitext(basename)[1][1:] if isinstance(obj, Trajectory_mod.Trajectory): setattr(obj, '%s_functionBody' % func, function_body) # We try to get the attribute 'namespace' for the object. Network_mod._exec_dynamic_func(obj, func, getattr(obj, 'namespace', {})) elif isinstance(obj, Network_mod.Network): if file_type == 'py': obj._dynamic_funcs_python[func] = function_body obj.exec_dynamic_functions(disable_c=True) elif file_type == 'c': obj.exec_dynamic_functions(curr_c_code=function_body)
def dynamic_function_from_file(obj, filename): """ Load a dynamic function from a file and attach it to the obj. (A Network or Trajectory.) The filename must be <function_name>.py """ f = file(filename, 'r') function_body = f.read() f.close() basename = os.path.basename(filename) func = os.path.splitext(basename)[0] file_type = os.path.splitext(basename)[1][1:] if isinstance(obj, Trajectory_mod.Trajectory): setattr(obj, '%s_functionBody' % func, function_body) # We try to get the attribute 'namespace' for the object. Network_mod._exec_dynamic_func(obj, func, getattr(obj, 'namespace', {})) elif isinstance(obj, Network_mod.Network): if file_type == 'py': obj._dynamic_funcs_python[func] = function_body obj.exec_dynamic_functions(disable_c = True) elif file_type == 'c': obj.exec_dynamic_functions(curr_c_code = function_body)
def appendSensFromODEINT(self, timepoints, odeint_array, holds_dt=False): if getattr(self, '_assignment', None) is None: Network_mod._exec_dynamic_func(self, '_assignment', self.namespace, bind=False) if getattr(self, '_sens_assignment', None) is None: Network_mod._exec_dynamic_func(self, '_sens_assignment', self.namespace, bind=False) numAdded = odeint_array.shape[0] addedValues = scipy.zeros((numAdded, len(self.key_column)), scipy.float_) self.values = scipy.concatenate((self.values, addedValues)) self.timepoints = scipy.concatenate((self.timepoints, timepoints)) nDv = len(self.dynamicVarKeys) nOv = len(self.optimizableVarKeys) # fill in trajectory for ii, dvId in enumerate(self.dynamicVarKeys): self.values[-numAdded:, self.key_column.get(dvId)] = \ odeint_array[:, ii] # ... and sensitivities for ii, dvId in enumerate(self.dynamicVarKeys): for jj, ovId in enumerate(self.optimizableVarKeys): self.values[-numAdded:, self.key_column.get((dvId, ovId))]\ = odeint_array[:, ii + (jj+1)*nDv] self._assignment(self.values, self.timepoints, -numAdded, None) self._sens_assignment(self.values, self.timepoints, -numAdded, None) if holds_dt: # fill in the time derivative of the trajectory for ii, dvId in enumerate(self.dynamicVarKeys): self.values[-numAdded:, self.key_column.get((dvId,'time'))] = \ odeint_array[:, ii + nDv*(nOv+1)] # ... and of the sensitivities for ii, dvId in enumerate(self.dynamicVarKeys): for jj, ovId in enumerate(self.optimizableVarKeys): self.values[-numAdded:, self.key_column.get((dvId, ovId,'time'))]\ = odeint_array[:, ii + (jj+1)*nDv + nDv*(nOv+1)]
def appendSensFromODEINT(self, timepoints, odeint_array, holds_dt = False): if getattr(self, '_assignment', None) is None: Network_mod._exec_dynamic_func(self, '_assignment', self.namespace, bind=False) if getattr(self, '_sens_assignment', None) is None: Network_mod._exec_dynamic_func(self, '_sens_assignment', self.namespace, bind=False) numAdded = odeint_array.shape[0] addedValues = scipy.zeros((numAdded, len(self.key_column)), scipy.float_) self.values = scipy.concatenate((self.values, addedValues)) self.timepoints = scipy.concatenate((self.timepoints, timepoints)) nDv = len(self.dynamicVarKeys) nOv = len(self.optimizableVarKeys) # fill in trajectory for ii, dvId in enumerate(self.dynamicVarKeys): self.values[-numAdded:, self.key_column.get(dvId)] = \ odeint_array[:, ii] # ... and sensitivities for ii, dvId in enumerate(self.dynamicVarKeys): for jj, ovId in enumerate(self.optimizableVarKeys): self.values[-numAdded:, self.key_column.get((dvId, ovId))]\ = odeint_array[:, ii + (jj+1)*nDv] self._assignment(self.values, self.timepoints, -numAdded, None) self._sens_assignment(self.values, self.timepoints, -numAdded, None) if holds_dt : # fill in the time derivative of the trajectory for ii, dvId in enumerate(self.dynamicVarKeys): self.values[-numAdded:, self.key_column.get((dvId,'time'))] = \ odeint_array[:, ii + nDv*(nOv+1)] # ... and of the sensitivities for ii, dvId in enumerate(self.dynamicVarKeys): for jj, ovId in enumerate(self.optimizableVarKeys): self.values[-numAdded:, self.key_column.get((dvId, ovId,'time'))]\ = odeint_array[:, ii + (jj+1)*nDv + nDv*(nOv+1)]
def appendFromODEINT(self, timepoints, odeint_array, holds_dt = False): if getattr(self, '_assignment', None) is None: Network_mod._exec_dynamic_func(self, '_assignment', self.namespace, bind=False) numAdded = odeint_array.shape[0] addedValues = scipy.zeros((numAdded, len(self.key_column)), scipy.float_) self.values = scipy.concatenate((self.values, addedValues)) self.timepoints = scipy.concatenate((self.timepoints, timepoints)) for ii, id in enumerate(self.dynamicVarKeys): self.values[-numAdded:, self.key_column.get(id)] =\ odeint_array[:, ii] self._assignment(self.values, self.timepoints, -numAdded, None) if holds_dt : for ii, id in enumerate(self.dynamicVarKeys) : self.values[-numAdded:, self.key_column.get((id,'time'))] = \ odeint_array[:,ii+len(self.dynamicVarKeys)]