PURIFY
Next-generation radio interferometric imaging
Functions
distribute.cc File Reference
#include "purify/distribute.h"
#include "purify/types.h"
#include "catch2/catch_all.hpp"
#include "purify/directories.h"
#include "purify/utilities.h"
+ Include dependency graph for distribute.cc:

Go to the source code of this file.

Functions

 TEST_CASE ("Distribute")
 

Function Documentation

◆ TEST_CASE()

TEST_CASE ( "Distribute"  )

Definition at line 8 of file distribute.cc.

8  {
9  // Test splitting up of data for separate nodes
10  auto const uv_data = utilities::read_visibility(vla_filename("at166B.3C129.c0.vis"));
11  std::printf("Distributing groups\n");
12  t_int number_of_groups = 4;
13  t_int number_of_vis = uv_data.u.size();
14  std::vector<t_int> groups_equal = distribute::distribute_measurements(
15  uv_data.u.segment(0, number_of_vis), uv_data.v.segment(0, number_of_vis),
16  uv_data.w.segment(0, number_of_vis), number_of_groups, distribute::plan::equal, 1024);
17  // Testing number of visiblities in groups adds to total
18  CHECK(number_of_vis == groups_equal.size());
19  for (t_int i = 0; i < groups_equal.size(); i++) {
20  // checking nodes are in allowable values
21  CHECK(groups_equal[i] >= 0);
22  CHECK(groups_equal[i] < number_of_groups);
23  }
24  std::vector<t_int> groups_distance = distribute::distribute_measurements(
25  uv_data.u.segment(0, number_of_vis), uv_data.v.segment(0, number_of_vis),
26  uv_data.w.segment(0, number_of_vis), number_of_groups, distribute::plan::radial);
27  // Testing number of visiblities in groups adds to total
28  CHECK(number_of_vis == groups_distance.size());
29  for (t_int i = 0; i < groups_distance.size(); i++) {
30  // checking nodes are in allowable values
31  CHECK(groups_distance[i] >= 0);
32  CHECK(groups_distance[i] < number_of_groups);
33  }
34  std::vector<t_int> groups_noorder = distribute::distribute_measurements(
35  uv_data.u.segment(0, number_of_vis), uv_data.v.segment(0, number_of_vis),
36  uv_data.w.segment(0, number_of_vis), number_of_groups, distribute::plan::none);
37  // Testing number of visiblities in groups adds to total
38  CHECK(number_of_vis == groups_noorder.size());
39  for (t_int i = 0; i < groups_noorder.size(); i++) {
40  // checking nodes are in allowable values
41  CHECK(groups_noorder[i] >= 0);
42  CHECK(groups_noorder[i] < number_of_groups);
43  }
44  std::vector<t_int> groups_w_term = distribute::distribute_measurements(
45  uv_data.u.segment(0, number_of_vis), uv_data.v.segment(0, number_of_vis),
46  uv_data.w.segment(0, number_of_vis), number_of_groups, distribute::plan::w_term);
47  // Testing number of visiblities in groups adds to total
48  CHECK(number_of_vis == groups_distance.size());
49  for (t_int i = 0; i < groups_distance.size(); i++) {
50  // checking nodes are in allowable values
51  CHECK(groups_distance[i] >= 0);
52  CHECK(groups_distance[i] < number_of_groups);
53  }
54 }
#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
std::vector< t_int > distribute_measurements(Vector< t_real > const &u, Vector< t_real > const &v, Vector< t_real > const &w, t_int const number_of_nodes, distribute::plan const distribution_plan, t_int const &grid_size)
Distribute visiblities into groups.
Definition: distribute.cc:6
std::string vla_filename(std::string const &filename)
Specific vla data.

References CHECK, purify::distribute::distribute_measurements(), purify::distribute::equal, purify::distribute::none, purify::distribute::radial, purify::utilities::read_visibility(), purify::vla_filename(), and purify::distribute::w_term.