SkillAgentSearch skills...

BIOBSS

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

Install / Use

/learn @obss/BIOBSS

README

<div align="center"> BIOBSS </div>

<p align="center"> <a href="https://pypi.org/project/biobss"><img src="https://img.shields.io/pypi/pyversions/biobss" alt="Python versions"></a> <a href="https://pepy.tech/project/biobss"><img src="https://pepy.tech/badge/biobss" alt="downloads"></a> <a href="https://pypi.org/project/biobss"><img src="https://img.shields.io/pypi/v/biobss" alt="PyPI version"></a> <br> <a href="https://github.com/obss/biobss/blob/main/LICENSE"><img alt="License: MIT" src="https://img.shields.io/github/license/obss/biobss"></a> <a href="https://github.com/obss/biobss/actions"><img alt="Build status" src="https://github.com/obss/biobss/actions/workflows/ci.yml/badge.svg"></a> <a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>

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.

<table> <thead> <tr> <th style="text-align:center" colspan="2"><b>Functionality</b></th> <th style="text-align:center">BIOBSS</th> <th style="text-align:center">BioSPPy</th> <th style="text-align:center">HeartPy</th> <th style="text-align:center">HRV</th> <th style="text-align:center">hrv-analysis</th> <th style="text-align:center">pyHRV</th> <th style="text-align:center">pyPhysio</th> <th style="text-align:center">PySiology</th> <th style="text-align:center">Neurokit2</th> <th style="text-align:center">FLIRT</th> </tr> </thead> <tbody> <tr> <td align="center" colspan="2"><b>File reader</b></td> <td align="center"><b>&check;</b></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> </tr> <tr> <td align="center" colspan="2"><b>Sliding window</b></td> <td align="center"><b>&check;</b></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> </tr> <tr> <td align="center" colspan="2"><b>Preprocessing</b></td> <td align="center"><b>&check;</b></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center">&check;</td> </tr> <tr> <td align="center" colspan="2"><b>Pipeline</b></td> <td align="center"><b>&check;(*)</b></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center"></td> </tr> <tr> <td align="center" style="text-align:center" rowspan="5"><b>Processing</b></td> <td align="center"><b>ECG</b></td> <td align="center"><b>&check;</b></td> <td align="center">&check;</td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center"></td> </tr> <tr> <td align="center" style="text-align:center"><b>PPG</b></td> <td align="center"><b>&check;</b></td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center"></td> <td align="center">&check;</td> <td align="center">&check;</td> </tr> <tr> <td align="center" style="text-align:center"><b>IBI / RRI</b></td> <td align="center"><b>&check;</b></td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center">&check;</td> </tr> <tr> <td align="center" style="text-align:center"><b>EDA</b></td> <td align="center"><b>&check;</b></td> <td align="center">&check;</td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center">&check;</td> <td align="center">&check;</td> </tr> <tr> <td align="center" style="text-align:center"><b>ACC</b></td> <td align="center"><b>&check;</b></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> </tr> <tr> <td align="center" style="text-align:center" rowspan="4"><b>Feature Extraction</b></td> <td align="center"><b>ECG</b></td> <td align="center"><b>&check;</b></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> </tr> <tr> <td align="center" style="text-align:center"><b>PPG</b></td> <td align="center"><b>&check;</b></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> </tr> <tr> <td align="center" style="text-align:center"><b>EDA</b></td> <td align="center"><b>&check;</b></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> </tr> <tr> <td align="center" style="text-align:center"><b>ACC</b></td> <td align="center"><b>&check;</b></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center"></td> <td align="center">&check;</td> </tr> </tbody> </table>

(*): 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.

<div align="left"> Preprocessing </div>

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

<div align="left"> Visualization </div>

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.

<div align="left"> Signal Quality Assessment </div>

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

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

<div align="left"> Feature Extraction </div>

<table> <thead> <tr> <th style="text-align:center">Signal</th> <th style="text-align:center" width="110">Domain / Type</th> <th style="text-align:center">Features</th> </tr> </thead> <tbody> <tr> <td align="center">ECG</td> <td align="center">Time</td> <td align="center">Morphological features related to fiducial point locations and amplitudes</td> </tr> <tr> <td align="center" rowspan="3">PPG</td> <td align="center">Time</td> <td align="center">Morphological features related to fiducial point locations and amplitudes, zero-crossing rate, sign
View on GitHub
GitHub Stars141
CategoryDevelopment
Updated2mo ago
Forks28

Languages

Python

Security Score

100/100

Audited on Dec 31, 2025

No findings