File: test_settings.py

package info (click to toggle)
wsclean 3.6-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 16,296 kB
  • sloc: cpp: 129,246; python: 22,066; sh: 360; ansic: 230; makefile: 185
file content (137 lines) | stat: -rw-r--r-- 4,631 bytes parent folder | download | duplicates (2)
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
# SPDX-License-Identifier: LGPL-3.0-only

import radler as rd
import multiprocessing
import re


def test_layout():
    settings = rd.Settings()

    nested_structs_ref = set(
        [
            "Generic",
            "LocalRms",
            "MoreSane",
            "Multiscale",
            "Parallel",
            "PixelScale",
            "Python",
            "SpectralFitting",
        ]
    )
    nested_structs = set(
        filter(lambda x: re.match("^[A-Z]{1}", x), dir(settings))
    )
    assert nested_structs == nested_structs_ref

    n_properties_ref = 35
    properties = set(filter(lambda x: re.match("^[a-z]+", x), dir(settings)))
    assert len(properties) == n_properties_ref


def test_default():
    settings = rd.Settings()
    assert settings.trimmed_image_width == 0
    assert settings.trimmed_image_height == 0
    assert settings.channels_out == 1
    assert settings.pixel_scale.x == 0
    assert settings.pixel_scale.y == 0.0
    assert settings.pixel_scale.y == 0.0
    assert settings.pixel_scale.y == 0.0
    assert settings.prefix_name == "wsclean"
    assert settings.thread_count == multiprocessing.cpu_count()
    assert settings.linked_polarizations == set()
    assert settings.parallel.grid_width == 1
    assert settings.parallel.grid_height == 1
    assert settings.parallel.max_threads > 0
    assert settings.absolute_threshold == 0.0
    assert settings.minor_loop_gain == 0.1
    assert settings.major_loop_gain == 1.0
    assert settings.auto_threshold_sigma == None
    assert settings.auto_mask_sigma == None
    assert settings.save_source_list == False
    assert settings.minor_iteration_count == 0
    assert settings.major_iteration_count == 20
    assert settings.divergence_limit == 4.0
    assert settings.allow_negative_components == True
    assert settings.stop_on_negative_components == False
    assert settings.squared_joins == False
    assert settings.spectral_correction_frequency == 0.0
    assert settings.spectral_correction == []
    assert settings.border_ratio == 0.0
    assert settings.fits_mask == ""
    assert settings.casa_mask == ""
    assert settings.horizon_mask_distance == None
    assert settings.horizon_mask_filename == ""
    assert settings.local_rms.method == rd.LocalRmsMethod.none
    assert settings.local_rms.window == 25.0
    assert settings.local_rms.image == ""
    assert settings.spectral_fitting.mode == rd.SpectralFittingMode.no_fitting
    assert settings.spectral_fitting.terms == 0
    assert settings.spectral_fitting.forced_filename == ""
    assert settings.algorithm_type == rd.AlgorithmType.generic_clean

    # Python
    assert settings.python.filename == ""

    # More sane
    assert settings.more_sane.location == ""
    assert settings.more_sane.arguments == ""
    assert settings.more_sane.sigma_levels == []

    # Iuwt
    # ... no options

    # Multiscale
    assert settings.multiscale.fast_sub_minor_loop == True
    assert settings.multiscale.sub_minor_loop_gain == 0.2
    assert settings.multiscale.scale_bias == 0.6
    assert settings.multiscale.max_scales == 0
    assert settings.multiscale.convolution_padding == 1.1
    assert settings.multiscale.scale_list == []
    assert settings.multiscale.shape == rd.MultiscaleShape.tapered_quadratic

    # Generic clean
    assert settings.generic.use_sub_minor_optimization == True


def test_readwrite():
    settings = rd.Settings()
    width = 200
    height = 300
    settings.trimmed_image_width = width
    settings.trimmed_image_height = height
    assert settings.trimmed_image_width == width
    assert settings.trimmed_image_height == height

    # Test change algorithm type
    algorithm_type = rd.AlgorithmType.multiscale
    settings.algorithm_type = algorithm_type
    assert settings.algorithm_type == algorithm_type

    # Test change polarization
    linked_polarizations = set(
        [
            rd.Polarization.stokes_i,
            rd.Polarization.stokes_q,
            rd.Polarization.xy,
        ]
    )
    settings.linked_polarizations = linked_polarizations
    assert settings.linked_polarizations == linked_polarizations

    value = 20.0

    # Test that list properties use value semantics.
    # 'append' does not work, since it's applied to a copy.
    settings.spectral_correction.append(value)
    assert settings.spectral_correction == []

    # Test changing a list property.
    settings.spectral_correction = [value]
    assert settings.spectral_correction == [value]

    # Test nested property
    settings.multiscale.sub_minor_loop_gain = value
    assert settings.multiscale.sub_minor_loop_gain == value