Pyrregular: irregular time series datasets and benchmarks

Pyrregular: Irregular Time Series Datasets and Benchmarks

Published at ICLR 2026 · benchmark of 34 datasets and 12 classifiers · pip install pyrregular

Pyrregular is a Python framework for irregular time series: irregularly sampled data with uneven sampling, missing observations, signals recorded at different times, and variable-length sequences. It provides:

  • datasets: the 34 naturally irregular datasets of the ICLR 2026 benchmark, and more added over time, in one standardized format, downloaded on demand with load_dataset (list_datasets() shows them all);

  • a representation that keeps the irregularity: a sparse xarray format, with conversions to dense arrays for sktime, aeon, tslearn and PyPOTS;

  • models and benchmarks: ready-to-use classification and regression pipelines, including the 12 classifiers evaluated in the paper.

Irregular time series made easy.

📖 Documentation · ⚙️ Tutorials

CI/CD

build docs pypi publish models

Code

PyPI version PyPI - Python Version !black

Community

contributions welcome

Paper

ICLR 2026 arXiv

Installation

You can install via pip with:

pip install pyrregular

For the third-party models, install all of them:

pip install "pyrregular[models]"

or only the family you need: borf, sktime, tslearn, pypots, jax (e.g. pip install "pyrregular[sktime]"). The extra for each pipeline is listed in the table below.

Quick Guide

List datasets

If you want to see all the datasets available, you can use the list_datasets function:

from pyrregular import list_datasets

df = list_datasets()

Load a dataset

To load a dataset, you can use the load_dataset function. For example, to load the “Garment” dataset, you can do:

from pyrregular import load_dataset

df = load_dataset("Garment.h5")

The dataset is saved in the default os cache directory, which can be found with:

import pooch

print(pooch.os_cache("pyrregular"))

The repository is hosted at: https://huggingface.co/datasets/splandi/pyrregular/

The datasets are versioned: each pyrregular release downloads a fixed version of the files, tagged on Hugging Face (currently data-v1). To use the data of an older release, install that release (e.g. pip install "pyrregular==0.3.1").

Downstream tasks

Classification

To use the dataset for classification, you can just “densify” it:

from pyrregular import load_dataset

df = load_dataset("Garment.h5")
X, _ = df.irr.to_dense()
y, split = df.irr.get_task_target_and_split()

X_train, X_test = X[split != "test"], X[split == "test"]
y_train, y_test = y[split != "test"], y[split == "test"]

# We have ready-to-go models from various libraries:
from pyrregular.models.rocket import rocket_pipeline

model = rocket_pipeline
model.fit(X_train, y_train)
model.score(X_test, y_test)

There are several pipelines available in pyrregular.models:

💾 Library

📖 Source

🔗 Pipeline

ℹ️ Type

📦 Extra

fast-borf

Spinnato et al. (2024)

borf

dictionary-based transform + lgbm classifier

borf

fast-borf

Spinnato (2026)

iborf

time-aware dictionary-based transform + ridge classifier

borf

sktime

rifc

interval-based transform + lgbm classifier

sktime

diffrax

Kidger et al. (2020)

ncde

neural controlled differential equations

jax

pypots

Cao et al. (2018)

brits

bidirectional recurrent imputation network

pypots

pypots

Che et al. (2018)

grud

gated recurrent unit with decay

pypots

pypots

Zhang et al. (2021)

raindrop

graph neural network

pypots

pypots

Du et al. (2023)

saits

self-attention-based imputation transformer

pypots

pypots

Wu et al. (2022)

timesnet

temporal 2d-variation transformer

pypots

sktime

Ke et al. (2017)

lgbm

gradient boosted tree

sktime

sktime

Dempster et al. (2021)

rocket

kernel-based transform + lgbm classifier

sktime

sktime

Bagheri et al. (2016)

svm

support vector machine with distance kernel

sktime

tslearn

Sakoe & Chiba (1978)

knn

distance-based with dynamic time warping

tslearn

Notes

  • iborf is in pyrregular.models.borf (from pyrregular.models.borf import iborf_pipeline) and uses the timestamps: give it X, _ = df.irr.to_dense(concatenate_time=True, normalize_time=True).

  • raindrop also needs torch-scatter, built for your torch/CUDA version (see the PyG install instructions).

  • To reproduce the paper, list_paper_models() lists its 12 models and pyrregular.models.get_paper_model(name) returns a fresh copy of each pipeline. The paper’s BORF is the aeon implementation (pip install "pyrregular[aeon]").

  • These pipelines wrap fast-moving third-party libraries. They are tested weekly against the latest versions, but an upstream release can break one between pyrregular releases; to reproduce the paper results exactly, pin the library versions.

Regression

Regression is still work in progress, but is available for some datasets:

from pyrregular import load_dataset
from sklearn.pipeline import make_pipeline
from aeon.transformations.collection.dictionary_based import BORF
from sklearn.linear_model import LassoCV

df = load_dataset("Garment.h5")
X, _ = df.irr.to_dense()
y, split = df.irr.get_task_target_and_split("regression")

X_train, X_test = X[split != "test"], X[split == "test"]
y_train, y_test = y[split != "test"], y[split == "test"]

borf_pipeline = make_pipeline(
    BORF(),
    LassoCV(),
)
model = borf_pipeline
model.fit(X_train, y_train)
model.score(X_test, y_test)

Available Datasets

📈 Dataset

📖 Source

Alembics Bowls Flasks

Spinnato & Landi, 2025

AllGestureWiimoteX

Guna et al., 2014

AllGestureWiimoteY

Guna et al., 2014

AllGestureWiimoteZ

Guna et al., 2014

Animals

Ferrero et al., 2018

AsphaltObstaclesCoordinates

Souza, 2018

AsphaltPavementTypeCoordinates

Souza, 2018

AsphaltRegularityCoordinates

Souza, 2018

CharacterTrajectories

Williams et al., 2006

DodgerLoopDay

Ihler et al., 2006

DodgerLoopGame

Ihler et al., 2006

DodgerLoopWeekend

Ihler et al., 2006

Geolife

Zheng et al., 2009; Zheng et al., 2008; Zheng et al., 2010

GestureMidAirD1

Caputo et al., 2018

GestureMidAirD2

Caputo et al., 2018

GestureMidAirD3

Caputo et al., 2018

GesturePebbleZ1

Mezari & Maglogiannis, 2018

GesturePebbleZ2

Mezari & Maglogiannis, 2018

GPS Data of Seabirds

Browning et al., 2018

InsectWingbeat

Chen et al., 2014

JapaneseVowels

Kudo et al., 1999

Localization Data for Person Activity

Vidulin et al., 2010

MelbournePedestrian

City of Melbourne, 2019

MIMIC-III Clinical Database (Demo)

Johnson et al., 2016; Johnson et al., 2019; Goldberger et al., 2000

PAMAP2 Physical Activity Monitoring

Reiss & Stricker, 2012

PhysioNet 2012

Silva et al., 2012

PhysioNet 2019

Reyna et al., 2020

PickupGestureWiimoteZ

Guna et al., 2014

PLAID

Gao et al., 2014

Productivity Prediction of Garment Employees

Imran et al., 2021

ShakeGestureWiimoteZ

Guna et al., 2014

SpokenArabicDigits

Hammami & Bedda, 2010

Taxi

Moreira-Matias et al., 2013

Vehicles

Chorochronos Archive, 2019

Citation

If you use this package in your research, please cite the following paper:

@inproceedings{
    spinnato2026pyrregular,
    title={{PYRREGULAR}: A Unified Framework for Irregular Time Series, with Classification Benchmarks},
    author={Francesco Spinnato and Cristiano Landi},
    booktitle={The Fourteenth International Conference on Learning Representations},
    year={2026},
    url={https://openreview.net/forum?id=qetBM8nLkf}
}