mechanicsdsl-datasets
Reference datasets for physics parameter estimation and inverse problem benchmarking.
Install
pip install mechanicsdsl-datasets
Or clone for direct access to raw CSV/HDF5 files:
git clone https://github.com/MechanicsDSL/mechanicsdsl-datasets
Available Datasets
| Dataset | System | Observations | Rate | Noise σ | Ground Truth |
|---|---|---|---|---|---|
pendulum_synthetic |
Simple pendulum | 1,001 | 100 Hz | 0.010 rad | m=1.0, l=0.5, g=9.81 |
double_pendulum_synthetic |
Double pendulum (near-periodic) | 501 | 100 Hz | 0.005 rad | m=1.0, l=1.0, g=9.81 |
coupled_oscillators_synthetic |
Coupled pendulums (3 beat periods) | 2,001 | 100 Hz | 0.005 rad | m=1.0, l=1.0, k=0.5 |
All datasets include clean trajectories, Gaussian-noisy observations, HDF5 with embedded metadata, and paired estimation/validation scripts.
Quick Start (pip install)
import mechanicsdsl_datasets as mds
# Load a dataset
dataset = mds.load("pendulum_synthetic")
print(dataset.ground_truth) # {'m': 1.0, 'l': 0.5, 'g': 9.81}
print(dataset.t.shape) # (1001,)
print(dataset.theta_noisy[:5]) # noisy observations
# Run built-in validation
dataset.validate() # confirms forward simulation matches clean data
Quick Start (raw files)
import pandas as pd
import json
data = pd.read_csv("datasets/pendulum_synthetic/data.csv")
meta = json.load(open("datasets/pendulum_synthetic/metadata.json"))
t = data["t_s"].values
theta_obs = data["theta_rad_noisy"].values
truth = meta["ground_truth"] # {'m': 1.0, 'l': 0.5, 'g': 9.81}
Repository Structure
mechanicsdsl-datasets/
├── datasets/
│ ├── pendulum_synthetic/
│ │ ├── README.md, data.csv, data.hdf5, metadata.json
│ │ └── examples/ estimate_scipy.py, validate_forward.py
│ ├── double_pendulum_synthetic/
│ │ ├── README.md, data.csv, data.hdf5, metadata.json
│ │ └── examples/ estimate_scipy.py, validate_forward.py
│ └── coupled_oscillators_synthetic/
│ ├── README.md, data.csv, data.hdf5, metadata.json
│ └── examples/ estimate_normal_modes.py, validate_forward.py
├── docs/
│ ├── schema.md # metadata.json schema reference
│ └── estimation_guide.md # least-squares, MCMC, FFT methods
├── scripts/
│ ├── generate_all.py # regenerate all synthetic datasets
│ └── validate_all.py # run all validate_forward.py scripts
└── tests/
└── test_datasets.py # schema, row count, NaN, noise std checks
Estimation Examples
Each dataset ships with working estimation scripts:
# Estimate pendulum length from noisy observations
cd datasets/pendulum_synthetic
python examples/estimate_scipy.py
# Estimated: l = 0.4998 m (ground truth: 0.5000 m)
# Identify normal mode frequencies via FFT
cd datasets/coupled_oscillators_synthetic
python examples/estimate_normal_modes.py
# omega1 = 3.1321 rad/s, omega2 = 3.2636 rad/s, k = 0.500 N/m
Testing
pip install pytest h5py numpy scipy pandas
pytest tests/ -v
Contributing
See CONTRIBUTING.md. Experimental datasets with real sensor data especially welcome.
Citation
@dataset{mechanicsdsl_datasets2026,
author = {Parsons, Noah},
title = {{MechanicsDSL Physics Datasets}},
year = {2026},
doi = {10.5281/zenodo.17771040},
url = {https://github.com/MechanicsDSL/mechanicsdsl-datasets}
}
License
MIT License — see LICENSE.
Metadata
Release files for mechanicsdsl-datasets 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mechanicsdsl_datasets-0.1.0.tar.gz | 248.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mechanicsdsl_datasets-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 255.9 kB
Release files / mechanicsdsl_datasets-0.1.0.tar.gz
| Download URL | mechanicsdsl_datasets-0.1.0.tar.gz |
|---|---|
| Size | 248.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0c6a7335699a02d4ae5592cbdad2c9b24696b1af0abf5580ee14f4051bfbd19a
|
|
BLAKE2b-256 checksum How to use checksums |
1080f5fac17aeeefe6f53a6f6dfada602eccff31623cf68c66ed53ae14b9c77f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 14, 2026.
Transparency logRelease files / mechanicsdsl_datasets-0.1.0-py3-none-any.whl
| Download URL | mechanicsdsl_datasets-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e9b6a5a33e26f1aa90c3019a0350bc33e7cc9145c1199ba581f5ae14a3267dd3
|
|
BLAKE2b-256 checksum How to use checksums |
a125de937c4e46388e066d4e3c36ab000539776c2565189562c78cf8b93c0518
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 14, 2026.
Transparency log