def visit_condition(self, condition, **kwargs): from nineml.abstraction_layer.component import MathUtil prefix = kwargs.get('prefix', '') prefix_excludes = kwargs.get('prefix_excludes', []) rhs = MathUtil.get_prefixed_rhs_string( expr_obj=condition, prefix=prefix, exclude=prefix_excludes) return nineml.abstraction_layer.Condition(rhs=rhs)
def visit_timederivative(self, time_derivative, **kwargs): from nineml.abstraction_layer.component import MathUtil prefix = kwargs.get('prefix', '') prefix_excludes = kwargs.get('prefix_excludes', []) dep = self.prefix_variable(time_derivative.dependent_variable, **kwargs) rhs = MathUtil.get_prefixed_rhs_string( expr_obj=time_derivative, prefix=prefix, exclude=prefix_excludes) return nineml.abstraction_layer.TimeDerivative(dependent_variable=dep, rhs=rhs)
def visit_assignment(self, assignment, **kwargs): from nineml.abstraction_layer.component import MathUtil prefix = kwargs.get('prefix', '') prefix_excludes = kwargs.get('prefix_excludes', []) lhs = self.prefix_variable(assignment.lhs, **kwargs) rhs = MathUtil.get_prefixed_rhs_string( expr_obj=assignment, prefix=prefix, exclude=prefix_excludes) return nineml.abstraction_layer.StateAssignment(lhs=lhs, rhs=rhs)
def action_assignment(self, assignment, **kwargs): rand_map = { 'normal' : r'nineml_random_normal(\1,\2)', 'uniform' : r'nineml_random_uniform(\1,\2)', 'binomial' : r'nineml_random_binomial(\1,\2)', 'poisson' : r'nineml_random_poisson(\1)', 'exponential' : r'nineml_random_exponential(\1)', } expr = assignment.rhs for atom in assignment.rhs_atoms_in_namespace('random'): if not atom in rand_map: err = 'Neuron Simulator does not support: %s'%atom raise nineml.exceptions.NineMLRuntimeError(err) expr = MathUtil.rename_function(expr, '%s.%s'%('random',atom), rand_map[atom] ) self.required_random_functions.add(atom) assignment.neuron_rhs = expr