From f3fc254cde8cd7436380edecd0b58fbfdd9d7ced Mon Sep 17 00:00:00 2001 From: Devguru Date: Fri, 27 Feb 2026 14:35:47 +0530 Subject: [PATCH] fix: add missing D_and_Ds_swap() to 13 algorithms for consistent parameter labelling Add self.D_and_Ds_swap(results) call before return in ivim_fit() for: - IAR_LU_segmented_3step, IAR_LU_subtracted - PV_MUMC_biexp - OGC_AmsterdamUMC_biexp, OGC_AmsterdamUMC_biexp_segmented, OGC_AmsterdamUMC_Bayesian_biexp - OJ_GU_seg, PvH_KB_NKI_IVIMfit, TF_reference_IVIMfit - TCML_TechnionIIT_SLS, TCML_TechnionIIT_lsq_sls_lm/trf/BOBYQA This corrects mislabelled D and D* when the optimizer swaps them. Previously only 9/22 algorithms had this correction. No regressions: 1127 passed, 167 skipped, 22 xfailed, 6 xpassed. --- src/standardized/IAR_LU_segmented_3step.py | 3 ++- src/standardized/IAR_LU_subtracted.py | 1 + src/standardized/OGC_AmsterdamUMC_Bayesian_biexp.py | 1 + src/standardized/OGC_AmsterdamUMC_biexp.py | 1 + src/standardized/OGC_AmsterdamUMC_biexp_segmented.py | 1 + src/standardized/OJ_GU_seg.py | 1 + src/standardized/PV_MUMC_biexp.py | 1 + src/standardized/PvH_KB_NKI_IVIMfit.py | 1 + src/standardized/TCML_TechnionIIT_SLS.py | 1 + src/standardized/TCML_TechnionIIT_lsq_sls_BOBYQA.py | 1 + src/standardized/TCML_TechnionIIT_lsq_sls_lm.py | 1 + src/standardized/TCML_TechnionIIT_lsq_sls_trf.py | 1 + src/standardized/TF_reference_IVIMfit.py | 1 + 13 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/standardized/IAR_LU_segmented_3step.py b/src/standardized/IAR_LU_segmented_3step.py index 089cb17d..96c6c9ee 100644 --- a/src/standardized/IAR_LU_segmented_3step.py +++ b/src/standardized/IAR_LU_segmented_3step.py @@ -114,5 +114,6 @@ def ivim_fit(self, signals, bvalues, **kwargs): results["f"] = fit_results.model_params[1] results["Dp"] = fit_results.model_params[2] results["D"] = fit_results.model_params[3] + results = self.D_and_Ds_swap(results) - return results \ No newline at end of file + return results diff --git a/src/standardized/IAR_LU_subtracted.py b/src/standardized/IAR_LU_subtracted.py index 174c03af..e4e73f71 100644 --- a/src/standardized/IAR_LU_subtracted.py +++ b/src/standardized/IAR_LU_subtracted.py @@ -112,5 +112,6 @@ def ivim_fit(self, signals, bvalues, **kwargs): results["f"] = fit_results.model_params[1] results["Dp"] = fit_results.model_params[2] results["D"] = fit_results.model_params[3] + results = self.D_and_Ds_swap(results) return results \ No newline at end of file diff --git a/src/standardized/OGC_AmsterdamUMC_Bayesian_biexp.py b/src/standardized/OGC_AmsterdamUMC_Bayesian_biexp.py index e35d07f1..2b049941 100644 --- a/src/standardized/OGC_AmsterdamUMC_Bayesian_biexp.py +++ b/src/standardized/OGC_AmsterdamUMC_Bayesian_biexp.py @@ -101,6 +101,7 @@ def ivim_fit(self, signals, bvalues, initial_guess=None, **kwargs): results["D"] = fit_results[0] results["f"] = fit_results[1] results["Dp"] = fit_results[2] + results = self.D_and_Ds_swap(results) return results diff --git a/src/standardized/OGC_AmsterdamUMC_biexp.py b/src/standardized/OGC_AmsterdamUMC_biexp.py index bf5aac57..3a8e15c2 100644 --- a/src/standardized/OGC_AmsterdamUMC_biexp.py +++ b/src/standardized/OGC_AmsterdamUMC_biexp.py @@ -73,5 +73,6 @@ def ivim_fit(self, signals, bvalues, **kwargs): results["D"] = fit_results[0] results["f"] = fit_results[1] results["Dp"] = fit_results[2] + results = self.D_and_Ds_swap(results) return results \ No newline at end of file diff --git a/src/standardized/OGC_AmsterdamUMC_biexp_segmented.py b/src/standardized/OGC_AmsterdamUMC_biexp_segmented.py index 5cfe777a..281952a2 100644 --- a/src/standardized/OGC_AmsterdamUMC_biexp_segmented.py +++ b/src/standardized/OGC_AmsterdamUMC_biexp_segmented.py @@ -79,5 +79,6 @@ def ivim_fit(self, signals, bvalues, **kwargs): results["D"] = fit_results[0] results["f"] = fit_results[1] results["Dp"] = fit_results[2] + results = self.D_and_Ds_swap(results) return results \ No newline at end of file diff --git a/src/standardized/OJ_GU_seg.py b/src/standardized/OJ_GU_seg.py index 74ec7eda..44d2b30c 100644 --- a/src/standardized/OJ_GU_seg.py +++ b/src/standardized/OJ_GU_seg.py @@ -76,5 +76,6 @@ def ivim_fit(self, signals, bvalues=None): results["f"] = fit_results['f'] results["Dp"] = fit_results['Dstar'] results["D"] = fit_results['D'] + results = self.D_and_Ds_swap(results) return results \ No newline at end of file diff --git a/src/standardized/PV_MUMC_biexp.py b/src/standardized/PV_MUMC_biexp.py index 37783a5f..25e1d14c 100644 --- a/src/standardized/PV_MUMC_biexp.py +++ b/src/standardized/PV_MUMC_biexp.py @@ -77,5 +77,6 @@ def ivim_fit(self, signals, bvalues=None): results["f"] = fit_results[1] results["Dp"] = fit_results[2] results["D"] = fit_results[0] + results = self.D_and_Ds_swap(results) return results diff --git a/src/standardized/PvH_KB_NKI_IVIMfit.py b/src/standardized/PvH_KB_NKI_IVIMfit.py index 20bf8f8c..608e3d7f 100644 --- a/src/standardized/PvH_KB_NKI_IVIMfit.py +++ b/src/standardized/PvH_KB_NKI_IVIMfit.py @@ -73,5 +73,6 @@ def ivim_fit(self, signals, bvalues=None): results["D"] = fit_results[0][0,0,0]/1000 results["f"] = fit_results[1][0,0,0] results["Dp"] = fit_results[2][0,0,0]/1000 + results = self.D_and_Ds_swap(results) return results diff --git a/src/standardized/TCML_TechnionIIT_SLS.py b/src/standardized/TCML_TechnionIIT_SLS.py index 1a07c444..9e442350 100644 --- a/src/standardized/TCML_TechnionIIT_SLS.py +++ b/src/standardized/TCML_TechnionIIT_SLS.py @@ -92,5 +92,6 @@ def get_scalar(val): results["D"] = 0 results["f"] = 0 results["Dp"] = 0 + results = self.D_and_Ds_swap(results) return results \ No newline at end of file diff --git a/src/standardized/TCML_TechnionIIT_lsq_sls_BOBYQA.py b/src/standardized/TCML_TechnionIIT_lsq_sls_BOBYQA.py index a80bb2e7..1eabd9d1 100644 --- a/src/standardized/TCML_TechnionIIT_lsq_sls_BOBYQA.py +++ b/src/standardized/TCML_TechnionIIT_lsq_sls_BOBYQA.py @@ -89,5 +89,6 @@ def get_scalar(val): results["D"] = 0 results["f"] = 0 results["Dp"] = 0 + results = self.D_and_Ds_swap(results) return results \ No newline at end of file diff --git a/src/standardized/TCML_TechnionIIT_lsq_sls_lm.py b/src/standardized/TCML_TechnionIIT_lsq_sls_lm.py index e72a16a6..a559d3ac 100644 --- a/src/standardized/TCML_TechnionIIT_lsq_sls_lm.py +++ b/src/standardized/TCML_TechnionIIT_lsq_sls_lm.py @@ -91,5 +91,6 @@ def get_scalar(val): results["D"] = 0 results["f"] = 0 results["Dp"] = 0 + results = self.D_and_Ds_swap(results) return results \ No newline at end of file diff --git a/src/standardized/TCML_TechnionIIT_lsq_sls_trf.py b/src/standardized/TCML_TechnionIIT_lsq_sls_trf.py index bd37628b..684f6498 100644 --- a/src/standardized/TCML_TechnionIIT_lsq_sls_trf.py +++ b/src/standardized/TCML_TechnionIIT_lsq_sls_trf.py @@ -92,5 +92,6 @@ def get_scalar(val): results["D"] = 0 results["f"] = 0 results["Dp"] = 0 + results = self.D_and_Ds_swap(results) return results \ No newline at end of file diff --git a/src/standardized/TF_reference_IVIMfit.py b/src/standardized/TF_reference_IVIMfit.py index eba1630f..c1db0b5a 100644 --- a/src/standardized/TF_reference_IVIMfit.py +++ b/src/standardized/TF_reference_IVIMfit.py @@ -82,5 +82,6 @@ def ivim_fit(self, signals, bvalues=None): results["D"] = fit_results[0] results["f"] = fit_results[1] results["Dp"] = fit_results[2] + results = self.D_and_Ds_swap(results) return results \ No newline at end of file