Commit ed76cd5
Fix class_labels mutation across multi-metric write_metrics_reports (#8902)
### Description
`write_metrics_reports` rebinds and appends to its `class_labels`
parameter inside the `metric_details` loop. After the first metric's CSV
is written, `class_labels` is no longer `None`. It holds `["class0",
..., "classN", "mean"]`. On every subsequent metric the `else` branch
runs and appends another `"mean"`, producing headers like
`class0,class1,mean,mean,mean`.
This hits any evaluation with two or more metrics in `metric_details`,
for example Dice + IoU + Hausdorff. The only real caller `MetricsSaver`
always passes `class_labels=None`. The first metric's CSV is correct,
but every one after is structurally corrupt with mismatched header and
data columns.
The fix uses a local `labels` variable per iteration so the original
`class_labels` parameter is never modified. The existing test only
verified existence of subsequent metric files, not their headers. A
regression test is included.
### Types of changes
- [x] Non-breaking change (fix or new feature that would not break
existing functionality).
- [x] New tests added to cover the changes.
- [ ] Integration tests passed locally by running `./runtests.sh -f -u
--net --coverage`.
- [ ] Quick tests passed locally by running `./runtests.sh --quick
--unittests --disttests`.
- [ ] In-line docstrings updated.
---------
Signed-off-by: Soumya Snigdha Kundu <soumya_snigdha.kundu@kcl.ac.uk>
Co-authored-by: Eric Kerfoot <17726042+ericspod@users.noreply.github.com>1 parent 3ee058b commit ed76cd5
2 files changed
Lines changed: 27 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
122 | 122 | | |
123 | 123 | | |
124 | 124 | | |
125 | | - | |
| 125 | + | |
126 | 126 | | |
127 | | - | |
| 127 | + | |
128 | 128 | | |
129 | | - | |
| 129 | + | |
130 | 130 | | |
131 | 131 | | |
132 | 132 | | |
133 | | - | |
| 133 | + | |
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
| |||
164 | 164 | | |
165 | 165 | | |
166 | 166 | | |
167 | | - | |
| 167 | + | |
168 | 168 | | |
169 | 169 | | |
170 | 170 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
66 | 88 | | |
67 | 89 | | |
68 | 90 | | |
0 commit comments