test_plot.py 2.68 KB
Newer Older
Martin Reinecke's avatar
Martin Reinecke committed
1
2
3
4
5
6
7
8
9
10
11
12
13
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
Philipp Arras's avatar
Philipp Arras committed
14
# Copyright(C) 2013-2020 Max-Planck-Society
Martin Reinecke's avatar
Martin Reinecke committed
15
16
17
#
# NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik.

Philipp Arras's avatar
Philipp Arras committed
18
19
from itertools import count

Martin Reinecke's avatar
Martin Reinecke committed
20
21
import numpy as np

Martin Reinecke's avatar
Martin Reinecke committed
22
import nifty7 as ift
Philipp Arras's avatar
Philipp Arras committed
23

24
from .common import setup_function, teardown_function
Martin Reinecke's avatar
Martin Reinecke committed
25

Philipp Arras's avatar
Philipp Arras committed
26
27
name = (f'plot{nr}.png' for nr in count())

Martin Reinecke's avatar
Martin Reinecke committed
28
29

def test_plots():
Philipp Arras's avatar
Philipp Arras committed
30
31
32
33
    rg_space1 = ift.makeDomain(ift.RGSpace((10,)))
    rg_space2 = ift.makeDomain(ift.RGSpace((8, 6), distances=1))
    hp_space = ift.makeDomain(ift.HPSpace(5))
    gl_space = ift.makeDomain(ift.GLSpace(10))
Martin Reinecke's avatar
Martin Reinecke committed
34
35
36

    fft = ift.FFTOperator(rg_space2)

37
38
39
40
41
    field_rg1_1 = ift.from_random(rg_space1, 'normal')
    field_rg1_2 = ift.from_random(rg_space1, 'normal')
    field_rg2 = ift.from_random(rg_space2, 'normal')
    field_hp = ift.from_random(hp_space, 'normal')
    field_gl = ift.from_random(gl_space, 'normal')
Martin Reinecke's avatar
Martin Reinecke committed
42
43
44
45
    field_ps = ift.power_analyze(fft.times(field_rg2))

    plot = ift.Plot()
    plot.add(field_rg1_1, title='Single plot')
Philipp Arras's avatar
Philipp Arras committed
46
    plot.output(name=next(name))
Martin Reinecke's avatar
Martin Reinecke committed
47
48
49
50
51
52

    plot = ift.Plot()
    plot.add(field_rg2, title='2d rg')
    plot.add([field_rg1_1, field_rg1_2], title='list 1d rg', label=['1', '2'])
    plot.add(field_rg1_2, title='1d rg, xmin, ymin', xmin=0.5, ymin=0.,
             xlabel='xmin=0.5', ylabel='ymin=0')
Philipp Arras's avatar
Philipp Arras committed
53
    plot.output(title='Three plots', name=next(name))
Martin Reinecke's avatar
Martin Reinecke committed
54
55

    plot = ift.Plot()
Philipp Arras's avatar
Philipp Arras committed
56
    plot.add(field_hp, title='HP planck-color', cmap='Planck-like')
Martin Reinecke's avatar
Martin Reinecke committed
57
58
59
60
    plot.add(field_rg1_2, title='1d rg')
    plot.add(field_ps)
    plot.add(field_gl, title='GL')
    plot.add(field_rg2, title='2d rg')
Philipp Arras's avatar
Philipp Arras committed
61
    plot.output(nx=2, ny=3, title='Five plots', name=next(name))
Lukas Platz's avatar
Lukas Platz committed
62
63
64
65
66
67
68
69
70


def test_mf_plot():
    x_space = ift.RGSpace((16, 16))
    f_space = ift.RGSpace(4)

    d1 = ift.DomainTuple.make([x_space, f_space])
    d2 = ift.DomainTuple.make([f_space, x_space])

71
    f1 = ift.from_random(d1, 'normal')
Lukas Platz's avatar
Lukas Platz committed
72
73
74
75
76
    f2 = ift.makeField(d2, np.moveaxis(f1.val, -1, 0))

    plot = ift.Plot()
    plot.add(f1, block=False, title='f_space_idx = 1')
    plot.add(f2, freq_space_idx=0, title='f_space_idx = 0')
Philipp Arras's avatar
Cleanup    
Philipp Arras committed
77
78
    plot.output(nx=2, ny=1, title='MF-Plots, should look identical',
                name=next(name))