Systole is an open-source Python package providing simple tools to record and analyze, cardiac signals for psychophysiology. In particular, the package provides tools to pre-process, analyze, and synchronize cardiac data from psychophysiology research. This includes tools for data epoching, heart-rate variability, and synchronizing stimulus presentation with different cardiac phases via psychopy.
The documentation can be found under the following link.
Systole can be installed using pip:
pip install systole
The following packages are required to use Systole:
- Numpy (>=1.15)
- SciPy (>=1.3.0)
- Pandas (>=0.24)
- Matplotlib (>=3.0.2)
- Seaborn (>=0.9.0)
- Numba (>=0.51.2)
Interactive plotting functions and reports generation will also require the following packages to be installed:
- Bokeh (>=2.3.3)
For an overview of all the recording functionalities, you can refer to the following examples:
- Recording
- Artefacts detection and artefacts correction
- Heart rate variability
For an introduction to Systole and cardiac signal analysis, you can refer to the following tutorial:
- Introduction to cardiac signal analysis - - Jupyter Book
Systole natively supports recording of physiological signals from the following setups: * Nonin 3012LP Xpod USB pulse oximeter together with the Nonin 8000SM 'soft-clip' fingertip sensors (USB). * Remote Data Access (RDA) via BrainVision Recorder together with Brain product ExG amplifier (Ethernet).
Systole implements systolic peak detection inspired by van Gent et al. (2019) and the artefact rejection method recently proposed by Lipponen & Tarvainen (2019).
from systole import simulate_rr
from systole.plots import plot_subspaces
rr = simulate_rr()
plot_subspaces(rr)
Systole integrates a set of functions for interactive data visualization based on Bokeh.
Systole supports basic time-domain, frequency-domain and non-linear extraction indices.
All time-domain and non-linear indices have been tested against Kubios HVR 2.2 (<https://www.kubios.com>). The frequency-domain indices can slightly differ. We recommend to always check your results against another software.
from systole.plots import plot_frequency
plot_psd(rr)
This module was created and is maintained by Nicolas Legrand and Micah Allen (ECG group, https://the-ecg.org/). If you want to contribute, feel free to contact one of the developers, open an issue or submit a pull request.
This program is provided with NO WARRANTY OF ANY KIND.
- Jan C. Brammer (jan.c.brammer@gmail.com)
- Gidon Levakov (gidonlevakov@gmail.com)
- Peter Doggart (peter.doggart@pulseai.io)
This software and the ECG are supported by a Lundbeckfonden Fellowship (R272-2017-4345), and the AIAS-COFUND II fellowship programme that is supported by the Marie Skłodowska-Curie actions under the European Union’s Horizon 2020 (Grant agreement no 754513), and the Aarhus University Research Foundation.
Systole was largely inspired by pre-existing toolboxes dedicated to heartrate variability and signal analysis.