Ground truth & grading

benchmark version 1.1.0 · held_out results v1.0.0 · splits v1.0/held_out, v1.1/multi_grid
updated 2026-09-29 13:18 UTC · git 7243f310ddbc

Where the ground truth comes from. Every window's label derives from the PowerFactory EMT simulation script that injected the event — the fault type, location, phases or switching action are simulation inputs, not annotations. Labels are therefore exact by construction: there is no annotation noise and no external label source to verify. What CAN go wrong — and what the six gates exist to catch — is leakage between partitions, contamination of the held-out sets, published tables drifting from artifacts, and class-imbalance artefacts.

The three dataset families

adapt_grid — the in-distribution familySimulated at each grid's nominal operating point. Split 70/15/15 into train / val / test at the episode level: every window of one simulated event stays in one partition, so a model can never see a different slice of an evaluation episode during training.
benchmark — the never-trained familyA second simulation campaign at a shifted operating point. It is scored for every cell but never fitted or model-selected on — every run record carries a no-tuning attestation. Generalisation here is the benchmark's headline claim.
multi_grid — the pre-training corpusMany synthetic 20 kV topologies in a portable 12-channel line view; the source domain for the transfer protocols (pretrain → zero-shot / fine-tune on unseen grids).

How results are graded

the metric set is a frozen contract (src/evemtbench/evaluation/metrics.py); changing it is a major version bump — results across versions are never comparable

Balanced accuracy / macro-F1Classification headline: every class weighs equally, so the majority class cannot buy a good score — and the majority baseline must land exactly on the analytic 1/k floor, which the floor gate checks over the whole matrix.
Missed-fault & false-alarm rateProtection-specific asymmetry for binary tasks: a missed fault (FN) and a needless trip (FP) have very different real-world costs, so both are always reported next to the headline.
MAE / RMSE / R²Fault-localisation regression, in the grid's own distance units; the majority analogue (train-mean predictor) is the floor.

The grids

4 reference grids spanning 20–345 kV plus the pre-training corpus; class balances read from the committed split metadata (src/evemtbench/splits/v1.0)

cigre_mv · MV · 20 kV · 50 Hz

reference grid (held_out + transfer) · cells: 433 done / 0 pending

topology
test-split class balance
flt_1phg_hif71
flt_1phg_hif_w_arc69
flt_1phg_incipient72
flt_1phg_incipient_w_arc79
flt_1phg_shc72
flt_1phg_shc_w_arc69
flt_2ph_shc73
flt_2phg_shc68
flt_3ph_shc77
switch_cable_off63
switch_cable_on74
switch_cap_off64
switch_cap_on70
switch_ibr_trip74
switch_inrush_hv70
switch_inrush_lv69
switch_load_off67
switch_load_on69
switch_motor_start68
switch_ohl_off77
switch_ohl_on71

template_20kv · MV · 20 kV · 50 Hz

pre-training corpus · cells: 48 done / 0 pending

topology diagram pending aux extraction

double_line · HV · 110 kV · 50 Hz

reference grid (held_out + transfer) · cells: 433 done / 0 pending

topology
test-split class balance
flt_1phg_incipient97
flt_1phg_incipient_w_arc99
flt_1phg_shc99
flt_1phg_shc_w_arc103
flt_2ph_shc105
flt_2phg_shc101
flt_3ph_shc97
switch_cap_off103
switch_cap_on104
switch_inrush_hv99
switch_inrush_lv95
switch_load_off103
switch_load_on92
switch_ohl_off100
switch_ohl_on103

template_110kv · HV · 110 kV · 50 Hz

pre-training corpus · cells: 48 done / 0 pending

topology diagram pending aux extraction

testgrid_110kv · HV · 110 kV · 50 Hz

reference grid (held_out + transfer) · cells: 433 done / 0 pending

topology
test-split class balance
flt_1phg_incipient84
flt_1phg_incipient_w_arc94
flt_1phg_shc88
flt_1phg_shc_w_arc94
flt_2ph_shc92
flt_2phg_shc90
flt_3ph_shc97
switch_cap_off94
switch_cap_on91
switch_ibr_trip90
switch_inrush_hv90
switch_inrush_lv93
switch_load_off96
switch_load_on91
switch_ohl_off89
switch_ohl_on91

ieee39 · EHV · 345 kV · 60 Hz

reference grid (held_out + transfer) · cells: 433 done / 0 pending

topology
test-split class balance
flt_1phg_incipient97
flt_1phg_incipient_w_arc101
flt_1phg_shc105
flt_1phg_shc_w_arc106
flt_2ph_shc100
flt_2phg_shc103
flt_3ph_shc109
switch_cap_off95
switch_cap_on98
switch_gen_trip100
switch_inrush_lv95
switch_load_off96
switch_load_on102
switch_ohl_off97
switch_ohl_on99

template_345kv · EHV · 345 kV · 50 Hz

pre-training corpus · cells: 48 done / 0 pending

topology diagram pending aux extraction