Skip to content

Commit b356b59

Browse files
Merge pull request #23 from bic-mac-challenge/dev/update_evaluation_metrics
Remove TAC Bias metric
2 parents 060fa41 + d1de482 commit b356b59

7 files changed

Lines changed: 12 additions & 105 deletions

File tree

README.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88

99
---
1010
## Updates
11-
- July 6, 2026: BUG FIX: DRY-RUN and FINAL submission instructions listed a wrong email. All DRY-RUN and FINAL submissions should be sent to bic-mac-challenge@outlook.com.
12-
- May 15, 2026: NIfTI validation and leaderboards now live - see submission instructions at [https://www.codabench.org/competitions/12555](https://www.codabench.org/competitions/12555)
13-
- April 8, 2026 (13:00 GMT+2): [BUG FIX] A bug in the Carney HU-to-MU conversion formula has been fixed. Please make sure to run `docker pull ghcr.io/bic-mac-challenge/recon:latest` and `git pull` for updated recon and evaluation logic. The 8 ground truth PET train images have been updated on huggingface.
14-
- April 7, 2026: [NEW DATA POLICY] The use of public datasets for pretraining and other use-cases is now allowed under certain conditions. Please see [docs/rules.md](docs/rules.md) for details.
11+
- **July 8, 2026: [CHANGE]**: The fifth metric, TAC-Bias, has been removed from the final evaluation. Final submissions are scored on the four metrics defined in [Evaluation](#evaluation-srcevaluation). Please see PR #23 for details.
12+
- **July 6, 2026: [BUG FIX]**: DRY-RUN and FINAL submission instructions listed a wrong email. All DRY-RUN and FINAL submissions should be sent to bic-mac-challenge@outlook.com.
13+
- **May 15, 2026: [ANNOUNCEMENT]**: NIfTI validation and leaderboards now live - see submission instructions at [https://www.codabench.org/competitions/12555](https://www.codabench.org/competitions/12555)
14+
- **April 8, 2026 (13:00 GMT+2)**: [BUG FIX] A bug in the Carney HU-to-MU conversion formula has been fixed. Please make sure to run `docker pull ghcr.io/bic-mac-challenge/recon:latest` and `git pull` for updated recon and evaluation logic. The 8 ground truth PET train images have been updated on huggingface.
15+
- **April 7, 2026: [NEW DATA POLICY]**: The use of public datasets for pretraining and other use-cases is now allowed under certain conditions. Please see [docs/rules.md](docs/rules.md) for details.
1516
## Table of Contents
1617

1718
- [Overview](#overview)
@@ -185,15 +186,17 @@ The reconstructed PET is written to `/data/output/pet.nii.gz`.
185186

186187
## 📊 Evaluation (`src/evaluation/`)
187188

188-
Five metrics compare predicted PET and CT outputs against the ground truth:
189+
> [!IMPORTANT]
190+
> The fifth metric `TAC Bias` has been removed from the final evaluation, please see announcement and PR #23.
191+
192+
Four metrics compare predicted PET and CT outputs against the ground truth:
189193

190194
| Metric | Modality | Description | Region |
191195
|--------|------|-------------|--------|
192196
| Whole-body SUV MAE | `PET` | Mean absolute error in standardised uptake value (SUV = activity × weight / total dose) | Body mask, excluding ±4 cm around liver |
193197
| Brain Outlier Score | `PET` | AUC of fraction of brain voxels within relative error thresholds (5%, 10%, 15%) [Ladefoged 2017 (fig. 8)](https://www.sciencedirect.com/science/article/pii/S1053811916307170)| Brain |
194198
| Organ Bias | `PET` | Mean absolute relative error of mean SUV in 8 organs: brain, liver, spleen, heart, pancreas, muscle, adipose, extremities | TotalSegmentator organ labels |
195199
| CT MU MAE | `CT` | Mean absolute error of attenuation coefficients (μ at 511 keV) between predicted and ground-truth CT after HU→μ conversion | Body mask, excluding ±4 cm axial slices at top of liver|
196-
| TAC Bias | `Dynamic PET` | Absolute relative error of the integral of time-activity-curves (TACs) for the aorta and selected brain regions. NOTE: Metric is computed only for the final test set due to the size of the dynamic sinograms. | Brain regions and aorta|
197200

198201
**Evaluate a single subject:**
199202

docs/rules.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Participating teams may publish their own results independently, subject to a **
5555

5656
Performance is ranked using a rank-based aggregation across five evaluation metrics. Each metric is averaged across all test cases, submissions are ranked per metric (1 = best), and the final score is the mean of the five metric ranks. The lowest final score wins.
5757

58-
Please see [src/evaluation/README.md](src/evaluation/README.md) for definitions of each metric. Note that fifth metric, TAC-bias, cannot be computed locally. It is used only for the final evaluation.
58+
Please see [src/evaluation/README.md](src/evaluation/README.md) for definitions of each metric.
5959

6060
In the event of a tied aggregated rank, teams share the corresponding placement following Olympic-style conventions (e.g., two first places, no second place, then third place). Prize money is split equally between tied teams.
6161

docs/tips-and-faq.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ Check `output_dir/intermediates/recon.log` for the full STIR log. Rerun with `VE
121121

122122
**Which metrics are reported on the validation leaderboard?**
123123

124-
Four metrics in total: Whole-body SUV MAE, Brain Outlier Score, Organ Bias, and CT μ-MAE. See the evaluation section of the main README for descriptions. The Brain Outlier Score is a dataset-level metric — it cannot be computed for a single subject. The fifth and final metric "TAC Bias" is only computed for the final test set. The metric calculation requires reconstruction using dynamic sinograms, which are unfortunately too large to share.
124+
Four metrics in total: Whole-body SUV MAE, Brain Outlier Score, Organ Bias, and CT μ-MAE. See the evaluation section of the main README for descriptions. The Brain Outlier Score is a dataset-level metric — it cannot be computed for a single subject.
125125

126126
**Can I evaluate without running reconstruction?**
127127

src/evaluation/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
- Whole-body SUV MAE
99
- Brain outlier robustness score
1010
- Organ bias
11-
- TAC bias
1211
"""
1312

1413
from .eval_dataset import evaluate_dataset
@@ -17,6 +16,5 @@
1716
compute_whole_body_suv_mae,
1817
compute_brain_outlier_score,
1918
compute_organ_bias,
20-
compute_tac_bias,
2119
compute_whole_body_mu_mae,
2220
)

src/evaluation/metrics/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@
77
from .pet_whole_body_mae import compute_whole_body_suv_mae
88
from .pet_brain_outlier import compute_brain_outlier_score
99
from .pet_organ_bias import compute_organ_bias
10-
from .pet_tac_bias import compute_tac_bias
1110
from .ct_whole_body_mae import compute_whole_body_mu_mae

src/evaluation/metrics/common.py

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -41,31 +41,4 @@ def compute_auc_of_K(k_values):
4141
4242
Analytically, AUC = mean(k_values), since ∫₀¹ I(k > x) dx = k for k ∈ [0, 1].
4343
"""
44-
return np.mean(k_values)
45-
46-
47-
# =========================================================
48-
# TAC Utilities
49-
# =========================================================
50-
51-
def integrate_tac(tac, frame_durations):
52-
"""
53-
Compute time-integrated activity (AUC).
54-
"""
55-
return np.sum(tac * frame_durations)
56-
57-
58-
def compute_region_auc(pet_4d, mask, frame_durations):
59-
"""
60-
Compute integrated TAC (AUC) for one region.
61-
"""
62-
63-
T = pet_4d.shape[-1]
64-
tac = []
65-
66-
for t in range(T):
67-
tac.append(np.mean(pet_4d[..., t][mask]))
68-
69-
tac = np.array(tac)
70-
71-
return integrate_tac(tac, frame_durations)
44+
return np.mean(k_values)

src/evaluation/metrics/pet_tac_bias.py

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)