- Notifications
You must be signed in to change notification settings - Fork32
Systole: A python package for cardiac signal synchrony and analysis
License
embodied-computation-group/systole
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Systole is an open-source Python package implementing simple tools for working with cardiac signals for psychophysiology research. In particular, the package provides tools to pre-process, visualize, and analyze cardiac data.This includes tools for data epoching, artefact detection, artefact correction, evoked heart rate analyses, heart ratevariability analyses, circular statistical approaches to analysing cardiac cycles, and synchronising stimuluspresentation with different cardiac phases via Psychopy.
The documentation can be found under the followinglink.
If you have questions, you can ask them in theGitter chat.
If you are usingSystole in a publication we ask you to cite the following paper:
Legrand, N. & Allen, M., (2022). Systole: A python package for cardiac signal synchrony and analysis. Journal of Open Source Software, 7(69), 3832, https://doi.org/10.21105/joss.03832
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)
- Numba (>=0.51.2)
- Seaborn (>=0.9.0)
- Matplotlib (>=3.0.2)
- Bokeh (>=2.3.3)
- pyserial (>=3.4)
- setuptools (>=38.4)
- requests (>=2.26.0)
- tabulate (>=0.8.9)
The Python version should be 3.7 or higher.
For an introduction to Systole and cardiac signal analysis, you can refer to the following tutorial:
Cardiac signal analysis | |
Detecting cardiac cycles | |
Detecting and correcting artefats | |
Heart rate variability | |
Instantaneous and evoked heart rate | |
Working with BIDS folders |
fromsystoleimportimport_dataset1# Import ECg recordingsignal=import_dataset1(modalities=['ECG']).ecg.to_numpy()
The package integrates a set of functions for interactive or non interactive data visualization based onMatplotlib andBokeh.
fromsystole.plotsimportplot_rawplot_raw(signal[60000 :120000],modality="ecg",backend="bokeh",show_heart_rate=True,show_artefacts=True,figsize=300)
Artefacts can be detected and corrected in the RR interval time series or the peaks vector using the method proposed by Lipponen & Tarvainen (2019).
fromsystole.detectionimportecg_peaksfromsystole.plotsimportplot_subspaces# R peaks detectionsignal,peaks=ecg_peaks(signal,method='pan-tompkins',sfreq=1000)plot_subspaces(peaks,input_type="peaks",backend="bokeh")
Systole implements time-domain, frequency-domain and non-linear HRV indices, as well as tools for evoked heart rate analysis.
frombokeh.layoutsimportrowfromsystole.plotsimportplot_frequency,plot_poincarerow(plot_frequency(peaks,input_type="peaks",backend="bokeh",figsize=(300,200)),plot_poincare(peaks,input_type="peaks",backend="bokeh",figsize=(200,200)), )
The package natively supports recording of physiological signals from the following setups:-Nonin 3012LP Xpod USB pulse oximeter together with theNonin 8000SM 'soft-clip' fingertip sensors (USB).- Remote Data Access (RDA) via BrainVision Recorder together withBrain product ExG amplifier (Ethernet).
fromsystole.viewerimportViewerview=Viewer(input_folder="/BIDS/folder/path/",pattern="task-mytask",modality="beh",signal_type="ECG")
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.
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.
- HeartPy:https://python-heart-rate-analysis-toolkit.readthedocs.io/en/latest/
- hrv:https://github.com/rhenanbartels/hrv
- pyHRV:https://pyhrv.readthedocs.io/en/latest/index.html
- ECG-detector:https://github.com/berndporr/py-ecg-detectors
- Pingouin:https://pingouin-stats.org/
- NeuroKit2:https://github.com/neuropsychology/NeuroKit
About
Systole: A python package for cardiac signal synchrony and analysis