Automatically generate Croissant JSON-LD metadata for ML datasets — e.g. for PhysioNet, NeurIPS Datasets & Benchmarks submissions, or any platform that benefits from standardized dataset metadata.
pip install croissant-bakeror with uv:
uv add croissant-bakercroissant-baker \
--input /path/to/dataset \
--creator "Your Name,you@example.com" \
--description "My ML dataset" \
--license "CC-BY-4.0" \
--output my-dataset-croissant.jsonldOr try with the bundled MIMIC-IV Demo test data:
git clone https://github.com/MIT-LCP/croissant-baker.git && cd croissant-baker
uv sync --group dev
croissant-baker \
--input tests/data/input/mimiciv_demo/physionet.org/files/mimic-iv-demo/ \
--creator "Alistair Johnson,aewj@mit.edu,https://physionet.org/" \
--creator "Tom Pollard,tpollard@mit.edu,https://physionet.org/" \
--name "MIMIC-IV Clinical Database Demo" \
--description "Demo subset of MIMIC-IV containing 100 de-identified patients from Beth Israel Deaconess Medical Center" \
--url "https://physionet.org/content/mimic-iv-demo/2.2/" \
--license "https://opendatacommons.org/licenses/odbl/1-0/" \
--rai-data-biases "Single-site cohort from a US academic medical centre" \
--rai-data-limitations "Demo subset limited to 100 patients" \
--output mimic-iv-demo-croissant.jsonld
croissant-baker validate mimic-iv-demo-croissant.jsonld| Format | Extensions | Notes |
|---|---|---|
| CSV / TSV | .csv, .tsv |
Streaming with automatic type inference |
| Parquet | .parquet |
Partitioned datasets supported |
| FHIR | .ndjson, .json (Bundle) |
NDJSON bulk export and JSON Bundle |
| JSON / JSONL | .json, .jsonl |
Arrays, single objects, and JSON Lines |
| WFDB | .hea + .dat / .atr |
PhysioNet waveform data |
| Images | .png, .jpg, .tiff, .btf, .bmp, .gif, .webp |
Dimensions and format; BigTIFF via tifffile; OME-XML header fields for OME-TIFF |
| DICOM | .dcm, .dicom |
Modality, geometry, study/series UIDs via pydicom (header only) |
| NIfTI | .nii |
Spatial dims, voxel spacing, TR for fMRI via nibabel (header only) |
| GEO SOFT | .soft |
NCBI GEO family exports: attribute names, sample characteristic keys, data table columns |
| HDF5 | .h5, .h5ad, .hdf5 |
Dataset paths, dtypes and shapes via h5py (structure only); AnnData and 10x table columns where the layout is recognised |
Any of these may arrive wrapped in .gz, .bz2 or .xz — compression is
resolved before the format is read, so cells.parquet.gz is described exactly
as cells.parquet is. WFDB is the exception: a record spans several files
located by path, so a compressed .hea is reported rather than described.
.zip, .tar and .tgz are reported as archives, not opened. Files nothing
describes are reported with a reason rather than skipped in silence.
- Automatic type inference for all supported formats
- RAI metadata via
--rai-*CLI flags or--rai-config rai.yaml - Validation against the Croissant spec via
mlcroissant - Dry-run mode, include/exclude glob filters, multiple creators
See the documentation for full CLI reference, examples, and RAI configuration.
See CONTRIBUTING.md for guidelines and DEVELOPMENT.md for setup, testing, releases, and how to add new file handlers.
If you use Croissant Baker in your research, please cite our arXiv preprint:
@misc{attrach2026croissantbakermetadatageneration,
title={Croissant Baker: Metadata Generation for Discoverable, Governable, and Reusable ML Datasets},
author={Rafi Al Attrach and Rajna Fani and Sebastian Lobentanzer and Joan Giner-Miguelez and Debanshu Das and Varuni H. K. and Nobin Sarwar and Rajat Ghosh and Anwai Archit and Surbhi Motghare and Christina Conrad Parry and Luis Oala and Lara Grosso and Joaquin Vanschoren and Steffen Vogler and Sujata Goswami and Eric S. Rosenthal and Marzyeh Ghassemi and Matthew McDermott and Tom Pollard},
year={2026},
eprint={2605.15079},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2605.15079},
}MIT License - see LICENSE file.
