Reference physics datasets for MechanicsDSL parameter estimation and inverse problem benchmarking
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mechanicsdsl_datasets-0.1.0.tar.gz.
File metadata
- Download URL: mechanicsdsl_datasets-0.1.0.tar.gz
- Upload date:
- Size: 248.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c6a7335699a02d4ae5592cbdad2c9b24696b1af0abf5580ee14f4051bfbd19a
|
|
| MD5 |
5ed2b4b3f312756cd3b5cd0d5e72d878
|
|
| BLAKE2b-256 |
1080f5fac17aeeefe6f53a6f6dfada602eccff31623cf68c66ed53ae14b9c77f
|
Provenance
The following attestation bundles were made for mechanicsdsl_datasets-0.1.0.tar.gz:
Publisher:
publish-pypi.yml on MechanicsDSL/mechanicsdsl-datasets
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mechanicsdsl_datasets-0.1.0.tar.gz -
Subject digest:
0c6a7335699a02d4ae5592cbdad2c9b24696b1af0abf5580ee14f4051bfbd19a - Sigstore transparency entry: 1099604940
- Sigstore integration time:
-
Permalink:
MechanicsDSL/mechanicsdsl-datasets@c2721f46a3bb6557aa1bba7a6f35c6799c61f43b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/MechanicsDSL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@c2721f46a3bb6557aa1bba7a6f35c6799c61f43b -
Trigger Event:
push
-
Statement type:
File details
Details for the file mechanicsdsl_datasets-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mechanicsdsl_datasets-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9b6a5a33e26f1aa90c3019a0350bc33e7cc9145c1199ba581f5ae14a3267dd3
|
|
| MD5 |
c25aa11d2d86aff158c9a8666297182b
|
|
| BLAKE2b-256 |
a125de937c4e46388e066d4e3c36ab000539776c2565189562c78cf8b93c0518
|
Provenance
The following attestation bundles were made for mechanicsdsl_datasets-0.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on MechanicsDSL/mechanicsdsl-datasets
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mechanicsdsl_datasets-0.1.0-py3-none-any.whl -
Subject digest:
e9b6a5a33e26f1aa90c3019a0350bc33e7cc9145c1199ba581f5ae14a3267dd3 - Sigstore transparency entry: 1099605051
- Sigstore integration time:
-
Permalink:
MechanicsDSL/mechanicsdsl-datasets@c2721f46a3bb6557aa1bba7a6f35c6799c61f43b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/MechanicsDSL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@c2721f46a3bb6557aa1bba7a6f35c6799c61f43b -
Trigger Event:
push
-
Statement type: