Systole: a Python Package for Processing, Analyzing, and Synchronizing Cardiac Data!

Today we are thrilled to announce the release of our lab’s first software package, Systole! Systole is a comprehensive python package intended to help you clean, transform, and analyze your cardiac time-series data, particularly in the context of psycho-physiological research. In addition to these basic functions, Systole offers built-in support for synchronizing your PsychoPy experiments with the heartbeat, making it easier to present stimuli at specific phases of the cardiac cycle. This is of particular interest for research in brain-body interaction and interoception. Unfortunately, most new studies in this area do no use open code, limiting reproducibility. Enter systole!

Example using Systole to present auditory stimuli at three cardiac phases.
Example presentation of auditory tones at three cardiac phases.
The Nonin Xpod USB pulse ox and soft-clip sensor. 
© 2020 - Nonin. All rights reserved.
The Nonin Xpod USB pulse ox and soft-clip sensor.

As of today, Systole is provided as an early ‘pre-release’, and is far from feature complete – so please use with caution! For our initial release, we’ve focused on offering native support for the popular Nonin USB  XPod pulse oximeter, which is frequently used in interoception experiments and offers a cheap (~300 GBP), easy to use platform for plethysmographic cardiac data collection. We hope that this will enable users to design robust interoception and cardiac synchrony tasks, and to share them with the community.

The toolbox also supports basic formats such as RR-interval time series, or instantaneous heart-rate data. Future packages and releases will include other data formats, such as ECG, electrogastrography, and respiration, and we hope the community will help to add support for other devices.

At present, Systole offers the following core features:

  • Online and offline beat-detection:
  • Detection and correction of outlier heartbeats (e.g., ectopic beats, recording artefacts):
  • Full-suite heart-rate variability (HRV) analysis including pre-processing and nonlinear time-frequency analyses
  • Tools for event-related analyses, e.g. data epoching and analysis of instantaneous heart rate:

… plus an entire suite of plotting functions to produce these graphics, and more!

Further, at the Systole website you can find complete documentation as well as interactive tutorials for a variety of workflows including:

We’ll be using Systole extensively in our ongoing Visceral Mind Project, and expect to continuously revise and improve it as we add new features and discover use-cases. Further, Systole is provided as a fully open software, so we invite you to contribute your own additions through Github! 

In the near future, we will publish a methods paper + tutorial detailing the Systole package. In the meantime, if you use Systole in your research, please cite:

Nicolas Legrand, & Micah Allen. (2020, January 14). embodied-computation-group/systole: Pre-Alpha (Version 0.0.1). Zenodo.

Please let us know what you think! Happy heartbeat counting 😉

One Comment on “Systole: a Python Package for Processing, Analyzing, and Synchronizing Cardiac Data!

  1. Pingback: Introducing Systole: a Python Package for Processing, Analyzing, and Synchronizing Cardiac Data! – Dr. Micah Allen

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: