From da842eae6501ce6ba46546685558e6764b4a161e Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Thu, 30 Apr 2026 15:11:35 +0100 Subject: [PATCH] fix: accept xp kwarg in inline Gaussian.model_data_from for af.ex.Analysis parity These dev scripts use custom Analysis classes that call `model_data_from` directly, so they don't currently break with PyAutoFit#1240's xp plumbing. Update them anyway for consistency with autofit_workspace tutorials and to keep the dev-script Gaussian definitions reusable under `af.ex.Analysis`. Affects 7 inline Gaussian classes: - searches_minimal/{emcee,lbfgs,dynesty,nss,nautilus}_simple.py - searches/ultranest/example.py - searches/pyswarms/example.py Each `model_data_from(self, xvalues)` now accepts `xp=np` and routes its math through `xp`. Co-Authored-By: Claude Opus 4.7 (1M context) --- searches/pyswarms/example.py | 8 ++++---- searches/ultranest/example.py | 8 ++++---- searches_minimal/dynesty_simple.py | 8 ++++---- searches_minimal/emcee_simple.py | 8 ++++---- searches_minimal/lbfgs_simple.py | 8 ++++---- searches_minimal/nautilus_simple.py | 8 ++++---- searches_minimal/nss_simple.py | 8 ++++---- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/searches/pyswarms/example.py b/searches/pyswarms/example.py index 3bc70a5..09f1a68 100644 --- a/searches/pyswarms/example.py +++ b/searches/pyswarms/example.py @@ -38,10 +38,10 @@ def __init__( self.normalization = normalization self.sigma = sigma - def model_data_from(self, xvalues): - return np.multiply( - np.divide(self.normalization, self.sigma * np.sqrt(2.0 * np.pi)), - np.exp(-0.5 * np.square(np.divide(xvalues - self.centre, self.sigma))), + def model_data_from(self, xvalues, xp=np): + return xp.multiply( + xp.divide(self.normalization, self.sigma * xp.sqrt(2.0 * xp.pi)), + xp.exp(-0.5 * xp.square(xp.divide(xvalues - self.centre, self.sigma))), ) diff --git a/searches/ultranest/example.py b/searches/ultranest/example.py index a1623b9..113c898 100644 --- a/searches/ultranest/example.py +++ b/searches/ultranest/example.py @@ -43,10 +43,10 @@ def __init__( self.normalization = normalization self.sigma = sigma - def model_data_from(self, xvalues): - return np.multiply( - np.divide(self.normalization, self.sigma * np.sqrt(2.0 * np.pi)), - np.exp(-0.5 * np.square(np.divide(xvalues - self.centre, self.sigma))), + def model_data_from(self, xvalues, xp=np): + return xp.multiply( + xp.divide(self.normalization, self.sigma * xp.sqrt(2.0 * xp.pi)), + xp.exp(-0.5 * xp.square(xp.divide(xvalues - self.centre, self.sigma))), ) diff --git a/searches_minimal/dynesty_simple.py b/searches_minimal/dynesty_simple.py index 3ad5934..f0cd5bd 100644 --- a/searches_minimal/dynesty_simple.py +++ b/searches_minimal/dynesty_simple.py @@ -27,10 +27,10 @@ def __init__(self, centre=30.0, normalization=1.0, sigma=5.0): self.normalization = normalization self.sigma = sigma - def model_data_from(self, xvalues): - return np.multiply( - np.divide(self.normalization, self.sigma * np.sqrt(2.0 * np.pi)), - np.exp(-0.5 * np.square(np.divide(xvalues - self.centre, self.sigma))), + def model_data_from(self, xvalues, xp=np): + return xp.multiply( + xp.divide(self.normalization, self.sigma * xp.sqrt(2.0 * xp.pi)), + xp.exp(-0.5 * xp.square(xp.divide(xvalues - self.centre, self.sigma))), ) diff --git a/searches_minimal/emcee_simple.py b/searches_minimal/emcee_simple.py index 111bbe3..a1ded8a 100644 --- a/searches_minimal/emcee_simple.py +++ b/searches_minimal/emcee_simple.py @@ -27,10 +27,10 @@ def __init__(self, centre=30.0, normalization=1.0, sigma=5.0): self.normalization = normalization self.sigma = sigma - def model_data_from(self, xvalues): - return np.multiply( - np.divide(self.normalization, self.sigma * np.sqrt(2.0 * np.pi)), - np.exp(-0.5 * np.square(np.divide(xvalues - self.centre, self.sigma))), + def model_data_from(self, xvalues, xp=np): + return xp.multiply( + xp.divide(self.normalization, self.sigma * xp.sqrt(2.0 * xp.pi)), + xp.exp(-0.5 * xp.square(xp.divide(xvalues - self.centre, self.sigma))), ) diff --git a/searches_minimal/lbfgs_simple.py b/searches_minimal/lbfgs_simple.py index 9a85a3a..c146280 100644 --- a/searches_minimal/lbfgs_simple.py +++ b/searches_minimal/lbfgs_simple.py @@ -27,10 +27,10 @@ def __init__(self, centre=30.0, normalization=1.0, sigma=5.0): self.normalization = normalization self.sigma = sigma - def model_data_from(self, xvalues): - return np.multiply( - np.divide(self.normalization, self.sigma * np.sqrt(2.0 * np.pi)), - np.exp(-0.5 * np.square(np.divide(xvalues - self.centre, self.sigma))), + def model_data_from(self, xvalues, xp=np): + return xp.multiply( + xp.divide(self.normalization, self.sigma * xp.sqrt(2.0 * xp.pi)), + xp.exp(-0.5 * xp.square(xp.divide(xvalues - self.centre, self.sigma))), ) diff --git a/searches_minimal/nautilus_simple.py b/searches_minimal/nautilus_simple.py index f921358..98844e3 100644 --- a/searches_minimal/nautilus_simple.py +++ b/searches_minimal/nautilus_simple.py @@ -27,10 +27,10 @@ def __init__(self, centre=30.0, normalization=1.0, sigma=5.0): self.normalization = normalization self.sigma = sigma - def model_data_from(self, xvalues): - return np.multiply( - np.divide(self.normalization, self.sigma * np.sqrt(2.0 * np.pi)), - np.exp(-0.5 * np.square(np.divide(xvalues - self.centre, self.sigma))), + def model_data_from(self, xvalues, xp=np): + return xp.multiply( + xp.divide(self.normalization, self.sigma * xp.sqrt(2.0 * xp.pi)), + xp.exp(-0.5 * xp.square(xp.divide(xvalues - self.centre, self.sigma))), ) diff --git a/searches_minimal/nss_simple.py b/searches_minimal/nss_simple.py index 45ee171..36c2aa4 100644 --- a/searches_minimal/nss_simple.py +++ b/searches_minimal/nss_simple.py @@ -32,10 +32,10 @@ def __init__(self, centre=30.0, normalization=1.0, sigma=5.0): self.normalization = normalization self.sigma = sigma - def model_data_from(self, xvalues): - return np.multiply( - np.divide(self.normalization, self.sigma * np.sqrt(2.0 * np.pi)), - np.exp(-0.5 * np.square(np.divide(xvalues - self.centre, self.sigma))), + def model_data_from(self, xvalues, xp=np): + return xp.multiply( + xp.divide(self.normalization, self.sigma * xp.sqrt(2.0 * xp.pi)), + xp.exp(-0.5 * xp.square(xp.divide(xvalues - self.centre, self.sigma))), )