embodied-computation-group / systole

Licence: GPL-3.0 license
Systole: A python package for cardiac signal synchrony and analysis

Programming Languages

python
139335 projects - #7 most used programming language
TeX
3793 projects
HTML
75241 projects

Projects that are alternatives of or similar to systole

mhrv
Matlab toolbox for calculating Heart-Rate Variability metrics on ECG signals
Stars: ✭ 48 (-5.88%)
Mutual labels:  hrv, heart-rate-variability
OpenHRV
Heart rate variability (HRV) biofeedback with Polar ECG chest straps.
Stars: ✭ 37 (-27.45%)
Mutual labels:  hrv, heart-rate-variability
pyhrv
Python toolbox for Heart Rate Variability
Stars: ✭ 172 (+237.25%)
Mutual labels:  hrv, heart-rate-variability
measure-stress-hrv-android
Get stress measurement results in your Android app using Welltory heart rate variability algorithms
Stars: ✭ 24 (-52.94%)
Mutual labels:  hrv, heart-rate-variability
TestHrv
Heart rate variability app for Garmin smartwatches
Stars: ✭ 44 (-13.73%)
Mutual labels:  hrv, heart-rate-variability
Meditate
Meditation app for Garmin smartwatches
Stars: ✭ 42 (-17.65%)
Mutual labels:  hrv, heart-rate-variability
flirt
Are you ready to FLIRT with your wearable data?
Stars: ✭ 41 (-19.61%)
Mutual labels:  hrv, biosignals
Upcharika
A unique flutter application aimed at helping people getting their vitals using Photoplethysmography and Computer Vision
Stars: ✭ 37 (-27.45%)
Mutual labels:  photoplethysmography, ppg
Tutorials
Tutorials for creating figures, tables, or other content for AAS Journals.
Stars: ✭ 35 (-31.37%)
Mutual labels:  bokeh
teaching
scripts and notes for learning
Stars: ✭ 29 (-43.14%)
Mutual labels:  bokeh
jobSpider
jobSpider是一只scrapy爬虫,用于爬取职位信息
Stars: ✭ 28 (-45.1%)
Mutual labels:  bokeh
The-Data-Visualization-Workshop
A New, Interactive Approach to Learning Data Visualization
Stars: ✭ 59 (+15.69%)
Mutual labels:  bokeh
awesome-psychology
An awesome list of psychology courses, videos and books. Please, contribute!
Stars: ✭ 68 (+33.33%)
Mutual labels:  psychology-experiments
jwql
The James Webb Space Telescope Quicklook Application
Stars: ✭ 42 (-17.65%)
Mutual labels:  bokeh
heartrate-monitor
Heart rate variability (HRV) analysis tool to detect autonomic nerve state
Stars: ✭ 29 (-43.14%)
Mutual labels:  heart-rate-variability
angular-bokeh
An example angular project on integrating Bokeh with Angular and send data from a python backend
Stars: ✭ 24 (-52.94%)
Mutual labels:  bokeh
traceml
Engine for ML/Data tracking, visualization, dashboards, and model UI for Polyaxon.
Stars: ✭ 445 (+772.55%)
Mutual labels:  bokeh
habitus
🏄 State-of-the-art Tracker for emotions, habits and thoughts. | Gamified. | Anonymous and open source. | Healthiest version of you
Stars: ✭ 23 (-54.9%)
Mutual labels:  psychology-experiments
TEAP
Toolbox for Emotion Analysis using Physiological signals
Stars: ✭ 50 (-1.96%)
Mutual labels:  physiological-signals
Adria-DX11
Graphics engine written in C++ using DirectX11
Stars: ✭ 87 (+70.59%)
Mutual labels:  bokeh
https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white

https://github.com/embodied-computation-group/systole/blob/dev/docs/source/images/logo.png


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 rate variability analyses, circular statistical approaches to analysing cardiac cycles, and synchronising stimulus presentation with different cardiac phases via Psychopy.

The documentation can be found under the following link.

If you have questions, you can ask them in the Gitter chat.

How to cite?

If you are using Systole in a publication we ask you to cite the following paper:

Legrand et al., (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

Installation

Systole can be installed using pip:

pip install systole

The following packages are required to use Systole:

The Python version should be 3.7 or higher.

Tutorials

For an introduction to Systole and cardiac signal analysis, you can refer to the following tutorial:

Cardiac signal analysis Colab badge 1
Detecting cardiac cycles Colab badge 2
Detecting and correcting artefats Colab badge 3
Heart rate variability Colab badge 4
Instantaneous and evoked heart rate Colab badge 5
Working with BIDS folders Colab badge 6

Getting started

from systole import import_dataset1

# Import ECg recording
signal = import_dataset1(modalities=['ECG']).ecg.to_numpy()

Signal extraction and interactive plotting

The package integrates a set of functions for interactive or non interactive data visualization based on Matplotlib and Bokeh.

from systole.plots import plot_raw

plot_raw(signal[60000 : 120000], modality="ecg", backend="bokeh",
            show_heart_rate=True, show_artefacts=True, figsize=300)

https://github.com/embodied-computation-group/systole/blob/dev/docs/source/images/raw.png

Artefacts detection and rejection

Artefacts can be detected and corrected in the RR interval time series or the peaks vector using the method proposed by Lipponen & Tarvainen (2019).

from systole.detection import ecg_peaks
from systole.plots import plot_subspaces

# R peaks detection
signal, peaks = ecg_peaks(signal, method='pan-tompkins', sfreq=1000)

plot_subspaces(peaks, input_type="peaks", backend="bokeh")

https://github.com/embodied-computation-group/systole/blob/dev/docs/source/images/subspaces.png

Heart rate variability analysis

Systole implements time-domain, frequency-domain and non-linear HRV indices, as well as tools for evoked heart rate analysis.

from bokeh.layouts import row
from systole.plots import plot_frequency, plot_poincare

row(
    plot_frequency(peaks, input_type="peaks", backend="bokeh", figsize=(300, 200)),
    plot_poincare(peaks, input_type="peaks", backend="bokeh", figsize=(200, 200)),
    )

https://github.com/embodied-computation-group/systole/blob/dev/docs/source/images/hrv.png

Online systolic peak detection, cardiac-stimulus synchrony, and cardiac circular analysis

The package 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).

Interactive visualization of BIDS structured datasets

from systole.viewer import Viewer

view = Viewer(
    input_folder="/BIDS/folder/path/",
    pattern="task-mytask",
    modality="beh",
    signal_type="ECG"
)

https://github.com/embodied-computation-group/systole/blob/dev/docs/source/images/editor.gif

Inserting and removing peaks

https://github.com/embodied-computation-group/systole/blob/dev/docs/source/images/peaks.gif

Annotating bad segments

https://github.com/embodied-computation-group/systole/blob/dev/docs/source/images/segments.gif

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.

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.


AU lundbeck lab

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].