Psychophysiology with Python
Project description
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.
Installation
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)
- py-ecg-detectors (>=1.0.2)
Interactive plotting functions and reports generation will also require the following packages to be installed:
- plotly (>=4.8.0)
- plotly_express (>=0.4.1)
For an overview of all the recording functionalities, you can refer to the following tutorials:
- Recording
- Artefacts detection and artefacts correction
- Heart rate variability
Recording
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 https://www.brainproducts.com/ (Ethernet).
Artefact correction
Systole implements the artefact rejection method recently proposed by Lipponen & Tarvainen (2019) [1].
from systole import simulate_rr from systole.plotting import plot_subspaces rr = simulate_rr() plot_subspaces(rr)
Interactive visualization
Systole integrates a set of functions for interactive data visualization based on Plotly.
Heartrate variability
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.plotting import plot_psd plot_psd(rr)
Development
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.
Contributors
- Jan C. Brammer (jan.c.brammer@gmail.com)
Acknowledgements
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.
References
Peak detection (PPG signal)
[1] | van Gent, P., Farah, H., van Nes, N., & van Arem, B. (2019). HeartPy: A novel heart rate algorithm for the analysis of noisy signals. Transportation Research Part F: Traffic Psychology and Behaviour, 66, 368–378. https://doi.org/10.1016/j.trf.2019.09.015 |
Artefact detection and correction:
[2] | Lipponen, J. A., & Tarvainen, M. P. (2019). A robust algorithm for heart rate variability time series artefact correction using novel beat classification. Journal of Medical Engineering & Technology, 43(3), 173–181. https://doi.org/10.1080/03091902.2019.1640306 |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size systole-0.1.2-py3-none-any.whl (8.9 MB) | File type Wheel | Python version py3 | Upload date | Hashes View |