A computational layer for CPET

E

Oxynet

Physiological intelligence for exercise testing.

Oxynet extracts physiological structure from cardiopulmonary exercise test signals and returns it as structured measurements: consistent across protocols, populations and devices, and available to people, clinical software and AI agents through the same API.

23
Metabolimeter formats read
Browser, API, MCP
Ways in
7
Peer-reviewed papers

The Problem & Solution

Standardising CPET Interpretation

Problem

Interpretation variability limits clinical utility

Threshold determination is a visual judgment made against several criteria that do not always agree. Where they disagree, the answer depends on which criterion the reader weighted and how the data were smoothed before plotting, and none of that reaches the report.

Solution

A measurement layer under the interpretation

Oxynet computes the same quantities the same way on every recording, whatever produced it, so the reading a clinician gives is anchored to numbers that do not move between sessions, sites or systems.

From raw CPET signals to structured physiology

Raw CPET data
Oxynet analysis

Intensity Domains

Drag the slider to see raw CPET measurements become standardised intensity domains: LT and RCP detected automatically, and every breath classified.

Moderate Domain

Below LT

VO₂ reaches steady state within minutes. Blood lactate returns to resting levels. Exercise is fully sustainable.

Heavy Domain

LT → RCP

A VO₂ slow component emerges. Lactate rises but stabilises above baseline. Prolonged exercise remains possible.

Severe Domain

Above RCP

Respiratory compensation is engaged. Lactate and VO₂ rise continuously toward VO₂max. Exercise tolerance is time-limited.

Based on Keir et al., Sports Medicine (2022)

Oxynet is a computational engine, not a replacement for clinical expertise. It measures; the reading stays with the clinician.

Three ways in

One engine, three doors

Start in the browser. Call the API when it should happen automatically. Connect an assistant over MCP when the question arrives in a conversation. The same models answer behind every door, and one key covers the API and MCP.

Your export

COSMEDCortexMetaSoftPNOEVO2 Master

23 formats, detected automatically

as exported
OxynetOxynet engine
  • Thresholds
  • Oscillationbeta
  • Substrate
  • Signal integrity
JSON

Browser · for clinicians and labs

Drop the file in. Read the physiology out.

Reduce variability across clinicians and sessions. The app reads your metabolimeter export as exported and returns the same structured measurements every time, with no change to how you capture data and nothing to install.

Free inferences in the browser. Cortex, COSMED, MetaSoft and more. The uploaded file is parsed and discarded, and the parsed record is deleted after 24 hours.

  1. 1Upload the file your system already exports, in whatever format it writes.
  2. 2Oxynet processes the signals and detects ventilatory thresholds automatically.
  3. 3Receive structured outputs (intensity domains, VT1, VT2) ready for clinical review.

The test happens. The interpretation follows.

The unit of work is not a person uploading a file. A testing service that runs thousands of CPETs a year can have every one of them interpreted as it is recorded: no export, no manual transfer, no decision to make per test. That is the integration Oxynet is built for.

Designed to integrate, not replace

Oxynet runs on top of existing CPET systems. It reads CPET time-series and returns structured outputs over the API or, by arrangement, in a local or embedded deployment, without changes to your data capture hardware, clinical workflow, or reporting interface.

Rather run the open research models on your own machine? The pyoxynet package →

What Oxynet produces

Structured physiological measurements

Every CPET processed by Oxynet returns the same structured set of results, in the same shape, regardless of the device, protocol or population that produced it.

Routine interpretation

Thresholds and intensity domains

  • VT1 and VT2, in time, V̇O₂ and V̇CO₂
  • Every breath classified moderate · heavy · severe
  • Detected consistently across protocols and ergometers

The entry point, and the part with the longest validation record. Same input, same output, which is what makes longitudinal and multi-centre comparison possible.

Quantitative phenotyping

beta

Ventilatory oscillation analysis

  • Each episode: period, amplitude, cycles, location in the test
  • Clarity: how far it stands above the recording’s own background
  • End-tidal CO₂ corroboration and phase agreement
  • Whether the swing damped, held steady or grew

Not a yes/no verdict. The oscillation is measured and located, so a rhythm that fades during exercise is reported as a different finding from one that emerges late.

Metabolism

Substrate use and FATMAX

  • Fat and carbohydrate oxidation rates, stage by stage
  • FATMAX, against work rate and against %V̇O₂peak
  • The crossover where carbohydrate overtakes fat
  • Gross efficiency and the oxygen cost of a watt, on a cycle ergometer

Indirect calorimetry from V̇O₂ and V̇CO₂, so it also runs on tests with no ergometer channel, against %V̇O₂peak alone. Above RER 1.0 the fat figure is reported as a bound rather than a rate, because there the exhaled CO₂ is no longer all metabolic.

Derived quantities

Standard CPET measurements

  • V̇O₂max, V̇Emax, RERmax, each a 20 s rolling average rather than one breath
  • O₂ pulse
  • V̇E/V̇CO₂ slope as a profile over the test, with bootstrap intervals

Computed on request against the same recording, so a report and its underlying numbers cannot disagree. The V̇E/V̇CO₂ slope is returned as a profile because a slope that climbs across a test is a different finding from a flat one.

Signal integrity

Whether the numbers can be believed

  • Cross-channel gas checks: V̇CO₂ against V̇E, PetCO₂ against PetO₂
  • Sampling adequacy: which oscillation periods this file can resolve
  • Clock integrity: many carts restart the clock at each phase

These describe the recording, not the patient. A file can fail every check and come from a healthy subject, and where the engine repairs something it says so instead of applying it silently.

No output carries a confidence score. Nothing here is calibrated against clinical outcomes, so a percentage would be a number without a meaning. Where a recording cannot support an analysis, Oxynet says so, and says why.

Scientific validation

Measured against expert interpretation

Threshold detection is evaluated against expert labelling across cohorts that differ in population, protocol, ergometer and metabolimeter, documented across 7 peer-reviewed papers. Agreement with an expert is the floor the engine has to clear.

The promotion gate

No model reaches the registry without clearing all four, on a cohort it never saw, on both the time axis and the oxygen uptake axis.

V̇O₂ bias
≤ 120 mL/min
V̇O₂ correlation
≥ 0.80
Time bias
≤ 60 s
Time correlation
≥ 0.80

Capabilities have different evidence maturity

Production

Answering on the live API, with the evaluation that let each model ship stored beside it. Threshold detection carries the longest record.

Available

Shipped and usable: the API, the MCP endpoint, the schema, the package and the deployment options.

Research

Running, and not yet shown to transport. Oscillation analysis sits here, developed on a single heart-failure cohort.

What Oxynet is not

  • Not a medical device. No CE mark, no FDA clearance, and not registered as software as a medical device in any jurisdiction.
  • Not a diagnosis. The engine returns physiological measurements; interpreting them for a patient is the clinician’s act.
  • Not calibrated against outcomes. No output carries a confidence score, because there is nothing to calibrate one against.

A model for your lab

Trained on your tests. Read your way.

Every lab has its own protocol, population, metabolimeter and its own way of marking VT1 and VT2. If you have labelled tests, Oxynet fine-tunes its threshold models on them, so the model you call is fitted to the way your experts read a recording.

LaboratoriesClinicsUniversity departments
  1. 1

    Share

    Labelled tests, under the data transfer agreement. It names every way the data may be used, and lets you withdraw it from future training.

  2. 2

    Fine-tune

    Training starts from the model pretrained on every contributing lab. Its encoder is kept, and the layers that place the thresholds are retrained on your recordings.

  3. 3

    Gate

    Evaluated against your experts’ labels on the same four criteria every model clears, bias and correlation on V̇O₂ and on time. It ships only if it passes.

  4. 4

    Serve

    A named model, called by name on the API and over MCP, and scoped to your key.

A model fitted to one lab is evidence about that lab. It says nothing yet about how it transports to a second population, and it is reported that way. A model built for you, or a joint development project, is agreed separately from the data agreement, which covers sharing the data.

Open Source

The Pyoxynet Package

The open research side of Oxynet: the models and tools, in a package you can import. Built with Keras and TensorFlow, models available in efficient TFLite format.

TFLite

Inference Model

Estimates exercise intensity domains from CPET data with high accuracy. Supports VO₂, VCO₂, VE, PetO₂, PetCO₂, VE/VO₂, and VE/VCO₂ inputs.

CGAN

Generator Model

Creates realistic synthetic CPET data for research and validation using a Conditional GAN (CGAN) architecture.

Requires Python 3.8+. Pyoxynet automatically handles data interpolation and supports second-by-second, breath-by-breath, and averaged CPET data formats.

terminal
pip install pyoxynet

Research

Scientific Publications

Peer-reviewed research, reviews, and articles behind the Oxynet project.

Research

AI-Driven Analysis of CPET to Identify Gas Exchange and Ventilatory Thresholds

Evaluates Oxynet for detecting lactate threshold and respiratory compensation points, showing performance comparable to expert evaluators with negligible differences in VO₂ at both thresholds.

Sports Medicine · 2026

Research

AI for CPET Interpretation

Deep learning approach for automatic interpretation of cardiopulmonary exercise test data using neural networks.

Biomedical Signal Processing and Control · 2023

Review

AI Technologies in Exercise Data Processing

Comprehensive review of machine learning and AI techniques applied to exercise physiology data analysis.

Sport Sciences for Health · 2019

Research

LSTM Networks for VO₂ Estimation

Application of long short-term memory recurrent neural networks for estimating oxygen uptake during exercise.

PLOS ONE · 2020

Research

LSTM for Intensity Domain Estimation

Using LSTM neural networks for automatic detection of exercise intensity domains in CPET data.

European Journal of Sport Science · 2019

Research

Crowdsourcing and CNN for Intensity Domain Determination

Combining crowdsourced expert labels with convolutional neural networks for CPET intensity domain classification.

European Journal of Sport Science · 2021

Research

Conditional GANs for Synthetic CPET Data

Generating realistic synthetic cardiopulmonary exercise test data using conditional generative adversarial networks.

Preprint

Research

Regression, Generation, and Explanation

Multi-task deep learning framework combining regression, data generation, and explainability for CPET analysis.

Sensors (MDPI) · 2023

LinkedIn

Oxynet: A Collective Intelligence Approach

Overview of the Oxynet project: how collective intelligence and AI are transforming CPET interpretation.

Blog

AI in CPET Data Interpretation

A deep dive into how AI can be used to automatically interpret cardiopulmonary exercise test data.

Medium

Automatic Interpretation of CPET with Deep Learning

Step-by-step guide to using the Pyoxynet Python package for automatic CPET inference with deep learning.

Medium

Generating Realistic CPET Data with Python

How to use the Pyoxynet CGAN model to generate synthetic but realistic cardiopulmonary exercise test datasets.

Get in Touch

Contact

Say what you need, and it reaches the right person.

Researchers and laboratories

Run a cohort

Bring a set of recordings through the engine and get structured measurements back, consistently across protocols and devices. Or bring labelled tests and have a model fine-tuned on them.

Run a cohort

Software, devices, developers

Integrate Oxynet

Call the engine from the software you already ship. Your product, your reporting, our physiology.

Integrate Oxynet

Strategic and commercial

Partner with Oxynet

Build on the computational layer: licensing, deployment options and joint validation work.

Partner with Oxynet

Bugs, feature requests and anything else: oxynetcpetinterpreter@gmail.com