Skip to content

Commit eca1c38

Browse files
authored
MAINT: np.trapz -> scipy trapezoid (#974)
* MAINT: np.trapz -> np.trapezoid * REFACTOR: switch to scipy trapezoid
1 parent e1d0a13 commit eca1c38

7 files changed

Lines changed: 19 additions & 13 deletions

File tree

bilby/bilby_mcmc/sampler.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import numpy as np
88
import pandas as pd
9+
from scipy.integrate import trapezoid
910
from scipy.optimize import differential_evolution
1011

1112
from ..core.result import rejection_sample
@@ -1090,8 +1091,8 @@ def _calculate_stepping_stone(betas, ln_likes):
10901091

10911092
@staticmethod
10921093
def _compute_evidence_from_mean_lnlikes(betas, mean_lnlikes):
1093-
lnZ = np.trapz(mean_lnlikes, betas)
1094-
z2 = np.trapz(mean_lnlikes[::-1][::2][::-1], betas[::-1][::2][::-1])
1094+
lnZ = trapezoid(mean_lnlikes, betas)
1095+
z2 = trapezoid(mean_lnlikes[::-1][::2][::-1], betas[::-1][::2][::-1])
10951096
lnZerr = np.abs(lnZ - z2)
10961097
return lnZ, lnZerr
10971098

bilby/core/prior/interpolated.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import numpy as np
2+
from scipy.integrate import trapezoid
23
from scipy.interpolate import interp1d
34

45
from .base import Prior
@@ -163,9 +164,9 @@ def _update_instance(self):
163164

164165
def _initialize_attributes(self):
165166
from scipy.integrate import cumulative_trapezoid
166-
if np.trapz(self._yy, self.xx) != 1:
167+
if trapezoid(self._yy, self.xx) != 1:
167168
logger.debug('Supplied PDF for {} is not normalised, normalising.'.format(self.name))
168-
self._yy /= np.trapz(self._yy, self.xx)
169+
self._yy /= trapezoid(self._yy, self.xx)
169170
self.YY = cumulative_trapezoid(self._yy, self.xx, initial=0)
170171
# Need last element of cumulative distribution to be exactly one.
171172
self.YY[-1] = 1

bilby/core/sampler/ptemcee.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import numpy as np
99
import pandas as pd
10+
from scipy.integrate import trapezoid
1011

1112
from ..utils import check_directory_exists_and_if_not_mkdir, logger, safe_file_dump
1213
from .base_sampler import (
@@ -1396,9 +1397,9 @@ def compute_evidence(
13961397
mean_lnlikes = mean_lnlikes[~idxs]
13971398
betas = betas[~idxs]
13981399

1399-
lnZ = np.trapz(mean_lnlikes, betas)
1400-
z1 = np.trapz(mean_lnlikes, betas)
1401-
z2 = np.trapz(mean_lnlikes[::-1][::2][::-1], betas[::-1][::2][::-1])
1400+
lnZ = trapezoid(mean_lnlikes, betas)
1401+
z1 = trapezoid(mean_lnlikes, betas)
1402+
z2 = trapezoid(mean_lnlikes[::-1][::2][::-1], betas[::-1][::2][::-1])
14021403
lnZerr = np.abs(z1 - z2)
14031404

14041405
if make_plots:
@@ -1410,7 +1411,7 @@ def compute_evidence(
14101411
evidence = []
14111412
for i in range(int(len(betas) / 2.0)):
14121413
min_betas.append(betas[i])
1413-
evidence.append(np.trapz(mean_lnlikes[i:], betas[i:]))
1414+
evidence.append(trapezoid(mean_lnlikes[i:], betas[i:]))
14141415

14151416
ax2.semilogx(min_betas, evidence, "-o")
14161417
ax2.set_ylabel(

bilby/gw/prior.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import copy
33

44
import numpy as np
5-
from scipy.integrate import quad
5+
from scipy.integrate import quad, trapezoid
66
from scipy.interpolate import InterpolatedUnivariateSpline, interp1d
77
from scipy.special import hyp2f1
88
from scipy.stats import norm
@@ -1520,7 +1520,7 @@ def _build_attributes(self):
15201520
"""
15211521
from scipy.integrate import cumulative_trapezoid
15221522
yy = self._all_interped(self.pix_xx)
1523-
yy /= np.trapz(yy, self.pix_xx)
1523+
yy /= trapezoid(yy, self.pix_xx)
15241524
YY = cumulative_trapezoid(yy, self.pix_xx, initial=0)
15251525
YY[-1] = 1
15261526
self.inverse_cdf = interp1d(x=YY, y=self.pix_xx, bounds_error=True)

examples/core_examples/multivariate_gaussian_prior.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import numpy as np
1010
from bilby.core.likelihood import GaussianLikelihood
1111
from scipy import linalg, stats
12+
from scipy.integrate import trapezoid
1213

1314
# A few simple setup steps
1415
label = "multivariate_gaussian_prior"
@@ -75,7 +76,7 @@ def model(time, m, c):
7576
gp = np.zeros(len(x))
7677
for i in range(nmodes): # loop over modes
7778
gp += weights[i] * stats.norm.pdf(x, loc=mus[i][j], scale=mvg.sigmas[i][j])
78-
gp = gp / np.trapz(gp, x) # renormalise
79+
gp = gp / trapezoid(gp, x) # renormalise
7980

8081
axs[aidx[j]].plot(x, gp, "k--", lw=2)
8182

test/core/prior/prior_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import numpy as np
44
import os
55
import scipy.stats as ss
6+
from scipy.integrate import trapezoid
67

78

89
class TestPriorClasses(unittest.TestCase):
@@ -573,7 +574,7 @@ def test_normalized(self):
573574
domain = np.linspace(prior.minimum, prior.maximum, 10000)
574575
else:
575576
domain = np.linspace(prior.minimum, prior.maximum, 1000)
576-
self.assertAlmostEqual(np.trapz(prior.prob(domain), domain), 1, 3)
577+
self.assertAlmostEqual(trapezoid(prior.prob(domain), domain), 1, 3)
577578

578579
def test_accuracy(self):
579580
"""Test that each of the priors' functions is calculated accurately, as compared to scipy's calculations"""

test/gw/likelihood/marginalization_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import numpy as np
1010
import bilby
1111
from bilby.gw.detector import calibration
12+
from scipy.integrate import trapezoid
1213
from scipy.special import logsumexp
1314

1415

@@ -380,7 +381,7 @@ def _template(self, marginalized, non_marginalized, key, prior=None, values=None
380381
ln_likes[ii] = non_marginalized.log_likelihood_ratio()
381382
like = np.exp(ln_likes - max(ln_likes))
382383

383-
marg_like = np.log(np.trapz(like * prior_values, values)) + max(ln_likes)
384+
marg_like = np.log(trapezoid(like * prior_values, values)) + max(ln_likes)
384385
self.assertAlmostEqual(
385386
marg_like, marginalized.log_likelihood_ratio(), delta=0.5
386387
)

0 commit comments

Comments
 (0)