31   std::string 
const output_vis_file = 
output_filename(
"M31_Random_coverage.vis");
 
   33   t_real 
const over_sample = 2;
 
   36   t_real 
const max = M31.array().abs().maxCoeff();
 
   42   t_int 
const number_of_vis = 1e4;
 
   47   SOPT_NOTICE(
"Number of measurements / number of pixels: {}", uv_data.u.size() * 1. / M31.size());
 
   48   auto measurements_transform = std::get<2>(sopt::algorithm::normalise_operator<Vector<t_complex>>(
 
   50           uv_data.u, uv_data.v, uv_data.w, uv_data.weights, M31.cols(), M31.rows(), over_sample,
 
   52       100, 1e-4, Vector<t_complex>::Random(M31.size())));
 
   54   sopt::wavelets::SARA 
const sara{
 
   55       std::make_tuple(
"Dirac", 3u), std::make_tuple(
"DB1", 3u), std::make_tuple(
"DB2", 3u),
 
   56       std::make_tuple(
"DB3", 3u),   std::make_tuple(
"DB4", 3u), std::make_tuple(
"DB5", 3u),
 
   57       std::make_tuple(
"DB6", 3u),   std::make_tuple(
"DB7", 3u), std::make_tuple(
"DB8", 3u)};
 
   59   auto const Psi = sopt::linear_transform<t_complex>(sara, M31.rows(), M31.cols());
 
   62   Vector<t_complex> 
const y0 =
 
   63       (measurements_transform * Vector<t_complex>::Map(M31.data(), M31.size()));
 
   68   Vector<> dimage = (measurements_transform.adjoint() * uv_data.vis).real();
 
   69   t_real 
const max_val = dimage.array().abs().maxCoeff();
 
   70   dimage = dimage / max_val;
 
   71   Vector<t_complex> initial_estimate = Vector<t_complex>::Zero(dimage.size());
 
   72   sopt::utilities::write_tiff(Image<t_real>::Map(dimage.data(), M31.rows(), M31.cols()),
 
   74   pfitsio::write2d(Image<t_real>::Map(dimage.data(), M31.rows(), M31.cols()), dirty_image_fits);
 
   77   auto const purify_regulariser_strength =
 
   78       (Psi.adjoint() * (measurements_transform.adjoint() * uv_data.vis).eval())
 
   86   SOPT_INFO(
"Using epsilon of {} \n", epsilon);
 
   87   auto const padmm = sopt::algorithm::ImagingProximalADMM<t_complex>(uv_data.vis)
 
   89                          .regulariser_strength(purify_regulariser_strength)
 
   90                          .relative_variation(1e-6)
 
   91                          .l2ball_proximal_epsilon(epsilon)
 
   93                          .l1_proximal_tolerance(1e-4)
 
   95                          .l1_proximal_itermax(50)
 
   96                          .l1_proximal_positivity_constraint(
true)
 
   97                          .l1_proximal_real_constraint(
true)
 
   98                          .residual_convergence(epsilon * 1.001)
 
   99                          .lagrange_update_scale(0.9)
 
  101                          .Phi(measurements_transform);
 
  103   auto const posq = sopt::algorithm::positive_quadrant(padmm);
 
  104   auto const min_delta = sigma * std::sqrt(y0.size()) / std::sqrt(9 * M31.size());
 
  107   auto const reweighted =
 
  108       sopt::algorithm::reweighted(padmm).itermax(10).min_delta(min_delta).is_converged(
 
  109           sopt::RelativeVariation<std::complex<t_real>>(1e-3));
 
  110   auto const diagnostic = reweighted();
 
  111   assert(diagnostic.algo.x.size() == M31.size());
 
  112   Image<t_complex> image = Image<t_complex>::Map(diagnostic.algo.x.data(), M31.rows(), M31.cols());
 
  113   sopt::utilities::write_tiff(image.real(), outfile);
 
  115   Image<t_complex> residual = Image<t_complex>::Map(
 
  116       (measurements_transform.adjoint() *
 
  117        (y0 - measurements_transform * Vector<t_complex>::Map(image.data(), image.size())))
 
  120       M31.rows(), M31.cols());
 
std::unique_ptr< std::mt19937_64 > mersenne(new std::mt19937_64(0))
 
const t_real pi
mathematical constant
 
const std::map< std::string, kernel > kernel_from_string
 
void set_level(const std::string &level)
Method to set the logging level of the default Log object.
 
std::shared_ptr< sopt::LinearTransform< T > > init_degrid_operator_2d(const Vector< t_real > &u, const Vector< t_real > &v, const Vector< t_real > &w, const Vector< t_complex > &weights, const t_uint &imsizey, const t_uint &imsizex, const t_real &oversample_ratio=2, const kernels::kernel kernel=kernels::kernel::kb, const t_uint Ju=4, const t_uint Jv=4, const bool w_stacking=false, const t_real &cellx=1, const t_real &celly=1)
Returns linear transform that is the standard degridding operator.
 
void write2d(const Image< t_real > &eigen_image, const pfitsio::header_params &header, const bool &overwrite)
Write image to fits file.
 
Image< t_complex > read2d(const std::string &fits_name)
Read image from fits file.
 
void write_visibility(const utilities::vis_params &uv_vis, const std::string &file_name, const bool w_term)
Writes visibilities to txt.
 
t_real SNR_to_standard_deviation(const Vector< t_complex > &y0, const t_real &SNR)
Converts SNR to RMS noise.
 
Vector< t_complex > add_noise(const Vector< t_complex > &y0, const t_complex &mean, const t_real &standard_deviation)
Add guassian noise to vector.
 
utilities::vis_params random_sample_density(const t_int vis_num, const t_real mean, const t_real standard_deviation, const t_real rms_w)
Generates a random visibility coverage.
 
t_real calculate_l2_radius(const t_uint y_size, const t_real &sigma, const t_real &n_sigma, const std::string distirbution)
A function that calculates the l2 ball radius for sopt.
 
std::string output_filename(std::string const &filename)
Test output file.
 
std::string image_filename(std::string const &filename)
Image filename.
 
void padmm(const std::string &name, const Image< t_complex > &M31, const std::string &kernel, const t_int J, const utilities::vis_params &uv_data, const t_real sigma, const std::tuple< bool, t_real > &w_term)