/
test_gaussian.py
62 lines (48 loc) · 2.02 KB
/
test_gaussian.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# -*- coding: utf-8 -*-
from __future__ import division, print_function
import pytest
import numpy as np
from itertools import product
from emcee import moves
from .test_proposal import _test_normal, _test_uniform
__all__ = ["test_normal_gaussian", "test_uniform_gaussian",
"test_normal_gaussian_nd"]
@pytest.mark.parametrize("mode,factor", product(
["vector"], [None, 2.0, 5.0]
))
def test_normal_gaussian(mode, factor, **kwargs):
_test_normal(moves.GaussianMove(0.5, mode=mode, factor=factor), **kwargs)
@pytest.mark.parametrize("mode,factor", product(
["vector", "random", "sequential"], [None, 2.0]
))
def test_normal_gaussian_nd(mode, factor, **kwargs):
ndim = 3
kwargs["nsteps"] = 8000
# Isotropic.
_test_normal(moves.GaussianMove(0.5, factor=factor, mode=mode), ndim=ndim,
**kwargs)
# Axis-aligned.
_test_normal(moves.GaussianMove(0.5 * np.ones(ndim), factor=factor,
mode=mode), ndim=ndim, **kwargs)
with pytest.raises(ValueError):
_test_normal(moves.GaussianMove(0.5 * np.ones(ndim-1), factor=factor,
mode=mode), ndim=ndim,
**kwargs)
# Full matrix.
if mode == "vector":
_test_normal(moves.GaussianMove(np.diag(0.5 * np.ones(ndim)),
factor=factor, mode=mode), ndim=ndim,
**kwargs)
with pytest.raises(ValueError):
_test_normal(moves.GaussianMove(np.diag(0.5 * np.ones(ndim-1))),
ndim=ndim, **kwargs)
else:
with pytest.raises(ValueError):
_test_normal(moves.GaussianMove(np.diag(0.5 * np.ones(ndim)),
factor=factor, mode=mode),
ndim=ndim, **kwargs)
@pytest.mark.parametrize("mode,factor", product(
["vector"], [None, 2.0, 5.0]
))
def test_uniform_gaussian(mode, factor, **kwargs):
_test_uniform(moves.GaussianMove(0.5, factor=factor, mode=mode), **kwargs)