def __init__(self, spiketimes, Name, Parent = None, Description = ""):
        nineml_daetools_bridge.__init__(self, Name, None, Parent, Description)

        # A dummy variable
        self.event = daet.daeVariable("event", daet.time_t, self, "")
        
        # Add one 'send' event port
        self.spikeoutput = daet.daeEventPort("spikeoutput", daet.eOutletPort, self, "Spike outlet event port")
        self.nineml_event_ports.append(self.spikeoutput)
        
        # A list of spike event times
        self.spiketimes = list(spiketimes)
Example #2
0
    def __init__(self, spiketimes, Name, Parent=None, Description=""):
        nineml_daetools_bridge.__init__(self, Name, None, Parent, Description)

        # A dummy variable
        self.event = daet.daeVariable("event", daet.time_t, self, "")

        # Add one 'send' event port
        self.spikeoutput = daet.daeEventPort("spikeoutput", daet.eOutletPort,
                                             self, "Spike outlet event port")
        self.nineml_event_ports.append(self.spikeoutput)

        # A list of spike event times
        self.spiketimes = list(spiketimes)
    def __init__(self, Name, ninemlComponent, Parent = None, Description = ""):
        """
        Iterates over *Parameters*, *State variables*, *Aliases*, *Analogue ports*, *Event ports*, 
        *Sub-nodes* and *Port connections* and creates corresponding daetools objects.
        
        :param Name: string
        :param ninemlComponent: AL component object
        :param Parent: daeModel-derived object
        :param Description: string
            
        :raises: RuntimeError
        """
        #start = time()
        
        daet.daeModel.__init__(self, Name, Parent, Description)
        
        #print('    daeModel.__init__({0}) = {1}'.format(Name, time() - start))

        start = time()

        self.ninemlComponent        = ninemlComponent
        self.nineml_parameters      = []
        self.nineml_state_variables = []
        self.nineml_aliases         = []
        self.nineml_analog_ports    = []
        self.nineml_reduce_ports    = []
        self.nineml_event_ports     = []
        self.ninemlSubComponents    = []

        # AL component may be None (useful in certain cases); therefore do not raise an exception
        if not self.ninemlComponent:
            return
        
        # 1) Create parameters
        for param in self.ninemlComponent.parameters:
            self.nineml_parameters.append( daet.daeParameter(param.name, daet.unit(), self, "") )

        # 2) Create state-variables (diff. variables)
        for var in self.ninemlComponent.state_variables:
            self.nineml_state_variables.append( daet.daeVariable(var.name, dae_nineml_t, self, "") )

        # 3) Create alias variables (algebraic)
        for alias in self.ninemlComponent.aliases:
            self.nineml_aliases.append( daet.daeVariable(alias.lhs, dae_nineml_t, self, "") )

        # 4) Create analog-ports and reduce-ports
        for analog_port in self.ninemlComponent.analog_ports:
            if analog_port.mode == 'send':
                self.nineml_analog_ports.append( ninemlAnalogPort(analog_port.name, daet.eOutletPort, self, "") )
            elif analog_port.mode == 'recv':
                self.nineml_analog_ports.append( ninemlAnalogPort(analog_port.name, daet.eInletPort, self, "") )
            elif analog_port.mode == 'reduce':
                self.nineml_reduce_ports.append( ninemlReduceAnalogPort(analog_port.name, self) )
            else:
                raise RuntimeError("")

        # 5) Create event-ports
        for event_port in self.ninemlComponent.event_ports:
            if event_port.mode == 'send':
                self.nineml_event_ports.append( daet.daeEventPort(event_port.name, daet.eOutletPort, self, "") )
            elif event_port.mode == 'recv':
                self.nineml_event_ports.append( daet.daeEventPort(event_port.name, daet.eInletPort, self, "") )
            else:
                raise RuntimeError("")

        # 6) Create sub-nodes
        for name, subcomponent in list(self.ninemlComponent.subnodes.items()):
            self.ninemlSubComponents.append( nineml_daetools_bridge(name, subcomponent, self, '') )

        # 7) Create port connections
        for port_connection in self.ninemlComponent.portconnections:
            #print 'try to connect {0} to {1}'.format(port_connection[0].getstr('.'), port_connection[1].getstr('.'))
            portFrom = getObjectFromNamespaceAddress(self, port_connection[0], look_for_ports = True, look_for_reduceports = True)
            portTo   = getObjectFromNamespaceAddress(self, port_connection[1], look_for_ports = True, look_for_reduceports = True)
            #print '  {0} -> {1}\n'.format(type(portFrom), type(portTo))
            connectPorts(portFrom, portTo, self)
Example #4
0
    def __init__(self, Name, ninemlComponent, Parent=None, Description=""):
        """
        Iterates over *Parameters*, *State variables*, *Aliases*, *Analogue ports*, *Event ports*, 
        *Sub-nodes* and *Port connections* and creates corresponding daetools objects.
        
        :param Name: string
        :param ninemlComponent: AL component object
        :param Parent: daeModel-derived object
        :param Description: string
            
        :raises: RuntimeError
        """
        #start = time()

        daet.daeModel.__init__(self, Name, Parent, Description)

        #print('    daeModel.__init__({0}) = {1}'.format(Name, time() - start))

        start = time()

        self.ninemlComponent = ninemlComponent
        self.nineml_parameters = []
        self.nineml_state_variables = []
        self.nineml_aliases = []
        self.nineml_analog_ports = []
        self.nineml_reduce_ports = []
        self.nineml_event_ports = []
        self.ninemlSubComponents = []

        # AL component may be None (useful in certain cases); therefore do not raise an exception
        if not self.ninemlComponent:
            return

        # 1) Create parameters
        for param in self.ninemlComponent.parameters:
            self.nineml_parameters.append(
                daet.daeParameter(param.name, daet.unit(), self, ""))

        # 2) Create state-variables (diff. variables)
        for var in self.ninemlComponent.state_variables:
            self.nineml_state_variables.append(
                daet.daeVariable(var.name, dae_nineml_t, self, ""))

        # 3) Create alias variables (algebraic)
        for alias in self.ninemlComponent.aliases:
            self.nineml_aliases.append(
                daet.daeVariable(alias.lhs, dae_nineml_t, self, ""))

        # 4) Create analog-ports and reduce-ports
        for analog_port in self.ninemlComponent.analog_ports:
            if analog_port.mode == 'send':
                self.nineml_analog_ports.append(
                    ninemlAnalogPort(analog_port.name, daet.eOutletPort, self,
                                     ""))
            elif analog_port.mode == 'recv':
                self.nineml_analog_ports.append(
                    ninemlAnalogPort(analog_port.name, daet.eInletPort, self,
                                     ""))
            elif analog_port.mode == 'reduce':
                self.nineml_reduce_ports.append(
                    ninemlReduceAnalogPort(analog_port.name, self))
            else:
                raise RuntimeError("")

        # 5) Create event-ports
        for event_port in self.ninemlComponent.event_ports:
            if event_port.mode == 'send':
                self.nineml_event_ports.append(
                    daet.daeEventPort(event_port.name, daet.eOutletPort, self,
                                      ""))
            elif event_port.mode == 'recv':
                self.nineml_event_ports.append(
                    daet.daeEventPort(event_port.name, daet.eInletPort, self,
                                      ""))
            else:
                raise RuntimeError("")

        # 6) Create sub-nodes
        for name, subcomponent in list(self.ninemlComponent.subnodes.items()):
            self.ninemlSubComponents.append(
                nineml_daetools_bridge(name, subcomponent, self, ''))

        # 7) Create port connections
        for port_connection in self.ninemlComponent.portconnections:
            #print 'try to connect {0} to {1}'.format(port_connection[0].getstr('.'), port_connection[1].getstr('.'))
            portFrom = getObjectFromNamespaceAddress(self,
                                                     port_connection[0],
                                                     look_for_ports=True,
                                                     look_for_reduceports=True)
            portTo = getObjectFromNamespaceAddress(self,
                                                   port_connection[1],
                                                   look_for_ports=True,
                                                   look_for_reduceports=True)
            #print '  {0} -> {1}\n'.format(type(portFrom), type(portTo))
            connectPorts(portFrom, portTo, self)