1 #include "purify/config.h" 
    3 #include "catch2/catch_all.hpp" 
    9 #include "purify/directories.h" 
   18   const t_uint imsizex = 128;
 
   19   const t_uint imsizey = 128;
 
   20   const t_real oversample_ratio = 2;
 
   24                                           Vector<t_real>::Ones(5), Vector<t_complex>::Ones(5),
 
   25                                           Vector<t_complex>::Ones(5));
 
   27     auto const uv_pixels = 
utilities::uv_scale(uv_radians, std::floor(oversample_ratio * imsizex),
 
   28                                                std::floor(oversample_ratio * imsizey));
 
   36     CAPTURE(uv_pixels.u.transpose());
 
   37     CHECK(uv_lambda.
u.isApprox(uv_pixels.u * scale, 1e-6));
 
   43     const t_real cell = 3;
 
   45                                           Vector<t_real>::Ones(5), Vector<t_complex>::Ones(5),
 
   46                                           Vector<t_complex>::Ones(5));
 
   48     auto const uv_pixels = 
utilities::uv_scale(uv_radians, std::floor(oversample_ratio * imsizex),
 
   49                                                std::floor(oversample_ratio * imsizey));
 
   57     CAPTURE(uv_pixels.u.transpose());
 
   58     CHECK(uv_lambda.
u.isApprox(uv_pixels.u * scale, 1e-6));
 
   65   const t_real oversample_ratio = 2;
 
   66   const t_int imsize = 8192;
 
   67   for (t_real FoV : {0.1, 0.2, 0.3, 0.4, 0.5, 1., 5., 10., 15., 20., 25., 30., 40., 50., 60., 70.,
 
   69     const t_real cell = FoV / imsize * 60 * 60;
 
   70     const t_real miriad_cell =
 
   75     CAPTURE(miriad_cell * imsize / 60. / 60.);
 
   76     CAPTURE((1 - miriad_cell * imsize / 60. / 60. / FoV) * FoV);
 
   78       CHECK(cell == Approx(miriad_cell).margin(1e-12));
 
   80       CHECK(cell > miriad_cell);
 
   85   const t_int imsizex = 128;
 
   86   const t_int imsizey = 128;
 
   87   SECTION(
"w is zero") {
 
   88     const t_real w_rate = 0;
 
   89     const Image<t_complex> chirp_image =
 
   91     REQUIRE(chirp_image.cols() == imsizex);
 
   92     REQUIRE(chirp_image.rows() == imsizey);
 
   93     REQUIRE(chirp_image.isApprox(Image<t_complex>::Constant(imsizey, imsizex, 1)));
 
   98   const t_int imsizex = 1024;
 
   99   const t_int imsizey = 1024;
 
  100   const t_real cellx = 10;
 
  101   const t_real celly = 10;
 
  102   const t_real oversample_ratio = 2;
 
  104   const Vector<t_real> 
u = Vector<t_real>::Random(M) * 1000;
 
  105   const Vector<t_real> 
v = Vector<t_real>::Random(M) * 1000;
 
  107   const Vector<t_complex> weights =
 
  109   REQUIRE(weights.size() == M);
 
  110   CHECK(weights.isApprox(Vector<t_complex>::Ones(weights.size())));
 
#define CHECK(CONDITION, ERROR)
 
const std::vector< t_real > u
data for u coordinate
 
const std::vector< t_real > v
data for v coordinate
 
utilities::vis_params uv_scale(const utilities::vis_params &uv_vis, const t_int &sizex, const t_int &sizey)
scales the visibilities to units of pixels
 
utilities::vis_params set_cell_size(const sopt::mpi::Communicator &comm, utilities::vis_params const &uv_vis, const t_real &cell_x, const t_real &cell_y)
 
Matrix< t_complex > generate_dde(const DDE &dde, const t_real cell_x, const t_real cell_y, const t_uint x_size, const t_uint y_size, const t_real stop_gap)
Generate image of DDE for aw-stacking.
 
t_real equivalent_miriad_cell_size(const t_real cell, const t_uint imsize, const t_real oversample_ratio)
for a given purify cell size in arcsec provide the equivalent miriad cell size in arcsec
 
Vector< t_complex > sample_density_weights(const Vector< t_real > &u, const Vector< t_real > &v, const t_real cellx, const t_real celly, const t_uint imsizex, const t_uint imsizey, const t_real oversample_ratio, const t_real scale)
create sample density weights for a given field of view, uniform weighting
 
t_real pixel_to_lambda(const t_real cell, const t_uint imsize, const t_real oversample_ratio)
return factors to convert between arcsecond pixel size image space and lambda for uv space