PURIFY
Next-generation radio interferometric imaging
setup_utils.h
Go to the documentation of this file.
1 #ifndef SETUP_UTILS_H
2 #define SETUP_UTILS_H
3 
4 #include "purify/types.h"
5 #include "purify/logging.h"
7 #include "purify/pfitsio.h"
10 #include "purify/yaml-parser.h"
11 #include <sopt/differentiable_func.h>
12 #include <sopt/non_differentiable_func.h>
13 
14 using namespace purify;
15 
16 struct waveletInfo {
17  std::shared_ptr<const sopt::LinearTransform<Eigen::VectorXcd>> transform;
18  t_uint sara_size;
19 };
20 
23 
24 struct OperatorsInfo {
27  bool using_mpi;
28 };
29 
31 
32 struct inputData {
34  t_real sigma;
35  Vector<t_complex> measurement_op_eigen_vector;
36  std::vector<t_int> image_index;
37  std::vector<t_real> w_stacks;
38 };
39 
40 inputData getInputData(const YamlParser &params,
42  const factory::distributed_wavelet_operator wop_algo, const bool using_mpi);
43 
44 std::shared_ptr<sopt::LinearTransform<Vector<t_complex>>> createMeasurementOperator(
45  const YamlParser &params, const factory::distributed_measurement_operator mop_algo,
46  const factory::distributed_wavelet_operator wop_algo, const bool using_mpi,
47  const std::vector<t_int> &image_index, const std::vector<t_real> &w_stacks,
48  const utilities::vis_params &uv_data, Vector<t_complex> &measurement_op_eigen_vector);
49 
50 void setupCostFunctions(const YamlParser &params, std::unique_ptr<DifferentiableFunc<t_complex>> &f,
51  std::unique_ptr<NonDifferentiableFunc<t_complex>> &g, t_real sigma,
52  sopt::LinearTransform<Vector<t_complex>> &Phi);
53 
55 
56 struct Headers {
60 };
61 
62 Headers genHeaders(const YamlParser &params, const utilities::vis_params &uv_data);
63 
64 void saveMeasurementEigenVector(const YamlParser &params,
65  const Vector<t_complex> &measurement_op_eigen_vector);
66 
67 void savePSF(
68  const YamlParser &params, const pfitsio::header_params &def_header,
69  const std::shared_ptr<sopt::LinearTransform<Vector<t_complex>>> &measurements_transform,
70  const utilities::vis_params &uv_data, const t_real flux_scale, const t_real sigma,
71  const t_real beam_units);
72 
73 void saveDirtyImage(
74  const YamlParser &params, const pfitsio::header_params &def_header,
75  const std::shared_ptr<sopt::LinearTransform<Vector<t_complex>>> &measurements_transform,
76  const utilities::vis_params &uv_data, const t_real beam_units);
77 
78 #endif
distributed_measurement_operator
determine type of distribute for mpi measurement operator
void saveMeasurementEigenVector(const YamlParser &params, const Vector< t_complex > &measurement_op_eigen_vector)
Definition: setup_utils.cc:380
void saveDirtyImage(const YamlParser &params, const pfitsio::header_params &def_header, const std::shared_ptr< sopt::LinearTransform< Vector< t_complex >>> &measurements_transform, const utilities::vis_params &uv_data, const t_real beam_units)
Definition: setup_utils.cc:441
void savePSF(const YamlParser &params, const pfitsio::header_params &def_header, const std::shared_ptr< sopt::LinearTransform< Vector< t_complex >>> &measurements_transform, const utilities::vis_params &uv_data, const t_real flux_scale, const t_real sigma, const t_real beam_units)
Definition: setup_utils.cc:403
std::shared_ptr< sopt::LinearTransform< Vector< t_complex > > > createMeasurementOperator(const YamlParser &params, const factory::distributed_measurement_operator mop_algo, const factory::distributed_wavelet_operator wop_algo, const bool using_mpi, const std::vector< t_int > &image_index, const std::vector< t_real > &w_stacks, const utilities::vis_params &uv_data, Vector< t_complex > &measurement_op_eigen_vector)
Definition: setup_utils.cc:250
waveletInfo createWaveletOperator(YamlParser &params, const factory::distributed_wavelet_operator &wop_algo)
Definition: setup_utils.cc:20
OperatorsInfo selectOperators(YamlParser &params)
Definition: setup_utils.cc:38
void initOutDirectoryWithConfig(YamlParser &params)
Definition: setup_utils.cc:350
Headers genHeaders(const YamlParser &params, const utilities::vis_params &uv_data)
Definition: setup_utils.cc:364
inputData getInputData(const YamlParser &params, const factory::distributed_measurement_operator mop_algo, const factory::distributed_wavelet_operator wop_algo, const bool using_mpi)
Definition: setup_utils.cc:66
void setupCostFunctions(const YamlParser &params, std::unique_ptr< DifferentiableFunc< t_complex >> &f, std::unique_ptr< NonDifferentiableFunc< t_complex >> &g, t_real sigma, sopt::LinearTransform< Vector< t_complex >> &Phi)
Definition: setup_utils.cc:312
pfitsio::header_params residuals_header
Definition: setup_utils.h:58
pfitsio::header_params solution_header
Definition: setup_utils.h:57
pfitsio::header_params def_header
Definition: setup_utils.h:59
factory::distributed_wavelet_operator wop_algo
Definition: setup_utils.h:26
factory::distributed_measurement_operator mop_algo
Definition: setup_utils.h:25
Vector< t_complex > measurement_op_eigen_vector
Definition: setup_utils.h:35
t_real sigma
Definition: setup_utils.h:34
std::vector< t_int > image_index
Definition: setup_utils.h:36
utilities::vis_params uv_data
Definition: setup_utils.h:33
std::vector< t_real > w_stacks
Definition: setup_utils.h:37
std::shared_ptr< const sopt::LinearTransform< Eigen::VectorXcd > > transform
Definition: setup_utils.h:17
t_uint sara_size
Definition: setup_utils.h:18