Beispiel #1
0
 def recording(self, port_name):
     """
     Return recorded data as a dictionary containing one numpy array for
     each neuron, ids as keys.
     """
     # NB: Port could also be a state variable
     try:
         port = self.component_class.send_port(port_name)
     except NineMLNameError:
         # For convenient access to state variables
         port = self.component_class.state_variable(port_name)
     if port.nineml_type in ('EventSendPort', 'EventSendPortExposure'):
         spikes = nest.GetStatus(
             self._recorders[port_name], 'events')[0]['times']
         data = neo.SpikeTrain(spikes, t_start=0.0 * pq.ms,
                               t_stop=simulation_controller.t * pq.ms,
                               name=port_name, units=pq.ms)
     else:
         port_name = self.build_name(port_name)
         events, interval = nest.GetStatus(self._recorders[port_name],
                                           ('events', 'interval'))[0]
         try:
             port = self._nineml.component_class.port(port_name)
         except NineMLNameError:
             port = self._nineml.component_class.state_variable(port_name)
         unit_str = UnitHandler.dimension_to_unit_str(port.dimension)
         variable_name = self.build_name(port_name)
         data = neo.AnalogSignal(
             events[variable_name], sampling_period=interval * pq.ms,
             t_start=0.0 * pq.ms, units=unit_str, name=port_name)
     return data