Process Parameters¶
Each row in process_parameters.csv describes one experiment. The index column is the same number as the HDF5 filename inside the zips (zero-padded to four digits, so index=42 -> 0042.h5), which makes the CSV the single point of entry for filtering before any HDF5 is opened.
Columns¶
| Column | Description |
|---|---|
index |
Unique experiment identifier; matches the HDF5 filename (e.g. index=42 -> 0042.h5). |
experiment_id |
Repetition index (1..500) within one geometry×blankholder_force×oil_type category. |
category |
Categorical index 0..17 encoding the geometry×blankholder_force×oil_type combination. |
geometry |
Base part geometry. One of 'concave', 'convex'. |
blankholder_force |
Blank holder force applied during deep drawing, in kN. One of 100, 300, 500. |
mean_punch_temp |
Mean punch temperature recorded during the experiment, in degC. |
oil_type |
Lubrication pattern applied to the blank. One of 'coarse', 'medium', 'fine'. |
has_pointcloud |
True if OP10/OP20 3D point-cloud scans are available for this experiment. |
has_oil |
True if the blank was lubricated (oil applied) for this experiment. |
split |
Recommended ML data split: 'train' (~80%), 'val' (~10%), 'test' (~10%); deterministic, seed=42. |
Categories¶
The category column (0-17) encodes the geometry x blankholder force x oil type combination. Each category holds 500 repetitions in one contiguous 500-block of experiment ids; experiment_id is the repetition index (1-500) inside the category.
category |
Geometry | Blankholder force [kN] | Oil type | Experiment ids |
|---|---|---|---|---|
| 0 | concave | 100 | coarse | 0000-0499 |
| 1 | concave | 100 | medium | 1000-1499 |
| 2 | concave | 100 | fine | 0500-0999 |
| 3 | concave | 300 | coarse | 1500-1999 |
| 4 | concave | 300 | medium | 2500-2999 |
| 5 | concave | 300 | fine | 2000-2499 |
| 6 | concave | 500 | coarse | 3000-3499 |
| 7 | concave | 500 | medium | 4000-4499 |
| 8 | concave | 500 | fine | 3500-3999 |
| 9 | convex | 100 | coarse | 4500-4999 |
| 10 | convex | 100 | medium | 5500-5999 |
| 11 | convex | 100 | fine | 5000-5499 |
| 12 | convex | 300 | coarse | 6000-6499 |
| 13 | convex | 300 | medium | 7000-7499 |
| 14 | convex | 300 | fine | 6500-6999 |
| 15 | convex | 500 | coarse | 7500-7999 |
| 16 | convex | 500 | medium | 8500-8999 |
| 17 | convex | 500 | fine | 8000-8499 |
The two geometry values split the id range in half: concave covers 0000-4499 and convex covers 4500-8999.

Oil film measurements aggregated over all parts of one category — repetitions of the same nominal parameters, overlaid.
Split¶
The split column carries the recommended train / val / test partition: 80 / 10 / 10 (7,200 / 900 / 900 experiments), drawn deterministically with seed 42 so that every category is represented proportionally in each split.
Missing-measurement flags¶
has_pointcloud and has_oil flag whether the pointcloud/ and oil_thickness/ HDF5 groups exist for the experiment (10 and 123 experiments are missing them, respectively — see Dataset overview). Views that read those groups must filter on the flags, otherwise the read raises a KeyError for the affected experiments.
Sample¶
index,experiment_id,category,geometry,blankholder_force,mean_punch_temp,oil_type,has_pointcloud,has_oil,split
0,1,0,concave,100,20.2,coarse,True,True,val
1,2,0,concave,100,20.3,coarse,True,True,train
2,3,0,concave,100,20.4,coarse,True,True,val
Filtering recipe¶
import pandas as pd
df = pd.read_csv("./data/process_parameters.csv")
concave = df[df["geometry"] == "concave"]
high_force = df[df["blankholder_force"] == 500]
with_oil = df[df["has_oil"]]
one_category = df[df["category"] == 2]
The same predicate is accepted by RDDACDataset(where=...) and rddac.streaming.iter_view(where=...), which keeps IO scaled to the surviving rows rather than the full 9,000: