module module

class module.Module[source]

Bases: object

Cortix module super class.

This class provides facilities for creating modules within the Cortix network. Cortix will map one object of this class to either a Multiprocessing or MPI process depending on the user’s configuration.


This class is to be inherited by every Cortix module. In order to execute, modules must override the run method, which will be executed during the simulation.


Module super class constructor.


This constructor must be called explicitly in the constructor of every Cortix module like so:


str – A name given to the instance. Default is the derived class name.


list(str), None – A list of names of ports expected in the module. This will be compared to port names during runtime to check against the intended use of the module.


any – Any pickle-able data structure to be passed in a multiprocessing.Queue to the parent process or to be gathered in the root MPI process. Default is None.


boolTrue for MPI, False for Multiprocessing


boolFalse for MPI, True for Multiprocessing


list(Port) – A list of ports contained by the module


Network – An internal network inherited by the derived module for nested networks.


Get port by name; if it does not exist, create one.

Parameters:name (str) – The name of the port to get
Returns:port – The port object with the corresponding name
Return type:Port

Receive data from a given port


This function will block until data is available

Parameters:port (Port, str) – A Port object to send the data through, or its string name
Returns:data – The data received through the port
Return type:any

Module run function

Run method with an option to pass data back to the parent process when running in Python multiprocessing mode. If the user does not want to share data with the parent process, this function can be overriden with run(self) or run(self, *args) as long as self.state = None. If self.state points to anything but None, the user must use `run(self, *args).


When in multiprocessing, *args has two elements: comm_idx and comm_state. To pass back the state of the module, the user should insert the provided index comm_idx and the state into the queue as follows:

if self.use_multiprocessing:
except pickle.PicklingError:

at the bottom of the user defined run() function.


This function must be overridden by all Cortix modules

  • arg[0] (int) – Index of the state in the communication queue.
  • arg[1] (multiprocessing.Queue) – When using the Python multiprocessing library state_comm must have the module’s self.state in it. That is, state_comm.put((idx_comm,self.state)) must be the last command in the method before return. In addition, self.state must be pickle-able.
send(data, port)[source]

Send data through a given port.

  • data (any) – The data being sent out - must be pickleable
  • port (Port, str) – A Port object to send the data through, or its string name