def set(self, pattern, rate_constant, parameters=None): """Set rate constants. Pattern can be a glob pattern, and the rate constant will be applied to all processes, where the pattern matches. The rate constant can be either a number or a rate expression. """ if parameters is None: parameters = settings.parameters if type(rate_constant) is str: rate_constant = evaluate_rate_expression(rate_constant, parameters) try: rate_constant = float(rate_constant) except: raise UserWarning("Could not convert rate constant to float") for i, proc in enumerate(sorted(settings.rate_constants.keys())): if pattern is None or fnmatch(proc, pattern): base.set_rate_const(i + 1, rate_constant)
def set_rate_constants(parameters=None, print_rates=True): """Tries to evaluate the supplied expression for a rate constant to a simple real number and sets it for the corresponding process. For the evaluation it draws on predefined natural constants, user defined parameters and mathematical functions. """ if parameters is None: parameters = settings.parameters if print_rates: print('-------------------') for proc in sorted(settings.rate_constants): rate_expr = settings.rate_constants[proc][0] rate_const = evaluate_rate_expression(rate_expr, parameters) try: base.set_rate_const(eval('proclist.%s' % proc.lower()), rate_const) if print_rates: n = int(4 * log(rate_const)) print('%30s: %.3e s^{-1}: %s' % (proc, rate_const, '#' * n)) except Exception, e: raise UserWarning( "Could not set %s for process %s!\nException: %s" \ % (rate_expr, proc, e))