From 74ce60da23c63037c0ea687f25e5a00e35dc2aae Mon Sep 17 00:00:00 2001 From: Tristan Kirscher <85068746+Kirscher@users.noreply.github.com> Date: Sun, 30 Nov 2025 16:37:30 +0000 Subject: [PATCH 1/7] Fix: make y optional in ignore_background Signed-off-by: Tristan Kirscher <85068746+Kirscher@users.noreply.github.com> --- monai/metrics/active_learning_metrics.py | 4 +--- monai/metrics/utils.py | 7 +++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/monai/metrics/active_learning_metrics.py b/monai/metrics/active_learning_metrics.py index 7a1654191e..e252999441 100644 --- a/monai/metrics/active_learning_metrics.py +++ b/monai/metrics/active_learning_metrics.py @@ -129,9 +129,7 @@ def compute_variance( y_pred = y_pred.float() if not include_background: - y = y_pred - # TODO If this utils is made to be optional for 'y' it would be nice - y_pred, y = ignore_background(y_pred=y_pred, y=y) + y_pred, _ = ignore_background(y_pred=y_pred, y=None) # Set any values below 0 to threshold y_pred[y_pred <= 0] = threshold diff --git a/monai/metrics/utils.py b/monai/metrics/utils.py index 972ec0061e..5eea9f409b 100644 --- a/monai/metrics/utils.py +++ b/monai/metrics/utils.py @@ -51,7 +51,9 @@ ] -def ignore_background(y_pred: NdarrayTensor, y: NdarrayTensor) -> tuple[NdarrayTensor, NdarrayTensor]: +def ignore_background( + y_pred: NdarrayTensor, y: NdarrayTensor | None = None +) -> tuple[NdarrayTensor, NdarrayTensor | None]: """ This function is used to remove background (the first channel) for `y_pred` and `y`. @@ -63,7 +65,8 @@ def ignore_background(y_pred: NdarrayTensor, y: NdarrayTensor) -> tuple[NdarrayT """ - y = y[:, 1:] if y.shape[1] > 1 else y # type: ignore[assignment] + if y is not None: + y = y[:, 1:] if y.shape[1] > 1 else y # type: ignore[assignment] y_pred = y_pred[:, 1:] if y_pred.shape[1] > 1 else y_pred # type: ignore[assignment] return y_pred, y From 5c3f44891ac0063031a9298dbf81bf30413a4da2 Mon Sep 17 00:00:00 2001 From: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> Date: Sun, 1 Mar 2026 11:52:58 +0000 Subject: [PATCH 2/7] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> --- monai/metrics/active_learning_metrics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/metrics/active_learning_metrics.py b/monai/metrics/active_learning_metrics.py index e252999441..5c51d262ed 100644 --- a/monai/metrics/active_learning_metrics.py +++ b/monai/metrics/active_learning_metrics.py @@ -129,7 +129,7 @@ def compute_variance( y_pred = y_pred.float() if not include_background: - y_pred, _ = ignore_background(y_pred=y_pred, y=None) + y_pred, _ = ignore_background(y_pred=y_pred) # Set any values below 0 to threshold y_pred[y_pred <= 0] = threshold From a511a4597896a02a8e0c126e13fca47baa74017f Mon Sep 17 00:00:00 2001 From: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> Date: Wed, 20 May 2026 12:15:30 +0100 Subject: [PATCH 3/7] Apply suggestions from code review Co-authored-by: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> Signed-off-by: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> --- monai/metrics/utils.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/monai/metrics/utils.py b/monai/metrics/utils.py index 11a66ff3ef..9b08a117e5 100644 --- a/monai/metrics/utils.py +++ b/monai/metrics/utils.py @@ -55,9 +55,13 @@ ] + +@overload +def ignore_background(y_pred: NdarrayTensor) -> tuple[NdarrayTensor, None]: ... + def ignore_background( - y_pred: NdarrayTensor, y: NdarrayTensor | None = None -) -> tuple[NdarrayTensor, NdarrayTensor | None]: + y_pred: NdarrayTensor, y: NdarrayTensor +) -> tuple[NdarrayTensor, NdarrayTensor]: """ This function is used to remove background (the first channel) for `y_pred` and `y`. From 305cddc51326377feabbac95c8346568d50960a4 Mon Sep 17 00:00:00 2001 From: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> Date: Wed, 20 May 2026 12:16:59 +0100 Subject: [PATCH 4/7] Apply suggestion from @ericspod Signed-off-by: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> --- monai/metrics/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/metrics/utils.py b/monai/metrics/utils.py index 9b08a117e5..2c40fa5968 100644 --- a/monai/metrics/utils.py +++ b/monai/metrics/utils.py @@ -15,7 +15,7 @@ from collections.abc import Iterable, Sequence from functools import cache, partial from types import ModuleType -from typing import Any +from typing import Any, overload import numpy as np import torch From 9b341d5ef69c6b498eb87de92b73e712e92a1411 Mon Sep 17 00:00:00 2001 From: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> Date: Wed, 20 May 2026 12:34:56 +0100 Subject: [PATCH 5/7] Apply suggestion from @ericspod Signed-off-by: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> --- monai/metrics/utils.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/monai/metrics/utils.py b/monai/metrics/utils.py index 2c40fa5968..7cfb8dd140 100644 --- a/monai/metrics/utils.py +++ b/monai/metrics/utils.py @@ -57,11 +57,16 @@ @overload -def ignore_background(y_pred: NdarrayTensor) -> tuple[NdarrayTensor, None]: ... +def ignore_background(y_pred: NdarrayTensor, y: NdarrayTensor) -> tuple[NdarrayTensor, NdarrayTensor]: ... + + +@overload +def ignore_background(y_pred: NdarrayTensor, y: None = ...) -> tuple[NdarrayTensor, None]: ... + def ignore_background( - y_pred: NdarrayTensor, y: NdarrayTensor -) -> tuple[NdarrayTensor, NdarrayTensor]: + y_pred: NdarrayTensor, y: NdarrayTensor | None = None +) -> tuple[NdarrayTensor, NdarrayTensor | None]: """ This function is used to remove background (the first channel) for `y_pred` and `y`. From b56e3a25aeb1c4eff227497582e7ccb6361b97d5 Mon Sep 17 00:00:00 2001 From: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> Date: Wed, 20 May 2026 12:59:09 +0100 Subject: [PATCH 6/7] Apply suggestion from @ericspod Signed-off-by: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> --- monai/metrics/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/monai/metrics/utils.py b/monai/metrics/utils.py index 7cfb8dd140..a27e4f1b91 100644 --- a/monai/metrics/utils.py +++ b/monai/metrics/utils.py @@ -55,7 +55,6 @@ ] - @overload def ignore_background(y_pred: NdarrayTensor, y: NdarrayTensor) -> tuple[NdarrayTensor, NdarrayTensor]: ... From 443b0e9b49686629e2590c9db6bcd3055c3b9e92 Mon Sep 17 00:00:00 2001 From: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> Date: Wed, 20 May 2026 14:38:29 +0100 Subject: [PATCH 7/7] Apply suggestion from @ericspod Signed-off-by: Eric Kerfoot <17726042+ericspod@users.noreply.github.com> --- monai/metrics/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/metrics/utils.py b/monai/metrics/utils.py index a27e4f1b91..3070764e06 100644 --- a/monai/metrics/utils.py +++ b/monai/metrics/utils.py @@ -73,7 +73,7 @@ def ignore_background( y_pred: predictions. As for classification tasks, `y_pred` should has the shape [BN] where N is larger than 1. As for segmentation tasks, the shape should be [BNHW] or [BNHWD]. - y: ground truth, the first dim is batch. + y: optional ground truth, the first dim is batch. """