4 #ifndef DP3_STEPS_IDGPREDICT_H_
5 #define DP3_STEPS_IDGPREDICT_H_
17 #include <casacore/ms/MeasurementSets/MeasurementSet.h>
19 #include <EveryBeam/aterms/atermbase.h>
21 #include <schaapcommon/facets/facetimage.h>
22 #include <schaapcommon/facets/facet.h>
24 #include <aocommon/fits/fitsreader.h>
25 #include <aocommon/uvector.h>
38 const std::vector<aocommon::FitsReader>& readers,
39 std::vector<schaapcommon::facets::Facet>&& facets,
40 const std::string& ds9_regions_file =
"");
50 bool process(std::unique_ptr<base::DPBuffer> buffer)
override;
54 void show(std::ostream&)
const override;
56 void showTimings(std::ostream&,
double duration)
const override;
66 std::vector<aocommon::xt::UTensor<std::complex<float>, 3>>
Predict(
78 const std::vector<std::string>& fits_model_files);
82 static std::vector<schaapcommon::facets::Facet>
GetFacets(
83 const std::string& ds9_regions_file,
const double ra,
const double dec,
84 const double pixel_size_x,
const double pixel_size_y,
85 const size_t full_width,
const size_t full_height);
89 static std::vector<schaapcommon::facets::Facet>
GetFacets(
90 const std::string& ds9_regions_file,
const aocommon::FitsReader& reader);
96 std::vector<aocommon::UVector<float>> GetModelImages();
102 void InitializeATerms(
const casacore::MeasurementSet& ms);
107 aocommon::UVector<std::complex<float>> GetAtermValues(
size_t direction)
const;
111 std::vector<const double*> InitializeUVWs();
119 std::vector<aocommon::xt::UTensor<std::complex<float>, 3>>
120 ComputeVisibilities(
size_t direction,
const std::vector<const double*>& uvws,
121 std::complex<float>* term_data)
const;
127 void CorrectVisibilities(
128 std::vector<aocommon::xt::UTensor<std::complex<float>, 3>>& result,
129 const std::complex<float>* term_data);
134 size_t GetAllocatableBuffers(
size_t memory);
137 size_t GetSubgridCount(
size_t direction)
const;
142 std::vector<schaapcommon::facets::FacetImage> images_;
143 std::vector<std::unique_ptr<idg::api::BufferSet>> buffersets_;
145 struct FacetMetaData {
146 FacetMetaData(
double _dl,
double _dm,
double _dp)
147 : dl(_dl), dm(_dm), dp(_dp) {}
150 std::vector<FacetMetaData> meta_data_;
152 std::vector<std::unique_ptr<base::DPBuffer>> buffers_;
154 double ref_frequency_;
155 double pixel_size_x_, pixel_size_y_;
156 std::vector<aocommon::FitsReader> readers_;
160 std::vector<std::size_t> ant1_;
161 std::vector<std::size_t> ant2_;
165 double max_baseline_;
166 std::vector<std::pair<double, double>> directions_;
170 std::vector<std::unique_ptr<everybeam::aterms::ATermBase>> aterms_;
174 mutable std::vector<aocommon::UVector<std::complex<float>>> aterm_values_;
Class to hold code for virtual base class for Flaggers in DP3.
General info about DP3 data processing attributes like averaging.
Definition: DPInfo.h:35
Implements a map of Key-Value pairs.
Definition: ParameterSet.h:31
Definition: IDGPredict.h:35
void updateInfo(const base::DPInfo &info) override
static std::vector< schaapcommon::facets::Facet > GetFacets(const std::string &ds9_regions_file, const aocommon::FitsReader &reader)
void finish() override
Finish the processing of this step and subsequent steps.
void SetBufferSize(size_t nTimesteps)
IDGPredict(const common::ParameterSet &, const std::string &prefix)
size_t GetBufferSize() const
static std::vector< aocommon::FitsReader > GetReaders(const std::vector< std::string > &fits_model_files)
Read the fits files (nterms) for the idg prediction.
IDGPredict(const common::ParameterSet &parset, const std::string &prefix, const std::vector< aocommon::FitsReader > &readers, std::vector< schaapcommon::facets::Facet > &&facets, const std::string &ds9_regions_file="")
static std::vector< schaapcommon::facets::Facet > GetFacets(const std::string &ds9_regions_file, const double ra, const double dec, const double pixel_size_x, const double pixel_size_y, const size_t full_width, const size_t full_height)
void showTimings(std::ostream &, double duration) const override
void show(std::ostream &) const override
Show the step parameters.
base::Direction GetFirstDirection() const override
bool process(std::unique_ptr< base::DPBuffer > buffer) override
common::Fields getRequiredFields() const override
Get the fields required by the current step.
Definition: IDGPredict.h:44
std::vector< aocommon::xt::UTensor< std::complex< float >, 3 > > Predict(size_t direction)
Common interface for steps that produce model data.
Definition: Step.h:172
static constexpr dp3::common::Fields kUvwField
Definition: Step.h:66
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53
A direction on the celestial sphere.
Definition: Direction.h:15