From 391d359e5e5681e7fddf3f7075c9372c4658dc2d Mon Sep 17 00:00:00 2001 From: "Michael J. Williams" Date: Thu, 9 Jan 2025 17:36:26 +0100 Subject: [PATCH] MAINT: avoid call to deprecated `scipy.special.btdtr` and `scipy.special.btdtri` functions (#884) * MAINT: avoid call to deprecated `scipy.special.btdtri` function Replaces the call with the equivalent call to `betaincinv`. * MAINT: avoid call to deprecated `scipy.special.btdtr` function * MAINT: avoid importing from `scipy.special._ufuncs` --- bilby/core/prior/analytical.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/bilby/core/prior/analytical.py b/bilby/core/prior/analytical.py index 5e7b3099..547339dc 100644 --- a/bilby/core/prior/analytical.py +++ b/bilby/core/prior/analytical.py @@ -1,7 +1,18 @@ import numpy as np -from scipy.special import erfinv -from scipy.special._ufuncs import xlogy, erf, log1p, stdtrit, gammaln, stdtr, \ - btdtri, betaln, btdtr, gammaincinv, gammainc +from scipy.special import ( + xlogy, + erf, + erfinv, + log1p, + stdtrit, + gammaln, + stdtr, + betaln, + betainc, + betaincinv, + gammaincinv, + gammainc, +) from .base import Prior from ..utils import logger @@ -967,7 +978,7 @@ def rescale(self, val): This maps to the inverse CDF. This has been analytically solved for this case. """ - return btdtri(self.alpha, self.beta, val) * (self.maximum - self.minimum) + self.minimum + return betaincinv(self.alpha, self.beta, val) * (self.maximum - self.minimum) + self.minimum def prob(self, val): """Return the prior probability of val. @@ -1014,10 +1025,12 @@ def cdf(self, val): elif val < self.minimum: return 0. else: - return btdtr(self.alpha, self.beta, - (val - self.minimum) / (self.maximum - self.minimum)) + return betainc( + self.alpha, self.beta, + (val - self.minimum) / (self.maximum - self.minimum) + ) else: - _cdf = np.nan_to_num(btdtr(self.alpha, self.beta, + _cdf = np.nan_to_num(betainc(self.alpha, self.beta, (val - self.minimum) / (self.maximum - self.minimum))) _cdf[val < self.minimum] = 0. _cdf[val > self.maximum] = 1.