You are here

Home » Shared Tools

ioHub

EMRA has already made significant progress in the development and publishing of open source tools. Most significantly, through the development of the ioHub, led by Sol Simpson.

The ioHub is a Python package providing a cross-platform computer device event monitoring and storage framework. ioHub is free to use and is GPL version 3 licensed.

ioHub is not a complete experiment design and runtime API. It’s main focus is on device event monitoring, real-time reporting, and persistent storage of input device events on a system wide basis. When ioHub is used for experiment device monitoring during a psychology or neuroscience type study, ioHub is designed to be used with the most excellent PsychoPy.

Note

As of the May 8th, 2013 release of PsychoPy 1.77 rc1, the ioHub Package has merged with the PsychoPy package and is now being distributed as part of PsychoPy.

 

 

 

ioHub Features

Independent device event monitoring:

The ioHub Process, responsible for the monitoring, bundling, and storage of device events, runs in a separate OS process from the main PsychoPy Process. ioHub DeviceEvents are monitored continuously system-wide rather than intermittently or relative to the PsychoPy window. In fact, no graphical window is needed to monitor supported devices (An example of using this headless event tracking mode is provided in the examples folder). ioHub Device event monitoring and callback processing occurs very quickly in parallel, regardless of what state the PsychoPy Process is in (i.e. even when it is performing a blocking operation and would not be able to monitor new events itself).

Easy data storage and retrieval:

ioHub Device event data are saved in the ioHub DataStore, a structured event definition using the HDF5 standard. With a multicore CPU, all device events during an experiment can be automatically saved for post hoc analyses without impairing performance of the PsychoPy Process. The same device events saved to the ioDataStore can be accessed during an experiment as numpy ndarray’s, affording direct use in powerful scientific Python models such as Scipy and MatPlotLib. These events can be retrieved during the PsychoPy experiment and from the ioDataStore very flexibly: for example, by event time (chronologically and device independent), by device (e.g., mouse events), and by event type (e.g., fixation events).

Smooth integration with PsychoPy:

When used with full PsychoPy functionality, ioHub can save debugging messages to PsychoPy log files, and PsychoPy LogEvents can be saved in the ioDataStore (as well as the PsychoPy logging system). Furthermore, ioHub and PsychoPy share a common time base, so times read from the PsychoPy Experiment process are directly comparable to times read from ioHub Device Events (if the PsychoPy time is based on psychopy.core.getTime or default psychopy.logging.defaultClock mechanisms).

High-precision synchronization:

The ioHub Process provides a common timebase to automatically synchronize device events from multiple physical and virtual devices. In some cases the ioHub Process interacts with the PsychoPy Process ‘as if’ it were another virtual device: descriptive MessageEvents can be sent in the PsychoPy experiment script to the ioHub Process in real-time, allowing important information in the course of the experiment (such as stimulus onsets, etc.) to be time stamped with microsecond-level precision and saved in the ioDataStore alongside similarly time-stamped device events.

 

Github Hosted

The ioHub project source is available on GitHub here. Given the merging of the ioHub Package with PsychoPy, the ioHub Github repository will be kept for historical reasons, but users wanting to install and use ioHub should do so by going to the PsychoPy website and following download and installation instructions there.


Open the PsychoPy IDE in Coder mode, then in the Demos menu, browse to the iohub_extended demo folder. The eye tracker demo eye_tracker will run the LC Technologies, Sensomotoric Instruments (SMI), SR Research, and Tobii eyetrackers.

The iohub documentation is available here.

 

 

 

 


 

 
 

 

M T W T F S S
 
 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
 
 
 
Participate