PURIFY
Next-generation radio interferometric imaging
purify_h5.cc
Go to the documentation of this file.
1 #include "catch2/catch_all.hpp"
2 
3 #include "purify/config.h"
4 #include "purify/types.h"
5 #include "purify/logging.h"
7 
8 #include "purify/directories.h"
9 #include "purify/h5reader.h"
10 
11 #include <vector>
12 
13 using namespace purify;
14 
15 TEST_CASE("Purify H5 reader", "[HDF5]") {
16  H5::H5Handler f(atca_filename("0332-391.h5"));
17 
18  const std::vector<double> u = f.read("u");
19  const std::vector<double> v = f.read("v");
20  const std::vector<double> w = f.read("w");
21  const std::vector<double> re = f.read("re");
22  const std::vector<double> im = f.read("im");
23  const std::vector<double> sigma = f.read("sigma");
24 
25  CAPTURE(u.size());
26  CAPTURE(v.size());
27  CAPTURE(w.size());
28  CAPTURE(re.size());
29  CAPTURE(im.size());
30  CAPTURE(sigma.size());
31 
32  const bool pass = u.size() > 0 && u.size() == v.size() && u.size() == w.size() &&
33  u.size() == re.size() && u.size() == im.size() && u.size() == sigma.size();
34  CHECK(pass);
35 }
36 
37 TEST_CASE("Purify H5 writer", "[HDF5]") {
38  const auto uvfits = read_measurements::read_measurements(atca_filename("0332-391.uvfits"));
39 
40  H5::write_visibility(uvfits, "test-h5.h5", false);
41 
42  H5::H5Handler f("test-h5.h5");
43 
44  const std::vector<double> u = f.read("u");
45  const std::vector<double> v = f.read("v");
46  // const std::vector<double> w = f.read("w");
47  const std::vector<double> re = f.read("re");
48  const std::vector<double> im = f.read("im");
49  const std::vector<double> sigma = f.read("sigma");
50 
51  CAPTURE(u.size());
52  CAPTURE(v.size());
53  // CAPTURE(w.size());
54  CAPTURE(re.size());
55  CAPTURE(im.size());
56  CAPTURE(sigma.size());
57 
58  const bool pass = u.size() == uvfits.u.size() &&
59  u.size() == v.size() && /*u.size() == w.size() &&*/
60  u.size() == re.size() && u.size() == im.size() && u.size() == sigma.size();
61 
62  CHECK(pass);
63 }
#define CHECK(CONDITION, ERROR)
Definition: casa.cc:6
Purify interface class to handle HDF5 input files.
Definition: h5reader.h:48
std::vector< T > read(const std::string &label) const
Method to read the entire dataset.
Definition: h5reader.h:76
const std::vector< t_real > u
data for u coordinate
Definition: operators.cc:18
const std::vector< t_real > v
data for v coordinate
Definition: operators.cc:20
void write_visibility(const utilities::vis_params &uv_vis, const std::string &h5name, const bool w_term, const size_t chunksize=0)
Write an HDF5 file with u,v visibilities from a vis_params object.
Definition: h5reader.h:244
utilities::vis_params read_measurements(const std::string &name, const bool w_term, const stokes pol, const utilities::vis_units units)
read in single measurement file
std::string atca_filename(std::string const &filename)
Specific atca data.
TEST_CASE("Purify H5 reader", "[HDF5]")
Definition: purify_h5.cc:15