Skip to main content

BIOBSS

Python versions downloads PyPI version
License: MIT Build status Code style: black

A package for processing signals recorded using wearable sensors, such as Electrocardiogram (ECG), Photoplethysmogram (PPG), Electrodermal activity (EDA) and 3-axis acceleration (ACC).

BIOBSS's main focus is to generate end-to-end pipelines by adding required processes from BIOBSS or other Python packages. Some preprocessing methods were not implemented from scratch but imported from the existing packages.

Main features:

  • Applying basic preprocessing steps (*)
  • Assessing quality of PPG and ECG signals
  • Extracting features for ECG, PPG, EDA and ACC signals
  • Performing Heart Rate Variability (HRV) analysis using PPG or ECG signals
  • Extracting respiratory signals from PPG or ECG signals and estimating respiratory rate (*)
  • Calculating activity indices from ACC signals
  • Generating and saving pipelines

(*): Not all methods were implemented from scratch but imported from existing packages.

The table shows the capabilites of BIOBSS and the other Python packages for physiological signal processing.

Functionality BIOBSS BioSPPy HeartPy HRV hrv-analysis pyHRV pyPhysio PySiology Neurokit2 FLIRT
File reader ✓ ✓ ✓
Sliding window ✓ ✓ ✓
Preprocessing ✓ ✓ ✓ ✓
Pipeline ✓(*) ✓
Processing ECG ✓ ✓ ✓ ✓ ✓
PPG ✓ ✓ ✓ ✓ ✓ ✓
IBI / RRI ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
EDA ✓ ✓ ✓ ✓ ✓ ✓
ACC ✓ ✓ ✓
Feature Extraction ECG ✓
PPG ✓
EDA ✓ ✓
ACC ✓ ✓

(*): Pipeline module differs between the two packages. BIOBSS pipeline aims to provide a more flexible and customizable pipeline for the user.

Modified from Föll, Simon, et al. “FLIRT: A feature generation toolkit for wearable data.” Computer Methods and Programs in Biomedicine 212 (2021): 106461.

You can also read the blog post about BIOBSS.

Preprocessing

BIOBSS has modules with basic signal preprocessing functionalities. These include:

  • Resampling
  • Segmentation
  • Normalization
  • Filtering (basic filtering functions with commonly used filter parameters for each signal type)
  • Peak detection

Visualization

BIOBSS has basic plotting modules specific to each signal type. Using the modules, the signals and peaks can be plotted using Matplotlib or Plotly packages.

Signal Quality Assessment

Signal quality assessment steps listed below can be used with PPG and ECG signals.

  • Clipping detection
  • Flatline detection
  • Physiological checks
  • Morphological checks
  • Template matching

Feature Extraction

Signal Domain / Type Features
ECG Time Morphological features related to fiducial point locations and amplitudes
PPG Time Morphological features related to fiducial point locations and amplitudes, zero-crossing rate, signal to noise ratio
Frequency Amplitude and frequency of FFT peaks, signal power
Statistical Mean, median, standard deviation, percentiles, mean absolute deviation, skewness, kurtosis, entropy
VPG Time Morphological features related to fiducial point locations and amplitudes
APG Time Morphological features related to fiducial point locations and amplitudes
ACC Frequency Mean, median, standard deviation, min, max, range, mean absolute deviation, median absolute deviation, interquartile range, skewness, kurtosis, energy, entropy of fft signal; fft-peak related features and signal power
Statistical Mean, median, standard deviation, min, max, range, mean absolute deviation, median absolute deviation, interquartile range, skewness, kurtosis, energy, momentum of ACC signals; peak related features
Correlation Correlation of ACC signals of different axes
EDA Time Rms, acr length, integral, average power
Frequency FFT peak related features, energy, entropy of fft signal
Statistical Mean, standard deviation, min, max, range, kurtosis, skewness, momentum
Hjorth Activity, complexity, mobility

Heart Rate Variability Analysis

Heart rate variability analysis can be performed with BIOBSS and the parameters given below can be calculated for PPG or ECG signals.

Domain Parameters
Time-domain mean_nni, sdnn, rmssd, sdsd, nni_50, pnni_50, nni_20, pnni_20, cvnni, cvsd, median_nni, range_nni mean_hr, min_hr, max_hr, std_hr, mad_nni, mcv_nni, iqr_nni
Frequency-domain vlf, lf, hf, lf_hf_ratio, total_power, lfnu, hfnu, lnLF, lnHF, vlf_peak, lf_peak, hf_peak
Nonlinear SD1, SD2, SD2_SD1, CSI, CVI, CSI_mofidied, ApEn, SampEn

Activity Indices

BIOBSS has functionality to calculate activity indices from 3-axis acceleration signals. These indices are:

  • Proportional Integration Method (PIM)
  • Zero Crossing Method (ZCM)
  • Time Above Threshold (TAT)
  • Mean Amplitude Deviation (MAD)
  • Euclidian Norm Minus One (ENMO)
  • High-pass Filtered Euclidian (HFEN)
  • Activity Index (AI)

Reference: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0261718

The preprocessing steps which should be applied on the raw acceleration differs for each of the activity indices listed above. In other words, each activity index can be calculated only from specific datasets. These datasets can be generated using BIOBSS both independently or as a part of activity index calculation pipeline.

The generated datasets are:

  • UFXYZ: unfiltered acc signals
  • UFM: magnitude of unfiltered acc signals
  • UFM_modified: modified magnitude of unfiltered signals (absolute(UFM-length(UFM)))
  • UFNM: normalized magnitude of unfiltered acc signals
  • FXYZ: filtered acc signals
  • FXYZ_modified: modified filtered acc signals (absolute(FXYZ))
  • FMpre: magnitude of filtered acc signals
  • SpecialXYZ: filtered acc signals (special filter parameters)
  • SpecialM: magnitude of filtered acc signals (special filter parameters)
  • FMpost: filtered magnitude of acc signals
  • FMpost_modified: modified of filtered magnitude of acc signals (absolute(FMpost))

Respiratory Analysis

BIOBSS has modules to perform basic respiratory analyses. The functionalities are:

  • Preprocessing PPG or ECG signals for respiratory analysis using predefined filter parameters
  • Extracting respiratory signals from modulations (amplitude modulation, frequency modulation, baseline wander) in PPG or ECG signals
  • Estimating respiratory rate from the extracted respiratory signals
  • Calculation respiratory quality indices (RQI)
  • Fusing respiratory rate estimates

Pipeline Generation

The main focus of BIOBSS is to generate and save pipelines for signal processing and feature extraction problems. Thus, it is aimed to :

  • Simplify the preprocessing procedures by generating signal and event channels
  • Make it easy to use processes
  • Decrease the amount of work for repetitive processes and for those who work on multiple datasets
  • Make it possible to save and share pipelines to compare results of different works



To learn more, visit the Documentation page.

Installation

Through pip,

pip install biobss

or build from source,

git clone https://github.com/obss/biobss.git
cd BIOBSS
python setup.py install

Dependencies

  • neurokit2
  • antropy
  • cvxopt
  • heartpy
  • scipy
  • py_ecg_detectors

Tutorial notebooks

  • PPG Signal Processing Open In Colab
  • ECG Signal Processing Open In Colab
  • ACC Signal Processing Open In Colab
  • HRV Analysis Open In Colab
  • Respiratory Analysis Open In Colab

License

Licensed under the MIT License.

Contributing

If you have ideas for improving existing features or adding new features to BIOBSS, please contact us.

Contributors

Çağatay Taşcı

İpek Karakuş

Devrim Çavuşoğlu

Fatih Çağatay Akyön

Metadata

Release files for biobss 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for biobss 0.1.1
File Size Uploaded
biobss-0.1.1.tar.gz 83.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for biobss 0.1.1
File Interpreter ABI Platform
biobss-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 200.8 kB

Release files / biobss-0.1.1.tar.gz

Download URL biobss-0.1.1.tar.gz
Size 83.6 kB
Tags Source
SHA-256 checksum
How to use checksums
56f1378a449aa48bc862ba1dccb35af3ef9880ef6c9232f6ab7c6b6421944c9f
BLAKE2b-256 checksum
How to use checksums
76bd568903506cc2e68a3a941af56167a3614f3beb702c4e183efdcbb336c811
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

Release files / biobss-0.1.1-py3-none-any.whl

Download URL biobss-0.1.1-py3-none-any.whl
Size 117.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f8d385b9ed7743a91d7bede7c7d370e3c622a84d2e42e5be8340d90f1f4d9e4c
BLAKE2b-256 checksum
How to use checksums
aca6aa846bd6c1ed2be257f414b9cba6b1db86b9e4ecfe951f59df799e9296d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page