From 4e8164f0c43634e8e45c950456cca4f89cf53f88 Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Wed, 28 Aug 2024 12:17:48 +0100 Subject: [PATCH 1/6] add mMR_ACR --- petric.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/petric.py b/petric.py index 65b71b4..b6c961c 100755 --- a/petric.py +++ b/petric.py @@ -262,7 +262,9 @@ def get_image(fname): (SRCDIR / "NeuroLF_Hoffman_Dataset", OUTDIR / "NeuroLF_Hoffman", [MetricsWithTimeout(outdir=OUTDIR / "NeuroLF_Hoffman", **DATA_SLICES['NeuroLF_Hoffman_Dataset'])]), (SRCDIR / "Siemens_Vision600_thorax", OUTDIR / "Vision600_thorax", - [MetricsWithTimeout(outdir=OUTDIR / "Vision600_thorax", **DATA_SLICES['Siemens_Vision600_thorax'])])] + [MetricsWithTimeout(outdir=OUTDIR / "Vision600_thorax", **DATA_SLICES['Siemens_Vision600_thorax'])]), + (SRCDIR / "Siemens_mMR_ACR", OUTDIR / "mMR_ACR", + [MetricsWithTimeout(outdir=OUTDIR / "mMR_ACR", **DATA_SLICES['Siemens_mMR_ACR'])])] else: log.warning("Source directory does not exist: %s", SRCDIR) data_dirs_metrics = [(None, None, [])] # type: ignore From f351359646bba8cff91582578c170f02286fc8cf Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Wed, 11 Sep 2024 14:28:49 +0100 Subject: [PATCH 2/6] add Mediso_NEMA --- petric.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/petric.py b/petric.py index b6c961c..051d8dc 100755 --- a/petric.py +++ b/petric.py @@ -264,7 +264,9 @@ def get_image(fname): (SRCDIR / "Siemens_Vision600_thorax", OUTDIR / "Vision600_thorax", [MetricsWithTimeout(outdir=OUTDIR / "Vision600_thorax", **DATA_SLICES['Siemens_Vision600_thorax'])]), (SRCDIR / "Siemens_mMR_ACR", OUTDIR / "mMR_ACR", - [MetricsWithTimeout(outdir=OUTDIR / "mMR_ACR", **DATA_SLICES['Siemens_mMR_ACR'])])] + [MetricsWithTimeout(outdir=OUTDIR / "mMR_ACR", **DATA_SLICES['Siemens_mMR_ACR'])]), + (SRCDIR / "Mediso_NEMA_IQ", OUTDIR / "Mediso_NEMA", + [MetricsWithTimeout(outdir=OUTDIR / "Mediso_NEMA", **DATA_SLICES['Mediso_NEMA_IQ'])])] else: log.warning("Source directory does not exist: %s", SRCDIR) data_dirs_metrics = [(None, None, [])] # type: ignore From 069f462f3eb8af355fd644285dbbc6dbd312eb2b Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Fri, 13 Sep 2024 15:51:23 +0100 Subject: [PATCH 3/6] fine-grained metrics, skip objective - fixes #82 --- petric.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/petric.py b/petric.py index 051d8dc..2b3396d 100755 --- a/petric.py +++ b/petric.py @@ -43,7 +43,7 @@ class Callback(cil_callbacks.Callback): CIL Callback but with `self.skip_iteration` checking `min(self.interval, algo.update_objective_interval)`. TODO: backport this class to CIL. """ - def __init__(self, interval: int = 1 << 31, **kwargs): + def __init__(self, interval: int = 1, **kwargs): super().__init__(**kwargs) self.interval = interval @@ -110,7 +110,7 @@ def __call__(self, algo: Algorithm): class QualityMetrics(ImageQualityCallback, Callback): """From https://github.com/SyneRBI/PETRIC/wiki#metrics-and-thresholds""" - def __init__(self, reference_image, whole_object_mask, background_mask, interval: int = 1 << 31, **kwargs): + def __init__(self, reference_image, whole_object_mask, background_mask, interval: int = 1, **kwargs): # TODO: drop multiple inheritance once `interval` included in CIL Callback.__init__(self, interval=interval) ImageQualityCallback.__init__(self, reference_image, **kwargs) @@ -297,7 +297,7 @@ def get_image(fname): metrics_with_timeout.reset() # timeout from now algo = Submission(data) try: - algo.run(np.inf, callbacks=metrics + submission_callbacks) + algo.run(np.inf, callbacks=metrics + submission_callbacks, update_objective_interval=np.inf) except Exception: print_exc(limit=2) finally: From 73490ac0836b0eaa5e57370bcb51d3b6255ca405 Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Wed, 25 Sep 2024 22:56:30 +0100 Subject: [PATCH 4/6] add GE_DMI3_Torso --- petric.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/petric.py b/petric.py index 2b3396d..4ff2e63 100755 --- a/petric.py +++ b/petric.py @@ -266,7 +266,9 @@ def get_image(fname): (SRCDIR / "Siemens_mMR_ACR", OUTDIR / "mMR_ACR", [MetricsWithTimeout(outdir=OUTDIR / "mMR_ACR", **DATA_SLICES['Siemens_mMR_ACR'])]), (SRCDIR / "Mediso_NEMA_IQ", OUTDIR / "Mediso_NEMA", - [MetricsWithTimeout(outdir=OUTDIR / "Mediso_NEMA", **DATA_SLICES['Mediso_NEMA_IQ'])])] + [MetricsWithTimeout(outdir=OUTDIR / "Mediso_NEMA", **DATA_SLICES['Mediso_NEMA_IQ'])]), + (SRCDIR / "GE_DMI3_Torso", OUTDIR / "DMI3_Torso", + [MetricsWithTimeout(outdir=OUTDIR / "DMI3_Torso", **DATA_SLICES['GE_DMI3_Torso'])])] else: log.warning("Source directory does not exist: %s", SRCDIR) data_dirs_metrics = [(None, None, [])] # type: ignore From 23a16994ca10543ba3a8cd65f820ba74faa6d3a9 Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Wed, 25 Sep 2024 23:08:09 +0100 Subject: [PATCH 5/6] add mMR_NEMA_lowcounts --- petric.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/petric.py b/petric.py index 4ff2e63..a6af9e0 100755 --- a/petric.py +++ b/petric.py @@ -259,6 +259,8 @@ def get_image(fname): data_dirs_metrics = [ (SRCDIR / "Siemens_mMR_NEMA_IQ", OUTDIR / "mMR_NEMA", [MetricsWithTimeout(outdir=OUTDIR / "mMR_NEMA", **DATA_SLICES['Siemens_mMR_NEMA_IQ'])]), + (SRCDIR / "Siemens_mMR_NEMA_IQ_lowcounts", OUTDIR / "mMR_NEMA_lowcounts", + [MetricsWithTimeout(outdir=OUTDIR / "mMR_NEMA_lowcounts", **DATA_SLICES['Siemens_mMR_NEMA_IQ_lowcounts'])]), (SRCDIR / "NeuroLF_Hoffman_Dataset", OUTDIR / "NeuroLF_Hoffman", [MetricsWithTimeout(outdir=OUTDIR / "NeuroLF_Hoffman", **DATA_SLICES['NeuroLF_Hoffman_Dataset'])]), (SRCDIR / "Siemens_Vision600_thorax", OUTDIR / "Vision600_thorax", From 429d8f638038a3ff7fbf3d0085e0593510a680d8 Mon Sep 17 00:00:00 2001 From: Kris Thielemans Date: Sun, 29 Sep 2024 11:44:43 +0100 Subject: [PATCH 6/6] compute metric every 3 updates for now --- petric.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/petric.py b/petric.py index a6af9e0..4b1cd05 100755 --- a/petric.py +++ b/petric.py @@ -110,7 +110,7 @@ def __call__(self, algo: Algorithm): class QualityMetrics(ImageQualityCallback, Callback): """From https://github.com/SyneRBI/PETRIC/wiki#metrics-and-thresholds""" - def __init__(self, reference_image, whole_object_mask, background_mask, interval: int = 1, **kwargs): + def __init__(self, reference_image, whole_object_mask, background_mask, interval: int = 3, **kwargs): # TODO: drop multiple inheritance once `interval` included in CIL Callback.__init__(self, interval=interval) ImageQualityCallback.__init__(self, reference_image, **kwargs)