File: msweightcolumn.cpp

package info (click to toggle)
wsclean 3.6-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 16,296 kB
  • sloc: cpp: 129,246; python: 22,066; sh: 360; ansic: 230; makefile: 185
file content (33 lines) | stat: -rw-r--r-- 981 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "msweightcolumn.h"

#include "msprovider.h"

#include <casacore/ms/MeasurementSets/MeasurementSet.h>

namespace wsclean {

MsWeightColumn::MsWeightColumn(const casacore::MeasurementSet& ms) {
  if (!MSProvider::OpenWeightSpectrumColumn(ms, weight_column_)) {
    weight_column_.reset(new casacore::ArrayColumn<float>(
        ms, casacore::MS::columnName(casacore::MSMainEnums::WEIGHT)));
    type_ = Type::kScalar;
  }
}

void MsWeightColumn::ReadData(MsRowProviderBase::WeightArray& weights,
                              size_t row,
                              const casacore::IPosition& shape) const {
  switch (type_) {
    case Type::kSpectrum:
      weight_column_->get(row, weights, true);
      break;
    case Type::kScalar: {
      casacore::Array<float> scratch_weights;
      weight_column_->get(row, scratch_weights);
      weights.resize(shape);
      MSProvider::ExpandScalarWeights(scratch_weights, weights);
    } break;
  }
}

}  // namespace wsclean