Skip to main content

Deep Drawing and Cutting Simulations (DDACS) Dataset - Python interface

Project description

Deep Drawing and Cutting Simulations (DDACS) Dataset

License: MIT Python 3.10+ Documentation DaRUS Repository DOI Paper

Simulation overview

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

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 as springback-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 (mlcroissant reads HDF5 members in place); --extract and --remove-zip opt 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:

  1. Getting started - 01_getting_started.ipynb: install, download, first plot.
  2. Build your own view - 02_views.ipynb: ddacs.add_view, manifest inspection, SIM-KAx provenance.
  3. PyTorch training - 03_pytorch.ipynb: DDACSDataset, filters, train/val/test splits.
  4. Visualization - 04_visualization.ipynb: thickness, components, springback, vectors.
  5. Loose HDF5 recipe - 05_loose_h5.ipynb: pandas + h5py after --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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ddacs-3.1.3.tar.gz (54.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ddacs-3.1.3-py3-none-any.whl (44.8 kB view details)

Uploaded Python 3

File details

Details for the file ddacs-3.1.3.tar.gz.

File metadata

  • Download URL: ddacs-3.1.3.tar.gz
  • Upload date:
  • Size: 54.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for ddacs-3.1.3.tar.gz
Algorithm Hash digest
SHA256 8ee2546b2df6b8bd5bd5f804eed7fd8b6dc28677e5f4c504bee2f079cc72b7ce
MD5 fc638a5fce80267d5ab3ac38f04b3a31
BLAKE2b-256 ac825f412bf543064848b8d1a467f4138c5030101f5204e031f1f5b49208786b

See more details on using hashes here.

File details

Details for the file ddacs-3.1.3-py3-none-any.whl.

File metadata

  • Download URL: ddacs-3.1.3-py3-none-any.whl
  • Upload date:
  • Size: 44.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for ddacs-3.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b7f5971599fd8e5abe3e376b93c48ef9dd67ce246681f31105cf0c0fd745662e
MD5 122bd148de26bfded130a12469b72d6c
BLAKE2b-256 eaf8024f15a0a8444389e00a747137f671b26857425bc1a722e86ef271a5efa2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page