PURIFY
Next-generation radio interferometric imaging
Functions
uvfits.cc File Reference
#include "purify/config.h"
#include "purify/types.h"
#include "catch2/catch_all.hpp"
#include "purify/logging.h"
#include <iostream>
#include "purify/directories.h"
#include "purify/uvfits.h"
+ Include dependency graph for uvfits.cc:

Go to the source code of this file.

Functions

 TEST_CASE ("readfile")
 

Function Documentation

◆ TEST_CASE()

TEST_CASE ( "readfile"  )

Definition at line 12 of file uvfits.cc.

12  {
14  const std::string filename = atca_filename("0332-391");
15  SECTION("filter") {
16  const auto uvfits = pfitsio::read_uvfits(filename + ".uvfits", true, stokes::I);
17  const auto vis = utilities::read_visibility(filename + ".vis", true);
18  REQUIRE(299792458. == constant::c);
19  REQUIRE(1483999958.029309988 == Approx(uvfits.frequencies(0)).epsilon(1e-12));
20  REQUIRE(13 == uvfits.frequencies.size());
21  CHECK(uvfits.size() / 22675 == 10);
22  CHECK(vis.size() / 22675 == 10);
23  CHECK(uvfits.size() == vis.size());
24  for (int i = 0; i < uvfits.size(); i++) {
25  CAPTURE(i);
26  CAPTURE(vis.u(i));
27  CAPTURE(uvfits.u(i));
28  CAPTURE(vis.v(i));
29  CAPTURE(uvfits.v(i));
30  CAPTURE(vis.w(i));
31  CAPTURE(uvfits.w(i));
32  CAPTURE(vis.vis(i));
33  CAPTURE(uvfits.vis(i));
34  CAPTURE(vis.weights(i));
35  CAPTURE(uvfits.weights(i));
36  REQUIRE(std::abs((uvfits.u(i) - vis.u(i)) / vis.u(i)) < 1e-4);
37  REQUIRE(std::abs((uvfits.v(i) - vis.v(i)) / vis.v(i)) < 1e-4);
38  REQUIRE(std::abs((uvfits.w(i) - vis.w(i)) / vis.w(i)) < 1e-4);
39  if (std::abs(vis.weights(i)) > 0)
40  REQUIRE(std::abs((uvfits.weights(i) - vis.weights(i)) / vis.weights(i)) < 1e-4);
41  if (std::abs(uvfits.weights(i)) > 0)
42  REQUIRE(std::abs((uvfits.weights(i) - vis.weights(i)) / uvfits.weights(i)) < 1e-4);
43  if (std::abs(vis.vis(i)) > 0)
44  REQUIRE(std::abs((uvfits.vis(i) - vis.vis(i)) / vis.vis(i)) < 1e-4);
45  if (std::abs(uvfits.vis(i)) > 0)
46  REQUIRE(std::abs((uvfits.vis(i) - vis.vis(i)) / uvfits.vis(i)) < 1e-4);
47  }
48  }
49  SECTION("no_filter") {
50  const auto uvfits = pfitsio::read_uvfits(filename + ".uvfits", false, stokes::I);
51  const auto vis = utilities::read_visibility(filename + "_nofilter.vis", true);
52  REQUIRE(299792458. == constant::c);
53  REQUIRE(1483999958.029309988 == Approx(uvfits.frequencies(0)).epsilon(1e-12));
54  REQUIRE(uvfits.size() == vis.size());
55  for (int i = 0; i < uvfits.size(); i++) {
56  CAPTURE(i);
57  CAPTURE(vis.u(i));
58  CAPTURE(uvfits.u(i));
59  CAPTURE(vis.v(i));
60  CAPTURE(uvfits.v(i));
61  CAPTURE(vis.w(i));
62  CAPTURE(uvfits.w(i));
63  CAPTURE(vis.vis(i));
64  CAPTURE(uvfits.vis(i));
65  CAPTURE(vis.weights(i));
66  CAPTURE(uvfits.weights(i));
67  REQUIRE(uvfits.u(i) == Approx(vis.u(i)).epsilon(1e-4));
68  REQUIRE(uvfits.v(i) == Approx(vis.v(i)).epsilon(1e-4));
69  REQUIRE(uvfits.w(i) == Approx(vis.w(i)).epsilon(1e-4));
70  }
71  }
72 }
#define CHECK(CONDITION, ERROR)
Definition: casa.cc:6
utilities::vis_params read_visibility(const std::string &vis_name, const bool w_term)
Reads an HDF5 file with u,v visibilities, constructs a vis_params object and returns it.
Definition: h5reader.h:166
const t_real c
speed of light in vacuum
Definition: types.h:72
void set_level(const std::string &level)
Method to set the logging level of the default Log object.
Definition: logging.h:137
utilities::vis_params read_uvfits(const std::string &filename, const bool flag, const stokes pol)
Read uvfits file.
Definition: uvfits.cc:49
std::string atca_filename(std::string const &filename)
Specific atca data.

References purify::atca_filename(), purify::constant::c, CHECK, purify::I, purify::pfitsio::read_uvfits(), purify::utilities::read_visibility(), and purify::logging::set_level().