Source code for bayesian_quadrature.tests.util
import numpy as np
import scipy.stats
import pytest
import matplotlib.pyplot as plt
from gp import PeriodicKernel, GaussianKernel
from .. import BQ
from .. import bq_c
DTYPE = np.dtype('float64')
options = {
'n_candidate': 10,
'x_mean': 0.0,
'x_var': 10.0,
'candidate_thresh': 0.5,
'kernel': GaussianKernel,
'optim_method': 'L-BFGS-B',
}
[docs]def npseed():
np.random.seed(8728)
[docs]def make_x(n=9):
x = np.linspace(-5, 5, n)
return x
[docs]def f_x(x):
y = scipy.stats.norm.pdf(x, 0, 1)
return y
[docs]def make_xy(n=9):
x = make_x(n=n)
y = f_x(x)
return x, y
[docs]def init_bq(bq):
bq.init(params_tl=(15, 2, 0), params_l=(0.2, 1.3, 0))
[docs]def make_bq(n=9, x=None, nc=None, init=True):
if x is None:
x, y = make_xy(n=n)
else:
y = f_x(x)
opt = options.copy()
if nc is not None:
opt['n_candidate'] = nc
bq = BQ(x, y, **opt)
if init:
init_bq(bq)
return bq
[docs]def make_xo():
return np.linspace(-10, 10, 500)
[docs]def vmpdf(x, mu, kappa):
C = -np.log(2 * np.pi * scipy.special.iv(0, kappa))
p = np.exp(C + (kappa * np.cos(x - mu)))
return p
[docs]def f_xp(x):
return vmpdf(x, mu=0.1, kappa=1.1)
[docs]def make_periodic_bq(x=None, nc=None):
opt = options.copy()
opt['kernel'] = PeriodicKernel
if nc is not None:
opt['n_candidate'] = nc
if x is None:
x = np.linspace(-np.pi, np.pi, 9)[:-1]
y = f_xp(x)
bq = BQ(x, y, **opt)
bq.init(
params_tl=(5, 2 * np.pi, 1, 0),
params_l=(0.2, np.pi / 2., 1, 0))
return bq