File: purify_h5.cc

package info (click to toggle)
purify 5.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 186,836 kB
  • sloc: cpp: 17,731; python: 510; xml: 182; makefile: 7; sh: 6
file content (63 lines) | stat: -rw-r--r-- 1,849 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
#include "catch2/catch_all.hpp"

#include "purify/config.h"
#include "purify/types.h"
#include "purify/logging.h"
#include "purify/read_measurements.h"

#include "purify/directories.h"
#include "purify/h5reader.h"

#include <vector>

using namespace purify;

TEST_CASE("Purify H5 reader", "[HDF5]") {
  H5::H5Handler f(atca_filename("0332-391.h5"));

  const std::vector<double> u = f.read("u");
  const std::vector<double> v = f.read("v");
  const std::vector<double> w = f.read("w");
  const std::vector<double> re = f.read("re");
  const std::vector<double> im = f.read("im");
  const std::vector<double> sigma = f.read("sigma");

  CAPTURE(u.size());
  CAPTURE(v.size());
  CAPTURE(w.size());
  CAPTURE(re.size());
  CAPTURE(im.size());
  CAPTURE(sigma.size());

  const bool pass = u.size() > 0 && u.size() == v.size() && u.size() == w.size() &&
                    u.size() == re.size() && u.size() == im.size() && u.size() == sigma.size();
  CHECK(pass);
}

TEST_CASE("Purify H5 writer", "[HDF5]") {
  const auto uvfits = read_measurements::read_measurements(atca_filename("0332-391.uvfits"));

  H5::write_visibility(uvfits, "test-h5.h5", false);

  H5::H5Handler f("test-h5.h5");

  const std::vector<double> u = f.read("u");
  const std::vector<double> v = f.read("v");
  // const std::vector<double> w = f.read("w");
  const std::vector<double> re = f.read("re");
  const std::vector<double> im = f.read("im");
  const std::vector<double> sigma = f.read("sigma");

  CAPTURE(u.size());
  CAPTURE(v.size());
  // CAPTURE(w.size());
  CAPTURE(re.size());
  CAPTURE(im.size());
  CAPTURE(sigma.size());

  const bool pass = u.size() == uvfits.u.size() &&
                    u.size() == v.size() && /*u.size() == w.size() &&*/
                    u.size() == re.size() && u.size() == im.size() && u.size() == sigma.size();

  CHECK(pass);
}