Skip to content
Snippets Groups Projects
Commit 2a424255 authored by Andre Offringa's avatar Andre Offringa
Browse files

Bug 1491: fixing issue when comparing flags : Set flagging to original did not work consistently

parent 24bdea2d
No related branches found
No related tags found
No related merge requests found
Showing
with 41 additions and 25 deletions
......@@ -354,11 +354,6 @@ class TimeFrequencyData
_flagCoverage = IndividualPolarisationFlagCoverage;
}
void SetMaskFrom(const TimeFrequencyData &data)
{
data.CopyFlaggingTo(this);
}
TimeFrequencyData *CreateTFData(PhaseRepresentation phase) const
{
if(phase == _phaseRepresentation)
......
......@@ -146,13 +146,14 @@ class RFIStatistics {
RFIStatistics *baselineStatistics;
};
RFIStatistics() : _separateBaselineStatistics(false), _compareFlags(false) { }
RFIStatistics() : _separateBaselineStatistics(false), _compareFlags(false), _filePrefix("") { }
~RFIStatistics() { }
void Add(const TimeFrequencyData &data, TimeFrequencyMetaDataCPtr metaData);
void Add(const TimeFrequencyData &data, TimeFrequencyMetaDataCPtr metaData, Mask2DCPtr groundTruthFlagging)
{
Add(data, metaData);
boost::mutex::scoped_lock lock(_mutex);
if(metaData->Antenna1().id == metaData->Antenna2().id) {
addChannelComparison(_autoChannels, data, metaData, groundTruthFlagging);
addAmplitudeComparison(_autoAmplitudes, data, metaData, groundTruthFlagging);
......
......@@ -76,7 +76,7 @@ namespace rfiStrategy {
TimeFrequencyData *newContaminatedData =
TimeFrequencyData::CreateTFDataFromComplexCombination(artifacts.ContaminatedData(), artifacts.ContaminatedData());
newContaminatedData->MultiplyImages(1.0L/M_SQRT2);
newContaminatedData->SetMaskFrom(artifacts.ContaminatedData());
newContaminatedData->SetMask(artifacts.ContaminatedData());
artifacts.SetContaminatedData(*newContaminatedData);
delete newContaminatedData;
}
......@@ -85,7 +85,7 @@ namespace rfiStrategy {
TimeFrequencyData *newRevisedData =
TimeFrequencyData::CreateTFDataFromComplexCombination(artifacts.RevisedData(), artifacts.RevisedData());
newRevisedData->MultiplyImages(1.0L/M_SQRT2);
newRevisedData->SetMaskFrom(artifacts.RevisedData());
newRevisedData->SetMask(artifacts.RevisedData());
artifacts.SetRevisedData(*newRevisedData);
delete newRevisedData;
}
......@@ -94,7 +94,7 @@ namespace rfiStrategy {
TimeFrequencyData *newOriginalData =
TimeFrequencyData::CreateTFDataFromComplexCombination(artifacts.OriginalData(), artifacts.OriginalData());
newOriginalData->MultiplyImages(1.0L/M_SQRT2);
newOriginalData->SetMaskFrom(artifacts.OriginalData());
newOriginalData->SetMask(artifacts.OriginalData());
artifacts.SetOriginalData(*newOriginalData);
delete newOriginalData;
}
......
......@@ -73,7 +73,19 @@ namespace rfiStrategy {
artifacts.ContaminatedData().SetGlobalMask(artifacts.OriginalData().GetSingleMask());
break;
case ToOriginal:
artifacts.OriginalData().SetGlobalMask(artifacts.ContaminatedData().GetSingleMask());
if(artifacts.OriginalData().MaskCount() == 1)
artifacts.OriginalData().SetGlobalMask(artifacts.ContaminatedData().GetSingleMask());
else {
if(artifacts.ContaminatedData().MaskCount() == 1) {
for(unsigned i=0;i<artifacts.OriginalData().MaskCount();++i)
artifacts.OriginalData().SetMask(i, artifacts.ContaminatedData().GetSingleMask());
} else if(artifacts.ContaminatedData().MaskCount() != artifacts.OriginalData().MaskCount()) {
throw BadUsageException("Error : can't set flagging to original when polarisations are incompatible");
} else {
for(unsigned i=0;i<artifacts.OriginalData().MaskCount();++i)
artifacts.OriginalData().SetMask(i, artifacts.ContaminatedData().GetMask(i));
}
}
break;
case Invert: {
Mask2DPtr mask = Mask2D::CreateCopy(artifacts.ContaminatedData().GetSingleMask());
......
......@@ -88,7 +88,7 @@ namespace rfiStrategy {
TimeFrequencyData *phaseAndPolData =
phaseData->CreateTFData(artifacts.ContaminatedData().Polarisation());
delete phaseData;
phaseAndPolData->SetMaskFrom(artifacts.ContaminatedData());
phaseAndPolData->SetMask(artifacts.ContaminatedData());
artifacts.SetContaminatedData(*phaseAndPolData);
delete phaseAndPolData;
}
......@@ -98,7 +98,7 @@ namespace rfiStrategy {
Image2DPtr zero =
Image2D::CreateEmptyImagePtr(artifacts.ContaminatedData().ImageWidth(), artifacts.ContaminatedData().ImageHeight());
TimeFrequencyData data(artifacts.ContaminatedData().PhaseRepresentation(), artifacts.ContaminatedData().Polarisation(), zero);
data.SetMaskFrom(artifacts.ContaminatedData());
data.SetMask(artifacts.ContaminatedData());
artifacts.SetContaminatedData(data);
break;
}
......@@ -119,7 +119,7 @@ namespace rfiStrategy {
TimeFrequencyData *summedData =
TimeFrequencyData::CreateTFDataFromSum(*phaseAndPolData, artifacts.RevisedData());
delete phaseAndPolData;
summedData->SetMaskFrom(artifacts.RevisedData());
summedData->SetMask(artifacts.RevisedData());
artifacts.SetRevisedData(*summedData);
delete summedData;
}
......
......@@ -21,6 +21,8 @@
#include <AOFlagger/rfi/strategy/artifactset.h>
#include <stdexcept>
namespace rfiStrategy {
void ChangeResolutionAction::Perform(class ArtifactSet &artifacts, class ProgressListener &listener)
......@@ -46,7 +48,7 @@ namespace rfiStrategy {
{
TimeFrequencyData *contaminatedData =
TimeFrequencyData::CreateTFDataFromDiff(oldContaminated, artifacts.RevisedData());
contaminatedData->SetMaskFrom(oldContaminated);
contaminatedData->SetMask(oldContaminated);
artifacts.SetContaminatedData(*contaminatedData);
delete contaminatedData;
}
......@@ -78,7 +80,7 @@ namespace rfiStrategy {
{
TimeFrequencyData *contaminatedData =
TimeFrequencyData::CreateTFDataFromDiff(oldContaminated, artifacts.RevisedData());
contaminatedData->SetMaskFrom(oldContaminated);
contaminatedData->SetMask(oldContaminated);
artifacts.SetContaminatedData(*contaminatedData);
delete contaminatedData;
}
......@@ -128,6 +130,8 @@ namespace rfiStrategy {
if(restoreImage)
{
size_t imageCount = originalData.ImageCount();
if(imageCount != changedData.ImageCount())
throw std::runtime_error("When restoring resolution in change resolution action, original data and changed data do not have the same number of images");
for(size_t i=0;i<imageCount;++i)
{
Image2DCPtr image = changedData.GetImage(i);
......@@ -137,7 +141,8 @@ namespace rfiStrategy {
}
if(_restoreMasks)
{
size_t maskCount = changedData.MaskCount();
originalData.SetMask(changedData);
size_t maskCount = originalData.MaskCount();
for(size_t i=0;i<maskCount;++i)
{
Mask2DCPtr mask = changedData.GetMask(i);
......@@ -153,6 +158,8 @@ namespace rfiStrategy {
if(restoreImage)
{
size_t imageCount = originalData.ImageCount();
if(imageCount != changedData.ImageCount())
throw std::runtime_error("When restoring resolution in change resolution action, original data and changed data do not have the same number of images");
for(size_t i=0;i<imageCount;++i)
{
Image2DCPtr image = changedData.GetImage(i);
......@@ -162,7 +169,8 @@ namespace rfiStrategy {
}
if(_restoreMasks)
{
size_t maskCount = changedData.MaskCount();
originalData.SetMask(changedData);
size_t maskCount = originalData.MaskCount();
for(size_t i=0;i<maskCount;++i)
{
Mask2DCPtr mask = changedData.GetMask(i);
......
......@@ -57,11 +57,11 @@ namespace rfiStrategy {
}
TimeFrequencyData newContaminatedData = fitter.Background();
newContaminatedData.SetMaskFrom(artifacts.ContaminatedData());
newContaminatedData.SetMask(artifacts.ContaminatedData());
TimeFrequencyData *newRevisedData =
TimeFrequencyData::CreateTFDataFromDiff(artifacts.OriginalData(), newContaminatedData);
newRevisedData->SetMaskFrom(artifacts.RevisedData());
newRevisedData->SetMask(artifacts.RevisedData());
artifacts.SetRevisedData(*newRevisedData);
artifacts.SetContaminatedData(newContaminatedData);
......
......@@ -92,11 +92,11 @@ namespace rfiStrategy {
listener.OnProgress(i+1, taskCount);
}
TimeFrequencyData newRevisedData = method.Background();
newRevisedData.SetMaskFrom(artifacts.RevisedData());
newRevisedData.SetMask(artifacts.RevisedData());
TimeFrequencyData *contaminatedData =
TimeFrequencyData::CreateTFDataFromDiff(artifacts.ContaminatedData(), newRevisedData);
contaminatedData->SetMaskFrom(artifacts.ContaminatedData());
contaminatedData->SetMask(artifacts.ContaminatedData());
artifacts.SetRevisedData(newRevisedData);
artifacts.SetContaminatedData(*contaminatedData);
......
......@@ -77,11 +77,11 @@ namespace rfiStrategy {
for(size_t p=0;p<imageCount;++p)
newRevisedData.SetImage(p, images[p]);
newRevisedData.SetMaskFrom(artifacts.RevisedData());
newRevisedData.SetMask(artifacts.RevisedData());
TimeFrequencyData *contaminatedData =
TimeFrequencyData::CreateTFDataFromDiff(artifacts.ContaminatedData(), newRevisedData);
contaminatedData->SetMaskFrom(artifacts.ContaminatedData());
contaminatedData->SetMask(artifacts.ContaminatedData());
artifacts.SetRevisedData(newRevisedData);
artifacts.SetContaminatedData(*contaminatedData);
......
......@@ -39,11 +39,11 @@ namespace rfiStrategy {
}
TimeFrequencyData newRevisedData = mitigater.Background();
newRevisedData.SetMaskFrom(artifacts.RevisedData());
newRevisedData.SetMask(artifacts.RevisedData());
TimeFrequencyData *contaminatedData =
TimeFrequencyData::CreateTFDataFromDiff(artifacts.ContaminatedData(), newRevisedData);
contaminatedData->SetMaskFrom(artifacts.ContaminatedData());
contaminatedData->SetMask(artifacts.ContaminatedData());
artifacts.SetRevisedData(newRevisedData);
artifacts.SetContaminatedData(*contaminatedData);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment