Streamix

Manage and control scientific experiments requiring high-volume data collection and low-latency event-driven interaction.

Streamix Summary

  • Manage lab infrastructure and experiments over their full life cycle
  • Create tailored low-latency applications for individual lab setups
  • Design interactive experiment logic
  • Control and monitor live experiments
  • Leverage Unreal Engine's graphics, audio, and gameplay powers for interactive real-time experiments
  • Capture, synchronize, and store large volumes of continuous data streams
  • Provide hardware device support out of the box (e.g. motion capture, eye tracking, EEG and many more)

The story behind Streamix

Streamix was born in the context of a PHD in Computer Science as a coordination language that allows to describe a network of interacting components. This network description is then translated into an executable program where each component runs independently but may interact with other components.

Idea
The idea was to apply this highly customizable concept in the context of multiple scientific lab setups where several sensing and actuating devices are used concurrently.
Goals
  • Custom app design tailored for scientific lab setups
  • Low-latency interaction with participants
  • Analysis-friendly large volume streaming data collection
  • Customizable protocol and trial logic that allows conducting reproducible experiments

Mapping the Lab Topology to an App

A scientific lab infrastructure may consist of several (hardware) devices that are used to concurrently gather participant data and deliver stimuli. The coordination language Streamix is used to map this lab topology to an executable application that allows to store the measured data and produce events controlling experimental stimuli.

The generated application consists of a set of components which are interconnected with each other. Each component performs a specific task and only communicates with other components as specified by the Streamix coordination language.

Design Experiment Protocols

Design the experiment flow through a sequence of trials. The experiment flow may advance automatically through trials or can be blocked on specific trials. Trials can be grouped into blocks and sessions and associated to protocols.

Any number of protocols is supported. When performing the experimentat, each participant is assigned to one protocol.

Design the Trial Logic

Configure the logic for each trial with a finite state machine (FSM). An FSM changes states based on trigger events and may produce events on state changes.

An extensive list of event messages is provided. The available event messages which can trigger a state change or can be generated on a state change depend on the components which wre included in the Streamix application during the mapping of the lab topology.

Experiment Control

An ongoing experiment can be controlled and monitored through a configurable graphical user interface.

The user interface offers several widgets which allow to display information of the current protocol and of specific components currently running in the application.

While the defined protocol automates the experiment flow allowing for an economic and reproducible data collection, the experimenter still has full control over the experiment and can interrupt or stop the experimental flow at any moment.

Logging and Data Storage

A running application creates an extensive log which allows to verify and debug operations with great precision. Different log levels can be configured for each component.

Captured data is stored into a database. This allows to selectively fetch only the data that is needed for analysis while keeping raw data in the database without impacting performance.