cleo.registry module

Code for orchestrating inter-device interactions.

This should only be relevant for developers, not users, as this code is used under the hood when interacting devices are injected (e.g., light and opsin).

class cleo.registry.DeviceInteractionRegistry(sim: CLSimulator)[source]

Bases: object

Facilitates the creation and maintenance of ‘neurons’ and ‘synapses’ implementing many-to-many light-opsin/indicator relationships

Method generated by attrs for class DeviceInteractionRegistry.

brian_objects: set

Stores all Brian objects created (and injected into the network) by this registry

connect_light_to_ldd_for_ng(light: Light, ldd: LightDependent, ng: NeuronGroup) None[source]

Connects a light to a light-dependent device for a given neuron group.

Parameters:
  • light (Light) – Light being injected

  • ldd (LightDependent) – Light-dependent device the light will affect

  • ng (NeuronGroup) – Neurons affected by the light-dependent device

Raises:

ValueError – if the connection has already been made

connections: set[Tuple['Light', 'LightDependent', NeuronGroup]]

Set of (light, light-dependent device, neuron group) tuples representing previously created connections.

init_register_light(light: Light) Subgroup[source]

Creates neurons for the light source, if they don’t already exist

ldds_for_ng: dict[NeuronGroup, set['LightDependent']]

Maps neuron group to the light-dependent devices injected into it

light_prop_model = '\n        T : 1\n        epsilon : 1\n        Ephoton : joule\n        Irr_post = epsilon * T * Irr0_pre : watt/meter**2 (summed)\n        phi_post = Irr_post / Ephoton : 1/second/meter**2 (summed)\n    '

Model used in light propagation synapses

light_prop_syns: dict[Tuple['LightDependent', NeuronGroup], Synapses]

Maps (light-dependent device, neuron group) to the synapses implementing light propagation

light_source_ng: NeuronGroup

Represents ALL light sources (multiple devices)

lights_for_ng: dict[NeuronGroup, set['Light']]

Maps neuron group to the lights injected into it

register(device: InterfaceDevice, ng: NeuronGroup) None[source]

Registers a device injection with the registry.

Parameters:
  • device (InterfaceDevice) – Device being injected

  • ng (NeuronGroup) – Neurons being injected into

register_ldd(ldd: LightDependent, ng: NeuronGroup)[source]

Connects lights previously injected into this neuron group to this light-dependent device

register_light(light: Light, ng: NeuronGroup)[source]

Connects light to light-dependent devices already injected into this neuron group

sim: CLSimulator
source_for_light(light: Light) Subgroup[source]

Returns the subgroup representing the given light source

subgroup_idx_for_light: dict['Light', slice]

Maps light to its indices in the light_source_ng