-
Notifications
You must be signed in to change notification settings - Fork 6
Overview
This section provides an overview of the MIDAS system and the underlying technical decisions.
Figure 1. The client-server architecture of the MIDAS system
The MIDAS system (Figure 1) follows a client-server architecture. In this model, the system consists of clients and processing nodes, centrally connected through a dispatcher. The communication between clients and nodes takes place through a request-reply messaging pattern initiated by the client. The architecture of the MIDAS system is described below in more detail.
Physiologic signals are transmitted using the Lab Streaming Layer (LSL) in the MIDAS system. The LSL is a system for collection of physiologic time series with interfaces to several programming languages. Since the LSL provides a generic format for physiologic signals it means that the signal is decoupled from the internal format used by a measurement device. This makes the MIDAS system future proof, since it is possible to switch the actual measurement device to, e.g., a device from another manufacturer without affecting the LSL signal stream. In order to accomplish this, each measurement device is accompanied by a streamer (Figure 1), which reads the signal from the physiologic sensor and retransmits the data from the sensor as an LSL stream, which can be read by the node.
In order to distribute the computational load in the MIDAS system across multiple computers, and also to allow different physiologic signals to be easily added and removed, a modular design is used. In this design, each measured physiologic signal is handled by one node, which processes the incoming physiologic signal online and extracts features.
The communication between the clients and dispatcher takes place using a RESTful JSON API over HTTP.
The communication between the dispatcher and the nodes takes place using ZeroMQ.
The nodes are also able to broadcast messages in a publisher-subscriber model using ZeroMQ. The messages broadcast by all nodes are centrally relayed through the dispatcher, also using ZeroMQ, so that a client only needs to subscribe to the dispatcher in order to receive all messages from all nodes.