4 #include <yaml-cpp/yaml.h>
5 #include "catch2/catch_all.hpp"
6 #include "purify/directories.h"
11 TEST_CASE(
"Yaml parser and setting variables test") {
16 SECTION(
"Check the GeneralConfiguration measurement input variables") {
18 std::vector<std::string> expected_measurements = {
"/path/to/measurment/set"};
19 REQUIRE(yaml_parser_m.measurements() == expected_measurements);
20 REQUIRE(yaml_parser_m.measurements_polarization() ==
stokes::I);
22 REQUIRE(yaml_parser_m.measurements_sigma() == 0.1);
23 REQUIRE(yaml_parser_m.skymodel() ==
"");
24 REQUIRE(yaml_parser_m.signal_to_noise() == 30);
25 REQUIRE(yaml_parser_m.number_of_measurements() == 100000);
26 REQUIRE(yaml_parser_m.w_rms() == 100.);
27 REQUIRE(yaml_parser_m.warm_start() ==
"/path/to/warm/start/image");
29 SECTION(
"Check the GeneralConfiguration simulation input variables") {
33 REQUIRE(yaml_parser_s.measurements() ==
34 std::vector<std::string>({
"path/to/coverage/measurement/file"}));
35 REQUIRE(yaml_parser_s.measurements_polarization() ==
stokes::I);
37 REQUIRE(yaml_parser_s.measurements_sigma() == 1);
38 REQUIRE(yaml_parser_s.skymodel() ==
"/path/to/sky/image");
39 REQUIRE(yaml_parser_s.signal_to_noise() == 10);
40 REQUIRE(yaml_parser_s.sim_J() == 8);
42 SECTION(
"Check the rest of the GeneralConfiguration variables") {
43 REQUIRE(yaml_parser.filepath() == file_path);
44 REQUIRE(yaml_parser.logging() ==
"debug");
45 REQUIRE(yaml_parser.iterations() == 100);
46 REQUIRE(yaml_parser.epsilonScaling() == 1);
47 REQUIRE(yaml_parser.update_iters() == 0);
48 REQUIRE(yaml_parser.update_tolerance() == 1e-1);
49 REQUIRE(yaml_parser.output_prefix() ==
"/path/to/output/dir");
51 SECTION(
"Check the MeasureOperators node variables") {
52 REQUIRE(yaml_parser.kernel() ==
"kb");
53 REQUIRE(yaml_parser.oversampling() == 2);
54 REQUIRE(yaml_parser.powMethod_iter() == 100);
55 REQUIRE(yaml_parser.powMethod_tolerance() ==
float(1e-4));
56 REQUIRE(yaml_parser.cellsizex() == 1);
57 REQUIRE(yaml_parser.cellsizey() == 1);
58 REQUIRE(yaml_parser.height() == 1024);
59 REQUIRE(yaml_parser.width() == 1024);
60 REQUIRE(yaml_parser.Jx() == 4);
61 REQUIRE(yaml_parser.Jy() == 4);
62 REQUIRE(yaml_parser.Jw() == 30);
63 REQUIRE(yaml_parser.wprojection() ==
false);
64 REQUIRE(yaml_parser.mpi_wstacking() ==
false);
65 REQUIRE(yaml_parser.mpi_all_to_all() ==
false);
66 REQUIRE(yaml_parser.kmeans_iters() == 100);
67 REQUIRE(yaml_parser.gpu() ==
false);
69 SECTION(
"Check the SARA node variables") {
70 std::vector<std::string> expected_wavelets = {
"Dirac",
"DB1",
"DB2",
"DB3",
"DB4",
71 "DB5",
"DB6",
"DB7",
"DB8"};
72 REQUIRE(yaml_parser.wavelet_basis() == expected_wavelets);
73 REQUIRE(yaml_parser.wavelet_levels() == 4);
74 REQUIRE(yaml_parser.algorithm() ==
"primaldual");
76 SECTION(
"Check the AlgorithmOptions node variables") {
77 REQUIRE(yaml_parser.epsilonConvergenceScaling() == 1);
78 REQUIRE(yaml_parser.realValueConstraint() ==
true);
79 REQUIRE(yaml_parser.positiveValueConstraint() ==
true);
81 REQUIRE(yaml_parser.relVarianceConvergence() == 1e-3);
83 SECTION(
"Check the writeOutput method") {
86 std::string file_path_save = yaml_parser_m.output_prefix() +
"/output_" +
87 yaml_parser_m.timestamp() +
"/test_measurements_config_save.yaml";
89 REQUIRE(yaml_parser_check.filepath() == file_path_save);
90 REQUIRE(yaml_parser_check.logging() == yaml_parser_m.logging());
91 REQUIRE(yaml_parser_check.iterations() == yaml_parser_m.iterations());
92 REQUIRE(yaml_parser_check.epsilonScaling() == yaml_parser_m.epsilonScaling());
93 REQUIRE(yaml_parser_check.update_tolerance() == yaml_parser_m.update_tolerance());
94 REQUIRE(yaml_parser_check.update_iters() == yaml_parser_m.update_iters());
95 REQUIRE(yaml_parser_check.output_prefix() == yaml_parser_m.output_prefix());
96 REQUIRE(yaml_parser_check.source() == yaml_parser_m.source());
97 REQUIRE(yaml_parser_check.measurements() == yaml_parser_m.measurements());
98 REQUIRE(yaml_parser_check.measurements_polarization() ==
99 yaml_parser_m.measurements_polarization());
100 REQUIRE(yaml_parser_check.measurements_units() == yaml_parser_m.measurements_units());
101 REQUIRE(yaml_parser_check.measurements_sigma() == yaml_parser_m.measurements_sigma());
102 REQUIRE(yaml_parser_check.skymodel() == yaml_parser_m.skymodel());
103 REQUIRE(yaml_parser_check.signal_to_noise() == yaml_parser_m.signal_to_noise());
104 REQUIRE(yaml_parser_check.number_of_measurements() == yaml_parser_m.number_of_measurements());
105 REQUIRE(yaml_parser_check.w_rms() == yaml_parser_m.w_rms());
106 REQUIRE(yaml_parser_check.kernel() == yaml_parser_m.kernel());
107 REQUIRE(yaml_parser_check.oversampling() == yaml_parser_m.oversampling());
108 REQUIRE(yaml_parser_check.powMethod_iter() == yaml_parser_m.powMethod_iter());
109 REQUIRE(yaml_parser_check.powMethod_tolerance() == yaml_parser_m.powMethod_tolerance());
110 REQUIRE(yaml_parser_check.cellsizex() == yaml_parser_m.cellsizex());
111 REQUIRE(yaml_parser_check.cellsizey() == yaml_parser_m.cellsizey());
112 REQUIRE(yaml_parser_check.width() == yaml_parser_m.width());
113 REQUIRE(yaml_parser_check.mpi_all_to_all() == yaml_parser_m.mpi_all_to_all());
114 REQUIRE(yaml_parser_check.height() == yaml_parser_m.height());
115 REQUIRE(yaml_parser_check.Jx() == yaml_parser_m.Jx());
116 REQUIRE(yaml_parser_check.Jy() == yaml_parser_m.Jy());
117 REQUIRE(yaml_parser_check.gpu() == yaml_parser_m.gpu());
118 REQUIRE(yaml_parser.wavelet_basis() == yaml_parser_m.wavelet_basis());
119 REQUIRE(yaml_parser.wavelet_levels() == yaml_parser_m.wavelet_levels());
120 REQUIRE(yaml_parser.algorithm() == yaml_parser_m.algorithm());
121 REQUIRE(yaml_parser.epsilonConvergenceScaling() == yaml_parser_m.epsilonConvergenceScaling());
122 REQUIRE(yaml_parser.realValueConstraint() == yaml_parser_m.realValueConstraint());
123 REQUIRE(yaml_parser.positiveValueConstraint() == yaml_parser_m.positiveValueConstraint());
124 REQUIRE(yaml_parser.mpiAlgorithm() == yaml_parser_m.mpiAlgorithm());
125 REQUIRE(yaml_parser.relVarianceConvergence() == yaml_parser_m.relVarianceConvergence());
126 std::remove(file_path_save.c_str());
#define CHECK(CONDITION, ERROR)
std::string version()
Returns library version.
std::string data_filename(std::string const &filename)
Holds data and such.
TEST_CASE("Yaml parser and setting variables test")