Exemple #1
0
 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)
Exemple #2
0
    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)
Exemple #3
0
    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