Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

vitabel

an open-source Python framework for visualizing and labeling high-resolution physiological data

Documentation Status Binder PyPI Anaconda-Server Badge

In a nutshell, vitabel is an open-source Python framework for post-hoc loading, visualizing, aligning, and annotating high-resolution physiological time-series data within Jupyter notebooks. It is designed for retrospective critical care and perioperative research workflows, helping users turn heterogeneous recordings from devices such as defibrillators, anaesthesia systems, and patient monitors into curated, analysis-ready data and labels for downstream signal processing, statistics, and machine learning.

vitabel annotation screenshot

Interactive Demo in the Browser

We have setup an interactive demo illustrating some standard use cases of vitabel with the help of Binder: head over to mybinder.org, or click the binder badge at the top of this README to access the demo right in your browser.

Installation and Usage

The latest stable release of vitabel is distributed via PyPI and can be installed via

$ pip install vitabel

Alternatively, if you prefer using Conda, you can install vitabel from the conda-forge channel:

$ conda install -c conda-forge vitabel

The latest development version can be installed from the main branch on GitHub by running

$ pip install git+https://github.com/UniGrazMath/vitabel.git

vitabel is built around interactive, notebook-based workflows. Its central Vitals class acts as a container for channels, labels, and metadata, allowing users to combine recordings from different sources, align timelines, add derived labels, and curate data for downstream analysis. Data can be loaded, for example, via Vitals.add_defibrillator_recording or Vitals.add_vital_db_recording; multiple output formats of defibrillators and VitalDB-based workflows are supported.

A typical use of this package reads as follows:

from vitabel import Vitals, Label

# create case and load data
case = Vitals()
case.add_defibrillator_recording("path/to/ZOLL_data_file.json")

# use in-built methods for processing available data, compute etco2
# and predict circulatory state
case.compute_etco2_and_ventilations()
case.predict_circulation()

# create a new label for ROSC events
ROSC_label = Label('ROSC', plotstyle={'marker': '$\u2665$', 'color': 'red', 'ms': 10, 'linestyle': ''})
case.add_global_label(ROSC_label)

# display an interactive plot that allows annotations and further data adjustments
case.plot_interactive(
    channels=[['cpr_acceleration'], ['capnography'], ['ecg_pads'], []],
    labels = [['ROSC'], ['etco2_from_capnography', 'ROSC'], ['ROSC'], ['ROSC', 'rosc_probability']],
    channel_overviews=[['cpr_acceleration']],
    time_unit='s',
    subplots_kwargs={'figsize': (22, 9)}
)

More detailed explicit examples (including the required test data) are contained in the examples directory.

📚 Documentation

The documentation provides an overview of the framework, installation and usage guidance, worked examples, and full API references. Start here: vitabel.readthedocs.io

🧾 Citing vitabel

Simon Orlob, Wolfgang J. Kern, Benjamin Hackl, Jan Wnent, Jan-Thorsten Gräsner, Martin Holler
Vitabel: A Python Framework for Visualizing and Labelling High-Resolution Physiological Data for Critical Care Machine Learning. J Med Syst 50, 92 (2026). 10.1007/s10916-026-02417-x

🛠️ Development

Setup a development environment by using the Python project and environment management tool uv. To setup the environment, simply run

uv sync

Package tests are contained in the tests directory; run them locally via

uv run pytest

We use ruff for linting and formatting the code base, and semantic versioning for the release tags.

Metadata

Release files for vitabel 0.2.0a1

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

Source distribution (sdist)

Source distribution for vitabel 0.2.0a1
File Size Uploaded Provenance
vitabel-0.2.0a1.tar.gz 36.9 MB Without provenance Details

Built distribution (wheel)

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

Total release size: 39.8 MB

Release files / vitabel-0.2.0a1.tar.gz

Download URL vitabel-0.2.0a1.tar.gz
Size 36.9 MB
Tags Source
SHA-256 checksum
How to use checksums
121f4b61d5001716c3b1328439329df7c871c86beeb4fdc10c47bb7674251045
BLAKE2b-256 checksum
How to use checksums
2cd887c31c8195d9a964357a65903785a9129cc6d3c0eaca583596d338449d23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / vitabel-0.2.0a1-py3-none-any.whl

Download URL vitabel-0.2.0a1-py3-none-any.whl
Size 2.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
c1bb671d3070c15a79a2466a2c5775808c6fa6eec26d97276310f160284e52ea
BLAKE2b-256 checksum
How to use checksums
02ceec427a77eb00d090ba0385c7c648268bb5ca5dfe961aa5cdc7b5da1435dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for vitabel 0.2.0a1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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