File: test_hist2d.py

package info (click to toggle)
python-corner 2.2.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,692 kB
  • sloc: python: 1,503; makefile: 198
file content (182 lines) | stat: -rw-r--r-- 4,368 bytes parent folder | download
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# -*- coding: utf-8 -*-

import matplotlib
import numpy as np
import pytest
from matplotlib import pyplot as pl
from matplotlib.testing.decorators import image_comparison

import corner

try:
    import scipy  # noqa
except ImportError:
    scipy_installed = False
else:
    scipy_installed = True


def _run_hist2d(nm, N=50000, seed=1234, **kwargs):
    # Generate some fake data.
    np.random.seed(seed)
    x = np.random.randn(N)
    y = np.random.randn(N)

    fig, ax = pl.subplots(1, 1, figsize=(8, 8))
    corner.hist2d(x, y, ax=ax, **kwargs)


@image_comparison(
    baseline_images=["cutoff"], remove_text=True, extensions=["png"]
)
def test_cutoff():
    _run_hist2d("cutoff", range=[(0, 4), (0, 2.5)])


@pytest.mark.skipif(not scipy_installed, reason="requires scipy for smoothing")
@image_comparison(
    baseline_images=["cutoff2"], remove_text=True, extensions=["png"]
)
def test_cutoff2():
    _run_hist2d(
        "cutoff2",
        range=[(-4, 4), (-0.1, 0.1)],
        N=100000,
        fill_contours=True,
        smooth=1,
    )


@image_comparison(
    baseline_images=["basic"], remove_text=True, extensions=["png"]
)
def test_basic():
    _run_hist2d("basic")


@image_comparison(
    baseline_images=["color"], remove_text=True, extensions=["png"]
)
def test_color():
    _run_hist2d("color", color="g")


@image_comparison(
    baseline_images=["backgroundDark"], remove_text=True, extensions=["png"]
)
def test_backgroundDark():
    pl.style.use("dark_background")
    _run_hist2d("backgroundDark")
    pl.style.use("default")


@image_comparison(
    baseline_images=["backgroundDark2"], remove_text=True, extensions=["png"]
)
def test_backgroundDark2():
    pl.style.use("dark_background")
    _run_hist2d("backgroundDark2", color="r")
    pl.style.use("default")


@image_comparison(
    baseline_images=["backgroundSolarized"],
    remove_text=True,
    extensions=["png"],
)
def test_backgroundSolarized():
    pl.style.use("Solarize_Light2")
    _run_hist2d("backgroundSolarized")
    pl.style.use("default")


@image_comparison(
    baseline_images=["backgroundColor"], remove_text=True, extensions=["png"]
)
def test_backgroundColor():
    pl.style.use("default")
    matplotlib.rcParams["axes.facecolor"] = "yellow"
    matplotlib.rcParams["axes.edgecolor"] = "red"
    matplotlib.rcParams["xtick.color"] = "green"
    matplotlib.rcParams["ytick.color"] = "blue"
    _run_hist2d("backgroundColor")
    pl.style.use("default")


@image_comparison(
    baseline_images=["levels1"], remove_text=True, extensions=["png"]
)
def test_levels1():
    _run_hist2d("levels1", levels=[0.68, 0.95])


@image_comparison(
    baseline_images=["levels2"], remove_text=True, extensions=["png"]
)
def test_levels2():
    _run_hist2d("levels2", levels=[0.5, 0.75])


@image_comparison(
    baseline_images=["filled"], remove_text=True, extensions=["png"]
)
def test_filled():
    _run_hist2d("filled", fill_contours=True)


@image_comparison(
    baseline_images=["smooth1"], remove_text=True, extensions=["png"]
)
def test_smooth1():
    _run_hist2d("smooth1", bins=50)


@pytest.mark.skipif(not scipy_installed, reason="requires scipy for smoothing")
@image_comparison(
    baseline_images=["smooth2"], remove_text=True, extensions=["png"]
)
def test_smooth2():
    _run_hist2d("smooth2", bins=50, smooth=(1.0, 1.5))


@pytest.mark.skipif(not scipy_installed, reason="requires scipy for smoothing")
@image_comparison(
    baseline_images=["philsplot"], remove_text=True, extensions=["png"]
)
def test_philsplot():
    _run_hist2d(
        "philsplot",
        plot_datapoints=False,
        fill_contours=True,
        levels=[0.68, 0.95],
        color="g",
        bins=50,
        smooth=1.0,
    )


@image_comparison(
    baseline_images=["lowN"], remove_text=True, extensions=["png"]
)
def test_lowN():
    _run_hist2d("lowN", N=20)


@image_comparison(
    baseline_images=["lowNfilled"], remove_text=True, extensions=["png"]
)
def test_lowNfilled():
    _run_hist2d("lowNfilled", N=20, fill_contours=True)


@image_comparison(
    baseline_images=["lowNnofill"], remove_text=True, extensions=["png"]
)
def test_lowNnofill():
    _run_hist2d("lowNnofill", N=20, no_fill_contours=True)


def test_infinite_loop():
    x, y = np.random.rand(2, 1000)
    with pytest.raises(ValueError):
        corner.hist2d(x, y, 20, range=[(0, 1), (2, 3)])