void actionCollect(const std::string &filename, enum CollectingMode mode, bool mwaChannels, size_t flaggedTimesteps, const std::set<size_t> &flaggedAntennae) { StatisticsCollection statisticsCollection; HistogramCollection histogramCollection; actionCollect(filename, mode, statisticsCollection, histogramCollection, mwaChannels, flaggedTimesteps, flaggedAntennae); switch(mode) { case CollectDefault: { std::cout << "Writing quality tables..." << std::endl; QualityTablesFormatter qualityData(filename); statisticsCollection.Save(qualityData); } break; case CollectHistograms: { std::cout << "Writing histogram tables..." << std::endl; HistogramTablesFormatter histograms(filename); histogramCollection.Save(histograms); } break; } std::cout << "Done.\n"; }
StatisticsCollection load(const std::string& filename, std::vector<AntennaInfo>& antennae) { bool remote = aoRemote::ClusteredObservation::IsClusteredFilename(filename); StatisticsCollection statisticsCollection; HistogramCollection histogramCollection; if(remote) { std::unique_ptr<aoRemote::ClusteredObservation> observation = aoRemote::ClusteredObservation::Load(filename); aoRemote::ProcessCommander commander(*observation); commander.PushReadAntennaTablesTask(); commander.PushReadQualityTablesTask(&statisticsCollection, &histogramCollection); commander.Run(); antennae = commander.Antennas(); } else { MeasurementSet ms(filename); const unsigned polarizationCount = ms.PolarizationCount(); statisticsCollection.SetPolarizationCount(polarizationCount); QualityTablesFormatter qualityData(filename); statisticsCollection.Load(qualityData); unsigned antennaCount = ms.AntennaCount(); for(unsigned a=0;a<antennaCount;++a) antennae.push_back(ms.GetAntennaInfo(a)); } return statisticsCollection; }
void actionSummarize(const std::string &filename) { bool remote = aoRemote::ClusteredObservation::IsClusteredFilename(filename); StatisticsCollection statisticsCollection; HistogramCollection histogramCollection; if(remote) { aoRemote::ClusteredObservation *observation = aoRemote::ClusteredObservation::Load(filename); aoRemote::ProcessCommander commander(*observation); commander.PushReadQualityTablesTask(&statisticsCollection, &histogramCollection); commander.Run(); delete observation; } else { MeasurementSet *ms = new MeasurementSet(filename); const unsigned polarizationCount = ms->PolarizationCount(); delete ms; statisticsCollection.SetPolarizationCount(polarizationCount); QualityTablesFormatter qualityData(filename); statisticsCollection.Load(qualityData); } DefaultStatistics statistics(statisticsCollection.PolarizationCount()); statisticsCollection.GetGlobalTimeStatistics(statistics); std::cout << "Time statistics: \n"; printStatistics(statistics); statisticsCollection.GetGlobalFrequencyStatistics(statistics); std::cout << "\nFrequency statistics: \n"; printStatistics(statistics); statisticsCollection.GetGlobalCrossBaselineStatistics(statistics); std::cout << "\nCross-correlated baseline statistics: \n"; printStatistics(statistics); DefaultStatistics singlePolStat = statistics.ToSinglePolarization(); std::cout << "RFIPercentange: " << StatisticsDerivator::GetStatisticAmplitude(QualityTablesFormatter::RFIPercentageStatistic, singlePolStat, 0) << '\n'; statisticsCollection.GetGlobalAutoBaselineStatistics(statistics); std::cout << "\nAuto-correlated baseline: \n"; printStatistics(statistics); }
void actionSummarizeRFI(const std::string &filename) { MeasurementSet *ms = new MeasurementSet(filename); const unsigned polarizationCount = ms->PolarizationCount(); const BandInfo band = ms->GetBandInfo(0); delete ms; StatisticsCollection statisticsCollection; statisticsCollection.SetPolarizationCount(polarizationCount); QualityTablesFormatter qualityData(filename); statisticsCollection.Load(qualityData); DefaultStatistics statistics(statisticsCollection.PolarizationCount()); statisticsCollection.GetGlobalCrossBaselineStatistics(statistics); DefaultStatistics singlePolStat = statistics.ToSinglePolarization(); double start = band.channels.begin()->frequencyHz; double end = band.channels.rbegin()->frequencyHz; std::cout << "Start:\t" << round(start/10000.0)/100.0 << "\tEnd:\t" << round(end/10000.0)/100.0 << "\tRFIPercentange:\t" << StatisticsDerivator::GetStatisticAmplitude(QualityTablesFormatter::RFIPercentageStatistic, singlePolStat, 0) << '\n'; }