Deep Drawing and Cutting Simulations (DDACS) Dataset - Python interface
Project description
Deep Drawing and Cutting Simulations (DDACS) Dataset
Simulation with the tool geometries showing sheet metal thinning, stress, and strain.
A large-scale dataset and benchmark for training AI models that replace computationally expensive FEA simulations in industrial sheet metal manufacturing. Each simulation models a two-stage stamping process (deep drawing in OP10 and trimming with elastic recovery in OP20) for a cup geometry parameterised by 8 input dimensions. Train ML surrogates that predict mesh deformation, stress, strain, and springback in seconds instead of the minutes-to-hours a CAE solver would take.
| Simulations | 32,466 |
| Total size | ~640 GB (HDF5, lossless) |
| Process steps per sim | 2 (OP10 deep drawing, OP20 trimming) |
| Input parameters | 8 (4 geometric + 4 process) |
| Train / val / test | 25,973 / 3,246 / 3,247 (predefined) |
| Mesh-node states | ~2.1 B across all sims, timesteps, components |
Documentation · Dataset DOI · Paper
A Croissant-native Python package for accessing the DDACS Dataset ships with this repo: one CLI for the download, one Python module for access, and an optional PyTorch IterableDataset for training.
Table of Contents
- What's new in v3
- Installation
- Download the dataset
- Basic usage
- PyTorch integration
- Tutorials
- Version compatibility
- Citation
- Development
What's new in v3
v3 is a major release because the dataset itself now ships with a Croissant 1.1 manifest (metadata.json). The manifest is the single source of truth for the dataset schema: every HDF5 field, every CSV column, the SIM-KAx simulation provenance, and a set of task-specific views are declared once and consumed by both the package and external Croissant tools.
The Python surface was rewritten around it:
ddacs.load(data_dir)parses the manifest and exposes published RecordSets (process-parameters,field-map,simulation-provenance, plus task views such asspringback-minimal,forming-snapshot,cutting-view).ddacs.open_h5(sim_id, data_dir)reads any simulation by id without needing the zip extracted.ddacs.add_view(ds, name, fields)appends a custom view to the in-memory dataset.DDACSDataset(view=...)streams records of any view (published or custom) with worker-shard / DDP-safe partitioning, manifest-driven filtering, and graceful skip on partial downloads.- The CLI default flipped to keep zips intact (
mlcroissantreads HDF5 members in place);--extractand--remove-zipopt in to the loose-HDF5 layout.
The v2 helpers (iter_ddacs, count_available_simulations, the data extraction utilities) are removed. See the tutorials for the migration path.
Installation
pip install ddacs
The PyTorch adapter is an optional extra. For hardware-specific PyTorch builds (CUDA, ROCm, MPS), install PyTorch first from pytorch.org, then install the extra:
pip install 'ddacs[torch]'
Download the dataset
# Small sample bundle (22 MB): manifest, CSV, and one simulation.
ddacs download --small -y
# Full release.
ddacs download
# Show available versions on DaRUS.
ddacs info
Files land in ./data by default. The same path is the default for ddacs.load(data_dir=...) and DDACSDataset(data_dir=...), so no further configuration is needed.
CLI flags
| Flag | Description |
|---|---|
VERSION |
Dataset version to download (default: 3.0). |
--small |
Download the small sample bundle instead of the full release. |
--files FILE... |
Download only the listed files. |
--out PATH |
Output directory (default: ./data). |
--extract |
Extract zip files in place after download. |
--remove-zip |
Delete the zip file after a successful extraction (requires --extract). |
-y, --yes |
Skip the confirmation prompt. |
--token TOKEN |
DaRUS API token (used to access draft versions). |
By default zip files are kept on disk and are not extracted; mlcroissant reads HDF5 members in place. Pass --extract --remove-zip to switch to a loose-HDF5 layout instead; see the Loose HDF5 recipe for the matching iteration pattern.
Basic usage
ddacs.load parses the Croissant manifest; ddacs.open_h5 opens a single simulation in memory and returns an h5py.File.
import ddacs
# Load the dataset manifest. Lists every published RecordSet.
ds = ddacs.load(data_dir="./data")
print([rs.id for rs in ds.metadata.record_sets])
# Open one simulation. OP10 carries the blank and the three tools.
with ddacs.open_h5(258864, data_dir="./data") as f:
blank_thickness = f["OP10/blank/element_shell_thickness"][-1]
print("final-timestep thickness:", blank_thickness.shape)
For custom RecordSets and slicing the field map, see Build your own view. For mesh / point-cloud / vector plotting, see Visualization.
PyTorch integration
DDACSDataset is a torch.utils.data.IterableDataset over a Croissant view. It builds a sim_id -> local zip index at construction time and silently skips simulations whose zip is missing, so partial downloads stream cleanly.
from ddacs.pytorch import DDACSDataset
from torch.utils.data import DataLoader
ds = DDACSDataset(view="springback-minimal", data_dir="./data")
loader = DataLoader(ds, batch_size=16, num_workers=0)
for batch in loader:
forming = batch["op10_blank_node_displacement_forming"]
springback = batch["op10_blank_node_displacement_springback"]
# ... training step ...
break
For filtering, train / val / test splits, shuffling, and the partial-download story, see PyTorch training.
Tutorials
Five tutorials walk through the package end to end. Each one is published on Read the Docs as a tutorial page and shipped as an executable notebook under notebooks/ that reproduces every cell:
- Getting started -
01_getting_started.ipynb: install, download, first plot. - Build your own view -
02_views.ipynb:ddacs.add_view, manifest inspection, SIM-KAx provenance. - PyTorch training -
03_pytorch.ipynb:DDACSDataset, filters, train/val/test splits. - Visualization -
04_visualization.ipynb: thickness, components, springback, vectors. - Loose HDF5 recipe -
05_loose_h5.ipynb: pandas +h5pyafter--extract --remove-zip.
See notebooks/README.md for prerequisites and run instructions.
Version compatibility
The ddacs package major version tracks the DaRUS dataset major version. The pairing is enforced by the Croissant manifest bundled with each release: a mismatched package version will fail to resolve the field map.
| Package | DaRUS dataset |
|---|---|
ddacs 3.x |
v3.0 and any future v3.x updates (current) |
ddacs 2.x |
v1.0 and v2.0 |
Pin the package major to the dataset major you target, for example pip install 'ddacs~=3.0' to stay on the v3 line.
Citation
If you use this dataset or code in your research, please cite both the dataset and the paper:
@dataset{baum2025ddacs,
title={Deep Drawing and Cutting Simulations Dataset},
subtitle={FEM Simulations of a deep drawn and cut dual phase steel part},
author={Baum, Sebastian and Heinzelmann, Pascal},
year={2025},
version={3.0},
publisher={DaRUS},
doi={10.18419/DARUS-4801},
license={CC BY 4.0},
url={https://doi.org/10.18419/DARUS-4801}
}
@article{heinzelmann2025benchmark,
title={A Comprehensive Benchmark Dataset for Sheet Metal Forming: Advancing Machine Learning and Surrogate Modelling in Process Simulations},
author={Heinzelmann, Pascal and Baum, Sebastian and Riedmueller, Kim Rouven and Liewald, Mathias and Weyrich, Michael},
journal={MATEC Web of Conferences},
volume={408},
year={2025},
pages={01090},
doi={10.1051/matecconf/202540801090},
url={https://www.matec-conferences.org/articles/matecconf/abs/2025/02/matecconf_iddrg2025_01090/matecconf_iddrg2025_01090.html}
}
Development
git clone https://github.com/BaumSebastian/DDACS.git
cd DDACS
pip install -e ".[dev]"
pre-commit install # set up code formatting hooks
pytest # run the full test suite
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 ddacs-3.2.0.tar.gz.
File metadata
- Download URL: ddacs-3.2.0.tar.gz
- Upload date:
- Size: 50.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52b66fadee69e926c3d55b93d44fb50e057739ee56f7fbef2678055e4f4cc8c2
|
|
| MD5 |
a0448ab151bccc9f5fdda7329c4185d2
|
|
| BLAKE2b-256 |
49df0ff6d60eb754853578b1e1e8202d8a6c388b27a8d53af5566382f746938b
|
Provenance
The following attestation bundles were made for ddacs-3.2.0.tar.gz:
Publisher:
publish.yml on BaumSebastian/DDACS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ddacs-3.2.0.tar.gz -
Subject digest:
52b66fadee69e926c3d55b93d44fb50e057739ee56f7fbef2678055e4f4cc8c2 - Sigstore transparency entry: 2084256263
- Sigstore integration time:
-
Permalink:
BaumSebastian/DDACS@03e2e3542ec85f6ae61cf5b218cf7691c0c006f9 -
Branch / Tag:
refs/tags/3.2.0 - Owner: https://github.com/BaumSebastian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03e2e3542ec85f6ae61cf5b218cf7691c0c006f9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ddacs-3.2.0-py3-none-any.whl.
File metadata
- Download URL: ddacs-3.2.0-py3-none-any.whl
- Upload date:
- Size: 40.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ad41a1b4b2038275df1662e85841147219fd1de853128ea91c9822c923813ad
|
|
| MD5 |
be608aaf64266cc6acd13a1bae0f90c5
|
|
| BLAKE2b-256 |
cea3828d7dbc190db69bd26ed359c1dbe41b683d4bc1ee1c14195ac98ac8f0da
|
Provenance
The following attestation bundles were made for ddacs-3.2.0-py3-none-any.whl:
Publisher:
publish.yml on BaumSebastian/DDACS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ddacs-3.2.0-py3-none-any.whl -
Subject digest:
2ad41a1b4b2038275df1662e85841147219fd1de853128ea91c9822c923813ad - Sigstore transparency entry: 2084256266
- Sigstore integration time:
-
Permalink:
BaumSebastian/DDACS@03e2e3542ec85f6ae61cf5b218cf7691c0c006f9 -
Branch / Tag:
refs/tags/3.2.0 - Owner: https://github.com/BaumSebastian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03e2e3542ec85f6ae61cf5b218cf7691c0c006f9 -
Trigger Event:
push
-
Statement type: