From 8633f4a838a123700d1d26d64fd620b82b648cfe Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Thu, 4 Aug 2022 15:00:56 +0200 Subject: [PATCH] Remove DP3 from repository --- CEP/DP3/CMakeLists.txt | 19 - CEP/DP3/DPPP/CMakeLists.txt | 13 - CEP/DP3/DPPP/etc/CMakeLists.txt | 6 - CEP/DP3/DPPP/etc/DPPP.log_prop | 7 - CEP/DP3/DPPP/include/DPPP/Apply.h | 62 - CEP/DP3/DPPP/include/DPPP/ApplyBeam.h | 124 -- CEP/DP3/DPPP/include/DPPP/ApplyBeam.tcc | 175 --- CEP/DP3/DPPP/include/DPPP/ApplyCal.h | 130 -- CEP/DP3/DPPP/include/DPPP/Averager.h | 123 -- CEP/DP3/DPPP/include/DPPP/Baseline.h | 47 - CEP/DP3/DPPP/include/DPPP/BaselineSelection.h | 102 -- CEP/DP3/DPPP/include/DPPP/CMakeLists.txt | 30 - CEP/DP3/DPPP/include/DPPP/Counter.h | 82 - CEP/DP3/DPPP/include/DPPP/Cursor.h | 297 ---- CEP/DP3/DPPP/include/DPPP/CursorUtilCasa.h | 71 - CEP/DP3/DPPP/include/DPPP/DPBuffer.h | 215 --- CEP/DP3/DPPP/include/DPPP/DPInfo.h | 309 ---- CEP/DP3/DPPP/include/DPPP/DPInput.h | 140 -- CEP/DP3/DPPP/include/DPPP/DPLogger.h | 77 - CEP/DP3/DPPP/include/DPPP/DPRun.h | 94 -- CEP/DP3/DPPP/include/DPPP/DPStep.h | 262 ---- CEP/DP3/DPPP/include/DPPP/DemixInfo.h | 202 --- CEP/DP3/DPPP/include/DPPP/DemixWorker.h | 343 ----- CEP/DP3/DPPP/include/DPPP/Demixer.h | 216 --- CEP/DP3/DPPP/include/DPPP/DemixerNew.h | 142 -- CEP/DP3/DPPP/include/DPPP/DummyStep.h | 82 - CEP/DP3/DPPP/include/DPPP/EstimateMixed.h | 105 -- CEP/DP3/DPPP/include/DPPP/EstimateNew.h | 149 -- CEP/DP3/DPPP/include/DPPP/Filter.h | 206 --- CEP/DP3/DPPP/include/DPPP/FlagCounter.h | 123 -- CEP/DP3/DPPP/include/DPPP/GainCal.h | 220 --- CEP/DP3/DPPP/include/DPPP/GaussianSource.h | 93 -- CEP/DP3/DPPP/include/DPPP/GridInterpolate.h | 67 - CEP/DP3/DPPP/include/DPPP/H5Parm.h | 254 ---- CEP/DP3/DPPP/include/DPPP/H5ParmPredict.h | 94 -- CEP/DP3/DPPP/include/DPPP/MSReader.h | 332 ---- CEP/DP3/DPPP/include/DPPP/MSUpdater.h | 134 -- CEP/DP3/DPPP/include/DPPP/MSWriter.h | 200 --- CEP/DP3/DPPP/include/DPPP/MedFlagger.h | 155 -- CEP/DP3/DPPP/include/DPPP/ModelComponent.h | 58 - .../DPPP/include/DPPP/ModelComponentVisitor.h | 55 - CEP/DP3/DPPP/include/DPPP/MultiMSReader.h | 201 --- CEP/DP3/DPPP/include/DPPP/OneApplyCal.h | 142 -- CEP/DP3/DPPP/include/DPPP/Patch.h | 141 -- CEP/DP3/DPPP/include/DPPP/PhaseFitter.h | 316 ---- CEP/DP3/DPPP/include/DPPP/PhaseShift.h | 114 -- CEP/DP3/DPPP/include/DPPP/PointSource.h | 105 -- CEP/DP3/DPPP/include/DPPP/Position.h | 71 - CEP/DP3/DPPP/include/DPPP/PreFlagger.h | 296 ---- CEP/DP3/DPPP/include/DPPP/Predict.h | 162 -- CEP/DP3/DPPP/include/DPPP/ProgressMeter.h | 128 -- CEP/DP3/DPPP/include/DPPP/ScaleData.h | 100 -- CEP/DP3/DPPP/include/DPPP/Simulate.h | 134 -- CEP/DP3/DPPP/include/DPPP/Simulator.h | 112 -- CEP/DP3/DPPP/include/DPPP/SourceDBUtil.h | 71 - CEP/DP3/DPPP/include/DPPP/Split.h | 81 - CEP/DP3/DPPP/include/DPPP/StManParsetKeys.h | 63 - CEP/DP3/DPPP/include/DPPP/StationAdder.h | 124 -- CEP/DP3/DPPP/include/DPPP/StefCal.h | 143 -- CEP/DP3/DPPP/include/DPPP/Stokes.h | 50 - CEP/DP3/DPPP/include/DPPP/SubtractMixed.h | 66 - CEP/DP3/DPPP/include/DPPP/SubtractNew.h | 68 - CEP/DP3/DPPP/include/DPPP/UVWCalculator.h | 1 - CEP/DP3/DPPP/include/DPPP/UVWFlagger.h | 136 -- CEP/DP3/DPPP/include/DPPP/Upsample.h | 83 - CEP/DP3/DPPP/share/CMakeLists.txt | 7 - CEP/DP3/DPPP/share/HBAdefault | 90 -- CEP/DP3/DPPP/share/LBAdefault | 93 -- CEP/DP3/DPPP/src/Apply.cc | 97 -- CEP/DP3/DPPP/src/ApplyBeam.cc | 208 --- CEP/DP3/DPPP/src/ApplyCal.cc | 299 ---- CEP/DP3/DPPP/src/Averager.cc | 408 ----- CEP/DP3/DPPP/src/BaselineSelection.cc | 272 ---- CEP/DP3/DPPP/src/CMakeLists.txt | 40 - CEP/DP3/DPPP/src/Counter.cc | 101 -- CEP/DP3/DPPP/src/DPBuffer.cc | 143 -- CEP/DP3/DPPP/src/DPInfo.cc | 434 ------ CEP/DP3/DPPP/src/DPInput.cc | 127 -- CEP/DP3/DPPP/src/DPLogger.cc | 31 - CEP/DP3/DPPP/src/DPRun.cc | 427 ------ CEP/DP3/DPPP/src/DPStep.cc | 124 -- CEP/DP3/DPPP/src/DemixInfo.cc | 458 ------ CEP/DP3/DPPP/src/DemixWorker.cc | 1346 ----------------- CEP/DP3/DPPP/src/Demixer.cc | 1161 -------------- CEP/DP3/DPPP/src/DemixerNew.cc | 517 ------- CEP/DP3/DPPP/src/DummyStep.cc | 91 -- CEP/DP3/DPPP/src/EstimateMixed.cc | 341 ----- CEP/DP3/DPPP/src/EstimateNew.cc | 475 ------ CEP/DP3/DPPP/src/Filter.cc | 342 ----- CEP/DP3/DPPP/src/FlagCounter.cc | 377 ----- CEP/DP3/DPPP/src/GainCal.cc | 1313 ---------------- CEP/DP3/DPPP/src/GaussianSource.cc | 69 - CEP/DP3/DPPP/src/GridInterpolate.cc | 102 -- CEP/DP3/DPPP/src/H5Parm.cc | 180 --- CEP/DP3/DPPP/src/H5ParmPredict.cc | 157 -- CEP/DP3/DPPP/src/MSReader.cc | 867 ----------- CEP/DP3/DPPP/src/MSUpdater.cc | 368 ----- CEP/DP3/DPPP/src/MSWriter.cc | 699 --------- CEP/DP3/DPPP/src/MedFlagger.cc | 527 ------- CEP/DP3/DPPP/src/ModelComponent.cc | 36 - CEP/DP3/DPPP/src/ModelComponentVisitor.cc | 37 - CEP/DP3/DPPP/src/MultiMSReader.cc | 457 ------ CEP/DP3/DPPP/src/NDPPP.cc | 106 -- CEP/DP3/DPPP/src/OneApplyCal.cc | 764 ---------- CEP/DP3/DPPP/src/Patch.cc | 59 - CEP/DP3/DPPP/src/PhaseFitter.cc | 232 --- CEP/DP3/DPPP/src/PhaseShift.cc | 233 --- CEP/DP3/DPPP/src/PointSource.cc | 147 -- CEP/DP3/DPPP/src/Position.cc | 44 - CEP/DP3/DPPP/src/PreFlagger.cc | 1194 --------------- CEP/DP3/DPPP/src/Predict.cc | 429 ------ CEP/DP3/DPPP/src/ProgressMeter.cc | 140 -- CEP/DP3/DPPP/src/ScaleData.cc | 251 --- CEP/DP3/DPPP/src/Simulate.cc | 165 -- CEP/DP3/DPPP/src/Simulator.cc | 312 ---- CEP/DP3/DPPP/src/SolTab.cc | 560 ------- CEP/DP3/DPPP/src/SourceDBUtil.cc | 270 ---- CEP/DP3/DPPP/src/Split.cc | 140 -- CEP/DP3/DPPP/src/StationAdder.cc | 634 -------- CEP/DP3/DPPP/src/StefCal.cc | 510 ------- CEP/DP3/DPPP/src/Stokes.cc | 40 - CEP/DP3/DPPP/src/SubtractMixed.cc | 86 -- CEP/DP3/DPPP/src/SubtractNew.cc | 72 - .../DPPP/src/UVWCalculator/UVWCalculator.cc | 120 -- .../DPPP/src/UVWCalculator/UVWCalculator.h | 86 -- CEP/DP3/DPPP/src/UVWFlagger.cc | 354 ----- CEP/DP3/DPPP/src/Upsample.cc | 152 -- CEP/DP3/DPPP/src/__init__.py | 60 - CEP/DP3/DPPP/src/taqlflagger | 88 -- CEP/DP3/DPPP/test/CMakeLists.txt | 40 - CEP/DP3/DPPP/test/findenv.run_tmpl | 8 - CEP/DP3/DPPP/test/tApplyBeam.run | 80 - CEP/DP3/DPPP/test/tApplyBeam.sh | 2 - CEP/DP3/DPPP/test/tApplyBeam.tab.tgz | Bin 248226 -> 0 bytes CEP/DP3/DPPP/test/tApplyBeam_ref | 81 - CEP/DP3/DPPP/test/tApplyCal.cc | 350 ----- CEP/DP3/DPPP/test/tApplyCal.in_parmdb.tgz | Bin 2961 -> 0 bytes CEP/DP3/DPPP/test/tApplyCal.run | 8 - CEP/DP3/DPPP/test/tApplyCal.sh | 2 - CEP/DP3/DPPP/test/tApplyCal2.run | 145 -- CEP/DP3/DPPP/test/tApplyCal2.sh | 2 - CEP/DP3/DPPP/test/tApplyCalH5.cc | 382 ----- CEP/DP3/DPPP/test/tApplyCalH5.run | 3 - CEP/DP3/DPPP/test/tApplyCalH5.sh | 2 - CEP/DP3/DPPP/test/tApplyCal_parmdbscript | 29 - CEP/DP3/DPPP/test/tAverager.cc | 623 -------- CEP/DP3/DPPP/test/tAverager.sh | 2 - CEP/DP3/DPPP/test/tBaselineSelection.cc | 228 --- CEP/DP3/DPPP/test/tDemix.in_MS.tgz | Bin 1262240 -> 0 bytes CEP/DP3/DPPP/test/tDemix.run | 13 - CEP/DP3/DPPP/test/tDemix.run_tmpl | 38 - CEP/DP3/DPPP/test/tDemix.sh | 2 - CEP/DP3/DPPP/test/tDemixer.cc | 233 --- CEP/DP3/DPPP/test/tFilter.cc | 302 ---- CEP/DP3/DPPP/test/tGainCal.run | 120 -- CEP/DP3/DPPP/test/tGainCal.sh | 2 - CEP/DP3/DPPP/test/tGainCal.tab.tgz | Bin 212564 -> 0 bytes CEP/DP3/DPPP/test/tGainCalH5Parm.run | 100 -- CEP/DP3/DPPP/test/tGainCalH5Parm.sh | 2 - CEP/DP3/DPPP/test/tGainCal_ref | 109 -- CEP/DP3/DPPP/test/tGridInterpolate.cc | 64 - CEP/DP3/DPPP/test/tH5Parm.cc | 198 --- CEP/DP3/DPPP/test/tH5Parm.sh | 3 - CEP/DP3/DPPP/test/tMedFlagger.cc | 291 ---- CEP/DP3/DPPP/test/tMedFlagger.sh | 2 - CEP/DP3/DPPP/test/tMedian.cc | 71 - CEP/DP3/DPPP/test/tMedian.sh | 2 - CEP/DP3/DPPP/test/tMirror.cc | 171 --- CEP/DP3/DPPP/test/tMirror.sh | 2 - CEP/DP3/DPPP/test/tMultiApplyCal.run | 46 - CEP/DP3/DPPP/test/tMultiApplyCal.sh | 2 - CEP/DP3/DPPP/test/tNDPPP-generic.in_MS.tgz | Bin 274580 -> 0 bytes CEP/DP3/DPPP/test/tNDPPP.cc | 1027 ------------- CEP/DP3/DPPP/test/tNDPPP.in_MS.tgz | Bin 66473 -> 0 bytes CEP/DP3/DPPP/test/tNDPPP.run | 8 - CEP/DP3/DPPP/test/tNDPPP.sh | 2 - CEP/DP3/DPPP/test/tPSet.cc | 435 ------ CEP/DP3/DPPP/test/tPSet.sh | 2 - CEP/DP3/DPPP/test/tPhaseShift.cc | 330 ---- CEP/DP3/DPPP/test/tPreFlagger.cc | 606 -------- CEP/DP3/DPPP/test/tPreFlagger.sh | 2 - CEP/DP3/DPPP/test/tPredict.run | 79 - CEP/DP3/DPPP/test/tPredict.sh | 2 - CEP/DP3/DPPP/test/tPredict.tab.tgz | Bin 143274 -> 0 bytes CEP/DP3/DPPP/test/tPredict_ref | 65 - CEP/DP3/DPPP/test/tPredict_ref_skymodel | 16 - CEP/DP3/DPPP/test/tScaleData.cc | 263 ---- CEP/DP3/DPPP/test/tStationAdder.cc | 579 ------- CEP/DP3/DPPP/test/tUVWFlagger.cc | 438 ------ CEP/DP3/DPPP/test/tUVWFlagger.sh | 2 - CEP/DP3/DPPP/test/tUpsample.cc | 181 --- CEP/DP3/DPPP/test/tUpsample.sh | 2 - CEP/DP3/DPPP/test/test_flaggers.sh | 2 - CEP/DP3/DPPP/test/testdemixfilter | 87 -- CEP/DP3/DPPP/test/tmwflagger.sh | 2 - CEP/DP3/DPPP/test/tparse.cc | 69 - CEP/DP3/DPPP_AOFlag/CMakeLists.txt | 33 - .../include/DPPP_AOFlag/AOFlaggerStep.h | 161 -- .../include/DPPP_AOFlag/CMakeLists.txt | 12 - .../include/DPPP_AOFlag/Register.h | 37 - .../include/DPPP_AOFlag/SlidingFlagger.h | 143 -- CEP/DP3/DPPP_AOFlag/src/AOFlaggerStep.cc | 490 ------ CEP/DP3/DPPP_AOFlag/src/CMakeLists.txt | 12 - CEP/DP3/DPPP_AOFlag/src/Register.cc | 39 - CEP/DP3/DPPP_AOFlag/src/SlidingFlagger.cc | 369 ----- CEP/DP3/DPPP_AOFlag/test/CMakeLists.txt | 8 - CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.cc | 263 ---- CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.run | 13 - CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.sh | 2 - CEP/DP3/DPPP_DDECal/CMakeLists.txt | 12 - .../include/DPPP_DDECal/CMakeLists.txt | 17 - .../include/DPPP_DDECal/Constraint.h | 167 -- .../DPPP_DDECal/include/DPPP_DDECal/DDECal.h | 176 --- .../include/DPPP_DDECal/KLFitter.h | 40 - .../include/DPPP_DDECal/KernelSmoother.h | 101 -- .../include/DPPP_DDECal/Matrix2x2.h | 445 ------ .../include/DPPP_DDECal/MultiDirSolver.h | 154 -- .../DPPP_DDECal/PieceWisePhaseFitter.h | 426 ------ .../include/DPPP_DDECal/PiercePoint.h | 41 - .../include/DPPP_DDECal/QRSolver.h | 58 - .../include/DPPP_DDECal/Register.h | 37 - .../RotationAndDiagonalConstraint.h | 37 - .../include/DPPP_DDECal/RotationConstraint.h | 40 - .../include/DPPP_DDECal/ScreenConstraint.h | 75 - .../DPPP_DDECal/SmoothnessConstraint.h | 46 - .../include/DPPP_DDECal/Stopwatch.h | 42 - .../include/DPPP_DDECal/TECConstraint.h | 104 -- .../include/DPPP_DDECal/screenfitter.h | 44 - CEP/DP3/DPPP_DDECal/src/CMakeLists.txt | 14 - CEP/DP3/DPPP_DDECal/src/Constraint.cc | 77 - CEP/DP3/DPPP_DDECal/src/DDECal.cc | 980 ------------ CEP/DP3/DPPP_DDECal/src/KLFitter.cc | 66 - CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc | 670 -------- CEP/DP3/DPPP_DDECal/src/PiercePoint.cc | 53 - CEP/DP3/DPPP_DDECal/src/Register.cc | 35 - .../src/RotationAndDiagonalConstraint.cc | 112 -- CEP/DP3/DPPP_DDECal/src/RotationConstraint.cc | 69 - CEP/DP3/DPPP_DDECal/src/ScreenConstraint.cc | 378 ----- .../DPPP_DDECal/src/SmoothnessConstraint.cc | 77 - CEP/DP3/DPPP_DDECal/src/Stopwatch.cc | 159 -- CEP/DP3/DPPP_DDECal/src/TECConstraint.cc | 223 --- CEP/DP3/DPPP_DDECal/src/screenfitter.cc | 8 - CEP/DP3/DPPP_DDECal/test/CMakeLists.txt | 10 - CEP/DP3/DPPP_DDECal/test/findenv.run_tmpl | 8 - CEP/DP3/DPPP_DDECal/test/tDDECal.in_MS.tgz | Bin 230310 -> 0 bytes CEP/DP3/DPPP_DDECal/test/tDDECal.run | 146 -- CEP/DP3/DPPP_DDECal/test/tDDECal.sh | 2 - CEP/DP3/DPPP_DDECal/test/tDDECal_ref | 33 - .../DPPP_DDECal/test/tRotationConstraint.cc | 101 -- .../DPPP_DDECal/test/tRotationConstraint.sh | 2 - .../CMake/CheckCXXSymbolExists.cmake | 49 - .../DPPP_Interpolate/CMake/FindCFITSIO.cmake | 49 - .../DPPP_Interpolate/CMake/FindCasacore.cmake | 267 ---- .../CMakeLists-standalone.txt | 27 - CEP/DP3/DPPP_Interpolate/CMakeLists.txt | 10 - .../include/DPPP_Interpolate/CMakeLists.txt | 14 - .../include/DPPP_Interpolate/Interpolate.h | 77 - .../include/DPPP_Interpolate/buffered_lane.h | 122 -- .../include/DPPP_Interpolate/lane.h | 576 ------- CEP/DP3/DPPP_Interpolate/src/CMakeLists.txt | 5 - CEP/DP3/DPPP_Interpolate/src/Interpolate.cc | 245 --- CEP/DP3/DPPP_Interpolate/test/CMakeLists.txt | 5 - .../DPPP_Interpolate/test/tInterpolateStep.cc | 233 --- .../DPPP_Interpolate/test/tInterpolateStep.sh | 2 - CEP/DP3/PythonDPPP/CMakeLists.txt | 20 - .../include/PythonDPPP/CMakeLists.txt | 14 - .../include/PythonDPPP/DPStepBase.h | 113 -- .../include/PythonDPPP/PythonStep.h | 162 -- CEP/DP3/PythonDPPP/src/CMakeLists.txt | 28 - CEP/DP3/PythonDPPP/src/DPStepBase.cc | 40 - CEP/DP3/PythonDPPP/src/PythonDPPP.cc | 95 -- CEP/DP3/PythonDPPP/src/PythonStep.cc | 369 ----- CEP/DP3/PythonDPPP/src/__init__.py | 272 ---- CEP/DP3/PythonDPPP/test/CMakeLists.txt | 5 - CEP/DP3/PythonDPPP/test/tPythonStep.py | 74 - CEP/DP3/PythonDPPP/test/tPythonStep.run | 24 - CEP/DP3/PythonDPPP/test/tPythonStep.sh | 2 - CEP/DP3/SPWCombine/CMakeLists.txt | 10 - .../include/SPWCombine/CMakeLists.txt | 14 - .../SPWCombine/CombinerProcessControl.h | 91 -- .../include/SPWCombine/SPWCombine.h | 64 - CEP/DP3/SPWCombine/src/CMakeLists.txt | 13 - CEP/DP3/SPWCombine/src/Combiner.cc | 46 - .../SPWCombine/src/CombinerProcessControl.cc | 271 ---- CEP/DP3/SPWCombine/src/SPWCombine.cc | 166 -- CEP/DP3/SPWCombine/test/SPWCombine.debug | 2 - CEP/DP3/SPWCombine/test/SPWCombine.parset | 2 - CEP/DP3/TestDynDPPP/CMakeLists.txt | 9 - CEP/DP3/TestDynDPPP/src/CMakeLists.txt | 7 - CEP/DP3/TestDynDPPP/src/TestDynStep.cc | 57 - CEP/DP3/TestDynDPPP/src/TestDynStep.h | 62 - CEP/DP3/TestDynDPPP/test/CMakeLists.txt | 8 - CEP/DP3/TestDynDPPP/test/tTestDynStep.cc | 592 -------- CEP/DP3/TestDynDPPP/test/tTestDynStep.run | 9 - CEP/DP3/TestDynDPPP/test/tTestDynStep.sh | 2 - CEP/DP3/doc/package.dox | 7 - 296 files changed, 47749 deletions(-) delete mode 100644 CEP/DP3/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP/etc/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP/etc/DPPP.log_prop delete mode 100644 CEP/DP3/DPPP/include/DPPP/Apply.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/ApplyBeam.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/ApplyBeam.tcc delete mode 100644 CEP/DP3/DPPP/include/DPPP/ApplyCal.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Averager.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Baseline.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/BaselineSelection.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP/include/DPPP/Counter.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Cursor.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/CursorUtilCasa.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DPBuffer.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DPInfo.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DPInput.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DPLogger.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DPRun.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DPStep.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DemixInfo.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DemixWorker.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Demixer.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DemixerNew.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/DummyStep.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/EstimateMixed.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/EstimateNew.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Filter.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/FlagCounter.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/GainCal.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/GaussianSource.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/GridInterpolate.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/H5Parm.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/H5ParmPredict.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/MSReader.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/MSUpdater.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/MSWriter.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/MedFlagger.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/ModelComponent.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/ModelComponentVisitor.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/MultiMSReader.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/OneApplyCal.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Patch.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/PhaseFitter.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/PhaseShift.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/PointSource.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Position.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/PreFlagger.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Predict.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/ProgressMeter.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/ScaleData.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Simulate.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Simulator.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/SourceDBUtil.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Split.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/StManParsetKeys.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/StationAdder.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/StefCal.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Stokes.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/SubtractMixed.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/SubtractNew.h delete mode 120000 CEP/DP3/DPPP/include/DPPP/UVWCalculator.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/UVWFlagger.h delete mode 100644 CEP/DP3/DPPP/include/DPPP/Upsample.h delete mode 100644 CEP/DP3/DPPP/share/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP/share/HBAdefault delete mode 100644 CEP/DP3/DPPP/share/LBAdefault delete mode 100644 CEP/DP3/DPPP/src/Apply.cc delete mode 100644 CEP/DP3/DPPP/src/ApplyBeam.cc delete mode 100644 CEP/DP3/DPPP/src/ApplyCal.cc delete mode 100644 CEP/DP3/DPPP/src/Averager.cc delete mode 100644 CEP/DP3/DPPP/src/BaselineSelection.cc delete mode 100644 CEP/DP3/DPPP/src/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP/src/Counter.cc delete mode 100644 CEP/DP3/DPPP/src/DPBuffer.cc delete mode 100644 CEP/DP3/DPPP/src/DPInfo.cc delete mode 100644 CEP/DP3/DPPP/src/DPInput.cc delete mode 100644 CEP/DP3/DPPP/src/DPLogger.cc delete mode 100644 CEP/DP3/DPPP/src/DPRun.cc delete mode 100644 CEP/DP3/DPPP/src/DPStep.cc delete mode 100644 CEP/DP3/DPPP/src/DemixInfo.cc delete mode 100644 CEP/DP3/DPPP/src/DemixWorker.cc delete mode 100644 CEP/DP3/DPPP/src/Demixer.cc delete mode 100644 CEP/DP3/DPPP/src/DemixerNew.cc delete mode 100644 CEP/DP3/DPPP/src/DummyStep.cc delete mode 100644 CEP/DP3/DPPP/src/EstimateMixed.cc delete mode 100644 CEP/DP3/DPPP/src/EstimateNew.cc delete mode 100644 CEP/DP3/DPPP/src/Filter.cc delete mode 100644 CEP/DP3/DPPP/src/FlagCounter.cc delete mode 100644 CEP/DP3/DPPP/src/GainCal.cc delete mode 100644 CEP/DP3/DPPP/src/GaussianSource.cc delete mode 100644 CEP/DP3/DPPP/src/GridInterpolate.cc delete mode 100644 CEP/DP3/DPPP/src/H5Parm.cc delete mode 100644 CEP/DP3/DPPP/src/H5ParmPredict.cc delete mode 100644 CEP/DP3/DPPP/src/MSReader.cc delete mode 100644 CEP/DP3/DPPP/src/MSUpdater.cc delete mode 100644 CEP/DP3/DPPP/src/MSWriter.cc delete mode 100644 CEP/DP3/DPPP/src/MedFlagger.cc delete mode 100644 CEP/DP3/DPPP/src/ModelComponent.cc delete mode 100644 CEP/DP3/DPPP/src/ModelComponentVisitor.cc delete mode 100644 CEP/DP3/DPPP/src/MultiMSReader.cc delete mode 100644 CEP/DP3/DPPP/src/NDPPP.cc delete mode 100644 CEP/DP3/DPPP/src/OneApplyCal.cc delete mode 100644 CEP/DP3/DPPP/src/Patch.cc delete mode 100644 CEP/DP3/DPPP/src/PhaseFitter.cc delete mode 100644 CEP/DP3/DPPP/src/PhaseShift.cc delete mode 100644 CEP/DP3/DPPP/src/PointSource.cc delete mode 100644 CEP/DP3/DPPP/src/Position.cc delete mode 100644 CEP/DP3/DPPP/src/PreFlagger.cc delete mode 100644 CEP/DP3/DPPP/src/Predict.cc delete mode 100644 CEP/DP3/DPPP/src/ProgressMeter.cc delete mode 100644 CEP/DP3/DPPP/src/ScaleData.cc delete mode 100644 CEP/DP3/DPPP/src/Simulate.cc delete mode 100644 CEP/DP3/DPPP/src/Simulator.cc delete mode 100644 CEP/DP3/DPPP/src/SolTab.cc delete mode 100644 CEP/DP3/DPPP/src/SourceDBUtil.cc delete mode 100644 CEP/DP3/DPPP/src/Split.cc delete mode 100644 CEP/DP3/DPPP/src/StationAdder.cc delete mode 100644 CEP/DP3/DPPP/src/StefCal.cc delete mode 100644 CEP/DP3/DPPP/src/Stokes.cc delete mode 100644 CEP/DP3/DPPP/src/SubtractMixed.cc delete mode 100644 CEP/DP3/DPPP/src/SubtractNew.cc delete mode 100644 CEP/DP3/DPPP/src/UVWCalculator/UVWCalculator.cc delete mode 100644 CEP/DP3/DPPP/src/UVWCalculator/UVWCalculator.h delete mode 100644 CEP/DP3/DPPP/src/UVWFlagger.cc delete mode 100644 CEP/DP3/DPPP/src/Upsample.cc delete mode 100644 CEP/DP3/DPPP/src/__init__.py delete mode 100755 CEP/DP3/DPPP/src/taqlflagger delete mode 100644 CEP/DP3/DPPP/test/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP/test/findenv.run_tmpl delete mode 100755 CEP/DP3/DPPP/test/tApplyBeam.run delete mode 100755 CEP/DP3/DPPP/test/tApplyBeam.sh delete mode 100644 CEP/DP3/DPPP/test/tApplyBeam.tab.tgz delete mode 100755 CEP/DP3/DPPP/test/tApplyBeam_ref delete mode 100644 CEP/DP3/DPPP/test/tApplyCal.cc delete mode 100644 CEP/DP3/DPPP/test/tApplyCal.in_parmdb.tgz delete mode 100755 CEP/DP3/DPPP/test/tApplyCal.run delete mode 100755 CEP/DP3/DPPP/test/tApplyCal.sh delete mode 100755 CEP/DP3/DPPP/test/tApplyCal2.run delete mode 100755 CEP/DP3/DPPP/test/tApplyCal2.sh delete mode 100644 CEP/DP3/DPPP/test/tApplyCalH5.cc delete mode 100755 CEP/DP3/DPPP/test/tApplyCalH5.run delete mode 100755 CEP/DP3/DPPP/test/tApplyCalH5.sh delete mode 100644 CEP/DP3/DPPP/test/tApplyCal_parmdbscript delete mode 100644 CEP/DP3/DPPP/test/tAverager.cc delete mode 100755 CEP/DP3/DPPP/test/tAverager.sh delete mode 100644 CEP/DP3/DPPP/test/tBaselineSelection.cc delete mode 100644 CEP/DP3/DPPP/test/tDemix.in_MS.tgz delete mode 100755 CEP/DP3/DPPP/test/tDemix.run delete mode 100644 CEP/DP3/DPPP/test/tDemix.run_tmpl delete mode 100755 CEP/DP3/DPPP/test/tDemix.sh delete mode 100644 CEP/DP3/DPPP/test/tDemixer.cc delete mode 100644 CEP/DP3/DPPP/test/tFilter.cc delete mode 100755 CEP/DP3/DPPP/test/tGainCal.run delete mode 100755 CEP/DP3/DPPP/test/tGainCal.sh delete mode 100644 CEP/DP3/DPPP/test/tGainCal.tab.tgz delete mode 100755 CEP/DP3/DPPP/test/tGainCalH5Parm.run delete mode 100755 CEP/DP3/DPPP/test/tGainCalH5Parm.sh delete mode 100755 CEP/DP3/DPPP/test/tGainCal_ref delete mode 100644 CEP/DP3/DPPP/test/tGridInterpolate.cc delete mode 100644 CEP/DP3/DPPP/test/tH5Parm.cc delete mode 100755 CEP/DP3/DPPP/test/tH5Parm.sh delete mode 100644 CEP/DP3/DPPP/test/tMedFlagger.cc delete mode 100755 CEP/DP3/DPPP/test/tMedFlagger.sh delete mode 100644 CEP/DP3/DPPP/test/tMedian.cc delete mode 100755 CEP/DP3/DPPP/test/tMedian.sh delete mode 100644 CEP/DP3/DPPP/test/tMirror.cc delete mode 100755 CEP/DP3/DPPP/test/tMirror.sh delete mode 100755 CEP/DP3/DPPP/test/tMultiApplyCal.run delete mode 100755 CEP/DP3/DPPP/test/tMultiApplyCal.sh delete mode 100644 CEP/DP3/DPPP/test/tNDPPP-generic.in_MS.tgz delete mode 100644 CEP/DP3/DPPP/test/tNDPPP.cc delete mode 100644 CEP/DP3/DPPP/test/tNDPPP.in_MS.tgz delete mode 100755 CEP/DP3/DPPP/test/tNDPPP.run delete mode 100755 CEP/DP3/DPPP/test/tNDPPP.sh delete mode 100644 CEP/DP3/DPPP/test/tPSet.cc delete mode 100755 CEP/DP3/DPPP/test/tPSet.sh delete mode 100644 CEP/DP3/DPPP/test/tPhaseShift.cc delete mode 100644 CEP/DP3/DPPP/test/tPreFlagger.cc delete mode 100755 CEP/DP3/DPPP/test/tPreFlagger.sh delete mode 100755 CEP/DP3/DPPP/test/tPredict.run delete mode 100755 CEP/DP3/DPPP/test/tPredict.sh delete mode 100644 CEP/DP3/DPPP/test/tPredict.tab.tgz delete mode 100755 CEP/DP3/DPPP/test/tPredict_ref delete mode 100644 CEP/DP3/DPPP/test/tPredict_ref_skymodel delete mode 100644 CEP/DP3/DPPP/test/tScaleData.cc delete mode 100644 CEP/DP3/DPPP/test/tStationAdder.cc delete mode 100644 CEP/DP3/DPPP/test/tUVWFlagger.cc delete mode 100755 CEP/DP3/DPPP/test/tUVWFlagger.sh delete mode 100644 CEP/DP3/DPPP/test/tUpsample.cc delete mode 100755 CEP/DP3/DPPP/test/tUpsample.sh delete mode 100755 CEP/DP3/DPPP/test/test_flaggers.sh delete mode 100755 CEP/DP3/DPPP/test/testdemixfilter delete mode 100755 CEP/DP3/DPPP/test/tmwflagger.sh delete mode 100644 CEP/DP3/DPPP/test/tparse.cc delete mode 100644 CEP/DP3/DPPP_AOFlag/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/AOFlaggerStep.h delete mode 100644 CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/Register.h delete mode 100644 CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/SlidingFlagger.h delete mode 100644 CEP/DP3/DPPP_AOFlag/src/AOFlaggerStep.cc delete mode 100644 CEP/DP3/DPPP_AOFlag/src/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_AOFlag/src/Register.cc delete mode 100644 CEP/DP3/DPPP_AOFlag/src/SlidingFlagger.cc delete mode 100644 CEP/DP3/DPPP_AOFlag/test/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.cc delete mode 100755 CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.run delete mode 100755 CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.sh delete mode 100644 CEP/DP3/DPPP_DDECal/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Constraint.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/DDECal.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/KLFitter.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/KernelSmoother.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Matrix2x2.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/MultiDirSolver.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/PieceWisePhaseFitter.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/PiercePoint.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/QRSolver.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Register.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/RotationAndDiagonalConstraint.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/RotationConstraint.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/ScreenConstraint.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/SmoothnessConstraint.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Stopwatch.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/TECConstraint.h delete mode 100644 CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/screenfitter.h delete mode 100644 CEP/DP3/DPPP_DDECal/src/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_DDECal/src/Constraint.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/DDECal.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/KLFitter.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/PiercePoint.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/Register.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/RotationAndDiagonalConstraint.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/RotationConstraint.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/ScreenConstraint.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/SmoothnessConstraint.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/Stopwatch.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/TECConstraint.cc delete mode 100644 CEP/DP3/DPPP_DDECal/src/screenfitter.cc delete mode 100644 CEP/DP3/DPPP_DDECal/test/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_DDECal/test/findenv.run_tmpl delete mode 100644 CEP/DP3/DPPP_DDECal/test/tDDECal.in_MS.tgz delete mode 100755 CEP/DP3/DPPP_DDECal/test/tDDECal.run delete mode 100755 CEP/DP3/DPPP_DDECal/test/tDDECal.sh delete mode 100755 CEP/DP3/DPPP_DDECal/test/tDDECal_ref delete mode 100644 CEP/DP3/DPPP_DDECal/test/tRotationConstraint.cc delete mode 100755 CEP/DP3/DPPP_DDECal/test/tRotationConstraint.sh delete mode 100644 CEP/DP3/DPPP_Interpolate/CMake/CheckCXXSymbolExists.cmake delete mode 100644 CEP/DP3/DPPP_Interpolate/CMake/FindCFITSIO.cmake delete mode 100644 CEP/DP3/DPPP_Interpolate/CMake/FindCasacore.cmake delete mode 100644 CEP/DP3/DPPP_Interpolate/CMakeLists-standalone.txt delete mode 100644 CEP/DP3/DPPP_Interpolate/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/Interpolate.h delete mode 100644 CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/buffered_lane.h delete mode 100644 CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/lane.h delete mode 100644 CEP/DP3/DPPP_Interpolate/src/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_Interpolate/src/Interpolate.cc delete mode 100644 CEP/DP3/DPPP_Interpolate/test/CMakeLists.txt delete mode 100644 CEP/DP3/DPPP_Interpolate/test/tInterpolateStep.cc delete mode 100755 CEP/DP3/DPPP_Interpolate/test/tInterpolateStep.sh delete mode 100644 CEP/DP3/PythonDPPP/CMakeLists.txt delete mode 100644 CEP/DP3/PythonDPPP/include/PythonDPPP/CMakeLists.txt delete mode 100644 CEP/DP3/PythonDPPP/include/PythonDPPP/DPStepBase.h delete mode 100644 CEP/DP3/PythonDPPP/include/PythonDPPP/PythonStep.h delete mode 100644 CEP/DP3/PythonDPPP/src/CMakeLists.txt delete mode 100644 CEP/DP3/PythonDPPP/src/DPStepBase.cc delete mode 100644 CEP/DP3/PythonDPPP/src/PythonDPPP.cc delete mode 100644 CEP/DP3/PythonDPPP/src/PythonStep.cc delete mode 100644 CEP/DP3/PythonDPPP/src/__init__.py delete mode 100644 CEP/DP3/PythonDPPP/test/CMakeLists.txt delete mode 100644 CEP/DP3/PythonDPPP/test/tPythonStep.py delete mode 100755 CEP/DP3/PythonDPPP/test/tPythonStep.run delete mode 100755 CEP/DP3/PythonDPPP/test/tPythonStep.sh delete mode 100644 CEP/DP3/SPWCombine/CMakeLists.txt delete mode 100644 CEP/DP3/SPWCombine/include/SPWCombine/CMakeLists.txt delete mode 100644 CEP/DP3/SPWCombine/include/SPWCombine/CombinerProcessControl.h delete mode 100644 CEP/DP3/SPWCombine/include/SPWCombine/SPWCombine.h delete mode 100644 CEP/DP3/SPWCombine/src/CMakeLists.txt delete mode 100644 CEP/DP3/SPWCombine/src/Combiner.cc delete mode 100644 CEP/DP3/SPWCombine/src/CombinerProcessControl.cc delete mode 100644 CEP/DP3/SPWCombine/src/SPWCombine.cc delete mode 100644 CEP/DP3/SPWCombine/test/SPWCombine.debug delete mode 100644 CEP/DP3/SPWCombine/test/SPWCombine.parset delete mode 100644 CEP/DP3/TestDynDPPP/CMakeLists.txt delete mode 100644 CEP/DP3/TestDynDPPP/src/CMakeLists.txt delete mode 100644 CEP/DP3/TestDynDPPP/src/TestDynStep.cc delete mode 100644 CEP/DP3/TestDynDPPP/src/TestDynStep.h delete mode 100644 CEP/DP3/TestDynDPPP/test/CMakeLists.txt delete mode 100644 CEP/DP3/TestDynDPPP/test/tTestDynStep.cc delete mode 100755 CEP/DP3/TestDynDPPP/test/tTestDynStep.run delete mode 100755 CEP/DP3/TestDynDPPP/test/tTestDynStep.sh delete mode 100644 CEP/DP3/doc/package.dox diff --git a/CEP/DP3/CMakeLists.txt b/CEP/DP3/CMakeLists.txt deleted file mode 100644 index d66c282e71e..00000000000 --- a/CEP/DP3/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -# $Id$ - -lofar_add_package(DPPP) -lofar_add_package(TestDynDPPP) -lofar_add_package(PythonDPPP) -lofar_add_package(DPPP_AOFlag) -lofar_add_package(SPW_Combine SPWCombine) - -lofar_find_package(Armadillo) -if(${ARMADILLO_FOUND}) - if(CMAKE_CXX_FLAGS MATCHES ".*\\+\\+11.*") - lofar_add_package(DPPP_DDECal) -lofar_add_package(DPPP_Interpolate) - else() - message(WARNING "DPPP_DDECal and DPPP_Interpolate will not build if you have no C++11 support, please build in directory gnucxx11_opt") - endif() -else() - message(WARNING "Armadillo was not found, NOT building DPPP_DDECal") -endif() diff --git a/CEP/DP3/DPPP/CMakeLists.txt b/CEP/DP3/DPPP/CMakeLists.txt deleted file mode 100644 index dc04158ff3c..00000000000 --- a/CEP/DP3/DPPP/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# $Id$ - -lofar_package(DPPP 1.0 DEPENDS LofarStMan Common MS ParmDB StationResponse) - -include(LofarFindPackage) -lofar_find_package(Casacore COMPONENTS casa ms tables REQUIRED) -lofar_find_package(HDF5 COMPONENTS CXX REQUIRED) - -add_subdirectory(include/DPPP) -add_subdirectory(src) -add_subdirectory(share) -add_subdirectory(etc) -add_subdirectory(test) diff --git a/CEP/DP3/DPPP/etc/CMakeLists.txt b/CEP/DP3/DPPP/etc/CMakeLists.txt deleted file mode 100644 index 75d2e7c9a9e..00000000000 --- a/CEP/DP3/DPPP/etc/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -# $Id: CMakeLists.txt 22196 2012-10-03 05:47:41Z diepen $ - -# Logger configuration -install(FILES - DPPP.log_prop - DESTINATION etc) diff --git a/CEP/DP3/DPPP/etc/DPPP.log_prop b/CEP/DP3/DPPP/etc/DPPP.log_prop deleted file mode 100644 index e44074d626d..00000000000 --- a/CEP/DP3/DPPP/etc/DPPP.log_prop +++ /dev/null @@ -1,7 +0,0 @@ -log4cplus.rootLogger=TRACE, TESTOUT -log4cplus.logger.TRC=DEBUG -log4cplus.appender.TESTOUT=log4cplus::ConsoleAppender -log4cplus.appender.TESTOUT.logToStdErr=False -log4cplus.appender.TESTOUT.layout=log4cplus::PatternLayout -#log4cplus.appender.TESTOUT.layout.ConversionPattern=%-5p %c{3} [%b:%L] - %m%n -log4cplus.appender.TESTOUT.layout.ConversionPattern=%-5p - %m%n diff --git a/CEP/DP3/DPPP/include/DPPP/Apply.h b/CEP/DP3/DPPP/include/DPPP/Apply.h deleted file mode 100644 index 5ae8db11b82..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Apply.h +++ /dev/null @@ -1,62 +0,0 @@ -//# Apply.h: Apply station Jones matrices to a set of visibilities. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_APPLY_H -#define DPPP_APPLY_H - -// \file -// Apply station Jones matrices to a set of visibilities. - -#include <DPPP/Baseline.h> -#include <DPPP/Cursor.h> -#include <Common/lofar_complex.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ -// Apply station Jones matrices to a set of visibilities. -// -// \param[in] nBaseline -// Number of baselines. -// \param[in] nChannel -// Number of frequency channels. -// \param[in] baselines -// A cursor for a 1-D buffer of baselines of shape (\p nBaseline). -// \param[in] coeff -// A cursor for a 2-D buffer of Jones matrix coefficients of shape -// (No. of stations, 8). Each station index contained in \p baselines should be -// a valid index for the first axis of \p coeff. -// \param[in] data -// A cursor for a 3-D buffer of visibilities of shape -// (\p nBaseline, \p nChannel, 4). -void apply(size_t nBaseline, size_t nChannel, const_cursor<Baseline> baselines, - const_cursor<double> coeff, cursor<dcomplex> data); -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/ApplyBeam.h b/CEP/DP3/DPPP/include/DPPP/ApplyBeam.h deleted file mode 100644 index b8cf9b7611e..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/ApplyBeam.h +++ /dev/null @@ -1,124 +0,0 @@ -//# ApplyBeam.h: DPPP step class to ApplyBeam visibilities from a source model -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_APPLYBEAM_H -#define DPPP_APPLYBEAM_H - -// @file -// @brief DPPP step class to apply the beam model (optionally inverted) - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/Position.h> -#include <StationResponse/Station.h> -#include <StationResponse/Types.h> -#include <casacore/casa/Arrays/Cube.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class to apply the beam model, optionally inverted. - // The input MeasurementSet it operates on, must have the LOFAR subtables - // defining the station layout and tiles/dipoles used. - - class ApplyBeam: public DPStep - { - public: - // Modes for the beam: only array factor, only element beam, or both (default) - enum BeamMode {DEFAULT=1, ARRAY_FACTOR=2, ELEMENT=3}; - - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - ApplyBeam (DPInput*, const ParameterSet&, const string& prefix, bool substep=false); - - ApplyBeam(); - - virtual ~ApplyBeam(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process(const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo(const DPInfo&); - - // Show the step parameters. - virtual void show(std::ostream&) const; - - // Show the timings. - virtual void showTimings(std::ostream&, double duration) const; - - bool invert() { - return itsInvert; - } - - template<typename T> - static void applyBeam( - const DPInfo& info, double time, T* data0, float* weight0, - const StationResponse::vector3r_t& srcdir, - const StationResponse::vector3r_t& refdir, - const StationResponse::vector3r_t& tiledir, - const vector<StationResponse::Station::Ptr>& antBeamInfo, - vector<StationResponse::matrix22c_t>& beamValues, - bool useChannelFreq, bool invert, int mode, - bool doUpdateWeights=false); - - private: - StationResponse::vector3r_t dir2Itrf( - const casacore::MDirection& dir, - casacore::MDirection::Convert& measConverter); - - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuffer; - bool itsInvert; - bool itsUpdateWeights; - bool itsUseChannelFreq; - Position itsPhaseRef; - BeamMode itsMode; - - uint itsDebugLevel; - - // The info needed to calculate the station beams. - vector<vector<StationResponse::Station::Ptr> > itsAntBeamInfo; - vector<casacore::MeasFrame> itsMeasFrames; - vector<casacore::MDirection::Convert> itsMeasConverters; - vector<vector<StationResponse::matrix22c_t> > itsBeamValues; - - NSTimer itsTimer; - }; - - } //# end namespace -} -#endif - -#include "ApplyBeam.tcc" diff --git a/CEP/DP3/DPPP/include/DPPP/ApplyBeam.tcc b/CEP/DP3/DPPP/include/DPPP/ApplyBeam.tcc deleted file mode 100644 index 40b9869f637..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/ApplyBeam.tcc +++ /dev/null @@ -1,175 +0,0 @@ -//# ApplyBeam.tcc: DPPP step class to ApplyBeam visibilities from a source model -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_ApplyBeam_TCC -#define DPPP_ApplyBeam_TCC - -#include <lofar_config.h> -#include <DPPP/ApplyBeam.h> - -#include <Common/ParameterSet.h> -#include <Common/Timer.h> -#include <Common/OpenMP.h> -#include <ParmDB/ParmDBMeta.h> -#include <ParmDB/PatchInfo.h> -#include <DPPP/DPInfo.h> -#include <DPPP/FlagCounter.h> -#include <DPPP/Position.h> -#include <DPPP/Simulator.h> -#include <DPPP/Simulate.h> -#include <DPPP/ApplyCal.h> - -#include <StationResponse/AntennaField.h> - -#include <DPPP/Stokes.h> -#include <DPPP/PointSource.h> -#include <DPPP/GaussianSource.h> -#include <ParmDB/SourceDB.h> - -#include <casacore/casa/Arrays/Array.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/tables/Tables/RefRows.h> - -#include <stddef.h> -#include <string> -#include <sstream> -#include <utility> -#include <vector> - -namespace LOFAR { - namespace DPPP { - - -// applyBeam is templated on the type of the data, could be double or float -template<typename T> -void ApplyBeam::applyBeam( - const DPInfo& info, double time, T* data0, float* weight0, - const StationResponse::vector3r_t& srcdir, - const StationResponse::vector3r_t& refdir, - const StationResponse::vector3r_t& tiledir, - const vector<StationResponse::Station::Ptr>& antBeamInfo, - vector<StationResponse::matrix22c_t>& beamValues, bool useChannelFreq, - bool invert, int mode, bool doUpdateWeights) - { - // Get the beam values for each station. - uint nCh = info.chanFreqs().size(); - uint nSt = beamValues.size() / nCh; - uint nBl = info.nbaselines(); - - // Store array factor in diagonal matrix (in other modes this variable - // is not used). - StationResponse::diag22c_t af_tmp; - - double reffreq=info.refFreq(); - - // Apply the beam values of both stations to the ApplyBeamed data. - dcomplex tmp[4]; - for (size_t ch = 0; ch < nCh; ++ch) { - if (useChannelFreq) { - reffreq=info.chanFreqs()[ch]; - } - - switch (mode) { - case DEFAULT: - // Fill beamValues for channel ch - for (size_t st = 0; st < nSt; ++st) { - beamValues[nCh * st + ch] = antBeamInfo[st]->response(time, - info.chanFreqs()[ch], srcdir, - reffreq, refdir, tiledir); - if (invert) { - ApplyCal::invert((dcomplex*)(&(beamValues[nCh * st + ch]))); - } - } - break; - case ARRAY_FACTOR: - // Fill beamValues for channel ch - for (size_t st = 0; st < nSt; ++st) { - af_tmp = antBeamInfo[st]->arrayFactor(time, - info.chanFreqs()[ch], srcdir, - reffreq, refdir, tiledir); - beamValues[nCh * st + ch][0][1]=0.; - beamValues[nCh * st + ch][1][0]=0.; - - if (invert) { - beamValues[nCh * st + ch][0][0]=1./af_tmp[0]; - beamValues[nCh * st + ch][1][1]=1./af_tmp[1]; - } else { - beamValues[nCh * st + ch][0][0]=af_tmp[0]; - beamValues[nCh * st + ch][1][1]=af_tmp[1]; - } - } - break; - case ELEMENT: - // Fill beamValues for channel ch - for (size_t st = 0; st < nSt; ++st) { - LOFAR::StationResponse::AntennaField::ConstPtr field = - *(antBeamInfo[st]->beginFields()); - - beamValues[nCh * st + ch] = field->elementResponse(time, - info.chanFreqs()[ch], - srcdir); - if (invert) { - ApplyCal::invert((dcomplex*)(&(beamValues[nCh * st + ch]))); - } - } - break; - } - - // Apply beam for channel ch on all baselines - // For mode=ARRAY_FACTOR, too much work is done here because we know - // that r and l are diagonal - for (size_t bl = 0; bl < nBl; ++bl) { - T* data = data0 + bl * 4 * nCh + ch * 4; - StationResponse::matrix22c_t *left = &(beamValues[nCh - * info.getAnt1()[bl]]); - StationResponse::matrix22c_t *right = &(beamValues[nCh - * info.getAnt2()[bl]]); - dcomplex l[] = { left[ch][0][0], left[ch][0][1], - left[ch][1][0], left[ch][1][1] }; - // Form transposed conjugate of right. - dcomplex r[] = { conj(right[ch][0][0]), conj(right[ch][1][0]), - conj(right[ch][0][1]), conj(right[ch][1][1]) }; - // left*data - tmp[0] = l[0] * dcomplex(data[0]) + l[1] * dcomplex(data[2]); - tmp[1] = l[0] * dcomplex(data[1]) + l[1] * dcomplex(data[3]); - tmp[2] = l[2] * dcomplex(data[0]) + l[3] * dcomplex(data[2]); - tmp[3] = l[2] * dcomplex(data[1]) + l[3] * dcomplex(data[3]); - // data*conj(right) - data[0] = tmp[0] * r[0] + tmp[1] * r[2]; - data[1] = tmp[0] * r[1] + tmp[1] * r[3]; - data[2] = tmp[2] * r[0] + tmp[3] * r[2]; - data[3] = tmp[2] * r[1] + tmp[3] * r[3]; - - if (doUpdateWeights) { - ApplyCal::applyWeights(l, r, weight0 + bl * 4 * nCh + ch * 4); - } - } - } - } - } -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/ApplyCal.h b/CEP/DP3/DPPP/include/DPPP/ApplyCal.h deleted file mode 100644 index cf458c442a8..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/ApplyCal.h +++ /dev/null @@ -1,130 +0,0 @@ -//# ApplyCal.h: DPPP step class to ApplyCal visibilities from a source model -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_ApplyCal_H -#define DPPP_ApplyCal_H - -// @file -// @brief DPPP step class to apply multiple calibration solutions - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> - -#include <DPPP/OneApplyCal.h> - -#include <utility> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class to apply multiple ParmDB or H5Parm - // solutions to data. - - class ApplyCal: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - ApplyCal (DPInput*, const ParameterSet&, const string& prefix, - bool substep=false, std::string predictDirection=""); - - // Empty constructor - ApplyCal (); - - virtual ~ApplyCal(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Set the next step. It squeezes in the actual OneApplyCal steps - // between this ApplyCal step and the next step. - virtual void setNextStep (DPStep::ShPtr nextStep); - - // Show the step. When ApplyCal is a step in the main chain, this does - // nothing; the nextStep mechanism in DPRun will call show on the actual - // OneApplyCals. - virtual void show(std::ostream&) const; - - // Show the timings. When ApplyCal is a step in the main chain, this does - // nothing; the nextStep mechanism in DPRun will call show on the actual - // OneApplyCals. - virtual void showTimings (std::ostream&, double duration) const; - - // Invert a 2x2 matrix in place - static void invert (casacore::DComplex* v, double sigmaMMSE=0); - - // Apply a diagonal Jones matrix to the 2x2 visibilities matrix: A.V.B^H - static void applyDiag (const casacore::DComplex* gainA, - const casacore::DComplex* gainB, - casacore::Complex* vis, float* weight, bool* flag, - uint bl, uint chan, bool updateWeights, - FlagCounter& flagCounter); - - // Apply a diagonal Jones matrix to the 2x2 visibilities matrix: A.V.B^H, - // where the solution is equal for both polarizations - static void applyScalar(const casacore::DComplex* gainA, - const casacore::DComplex* gainB, - casacore::Complex* vis, float* weight, bool* flag, - uint bl, uint chan, bool updateWeights, - FlagCounter& flagCounter); - - // Apply a full Jones matrix to the 2x2 visibilities matrix: A.V.B^H - static void applyFull (const casacore::DComplex* gainA, - const casacore::DComplex* gainB, - casacore::Complex* vis, float* weight, bool* flag, - uint bl, uint chan, bool updateWeights, - FlagCounter& flagCounter); - - // Do the same as the combination of BBS + python script - // covariance2weight.py (cookbook), except it stores weights per freq. - // The diagonal of covariance matrix is transferred to the weights. - // Note that the real covariance (mixing of noise terms after which they - // are not independent anymore) is not stored. - // The input covariance matrix C is assumed to be diagonal with elements - // w_i (the weights), the result the diagonal of - // (gainA kronecker gainB^H).C.(gainA kronecker gainB^H)^H - static void applyWeights (const casacore::DComplex* gainA, - const casacore::DComplex* gainB, - float* weight); - - private: - //# Data members. - bool itsIsSubstep; - string itsName; - - std::vector<OneApplyCal::ShPtr> itsApplyCals; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Averager.h b/CEP/DP3/DPPP/include/DPPP/Averager.h deleted file mode 100644 index 90e40f47688..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Averager.h +++ /dev/null @@ -1,123 +0,0 @@ -//# Averager.h: DPPP step class to average in time and/or freq -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_AVERAGER_H -#define DPPP_AVERAGER_H - -// @file -// @brief DPPP step class to average in time and/or freq - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <casacore/casa/Arrays/Cube.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class calculating the weighted average of - // data in time and/or frequency. - // <br> - // Only unflagged data points are used. The average is calculated as - // <tt>sum(data*weight) / sum(weight)</tt> and the sum of the weights - // is the weight of the new data point. If all data point to use are - // flagged, the resulting data point and weight are set to zero and flagged. - // - // It keeps track of the FullResFlags. It sets them if the corresponding - // data point is flagged. Note that multiple FullResFlags elements map to - // a single data point if some averaging was done before. - - class Averager: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - Averager (DPInput*, const ParameterSet&, const string& prefix); - - // Construct the object using the given parameters. - Averager (DPInput*, const string& stepname, - uint nchanAvg, uint ntimeAvg); - - virtual ~Averager(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - // Average into itsBufOut. - void average(); - - // Copy the fullRes flags in the input buffer to the correct - // time index in the output buffer. - // If a flag is set, set all flags in corresponding FullRes window. - void copyFullResFlags (const casacore::Cube<bool>& fullResFlags, - const casacore::Cube<bool>& flags, - int timeIndex); - - // Get the value in Hertz of a string like "1000 MHz". If unit is - // omitted it defaults to Hertz - double getFreqHz(const string& freqstr); - - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuf; - DPBuffer itsBufTmp; - DPBuffer itsBufOut; - casacore::Cube<int> itsNPoints; - casacore::Cube<casacore::Complex> itsAvgAll; - casacore::Cube<float> itsWeightAll; - casacore::Cube<bool> itsFullResFlags; - double itsFreqResolution; - double itsTimeResolution; - uint itsNChanAvg; - uint itsNTimeAvg; - uint itsMinNPoint; - float itsMinPerc; - uint itsNTimes; - double itsTimeInterval; - bool itsNoAvg; //# No averaging (i.e. both 1)? - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Baseline.h b/CEP/DP3/DPPP/include/DPPP/Baseline.h deleted file mode 100644 index 5655c1389a7..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Baseline.h +++ /dev/null @@ -1,47 +0,0 @@ -//# Baseline.h: Pair of stations that together form a baseline (interferometer). -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_BASELINE_H -#define DPPP_BASELINE_H - -// \file -// Pair of stations that together form a baseline (interferometer). - -#include <cstddef> -#include <utility> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -typedef std::pair<size_t, size_t> Baseline; - -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/BaselineSelection.h b/CEP/DP3/DPPP/include/DPPP/BaselineSelection.h deleted file mode 100644 index 62239cb5ac6..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/BaselineSelection.h +++ /dev/null @@ -1,102 +0,0 @@ -//# BaselineSelection.h: Class to handle the baseline selection -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_BASELINESELECTION_H -#define DPPP_BASELINESELECTION_H - -// @file -// @brief Class to handle the baseline selection - -#include <DPPP/DPInfo.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Arrays/Matrix.h> - -namespace LOFAR { - class ParameterSet; - class ParameterValue; - - namespace DPPP { - - // Class containing a few static functions to parse a baseline selection - // string. - class BaselineSelection - { - public: - // Default constructor has no selection. - BaselineSelection(); - - // Construct from the parset using the given prefix. - // The keys used are: - // <ul> - // <li> baseline: for a baseline selection (e.g. CS*&) - // <li> corrtype: for correlation selection (auto, cross, or empty) - // <li> blrange: ranges of baseline lengths (in m) - // <li> minbl: minimum baseline length (in m); only if minmax=true - // <li> maxbl: maximum baseline length (in m); only if minmax=true - // </ul> - BaselineSelection (const ParameterSet&, const string& prefix, - bool minmax=false, - const string& defaultCorrType=string(), - const string& defaultBaseline=string()); - - // Is there any selection? - bool hasSelection() const; - - // Show the parameters. - // Optional extra blanks can be put before the value. - void show (ostream& os, const string& blanks = string()) const; - - // Form the selection matrix telling for each baseline if it is selected. - // If no selection is made, all values in the matrix are true. - casacore::Matrix<bool> apply (const DPInfo& info) const; - - // Form the selection vector telling if a baseline in the DPInfo object - // is selected. - casacore::Vector<bool> applyVec (const DPInfo& info) const; - - private: - // Convert the baseline selection string. - void handleBL (casacore::Matrix<bool>& selectBL, - const DPInfo& info) const; - - // Handle a vector of baseline specifications. - casacore::Matrix<bool> handleBLVector (const ParameterValue& pvBL, - const casacore::Vector<casacore::String>&) const; - - // Handle the correlation type selection. - void handleCorrType (casacore::Matrix<bool>& selectBL) const; - - // Handle the baseline length selection. - void handleLength (casacore::Matrix<bool>& selectBL, - const DPInfo& info) const; - - //# Data members - string itsStrBL; - string itsCorrType; - vector<double> itsRangeBL; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/CMakeLists.txt b/CEP/DP3/DPPP/include/DPPP/CMakeLists.txt deleted file mode 100644 index d760372fb01..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -# $Id$ - -# List of header files that will be installed. -set(inst_HEADERS - DPRun.h DPStep.h DPInput.h DPBuffer.h DPInfo.h ApplyCal.h - DPLogger.h ProgressMeter.h FlagCounter.h - UVWCalculator.h BaselineSelection.h - MSReader.h MSWriter.h MSUpdater.h Counter.h - Averager.h MedFlagger.h PreFlagger.h UVWFlagger.h - StationAdder.h ScaleData.h Filter.h - PhaseShift.h Demixer.h - Cursor.h CursorUtilCasa.h Position.h Stokes.h SourceDBUtil.h - Apply.h EstimateMixed.h Simulate.h Simulator.h SubtractMixed.h Baseline.h - ModelComponent.h PointSource.h GaussianSource.h Patch.h - ModelComponentVisitor.h - DemixerNew.h DemixInfo.h DemixWorker.h - ApplyBeam.h ApplyBeam.tcc - Predict.h OneApplyCal.h - GainCal.h StefCal.h PhaseFitter.h - StManParsetKeys.h H5Parm.h DummyStep.h H5ParmPredict.h GridInterpolate.h - Upsample.h Split.h -) - -# Create symbolic link to include directory. -execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_BINARY_DIR}/include/${PACKAGE_NAME}) - -# Install header files. -install(FILES ${inst_HEADERS} DESTINATION include/${PACKAGE_NAME}) diff --git a/CEP/DP3/DPPP/include/DPPP/Counter.h b/CEP/DP3/DPPP/include/DPPP/Counter.h deleted file mode 100644 index 8215f2383e1..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Counter.h +++ /dev/null @@ -1,82 +0,0 @@ -//# Counter.h: DPPP step class to count flags -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_COUNTER_H -#define DPPP_COUNTER_H - -// @file -// @brief DPPP step class to count flags - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/FlagCounter.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class counting the number of flags per - // baseline and channel. - // It can be used for test purposes to know how many flags have been - // set by the previous steps. - - class Counter: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - Counter (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~Counter(); - - // Process the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the flag counts. - virtual void showCounts (std::ostream&) const; - - private: - //# Data members. - string itsName; - bool itsFlagData; - uint itsCount; - FlagCounter itsFlagCounter; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Cursor.h b/CEP/DP3/DPPP/include/DPPP/Cursor.h deleted file mode 100644 index c27954b002b..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Cursor.h +++ /dev/null @@ -1,297 +0,0 @@ -//# Cursor.h: Multi-dimensional iterators. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_CURSOR_H -#define DPPP_CURSOR_H - -// \file -// Multi-dimensional iterators. - -#include <Common/lofar_algorithm.h> -#include <Common/LofarLogger.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -template <typename T> -class cursor -{ -public: - cursor() - : itsPointer(0), - itsRank(0) - { - } - - cursor(T *pointer) - : itsPointer(pointer), - itsRank(1) - { - fill(itsStrides, itsStrides + MAX_RANK, 0); - itsStrides[0] = 1; - } - - template <typename T_STRIDE> - cursor(T *pointer, size_t rank, const T_STRIDE *strides) - : itsPointer(pointer), - itsRank(rank) - { - DBGASSERT (rank <= MAX_RANK); - copy(strides, strides + itsRank, itsStrides); - fill(itsStrides + itsRank, itsStrides + MAX_RANK, 0); - } - - size_t rank() const - { - return itsRank; - } - - cursor &operator++() - { - itsPointer += itsStrides[0]; - return *this; - } - - cursor operator++(int) - { - cursor tmp = *this; - itsPointer += itsStrides[0]; - return tmp; - } - - cursor &operator+=(size_t n) - { - itsPointer += n * itsStrides[0]; - return *this; - } - - cursor &operator-=(size_t n) - { - itsPointer -= n * itsStrides[0]; - return *this; - } - - T &operator*() - { - return *itsPointer; - } - - const T &operator*() const - { - return *itsPointer; - } - - T *operator->() - { - return itsPointer; - } - - const T *operator->() const - { - return itsPointer; - } - - T &operator[](size_t n) - { - return *(itsPointer + n * itsStrides[0]); - } - - const T &operator[](size_t n) const - { - return *(itsPointer + n * itsStrides[0]); - } - - void forward(size_t i) - { - itsPointer += itsStrides[i]; - } - - void forward(size_t i, size_t n) - { - itsPointer += n * itsStrides[i]; - } - - void backward(size_t i) - { - itsPointer -= itsStrides[i]; - } - - void backward(size_t i, size_t n) - { - itsPointer -= n * itsStrides[i]; - } - - T *address() - { - return itsPointer; - } - - const T *address() const - { - return itsPointer; - } - - size_t stride(size_t i) const - { - return itsStrides[i]; - } - -private: - static const size_t MAX_RANK = 5; - - T* itsPointer; - size_t itsRank; - size_t itsStrides[MAX_RANK]; -}; - -template <typename T> -class const_cursor -{ -public: - const_cursor() - : itsPointer(0), - itsRank(0) - { - } - - const_cursor(const T *pointer) - : itsPointer(pointer), - itsRank(1) - { - fill(itsStrides, itsStrides + MAX_RANK, 0); - itsStrides[0] = 1; - } - - template <typename T_STRIDE> - const_cursor(const T *pointer, size_t rank, const T_STRIDE *strides) - : itsPointer(pointer), - itsRank(rank) - { - copy(strides, strides + itsRank, itsStrides); - fill(itsStrides + itsRank, itsStrides + MAX_RANK, 0); - } - - const_cursor(const cursor<T> &other) - : itsPointer(other.address()), - itsRank(other.rank()) - { - for(size_t i = 0; i < itsRank; ++i) - { - itsStrides[i] = other.stride(i); - } - fill(itsStrides + itsRank, itsStrides + MAX_RANK, 0); - } - - size_t rank() const - { - return itsRank; - } - - const_cursor &operator++() - { - itsPointer += itsStrides[0]; - return *this; - } - - const_cursor operator++(int) - { - const_cursor tmp = *this; - itsPointer += itsStrides[0]; - return tmp; - } - - const_cursor &operator+=(size_t n) - { - itsPointer += n * itsStrides[0]; - return *this; - } - - const_cursor &operator-=(size_t n) - { - itsPointer -= n * itsStrides[0]; - return *this; - } - - const T &operator*() const - { - return *itsPointer; - } - - const T *operator->() const - { - return itsPointer; - } - - const T &operator[](size_t n) const - { - return *(itsPointer + n * itsStrides[0]); - } - - void forward(size_t i) - { - itsPointer += itsStrides[i]; - } - - void forward(size_t i, size_t n) - { - itsPointer += n * itsStrides[i]; - } - - void backward(size_t i) - { - itsPointer -= itsStrides[i]; - } - - void backward(size_t i, size_t n) - { - itsPointer -= n * itsStrides[i]; - } - - const T *address() const - { - return itsPointer; - } - - size_t stride(size_t i) const - { - return itsStrides[i]; - } - -private: - static const size_t MAX_RANK = 5; - - const T* itsPointer; - size_t itsRank; - size_t itsStrides[MAX_RANK]; -}; - -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/CursorUtilCasa.h b/CEP/DP3/DPPP/include/DPPP/CursorUtilCasa.h deleted file mode 100644 index 807a7104328..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/CursorUtilCasa.h +++ /dev/null @@ -1,71 +0,0 @@ -//# CursorUtilCasa.h: Helper functions for creating cursors for CASA arrays. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_CURSORUTILCASA_H -#define DPPP_CURSORUTILCASA_H - -// \file -// Helper functions for creating cursors for CASA arrays. - -#include <DPPP/Cursor.h> -#include <casacore/casa/Arrays/Array.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -template <typename T> -cursor<T> casa_cursor(casacore::Array<T> &array) -{ - return cursor<T>(array.data(), array.ndim(), array.steps().storage()); -} - -template <typename T> -cursor<T> casa_cursor(casacore::Array<T> &array, const casacore::IPosition &offset) -{ - return cursor<T>(&(array(offset)), array.ndim(), array.steps().storage()); -} - -template <typename T> -const_cursor<T> casa_const_cursor(const casacore::Array<T> &array) -{ - return const_cursor<T>(array.data(), array.ndim(), array.steps().storage()); -} - -template <typename T> -const_cursor<T> casa_const_cursor(const casacore::Array<T> &array, - const casacore::IPosition &offset) -{ - return const_cursor<T>(&(array(offset)), array.ndim(), - array.steps().storage()); -} - -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DPBuffer.h b/CEP/DP3/DPPP/include/DPPP/DPBuffer.h deleted file mode 100644 index a5d00d8cde4..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DPBuffer.h +++ /dev/null @@ -1,215 +0,0 @@ -//# DPBuffer.h: Buffer holding the data of a timeslot/band -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DPBUFFER_H -#define DPPP_DPBUFFER_H - -/// @file -/// @brief Buffer holding the data of a timeslot/band - -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/BasicSL/Complex.h> - -namespace LOFAR { - namespace DPPP { - - // @ingroup NDPPP - - // This class holds the data for one time slot in Array variables. - // It makes heavy use of reference semantics to avoid data copying - // when data are pushed from one step to another. - // This means that a data array can be shared between DPStep objects. - // So if a DPStep object changes data in a buffer, it has to be sure - // it can do it. If needed, Array::unique should be called to ensure - // the array is not shared. - // - // The following data can be kept in a DPBuffer object. - // <table> - // <tr> - // <td>TIME</td> - // <td>The time slot center of the current data (in MJD seconds).</td> - // </tr> - // <tr> - // <td>ROWNRS</td> - // <td>The row numbers of the current time slot. It can be empty - // when e.g. a time slot is inserted or if data are averaged.</td> - // </tr> - // <tr> - // <td>DATA</td> - // <td>The visibility data as [ncorr,nchan,nbaseline].</td> - // </tr> - // <tr> - // <td>FLAG</td> - // <td>The data flags as [ncorr,nchan,nbaseline] (True is bad). - // Note that the ncorr axis is redundant because NDPPP will always - // have the same flag for all correlations. The reason all - // correlations are there is because the MS expects them.</td> - // </tr> - // <tr> - // <td>WEIGHT</td> - // <td>The data weights as [ncorr,nchan,nbaseline]. - // Similarly to FLAG the ncorr axis is redundant because the - // same weight is used for all correlations.</td> - // </tr> - // <tr> - // <td>UVW</td> - // <td>The UVW coordinates in meters as [3,nbaseline].</td> - // </tr> - // <tr> - // <td>FULLRESFLAG</td> - // <td>The flags before any averaging was done. In the MS they are kept - // in column LOFAR_FULL_RES_FLAG. They are used to deal in BBS - // in a smart way with bandwidth and time smearing. - // The shape of the array is [nchan, ntimeavg, nbaseline], where - // ntimeavg is the number of time slots averaged to a single one. - // The number of channels averaged to a single one can be determined - // by dividing nchan by the number of channels in the data (or flags). - // </td> - // </tr> - // </table> - // The FLAG data member should always be filled in, so the first DPStep - // (MSReader) will do that. The DATA data member is filled in if any - // DPStep needs DATA. Other data members are filled on demand. - // The DPInput::fetch functions should be used to get data for those - // members. They take care that the input buffer's data are used if - // available, otherwise they get it from the DPInput object. - // In that way as little memory as needed is used. Note that e.g. the - // AOFlagger can use a lot of memory if a large time window is used. - // - // Until early 2015 NDPPP used the strategy of shallow data copies. - // I.e., a step increased the data reference counter and did not make - // an actual copy. Only when data were changed, a new data array was made. - // Thus MSReader allocated a new array when it read the data. - // However, it appeared this strategy lead to memory fragmentation and - // to sudden jumps in memory usage on Linux systems. - // <br>Therefore the strategy was changed to having each step preallocate - // its buffers and making deep copies when moving data from one step to - // the next one. It appeared that it not only improved memory usage, - // but also improved performance, possible due to far less mallocs. - // - // The buffer/step guidelines are as follows: - // 1. If a step keeps a buffer for later processing (e.g. AORFlagger), - // it must make a copy of the buffer because the input data arrays - // might have changed before that step processes the data. - // 2. A shallow copy of a data member can be used if a step processes - // the data immediately (e.g. Averager). - // The DPInput::fetch functions come in those 2 flavours. - - class DPBuffer - { - public: - // Construct object with empty arrays. - DPBuffer(); - - // The copy constructor uses reference copies. - DPBuffer (const DPBuffer&); - - // Assignment uses reference copies. - DPBuffer& operator= (const DPBuffer&); - - // Make a deep copy of all arrays in that to this. - void copy (const DPBuffer& that); - - // Reference only the arrays that are filled in that. - void referenceFilled (const DPBuffer& that); - - // Set or get the visibility data per corr,chan,baseline. - void setData (const casacore::Cube<casacore::Complex>& data) - { itsData.reference (data); } - const casacore::Cube<casacore::Complex>& getData() const - { return itsData; } - casacore::Cube<casacore::Complex>& getData() - { return itsData; } - - // Set or get the flags per corr,chan,baseline. - void setFlags (const casacore::Cube<bool>& flags) - { itsFlags.reference (flags); } - const casacore::Cube<bool>& getFlags() const - { return itsFlags; } - casacore::Cube<bool>& getFlags() - { return itsFlags; } - - // Set or get the weights per corr,chan,baseline. - void setWeights (const casacore::Cube<float>& weights) - { itsWeights.reference (weights); } - const casacore::Cube<float>& getWeights() const - { return itsWeights; } - casacore::Cube<float>& getWeights() - { return itsWeights; } - - // Set or get the flags at the full resolution per chan,timeavg,baseline. - void setFullResFlags (const casacore::Cube<bool>& flags) - { itsFullResFlags.reference (flags); } - const casacore::Cube<bool>& getFullResFlags() const - { return itsFullResFlags; } - casacore::Cube<bool>& getFullResFlags() - { return itsFullResFlags; } - - // Get or set the time. - void setTime (double time) - { itsTime = time; } - double getTime() const - { return itsTime; } - - // Get or set the exposure. - void setExposure (double exposure) - { itsExposure = exposure; } - double getExposure() const - { return itsExposure; } - - // Get or set the row numbers used by the DPInput class. - // It can be empty (e.g. when MSReader inserted a dummy time slot). - void setRowNrs (const casacore::Vector<uint>& rownrs) - { itsRowNrs.reference (rownrs); } - const casacore::Vector<uint>& getRowNrs() const - { return itsRowNrs; } - - // Get or set the UVW coordinates per baseline. - void setUVW (const casacore::Matrix<double>& uvw) - { itsUVW.reference (uvw); } - const casacore::Matrix<double>& getUVW() const - { return itsUVW; } - casacore::Matrix<double>& getUVW() - { return itsUVW; } - - // Merge the flags into the pre-average flags. - // For each flagged point, the corresponding pre-average flags are set. - static void mergeFullResFlags (casacore::Cube<bool>& fullResFlags, - const casacore::Cube<bool>& flags); - - private: - double itsTime; - double itsExposure; - casacore::Vector<uint> itsRowNrs; - casacore::Cube<casacore::Complex> itsData; //# ncorr,nchan,nbasel - casacore::Cube<bool> itsFlags; //# ncorr,nchan,nbasel - casacore::Matrix<double> itsUVW; //# 3,nbasel - casacore::Cube<float> itsWeights; //# ncorr,nchan,nbasel - casacore::Cube<bool> itsFullResFlags; //# fullres_nchan,ntimeavg,nbl - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DPInfo.h b/CEP/DP3/DPPP/include/DPPP/DPInfo.h deleted file mode 100644 index f47e61d5d81..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DPInfo.h +++ /dev/null @@ -1,309 +0,0 @@ -//# DPInfo.h: General info about DPPP data processing attributes like averaging -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DPINFO_H -#define DPPP_DPINFO_H - -// @file -// @brief General info about DPPP data processing attributes like averaging - -#include <Common/LofarTypes.h> -#include <Common/lofar_vector.h> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MPosition.h> -#include <casacore/measures/Measures/MeasureHolder.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Containers/Record.h> - -namespace LOFAR { - namespace DPPP { - - //# Forward declarations. - class DPInput; - - // @ingroup NDPPP - - // This class contains the information about the number of correlations, - // channels, baselines, and times. - // It is initialized by the first step and updated by steps like - // Averager that change the number of channels or times. - // Steps can take information from it to know about shapes. - - class DPInfo - { - public: - // Default constructor. - DPInfo(); - - // Set the initial info from the input. - void init (uint ncorr, uint nchan, - uint ntime, double startTime, double timeInterval, - const string& msName, const string& antennaSet); - - // Set nr of channels. - void setNChan (uint nchan) - { itsNChan = nchan; } - - // Set time interval - void setTimeInterval (double timeInterval) - { itsTimeInterval = timeInterval; } - - // Set the frequency info. - // An empty resolutions or effectiveBW is default to chanWidths. - // If totalBW is 0, it is set to the sum of effectiveBW. - // If refFreq is 0, it is set to the middle of chanFreqs (mean if even). - void set (const casacore::Vector<double>& chanFreqs, - const casacore::Vector<double>& chanWidths, - const casacore::Vector<double>& resolutions= casacore::Vector<double>(), - const casacore::Vector<double>& effectiveBW= casacore::Vector<double>(), - double totalBW = 0, - double refFreq = 0); - - // Set array info. - void set (const casacore::MPosition& arrayPos, - const casacore::MDirection& phaseCenter, - const casacore::MDirection& delayCenter, - const casacore::MDirection& tileBeamDir); - - // Set the info for the given antennae and baselines. - void set (const casacore::Vector<casacore::String>& antNames, - const casacore::Vector<casacore::Double>& antDiam, - const vector<casacore::MPosition>& antPos, - const casacore::Vector<casacore::Int>& ant1, - const casacore::Vector<casacore::Int>& ant2); - - // Set the name of the data column - void setDataColName(const casacore::String& dataColName) { - itsDataColName=dataColName; - } - - // Set the name of the weight column - void setWeightColName(const casacore::String& weightColName) { - itsWeightColName=weightColName; - } - - // Update the info for the given average factors. - // If chanAvg is higher than the actual nr of channels, it is reset. - // The same is true for timeAvg. - // It returns the possibly reset nr of channels to average. - uint update (uint chanAvg, uint timeAvg); - - // Update the info from the given selection parameters. - // Optionally unused stations are really removed from the antenna lists. - void update (uint startChan, uint nchan, - const vector<uint>& baselines, bool remove); - - // Remove unused stations from the antenna lists. - void removeUnusedAnt(); - - // Set the phase center. - // If original=true, it is set to the original phase center. - void setPhaseCenter (const casacore::MDirection& phaseCenter, bool original) - { itsPhaseCenter=phaseCenter; itsPhaseCenterIsOriginal = original; } - - - // Get the info. - const string& msName() const - { return itsMSName; } - const string& antennaSet() const - { return itsAntennaSet; } - uint ncorr() const - { return itsNCorr; } - uint nchan() const - { return itsNChan; } - uint startchan() const - { return itsStartChan; } - uint origNChan() const - { return itsOrigNChan; } - uint nchanAvg() const - { return itsChanAvg; } - uint nantenna() const - { return itsAntNames.size(); } - uint nbaselines() const - { return itsAnt1.size(); } - uint ntime() const - { return itsNTime; } - uint ntimeAvg() const - { return itsTimeAvg; } - double startTime() const - { return itsStartTime; } - double timeInterval() const - { return itsTimeInterval; } - const casacore::Vector<casacore::Int>& getAnt1() const - { return itsAnt1; } - const casacore::Vector<casacore::Int>& getAnt2() const - { return itsAnt2; } - const casacore::Vector<casacore::String>& antennaNames() const - { return itsAntNames; } - const casacore::Vector<casacore::Double>& antennaDiam() const - { return itsAntDiam; } - const vector<casacore::MPosition>& antennaPos() const - { return itsAntPos; } - const casacore::MPosition& arrayPos() const - { return itsArrayPos; } - const casacore::MPosition arrayPosCopy() const - { return copyMeasure(casacore::MeasureHolder(itsArrayPos)).asMPosition(); } - const casacore::MDirection& phaseCenter() const - { return itsPhaseCenter; } - const casacore::MDirection phaseCenterCopy() const - { return copyMeasure(casacore::MeasureHolder(itsPhaseCenter)).asMDirection(); } - bool phaseCenterIsOriginal() const - { return itsPhaseCenterIsOriginal; } - const casacore::MDirection& delayCenter() const - { return itsDelayCenter; } - const casacore::MDirection delayCenterCopy() const - { return copyMeasure(casacore::MeasureHolder(itsDelayCenter)).asMDirection(); } - const casacore::MDirection& tileBeamDir() const - { return itsTileBeamDir; } - const casacore::MDirection tileBeamDirCopy() const - { return copyMeasure(casacore::MeasureHolder(itsTileBeamDir)).asMDirection(); } - const casacore::Vector<double>& chanFreqs() const - { return itsChanFreqs; } - const casacore::Vector<double>& chanWidths() const - { return itsChanWidths; } - const casacore::Vector<double>& resolutions() const - { return itsResolutions; } - const casacore::Vector<double>& effectiveBW() const - { return itsEffectiveBW; } - const casacore::String& getDataColName() const - { return itsDataColName; } - const casacore::String& getWeightColName() const - { return itsWeightColName; } - double totalBW() const - { return itsTotalBW; } - double refFreq() const - { return itsRefFreq; } - - // Get the antenna numbers actually used in the (selected) baselines. - // E.g. [0,2,5,6] - const vector<int>& antennaUsed() const - { return itsAntUsed; } - - // Get the indices of all antennae in the used antenna vector above. - // -1 means that the antenna is not used. - // E.g. [0,-1,1,-1,-1,2,3] for the example above. - const vector<int>& antennaMap() const - { return itsAntMap; } - - // Are the visibility data needed? - bool needVisData() const - { return itsNeedVisData; } - // Does the last step need to write data and/or flags? - bool needWrite() const - { return itsWriteData || itsWriteFlags || itsWriteWeights; } - bool writeData() const - { return itsWriteData; } - bool writeFlags() const - { return itsWriteFlags; } - bool writeWeights() const - { return itsWriteWeights; } - // Has the meta data been changed in a step (precluding an update)? - bool metaChanged() const - { return itsMetaChanged; } - - // Set if visibility data needs to be read. - void setNeedVisData() - { itsNeedVisData = true; } - // Set if data needs to be written. - void setWriteData() - { itsWriteData = true; } - void setWriteFlags() - { itsWriteFlags = true; } - void setWriteWeights() - { itsWriteWeights = true; } - // Clear all write flags. - void clearWrites() - { itsWriteData = itsWriteFlags = itsWriteWeights = false; } - // Set change of meta data. - void setMetaChanged() - { itsMetaChanged = true; } - void clearMetaChanged() - { itsMetaChanged = false; } - - // Get the baseline table index of the autocorrelations. - // A negative value means there are no autocorrelations for that antenna. - const vector<int>& getAutoCorrIndex() const; - - // Get the lengths of the baselines (in meters). - const vector<double>& getBaselineLengths() const; - - // Convert to a Record. - // The names of the fields in the record are the data names without 'its'. - casacore::Record toRecord() const; - - // Update the DPInfo object from a Record. - // It is possible that only a few fields are defined in the record. - void fromRecord (const casacore::Record& rec); - - private: - // Set which antennae are actually used. - void setAntUsed(); - - // Creates a real copy of a casacore::Measure by exporting to a Record - static casacore::MeasureHolder copyMeasure(const casacore::MeasureHolder fromMeas); - - //# Data members. - bool itsNeedVisData; //# Are the visibility data needed? - bool itsWriteData; //# Must the data be written? - bool itsWriteFlags; //# Must the flags be written? - bool itsWriteWeights; //# Must the weights be written? - bool itsMetaChanged; //# Are meta data changed? (e.g., by averaging) - string itsMSName; - casacore::String itsDataColName; - casacore::String itsWeightColName; - string itsAntennaSet; - uint itsNCorr; - uint itsStartChan; - uint itsOrigNChan; - uint itsNChan; - uint itsChanAvg; - uint itsNTime; - uint itsTimeAvg; - double itsStartTime; - double itsTimeInterval; - casacore::MDirection itsPhaseCenter; - bool itsPhaseCenterIsOriginal; - casacore::MDirection itsDelayCenter; - casacore::MDirection itsTileBeamDir; - casacore::MPosition itsArrayPos; - casacore::Vector<double> itsChanFreqs; - casacore::Vector<double> itsChanWidths; - casacore::Vector<double> itsResolutions; - casacore::Vector<double> itsEffectiveBW; - double itsTotalBW; - double itsRefFreq; - casacore::Vector<casacore::String> itsAntNames; - casacore::Vector<casacore::Double> itsAntDiam; - vector<casacore::MPosition> itsAntPos; - vector<int> itsAntUsed; - vector<int> itsAntMap; - casacore::Vector<casacore::Int> itsAnt1; //# ant1 of all baselines - casacore::Vector<casacore::Int> itsAnt2; //# ant2 of all baselines - mutable vector<double> itsBLength; //# baseline lengths - mutable vector<int> itsAutoCorrIndex; //# autocorr index per ant - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DPInput.h b/CEP/DP3/DPPP/include/DPPP/DPInput.h deleted file mode 100644 index 4f1370ca9d6..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DPInput.h +++ /dev/null @@ -1,140 +0,0 @@ -//# DPInput.h: Abstract base class for a DPStep generating input -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DPINPUT_H -#define DPPP_DPINPUT_H - -// @file -// @brief Abstract base class for a DPStep generating input - -#include <DPPP/DPStep.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/UVWCalculator.h> -#include <DPPP/FlagCounter.h> -#include <StationResponse/Station.h> -#include <Common/lofar_vector.h> - -#include <casacore/tables/Tables/TableIter.h> -#include <casacore/tables/Tables/RefRows.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Arrays/Slicer.h> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MPosition.h> - -namespace LOFAR { - namespace DPPP { - - // @ingroup NDPPP - - // This class is the abstract base class for a DPStep object that - // handles the input. A concrete example is MSReader that reads the - // data from a MeasurementSet. However, it is also possible to have - // input steps generating data on the fly as done in test programs - // like tAverager.cc. - // - // A particular task of the class is to fetch the input for various - // data items like weight, uvw, etc.. This is done by testing if the - // item's data array is in the DPBuffer. If so, it will be returned. - // Otherwise the appropriate 'get' function will be called to read the - // data array from the input. - // The derived classes should implement those 'get' functions, unless - // they are sure the data arrays are always put in the buffer. - - class DPInput: public DPStep - { - public: - // Define the shared pointer for this type. - typedef shared_ptr<DPInput> ShPtr; - - virtual ~DPInput(); - - // Read the UVW at the given row numbers into the buffer. - // The default implementation throws an exception. - virtual void getUVW (const casacore::RefRows& rowNrs, - double time, - DPBuffer&); - - // Read the weights at the given row numbers into the buffer. - // The default implementation throws an exception. - virtual void getWeights (const casacore::RefRows& rowNrs, - DPBuffer&); - - // Read the fullRes flags (LOFAR_FULL_RES_FLAG) at the given row numbers - // into the buffer. - // If undefined, false is returned. - // The default implementation throws an exception. - virtual bool getFullResFlags (const casacore::RefRows& rowNrs, - DPBuffer&); - - // Read the model data at the given row numbers into the array. - // The default implementation throws an exception. - virtual void getModelData (const casacore::RefRows& rowNrs, - casacore::Cube<casacore::Complex>&); - - // Get the MS name. - // The default implementation returns an empty string. - virtual casacore::String msName() const; - - // Fill the vector with station beam info from the input source (MS). - // Only fill it for the given station names. - // The default implementation throws an exception. - virtual void fillBeamInfo (vector<StationResponse::Station::Ptr>&, - const casacore::Vector<casacore::String>& antNames); - - // Fetch the FullRes flags. - // If defined in the buffer, they are taken from there. - // Otherwise there are read from the input. - // If not defined in the input, they are filled using the flags in the - // buffer assuming that no averaging has been done so far. - // <src>If desired, they can be merged with the buffer's FLAG which means - // that if an averaged channel is flagged, the corresponding FullRes - // flags are set. - // <br>It does a stop/start of the timer when actually reading the data. - const casacore::Cube<bool>& fetchFullResFlags (const DPBuffer& bufin, - DPBuffer& bufout, - NSTimer& timer, - bool merge=false); - - // Fetch the weights. - // If defined in the buffer, they are taken from there. - // Otherwise there are read from the input. - // If they have to be read and if autoweighting is in effect, the buffer - // must contain DATA to calculate the weights. - // <br>It does a stop/start of the timer when actually reading the data. - const casacore::Cube<float>& fetchWeights (const DPBuffer& bufin, - DPBuffer& bufout, - NSTimer& timer); - - // Fetch the UVW. - // If defined in the buffer, they are taken from there. - // Otherwise there are read from the input. - // <br>It does a stop/start of the timer when actually reading the data. - const casacore::Matrix<double>& fetchUVW (const DPBuffer& bufin, - DPBuffer& bufout, - NSTimer& timer); - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DPLogger.h b/CEP/DP3/DPPP/include/DPPP/DPLogger.h deleted file mode 100644 index 2241ae8216f..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DPLogger.h +++ /dev/null @@ -1,77 +0,0 @@ -//# DPLogger.h: Log on cout/cerr or through the logging system -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DPLOGGER_H -#define DPPP_DPLOGGER_H - -// @file -// @brief Log on cout/cerr or through the logging system - -#include <Common/LofarLogger.h> -#include <iostream> - -namespace LOFAR { - namespace DPPP { - - // This class contains the flag to choose between cout/cerr and logging - // system. - class DPLogger - { - public: - static bool useLogger; - }; - } -} - -// Log an informational message. -#define DPLOG_INFO_STR(stream) \ - if (DPLogger::useLogger) { \ - LOG_INFO_STR (stream); \ - } else { \ - std::cout << stream << endl; \ - } - -// Log a fatal message. -#define DPLOG_WARN_STR(stream) \ - if (DPLogger::useLogger) { \ - LOG_WARN_STR (stream); \ - } else { \ - std::cerr << stream << endl; \ - } - -// Log an informational message. -#define DPLOG_INFO(msg, removeEndl) \ - std::string str(msg); \ - if (removeEndl && str.size() > 0 && str[str.size()-1] == '\n') { \ - str = str.substr(0, str.size()-1); \ - } \ - if (DPLogger::useLogger) { \ - LOG_INFO (str); \ - } else { \ - std::cout << str << endl; \ - } - -#define LOGCOUT(msg) \ - { std::ostringstream ostr; ostr<<msg; printf("%s\n", ostr.str().c_str()); } - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DPRun.h b/CEP/DP3/DPPP/include/DPPP/DPRun.h deleted file mode 100644 index 53a85043bbd..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DPRun.h +++ /dev/null @@ -1,94 +0,0 @@ -//# DPRun.h: Class to run steps like averaging and flagging on an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DPRUN_H -#define DPPP_DPRUN_H - -// @file -// @brief Class to run steps like averaging and flagging on an MS - -#include <lofar_config.h> -#include <DPPP/DPStep.h> -#include <DPPP/MSReader.h> -#include <Common/ParameterSet.h> - -#include <map> - -namespace LOFAR { - namespace DPPP { - - // @ingroup NDPPP - - // This class contains a single static function that creates and executes - // the steps defined in the parset file. - // The parset file is documented on the LOFAR wiki. - - class DPRun - { - public: - // Define the function to create a step from the given parameterset. - typedef DPStep::ShPtr StepCtor (DPInput*, const ParameterSet&, - const std::string& prefix); - - // Add a function creating a DPStep to the map. - static void registerStepCtor (const std::string&, StepCtor*); - - // Create a step object from the given parameters. - // It looks up the step type in theirStepMap. If not found, it will - // try to load a shared library with that name and execute the - // register function in it. - static StepCtor* findStepCtor (const std::string& type); - - // Execute the steps defined in the parset file. - // Possible parameters given at the command line are taken into account. - static void execute (const std::string& parsetName, - int argc=0, char* argv[] = 0); - - // Create the step objects. - static DPStep::ShPtr makeSteps (const ParameterSet& parset, - const std::string& prefix, - DPInput* reader); - - private: - // Create an output step, either an MSWriter or an MSUpdater - // If no data are modified (for example if only count was done), - // still an MSUpdater is created, but it will not write anything. - // It reads the output name from the parset. If the prefix is "", it - // reads msout or msout.name, otherwise it reads name from the output step - // Create an updater step if an input MS was given; otherwise a writer. - // Create an updater step only if needed (e.g. not if only count is done). - // If the user specified an output MS name, a writer or updater is always created - // If there is a writer, the reader needs to read the visibility data. - // reader should be the original reader - static DPStep::ShPtr makeOutputStep(MSReader* reader, - const ParameterSet& parset, const string& prefix, - casacore::String& currentMSName); - - // The map to create a step object from its type name. - static std::map<std::string, StepCtor*> theirStepMap; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DPStep.h b/CEP/DP3/DPPP/include/DPPP/DPStep.h deleted file mode 100644 index b0f9509a649..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DPStep.h +++ /dev/null @@ -1,262 +0,0 @@ -//# DPStep.h: Abstract base class for a DPPP step -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DPSTEP_H -#define DPPP_DPSTEP_H - -// @file -// @brief Class to hold code for virtual base class for Flaggers in DPPP - -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/lofar_smartptr.h> -#include <Common/Timer.h> -#include <iosfwd> - -namespace LOFAR { - namespace DPPP { - - // @ingroup NDPPP - - // This class defines a step in the DPPP pipeline. - // It is an abstract class from which all steps should be derived. - // A few functions can or must be implemented. They are called by - // the NDPPP program in the following order. - // <ul> - // <li> 'updateInfo' should update its DPInfo object with the specific - // step information. For example, in this way it is known - // in all steps how the data are averaged and what the shape is. - // <li> 'show' can be used to show the attributes. - // <li> 'process' is called continuously to process the next time slot. - // When processed, it should call 'process' of the next step. - // When done (i.e. at the end of the input), it should return False. - // <li> 'finish' finishes the processing which could mean that 'process' - // of the next step has to be called several times. When done, - // it should call 'finish' of the next step. - // <li> 'addToMS' is called after 'finish'. It gives a step the opportunity - // to add some data to the MS written/updated. It is, for example, - // used by AOFlagger to write its statistics. - // <li> 'showCounts' can be used to show possible counts of flags, etc. - // </ul> - // A DPStep object contains a DPInfo object telling the data settings for - // a step (like channel info, baseline info, etc.). - - class DPStep - { - public: - // Define the shared pointer for this type. - typedef shared_ptr<DPStep> ShPtr; - - // Constructor to initialize. - DPStep() - : itsPrevStep(0) - {} - - // Destructor. - virtual ~DPStep(); - - // Process the data. - // When processed, it invokes the process function of the next step. - // It should return False at the end. - virtual bool process (const DPBuffer&) = 0; - - // Finish the processing of this step and subsequent steps. - virtual void finish() = 0; - - // Set the info of this step and its next step. - // It calls the virtual function updateInfo to do the real work. - // It returns the info of the last step. - const DPInfo& setInfo (const DPInfo&); - - // Get access to the info. - const DPInfo& getInfo() const - { return itsInfo; } - - // Add some data to the MeasurementSet written/updated. - // The default implementation only calls addToMS from the previous step - virtual void addToMS (const string& msName); - - // Show the step parameters. - virtual void show (std::ostream&) const = 0; - - // Show the flag counts if needed. - // The default implementation does nothing. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - // The default implementation does nothing. - virtual void showTimings (std::ostream&, double duration) const; - - // Set the previous step. - void setPrevStep (DPStep* prevStep) - { itsPrevStep = prevStep; } - - // Get the previous step. - DPStep* getPrevStep () const - { return itsPrevStep; } - - // Set the next step. - virtual void setNextStep (DPStep::ShPtr nextStep) - { itsNextStep = nextStep; - nextStep->setPrevStep(this); - } - - // Get the next step. - const DPStep::ShPtr& getNextStep() const - { return itsNextStep; } - - protected: - DPInfo& info() - { return itsInfo; } - - // Update the general info (called by setInfo). - // The default implementation copies the info. - virtual void updateInfo (const DPInfo&); - - private: - //# Data members. - DPStep::ShPtr itsNextStep; - DPStep* itsPrevStep; // Normal pointer for back links, prevent - // two shared pointers to same object - DPInfo itsInfo; - }; - - - - // @ingroup NDPPP - - // This class defines a null step in the DPPP pipeline. - // It can be used as the last step in the pipeline, so other steps - // do not need to test if there is a next step. - - class NullStep: public DPStep - { - public: - virtual ~NullStep(); - - // Process the data. It does nothing. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - // It does nothing. - virtual void finish(); - - // Show the step parameters. - // It does nothing. - virtual void show (std::ostream&) const; - }; - - - - // @ingroup NDPPP - - // This class defines step in the DPPP pipeline that keeps the result - // to make it possible to get the result of another step. - // It keeps the result and calls process of the next step. - - class ResultStep: public DPStep - { - public: - typedef shared_ptr<ResultStep> ShPtr; - // Create the object. By default it sets its next step to the NullStep. - ResultStep(); - - virtual ~ResultStep(); - - // Keep the buffer. - virtual bool process (const DPBuffer&); - - // Finish does not do anything. - virtual void finish(); - - // Show the step parameters. - // It does nothing. - virtual void show (std::ostream&) const; - - // Get the result. - const DPBuffer& get() const - { return itsBuffer; } - DPBuffer& get() - { return itsBuffer; } - - // Clear the buffer. - void clear() - { itsBuffer = DPBuffer(); } - - private: - DPBuffer itsBuffer; - }; - - - - // @ingroup NDPPP - - // This class defines step in the DPPP pipeline that keeps the result - // to make it possible to get the result of another step. - // It keeps the result and calls process of the next step. - // Buffers are accumulated until cleared. - - class MultiResultStep: public DPStep - { - public: - // Define the shared pointer for this type. - typedef shared_ptr<MultiResultStep> ShPtr; - - // Create the object. By default it sets its next step to the NullStep. - MultiResultStep (uint size); - - virtual ~MultiResultStep(); - - // Add the buffer to the vector of kept buffers. - virtual bool process (const DPBuffer&); - - // Finish does not do anything. - virtual void finish(); - - // Show the step parameters. - // It does nothing. - virtual void show (std::ostream&) const; - - // Get the result. - const vector<DPBuffer>& get() const - { return itsBuffers; } - vector<DPBuffer>& get() - { return itsBuffers; } - - // Get the size of the result. - size_t size() const - { return itsSize; } - - // Clear the buffers. - void clear() - { itsSize = 0; } - - private: - vector<DPBuffer> itsBuffers; - size_t itsSize; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DemixInfo.h b/CEP/DP3/DPPP/include/DPPP/DemixInfo.h deleted file mode 100644 index b3959c002f1..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DemixInfo.h +++ /dev/null @@ -1,202 +0,0 @@ -//# DemixInfo.h: DPPP struct to hold the common demix variables -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: Demixer.h 23223 2012-12-07 14:09:42Z schoenmakers $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DEMIXINFO_H -#define DPPP_DEMIXINFO_H - -// @file -// @brief DPPP struct to hold the common demix variables - -#include <DPPP/DPInfo.h> -#include <DPPP/BaselineSelection.h> -#include <DPPP/Baseline.h> -#include <DPPP/Patch.h> -#include <Common/ParameterSet.h> - -#include <casacore/casa/Arrays/Vector.h> - -namespace LOFAR { - namespace DPPP { - // @ingroup NDPPP - - // This struct holds the common demix variables. - // It can be shared between the parallel DemixWorker objects. - - class DemixInfo - { - public: - // Constructor to read and initialize the values. - DemixInfo (const ParameterSet&, const string& prefix); - - // Update the info. - void update (const DPInfo& infoSel, DPInfo& info); - - // Show parameters. - void show (ostream&) const; - - // Get the DPInfo object. - const DPInfo& getInfo() const - { return itsInfoSel; } - - // Get settings. - //# 0=test 1=include 2=deproject 3=ignore - uint targetHandling() const {return itsTargetHandling;} - uint verbose() const {return itsVerbose;} - uint maxIter() const {return itsMaxIter;} - uint minNBaseline() const {return itsMinNBaseline;} - uint minNStation() const {return itsMinNStation;} - uint nstation() const {return itsNStation;} - uint nbl() const {return itsNBl;} - uint ncorr() const {return itsNCorr;} - uint nchanIn() const {return itsNChanIn;} - uint nchanAvg() const {return itsNChanAvg;} - uint nchanAvgSubtr() const {return itsNChanAvgSubtr;} - uint nchanOut() const {return itsNChanOut;} - uint nchanOutSubtr() const {return itsNChanOutSubtr;} - uint ntimeAvg() const {return itsNTimeAvg;} - uint ntimeAvgSubtr() const {return itsNTimeAvgSubtr;} - uint ntimeOut() const {return itsNTimeOut;} - uint ntimeOutSubtr() const {return itsNTimeOutSubtr;} - uint ntimeChunk() const {return itsNTimeChunk;} - uint chunkSize() const {return itsChunkSize;} - double timeIntervalAvg() const {return itsTimeIntervalAvg;} - double ratio1() const {return itsRatio1;} - double ratio2() const {return itsRatio2;} - double ateamAmplThreshold() const {return itsAteamAmplThreshold;} - double targetAmplThreshold() const {return itsTargetAmplThreshold;} - double defaultGain() const {return itsDefaultGain;} - bool isAteamNearby() const {return itsIsAteamNearby;} - bool propagateSolution() const {return itsPropagateSolution;} - bool applyBeam() const {return itsApplyBeam;} - bool solveBoth() const {return itsSolveBoth;} - bool doSubtract() const {return itsDoSubtract;} - const BaselineSelection& selBL() const {return itsSelBL;} - const vector<int>& uvwSplitIndex() const {return itsUVWSplitIndex;} - const string& predictModelName() const {return itsPredictModelName;} - const string& demixModelName() const {return itsDemixModelName;} - const string& targetModelName() const {return itsTargetModelName;} - const vector<string>& sourceNames() const {return itsSourceNames;} - const Position& phaseRef() const {return itsPhaseRef;} - const vector<Baseline>& baselines() const {return itsBaselines;} - const casacore::Vector<bool> selTarget() const {return itsSelTarget;} - const casacore::Vector<double>& freqDemix() const {return itsFreqDemix;} - const casacore::Vector<double>& freqSubtr() const {return itsFreqSubtr;} - const vector<Patch::ConstPtr>& ateamList() const {return itsAteamList;} - const vector<Patch::ConstPtr>& targetList() const {return itsTargetList;} - const vector<Patch::ConstPtr>& ateamDemixList() const - {return itsAteamDemixList;} - const vector<Patch::ConstPtr>& targetDemixList() const - {return itsTargetDemixList;} - - // Get the baselines. - const casacore::Vector<casacore::Int>& getAnt1() const - { return itsInfoSel.getAnt1(); } - const casacore::Vector<casacore::Int>& getAnt2() const - { return itsInfoSel.getAnt2(); } - - // Get the antenna names and used antennas. - const casacore::Vector<casacore::String>& antennaNames() const - { return itsInfoSel.antennaNames(); } - - // Get cosine of the angular distance between two sky positions. - static double getCosAngDist (double ra1, double dec1, - double ra2, double dec2) - { - return sin(dec1)*sin(dec2) + cos(dec1)*cos(dec2)*cos(ra1-ra2); - } - - // Test if two positions in the sky are within delta radians. - static bool testAngDist (double ra1, double dec1, - double ra2, double dec2, double cosDelta) - { - return getCosAngDist (ra1, dec1, ra2, dec2) >= cosDelta; - } - - private: - // Create a list of patches (and components). - vector<Patch::ConstPtr> makePatchList (const string& sdbName, - const vector<string>& patchNames); - - // Make the target list for demixing with a detailed model for the - // possible Ateam sources in it. - void makeTargetDemixList(); - - //# Data members. - DPInfo itsInfoSel; - BaselineSelection itsSelBL; - BaselineSelection itsSelBLTarget; - vector<int> itsUVWSplitIndex; - string itsPredictModelName; - string itsDemixModelName; - string itsTargetModelName; - vector<string> itsSourceNames; - double itsRatio1; - double itsRatio2; - double itsAteamAmplThreshold; - double itsTargetAmplThreshold; - double itsCosTargetDelta; - double itsAngdistThreshold; - double itsAngdistRefFreq; - double itsDefaultGain; - bool itsIsAteamNearby; - bool itsPropagateSolution; - bool itsApplyBeam; - bool itsSolveBoth; //# solve if both stat solvable - bool itsDoSubtract; - uint itsTargetHandling; - uint itsVerbose; //# trace verbosity level - uint itsMaxIter; //# max #iter in solve - uint itsMinNBaseline; //# min #baselines for solve - uint itsMinNStation; //# min #stations for solve - uint itsNStation; - uint itsNBl; - uint itsNCorr; - uint itsNChanIn; - uint itsNChanAvgSubtr; //# subtract averaging - uint itsNChanAvg; //# demix averaging - uint itsNChanOutSubtr; - uint itsNChanOut; - uint itsNTimeAvgSubtr; //# subtract averaging - uint itsNTimeAvg; //# demix averaging - uint itsNTimeOutSubtr; //# #output times per chunk - uint itsNTimeOut; //# #demix times per chunk - uint itsChunkSize; //# predict time step - uint itsNTimeChunk; //# nr chunks in parallel - double itsTimeIntervalAvg; - Position itsPhaseRef; //# original phaseref - vector<Baseline> itsBaselines; - casacore::Vector<bool> itsSelTarget; //# baselines in target estimate - casacore::Vector<double> itsFreqDemix; - casacore::Vector<double> itsFreqSubtr; - vector<Patch::ConstPtr> itsAteamList; - vector<Patch::ConstPtr> itsTargetList; - vector<Patch::ConstPtr> itsAteamDemixList; - vector<Patch::ConstPtr> itsTargetDemixList; - vector<string> itsAteamRemoved; - vector<string> itsTargetReplaced; - }; - - } //# end namespace -} //# end namespace - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DemixWorker.h b/CEP/DP3/DPPP/include/DPPP/DemixWorker.h deleted file mode 100644 index 1e03ddd9097..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DemixWorker.h +++ /dev/null @@ -1,343 +0,0 @@ -//# DemixWorker.h: Demixer helper class processing a time chunk -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: Demixer.h 23223 2012-12-07 14:09:42Z schoenmakers $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DEMIXWORKER_H -#define DPPP_DEMIXWORKER_H - -// @file -// @brief DPPP step class to average in time and/or freq - -#include <DPPP/DemixInfo.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/Patch.h> -#include <DPPP/PhaseShift.h> -#include <DPPP/Filter.h> -#include <DPPP/EstimateNew.h> -#include <StationResponse/Station.h> -#include <ParmDB/ParmDB.h> - -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/measures/Measures/MeasureHolder.h> -#include <casacore/measures/Measures/MeasFrame.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MPosition.h> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MCDirection.h> - -namespace LOFAR { - - namespace DPPP { - // @ingroup NDPPP - - // DemixWorker::process processes a single time window (say, 2 minutes). - // It predicts the A-team and target sources to determine which sources - // have to be taken into account and which antennae have to be solved for. - // Multiple DemixWorker::process can be executed in parallel by the parent - // class DemixerNew. - // - // Each DemixWorker object references a DemixInfo object containing the - // general info and parameters. - - class DemixWorker - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - DemixWorker (DPInput*, - const string& prefix, - const DemixInfo& info, - const DPInfo& dpinfo, - int workernr); - - - // Process the data in the input buffers and store the result in the - // output buffers. - void process (const DPBuffer* bufin, uint nbufin, - DPBuffer* bufout, vector<double>* solutions, - uint chunkNr); - - // Get the number of solves. - uint nSolves() const - { return itsNrSolves; } - // Get the number of converged solves. - uint nConverged() const - { return itsNrConverged; } - // Get the total nr of iterations used. - uint nIterations() const - { return itsNrIter; } - // Get the number of times no demix was needed. - uint nNoDemix() const - { return itsNrNoDemix; } - uint nIncludeStrongTarget() const - { return itsNrIncludeStrongTarget; } - uint nIncludeCloseTarget() const - { return itsNrIncludeCloseTarget; } - uint nIgnoreTarget() const - { return itsNrIgnoreTarget; } - uint nDeprojectTarget() const - { return itsNrDeprojectTarget; } - // Get nr of times a source was demixed. - const casacore::Vector<uint>& nsourcesDemixed() const - { return itsNrSourcesDemixed; } - // Get nr of times a station was demixed. - const casacore::Vector<uint>& nstationsDemixed() const - { return itsNrStationsDemixed; } - // Get nr of times a station/source was demixed. - const casacore::Matrix<uint>& statSourceDemixed() const - { return itsStatSourceDemixed; } - const casacore::Matrix<double>& amplSubtrMean() const - { return itsAmplSubtrMean; } - const casacore::Matrix<double>& amplSubtrM2() const - { return itsAmplSubtrM2; } - const casacore::Matrix<size_t>& amplSubtrNr() const - { return itsAmplSubtrNr; } - - // Get the timings of the various processing steps. - // <group> - double getTotalTime() const - { return itsTimer.getElapsed(); } - double getCoarseTime() const - { return itsTimerCoarse.getElapsed(); } - double getPhaseShiftTime() const - { return itsTimerPhaseShift.getElapsed(); } - double getDemixTime() const - { return itsTimerDemix.getElapsed(); } - double getPredictTime() const - { return itsTimerPredict.getElapsed(); } - double getSolveTime() const - { return itsTimerSolve.getElapsed(); } - double getSubtractTime() const - { return itsTimerSubtract.getElapsed(); } - // </group> - - private: - // Setup the demix processing steps for this piece of data. - // It fills itsFirstSteps, etc. for the sources to be demixed. - // It also determines how to handle the target (include,deproject,ignore). - void setupDemix (uint chunkNr); - - // Find the median ampltitude for the selected baselines. - // It uses itsTmpAmpl as temporary buffer. - float findMedian (const casacore::Cube<float>& ampl, const bool* selbl); - - // Average the baseline UVWs in bufin and split them into UVW per station. - // It returns the number of time averages. - uint avgSplitUVW (const DPBuffer* bufin, uint nbufin, - uint ntimeAvg, const vector<uint>& selbl); - - // Predict the target StokesI amplitude. - // It applies the beam at each target patch. - void predictTarget (const vector<Patch::ConstPtr>& patchList, - uint ntime, double time, double timeStep); - - // Predict the StokesI amplitude of the Ateam patches and determine - // which antennae and sources to use when demixing. - // It applies the beam at each patch center. - void predictAteam (const vector<Patch::ConstPtr>& patchList, - uint ntime, double time, double timeStep); - - // Add the StokesI of itsPredictVis to ampl. - void addStokesI (casacore::Matrix<float>& ampl); - - // Calculate the beam for demix resolution and apply to itsPredictVis. - // If apply==False, nothing is done. - void applyBeam (double time, const Position& pos, bool apply); - - // Calculate the beam for the given sky direction and frequencies. - // Apply it to the data. - // If apply==False, nothing is done. - void applyBeam (double time, const Position& pos, bool apply, - const casacore::Vector<double>& chanFreqs, - dcomplex* data); - - // Convert a direction to ITRF. - StationResponse::vector3r_t dir2Itrf (const casacore::MDirection&); - - // Calculate the StokesI amplitude from the predicted visibilities. - // (0.5 * (XX+YY)) - void calcStokesI (casacore::Matrix<float>& ampl); - - // Simply average the data if no demixing needs to bedone. - void average (const DPBuffer* bufin, uint nbufin, - DPBuffer* bufout); - - // Add the decorrelation factor contribution for each time slot. - void addFactors (const DPBuffer& newBuf, - casacore::Array<casacore::DComplex>& factorBuf); - - // Calculate the decorrelation factors by averaging them. - // Apply the P matrix to deproject the sources without a model. - void makeFactors (const casacore::Array<casacore::DComplex>& bufIn, - casacore::Array<casacore::DComplex>& bufOut, - const casacore::Cube<float>& weightSums, - uint nChanOut, - uint nChanAvg); - - // Deproject the sources without a model. - void deproject (casacore::Array<casacore::DComplex>& factors, - vector<MultiResultStep*> avgResults, - uint resultIndex); - - // Do the demixing. - void handleDemix (DPBuffer* bufout, vector<double>* solutions, - double time, double timeStep); - - // Solve gains and subtract sources. - void demix (vector<double>* solutions, double time, double timeStep); - - // Add amplitude subtracted to the arrays for mean and stddev. - void addMeanM2 (const vector<float>& sourceAmpl, uint src); - - // Merge the data of the selected baselines from the subtract buffer - // into the full buffer. - void mergeSubtractResult(); - - //# Data members. - int itsWorkerNr; - const DemixInfo* itsMix; - vector<PhaseShift*> itsOrigPhaseShifts; - //# Phase shift and average steps for demix. - vector<DPStep::ShPtr> itsOrigFirstSteps; - //# Result of phase shifting and averaging the directions of interest - //# at the demix resolution. - vector<MultiResultStep*> itsAvgResults; - vector<PhaseShift*> itsPhaseShifts; - vector<DPStep::ShPtr> itsFirstSteps; - DPStep::ShPtr itsAvgStepSubtr; - Filter itsFilter; - Filter* itsFilterSubtr; - //# Result of averaging the target at the subtract resolution. - MultiResultStep* itsAvgResultFull; - MultiResultStep* itsAvgResultSubtr; - //# The sources to demix (excluding target). - vector<Patch::ConstPtr> itsDemixList; - //# The info needed to calculate the station beams. - vector<StationResponse::Station::Ptr> itsAntBeamInfo; - //# Measure objects unique to this worker (thread). - //# This is needed because they are not thread-safe. - casacore::MPosition itsArrayPos; - casacore::MDirection itsDelayCenter; - casacore::MDirection itsTileBeamDir; - - //# Variables set by setupDemix and used by handleDemix. - uint itsNDir; - uint itsNModel; - uint itsNSubtr; - bool itsIgnoreTarget; - bool itsIncludeTarget; - //# Accumulator used for computing the demixing weights at the demix - //# resolution. The shape of this buffer is #correlations x #channels - //# x #baselines x #directions x #directions (fastest axis first). - casacore::Array<casacore::DComplex> itsFactorBuf; - //# Buffer of demixing weights at the demix resolution. Each Array is a - //# cube of shape #correlations x #channels x #baselines of matrices of - //# shape #directions x #directions. - vector<casacore::Array<casacore::DComplex> > itsFactors; - //# Accumulator used for computing the demixing weights. The shape of this - //# buffer is #correlations x #channels x #baselines x #directions - //# x #directions (fastest axis first). - casacore::Array<casacore::DComplex> itsFactorBufSubtr; - //# Buffer of demixing weights at the subtract resolution. Each Array is a - //# cube of shape #correlations x #channels x #baselines of matrices of - //# shape #directions x #directions. - vector<casacore::Array<casacore::DComplex> > itsFactorsSubtr; - - //# Variables for conversion of directions to ITRF. - casacore::MeasFrame itsMeasFrame; - casacore::MDirection::Convert itsMeasConverter; - vector<StationResponse::matrix22c_t> itsBeamValues; //# [nst,nch] - - //# Indices telling which Ateam sources to use. - vector<uint> itsSrcSet; - //# UVW per station per demix time slot - casacore::Cube<double> itsStationUVW; //# UVW per station - casacore::Matrix<double> itsAvgUVW; //# temp buffer - casacore::Cube<dcomplex> itsPredictVis; //# temp buffer - //# #nfreq x #bl x #time StokesI amplitude per A-source. - vector<casacore::Cube<float> > itsAteamAmpl; - //# #bl x #src telling if baseline has sufficient Ateam flux. - casacore::Matrix<bool> itsAteamAmplSel; - //# #nfreq x #bl x #time StokesI amplitude of target. - casacore::Cube<float> itsTargetAmpl; - //# Temporary buffer to determine medians. - vector<float> itsTmpAmpl; - //# Per A-source and for target the min and max amplitude. - vector<double> itsAteamMinAmpl; - vector<double> itsAteamMaxAmpl; - double itsTargetMinAmpl; - double itsTargetMaxAmpl; - //# Per A-source the stations to use (matching the minimum amplitude). - vector<vector<uint> > itsStationsToUse; - casacore::Block<bool> itsSolveStation; //# solve station i? - //# Per station and source the index in the unknowns vector. - //# Note there are 8 unknowns (4 pol, ampl/phase) per source/station. - vector<vector<int> > itsUnknownsIndex; - //# The estimater (solver). - EstimateNew itsEstimate; - //# Variables for the predict. - casacore::Matrix<double> itsUVW; - vector<casacore::Cube<dcomplex> > itsModelVisDemix; - vector<casacore::Cube<dcomplex> > itsModelVisSubtr; - uint itsNTimeOut; - uint itsNTimeOutSubtr; - uint itsTimeIndex; - vector<float> itsObservedAmpl; - vector<float> itsSourceAmpl; - vector<float> itsSumSourceAmpl; - //# Statistics - uint itsNrSolves; - uint itsNrConverged; - uint itsNrIter; - uint itsNrNoDemix; - uint itsNrIncludeStrongTarget; - uint itsNrIncludeCloseTarget; - uint itsNrIgnoreTarget; - uint itsNrDeprojectTarget; - //# Nr of times a source is demixed. - casacore::Vector<uint> itsNrSourcesDemixed; - //# Nr of times a station is demixed. - casacore::Vector<uint> itsNrStationsDemixed; - //# Nr of times a source/station is demixed. - casacore::Matrix<uint> itsStatSourceDemixed; - //# Average amplitude subtracted for middle channel [nbl,nsrc] - casacore::Matrix<double> itsAmplSubtrMean; - //# M2n to calculate stddev online in stable way (see Wikipedia) - casacore::Matrix<double> itsAmplSubtrM2; - //# N for mean/stddev amplitude calculations. - casacore::Matrix<size_t> itsAmplSubtrNr; - //# Timers. - NSTimer itsTimer; - NSTimer itsTimerCoarse; - NSTimer itsTimerPhaseShift; - NSTimer itsTimerDemix; - NSTimer itsTimerPredict; - NSTimer itsTimerSolve; - NSTimer itsTimerSubtract; - }; - - } //# end namespace -} //# end namespace - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Demixer.h b/CEP/DP3/DPPP/include/DPPP/Demixer.h deleted file mode 100644 index da64ad32727..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Demixer.h +++ /dev/null @@ -1,216 +0,0 @@ -//# Demixer.h: DPPP step class to subtract A-team sources -//# Copyright (C) 2011 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DEMIXER_H -#define DPPP_DEMIXER_H - -// @file -// @brief DPPP step class to average in time and/or freq - -#include <DPPP/Baseline.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/Patch.h> -#include <DPPP/PhaseShift.h> -#include <DPPP/Filter.h> - -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MPosition.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/measures/Measures/MeasFrame.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/measures/Measures/MCPosition.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - typedef vector<Patch::ConstPtr> PatchList; - - // This class is a DPStep class to subtract the strong A-team sources. - // It is based on the demixing.py script made by Bas vd Tol and operates - // per time chunk as follows: - // <ul> - // <li> The data are phase-shifted and averaged for each source. - // <li> Demixing is done using the combined results. - // <li> For each source a BBS solve, smooth, and predict is done. - // <li> The predicted results are subtracted from the averaged data. - // </ul> - - class Demixer: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - Demixer (DPInput*, const ParameterSet&, const string& prefix); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - // Add the decorrelation factor contribution for each time slot. - void addFactors (const DPBuffer& newBuf, - casacore::Array<casacore::DComplex>& factorBuf); - - // Calculate the decorrelation factors by averaging them. - // Apply the P matrix to deproject the sources without a model. - void makeFactors (const casacore::Array<casacore::DComplex>& bufIn, - casacore::Array<casacore::DComplex>& bufOut, - const casacore::Cube<float>& weightSums, - uint nChanOut, - uint nChanAvg); - - // Do the demixing. - void handleDemix(); - - // Deproject the sources without a model. - void deproject (casacore::Array<casacore::DComplex>& factors, - vector<MultiResultStep*> avgResults, - uint resultIndex); - - // Solve gains and subtract sources. - void demix(); - - // Export the solutions to a ParmDB. - void dumpSolutions(); - - // Merge the data of the selected baselines from the subtract buffer - // into the full buffer. - void mergeSubtractResult(); - - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBufTmp; - string itsSkyName; - string itsInstrumentName; - double itsDefaultGain; - size_t itsMaxIter; - BaselineSelection itsSelBL; - Filter itsFilter; - vector<PhaseShift*> itsPhaseShifts; - //# Phase shift and average steps for demix. - vector<DPStep::ShPtr> itsFirstSteps; - //# Result of phase shifting and averaging the directions of interest - //# at the demix resolution. - vector<MultiResultStep*> itsAvgResults; - DPStep::ShPtr itsAvgStepSubtr; - Filter* itsFilterSubtr; - //# Result of averaging the target at the subtract resolution. - MultiResultStep* itsAvgResultFull; - MultiResultStep* itsAvgResultSubtr; - //# Ignore target in demixing? - bool itsIgnoreTarget; - //# Name of the target. Empty if no model is available for the target. - string itsTargetSource; - vector<string> itsSubtrSources; - vector<string> itsModelSources; - vector<string> itsExtraSources; - vector<string> itsAllSources; -// vector<double> itsCutOffs; - bool itsPropagateSolutions; - uint itsNDir; - uint itsNModel; - uint itsNStation; - uint itsNBl; - uint itsNCorr; - uint itsNChanIn; - uint itsNTimeIn; - uint itsNTimeDemix; - uint itsNChanAvgSubtr; - uint itsNTimeAvgSubtr; - uint itsNChanOutSubtr; - uint itsNTimeOutSubtr; - uint itsNTimeChunk; - uint itsNTimeChunkSubtr; - uint itsNChanAvg; - uint itsNTimeAvg; - uint itsNChanOut; - uint itsNTimeOut; - double itsTimeIntervalAvg; - - //# Accumulator used for computing the demixing weights at the demix - //# resolution. The shape of this buffer is #correlations x #channels - //# x #baselines x #directions x #directions (fastest axis first). - casacore::Array<casacore::DComplex> itsFactorBuf; - //# Buffer of demixing weights at the demix resolution. Each Array is a - //# cube of shape #correlations x #channels x #baselines of matrices of - //# shape #directions x #directions. - vector<casacore::Array<casacore::DComplex> > itsFactors; - - //# Accumulator used for computing the demixing weights. The shape of this - //# buffer is #correlations x #channels x #baselines x #directions - //# x #directions (fastest axis first). - casacore::Array<casacore::DComplex> itsFactorBufSubtr; - //# Buffer of demixing weights at the subtract resolution. Each Array is a - //# cube of shape #correlations x #channels x #baselines of matrices of - //# shape #directions x #directions. - vector<casacore::Array<casacore::DComplex> > itsFactorsSubtr; - - PatchList itsPatchList; - Position itsPhaseRef; - vector<Baseline> itsBaselines; - vector<int> itsUVWSplitIndex; - casacore::Vector<double> itsFreqDemix; - casacore::Vector<double> itsFreqSubtr; - vector<double> itsUnknowns; - vector<double> itsPrevSolution; - uint itsTimeIndex; - uint itsNConverged; - FlagCounter itsFlagCounter; - - //# Timers. - NSTimer itsTimer; - NSTimer itsTimerPhaseShift; - NSTimer itsTimerDemix; - NSTimer itsTimerSolve; - NSTimer itsTimerDump; - }; - - } //# end namespace -} //# end namespace - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DemixerNew.h b/CEP/DP3/DPPP/include/DPPP/DemixerNew.h deleted file mode 100644 index 5b3242cacd0..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DemixerNew.h +++ /dev/null @@ -1,142 +0,0 @@ -//# DemixerNew.h: DPPP step class to subtract A-team sources in adaptive way -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: DemixerNew.h 23223 2012-12-07 14:09:42Z schoenmakers $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DEMIXERNEW_H -#define DPPP_DEMIXERNEW_H - -// @file -// @brief DPPP step class to subtract A-team sources in adaptive way - -#include <DPPP/DemixInfo.h> -#include <DPPP/DemixWorker.h> -#include <DPPP/DPInput.h> -#include <DPPP/Filter.h> -#include <ParmDB/ParmDB.h> -#include <Common/lofar_smartptr.h> -#include <Common/lofar_map.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class to subtract the strong A-team sources - // in a smart way (algorithm developed by Reinout van Weeren). - // It operates as follows: - // <ol> - // <li> Per time window (default 2 min) demixing is done separately. - // <li> Using a simple Ateam model (the A and other strong sources) - // and the beam model, the StokesI flux is predicted per source. - // The antennae of baselines with flux>threshold are counted. - // Only an antenna counted in at least min_antenna baselines is - // solved for. If not such antennae exist, the source is ignored. - // <li> The target is predicted as well. Note that an Ateam source within - // the target field is removed from the Ateam model and added/replaced - // in the target model. - // The target model is usually created using gsm.py. - // <li> For the core baselines the ratio target/Ateam flux is used to - // determine if the target has to be included, ignored or deprojected. - // </ol> - // It is based on the demixing.py script made by Bas vd Tol and operates - // per time chunk as follows: - // <ul> - // <li> The data are phase-shifted and averaged for each source. - // <li> Demixing is done using the combined results. - // <li> For each source a BBS solve, smooth, and predict is done. - // <li> The predicted results are subtracted from the averaged data. - // </ul> - - class DemixerNew: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - DemixerNew (DPInput*, const ParameterSet&, const string& prefix); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - // Process the data collected in itsBuf. - void processData(); - - // Export the solutions to a ParmDB. - void writeSolutions (double startTime, int ntime); - - // Add the mean and M2 (square of differences) of a part in a - // numerically stable way. - void addMeanM2 (double& mean, double& m2, size_t& nr, - double partmean, double partm2, size_t partnr) const; - - // Show a statistic. - void showStat (ostream& os, double n, double ntot, - const string& str1, const string& str2) const; - - // Show a percentage with 1 decimal. - void showPerc1 (ostream& os, float perc) const; - - //# Data members. - DPInput* itsInput; - string itsName; - DemixInfo itsDemixInfo; - string itsInstrumentName; - shared_ptr<BBS::ParmDB> itsParmDB; - Filter itsFilter; //# only used for getInfo() - vector<DemixWorker> itsWorkers; - vector<DPBuffer> itsBufIn; - vector<DPBuffer> itsBufOut; - vector<vector<double> > itsSolutions; //# all solutions in a time window - map<string,int> itsParmIdMap; //# -1 = new parm name - uint itsNTime; - uint itsNTimeOut; - uint itsNChunk; - //# Timers. - NSTimer itsTimer; - NSTimer itsTimerDemix; - NSTimer itsTimerDump; //# writeSolutions - NSTimer itsTimerNext; //# next step (parallel to writeSolutions) - }; - - } //# end namespace -} //# end namespace - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/DummyStep.h b/CEP/DP3/DPPP/include/DPPP/DummyStep.h deleted file mode 100644 index 9611cc0b86e..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/DummyStep.h +++ /dev/null @@ -1,82 +0,0 @@ -//# DummyStep.h: DPPP step class to DummyStep visibilities from a source model -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_DummyStep_H -#define DPPP_DummyStep_H - -// @file -// @brief DPPP step class to DummyStep visibilities from a source model - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> - -#include <utility> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is an empty DPStep subclass to use as implementation template - - class DummyStep: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - DummyStep (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~DummyStep(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuffer; - - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/EstimateMixed.h b/CEP/DP3/DPPP/include/DPPP/EstimateMixed.h deleted file mode 100644 index 53f8523ef1c..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/EstimateMixed.h +++ /dev/null @@ -1,105 +0,0 @@ -//# EstimateMixed.h: Estimate Jones matrices for several directions -//# simultaneously. A separate data stream is used for each direction. The -//# mixing coefficients quantify the influence of each direction on each of the -//# other directions (including time and frequency smearing). -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_ESTIMATEMIXED_H -#define DPPP_ESTIMATEMIXED_H - -// \file -// Estimate Jones matrices for several directions simultaneously. A separate -// data stream is used for each direction. The mixing coefficients quantify the -// influence of each direction on each of the other directions (including time -// and frequency smearing). - -#include <DPPP/Baseline.h> -#include <DPPP/Cursor.h> -#include <Common/lofar_complex.h> -#include <Common/lofar_vector.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -// Estimate Jones matrices for several directions simultaneously. A separate -// data stream is used for each direction. The mixing coefficients quantify the -// influence of each direction on each of the other directions (including time -// and frequency smearing). -// -// \param[in] nDirection -// Number of directions to estimate Jones matrices for. -// \param[in] nStation -// Number of stations. -// \param[in] nBaseline -// Number of baselines. -// \param[in] nChannel -// Number of frequency channels. -// \param[in] data -// Vector of length \p nDirection of cursors for 3-D buffers of observed -// visiblity data of shape (\p nBaseline, \p nChannel, 4). -// \param[in] model -// Vector of length \p nDirection of cursors for 3-D buffers of simulated -// visiblity data of shape (\p nBaseline, \p nChannel, 4). -// \param[in] baselines -// A cursor for a 1-D buffer of baselines of shape (\p nBaseline). -// \param[in] flag -// A cursor for a 3-D buffer of observed visibility flags of shape -// (\p nBaseline, \p nChannel, 4). -// \param[in] weight -// A cursor for a 3-D buffer of observed visibility weights of shape -// (\p nBaseline, \p nChannel, 4). -// \param[in] mix -// A cursor for a 5-D buffer of mixing weights of shape -// (\p nBaseline, \p nChannel, 4, \p nDirection, \p nDirection). -// \param[in] unknowns -// A pointer to a buffer of unknowns of size nDirection * nStation * 8. -// \param[in] errors -// A pointer to a buffer of errors of size nDirection * nStation * 8. If this -// pointer is null (0), errors will not be estimated. -bool estimate(size_t nDirection, size_t nStation, size_t nBaseline, - size_t nChannel, const_cursor<Baseline> baselines, - vector<const_cursor<fcomplex> > data, vector<const_cursor<dcomplex> > model, - const_cursor<bool> flag, const_cursor<float> weight, - const_cursor<dcomplex> mix, double *unknowns, size_t maxiter=50); -// @} - -// Estimate for a variable nr of stations per source. -bool estimateSel(size_t nDirection, size_t nStation, size_t nBaseline, - size_t nChannel, const_cursor<Baseline> baselines, - vector<const_cursor<fcomplex> > data, - vector<const_cursor<dcomplex> > model, - const_cursor<bool> flag, const_cursor<float> weight, - const_cursor<dcomplex> mix, double *unknowns, - size_t nUnknowns, - vector<dcomplex>& M, vector<dcomplex>& dM, - vector<double>& dR, vector<double>& dI); - - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/EstimateNew.h b/CEP/DP3/DPPP/include/DPPP/EstimateNew.h deleted file mode 100644 index cd5fb1c967d..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/EstimateNew.h +++ /dev/null @@ -1,149 +0,0 @@ -//# EstimateNew.h: Estimate Jones matrices for several directions and stations -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_ESTIMATENEW_H -#define DPPP_ESTIMATENEW_H - -// \file -// Estimate Jones matrices for several directions simultaneously. A separate -// data stream is used for each direction. The mixing coefficients quantify the -// influence of each direction on each of the other directions (including time -// and frequency smearing). - -#include <DPPP/Baseline.h> -#include <DPPP/Cursor.h> -#include <Common/lofar_complex.h> -#include <Common/lofar_vector.h> - -//# Use Block<bool> instead of vector<bool> (because testing bits is slower). -#include <casacore/casa/Containers/Block.h> - -namespace LOFAR { - namespace DPPP { - - // \addtogroup NDPPP - // @{ - - // Estimate Jones matrices for several directions simultaneously. A separate - // data stream is used for each direction. The mixing coefficients quantify the - // influence of each direction on each of the other directions (including time - // and frequency smearing). - class EstimateNew - { - public: - - EstimateNew(); - - // Update the object and size its internal buffers. - void update (size_t maxndir, size_t nBaseline, size_t nStation, - size_t nChannel, size_t maxIter, bool propagateSolution); - - // \param[in] data - // Vector of length \p nDirection of cursors for 3-D buffers of observed - // visiblity data of shape (\p nBaseline, \p nChannel, 4). - // \param[in] model - // Vector of length \p nDirection of cursors for 3-D buffers of simulated - // visiblity data of shape (\p nBaseline, \p nChannel, 4). - // \param[in] baselines - // A cursor for a 1-D buffer of baselines of shape (\p nBaseline). - // \param[in] flag - // A cursor for a 3-D buffer of observed visibility flags of shape - // (\p nBaseline, \p nChannel, 4). - // \param[in] weight - // A cursor for a 3-D buffer of observed visibility weights of shape - // (\p nBaseline, \p nChannel, 4). - // \param[in] mix - // A cursor for a 5-D buffer of mixing weights of shape - // (\p nBaseline, \p nChannel, 4, \p nDirection, \p nDirection). - // \param[in] solveBoth - // True = only use baseline if both stations are solvable - // - // <br>Note that the cursors are passed by value, so a copy is made. - // In this way no reset of the cursor is needed. - bool estimate (const vector<vector<int> >& unknownsIndex, - const vector<uint>& srcSet, - const_cursor<Baseline> baselines, - vector<const_cursor<fcomplex> > data, - vector<const_cursor<dcomplex> > model, - const_cursor<bool> flag, - const_cursor<float> weight, - const_cursor<dcomplex> mix, - double defaultGain, - bool solveBoth, - uint verbose); - - // Get the last solution. - // It contains zeroes for the direction-stations not solved for. - const vector<double>& getSolution() const - { return itsSolution; } - - // Get the nr of iterations used. - size_t nIterations() const - { return itsNrIter; } - - private: - // Initialize the solution. Nr must be a multiple of 8. - // The diagonal is set to (diag,0) or (1e-8,0), off-diagonal to (0,0). - void initSolution (const vector<vector<int> >& unknownsIndex, - const vector<uint>& srcSet, - double defaultGain); - - // Clear the solution for unsolvable stations - // (essentially changing 1e-8 to 0). - void clearNonSolvable (const vector<vector<int> >& unknownsIndex, - const vector<uint>& srcSet); - - // Update itsSolution from itsUnknowns for the unknowns to be used. - void fillSolution (const vector<vector<int> >& unknownsIndex, - const vector<uint>& srcSet); - - // Fill itsDerivIndex for the unknowns of the given baseline - // to be able to pass the equations to LSQFit::makeNorm. - // It returns the number of unknowns. - uint fillDerivIndex (size_t ndir, - const vector<vector<int> >& unknownsIndex, - const Baseline& baseline); - - //# Data members - size_t itsNrBaselines; - size_t itsNrStations; - size_t itsNrChannels; - size_t itsMaxIter; - size_t itsNrIter; - size_t itsNrDir; - bool itsPropagateSolution; - casacore::Block<bool> itsSolveStation; //# solve station i? - vector<casacore::uInt> itsDerivIndex; //# index for LSQFit::makeIndex - vector<double> itsUnknowns; - vector<double> itsSolution; - vector<dcomplex> itsM; - vector<dcomplex> itsdM; - vector<double> itsdR; - vector<double> itsdI; - }; - - // @} - - } //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Filter.h b/CEP/DP3/DPPP/include/DPPP/Filter.h deleted file mode 100644 index 48b0d525413..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Filter.h +++ /dev/null @@ -1,206 +0,0 @@ -//# Filter.h: DPPP step to filter out baselines and channels -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_FILTER_H -#define DPPP_FILTER_H - -// @file -// @brief DPPP step to filter out baselines and channels - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/BaselineSelection.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPInput step reading the data from a MeasurementSet. - // At the beginning it finds out the shape of the data; i.e., the - // number of correlations, channels, baselines, and time slots. - // It requires the data to be regularly shaped. - // - // The object is constructed from the 'msin' keywords in the parset file. - // Currently the following can be given: - // <ul> - // <li> msin: name of the MS - // <li> msin.autoweight: calculate weights from autocorrelations? [no] - // <li> msin.startchan: first channel to use [0] - // <li> msin.nchan: number of channels to use [all] - // <li> msin.useflag: use the existing flags? [yes] - // <li> msin.datacolumn: the data column to use [DATA] - // <li> msin.starttime: first time to use [first time in MS] - // <li> msin.endtime: last time to use [last time in MS] - // </ul> - // - // If a time slot is missing, it is inserted with flagged data set to zero. - // Missing time slots can also be detected at the beginning or end of the - // MS by giving the correct starttime and endtime. - // The correct UVW coordinates are calculated for inserted time slots. - // - // The process function only reads the data and flags to avoid that - // too much data is kept in memory. - // Other columns (like WEIGHT, UVW) can be read when needed by using the - // appropriate DPInput::fetch function. - // - // The data columns are handled in the following way: - // <table> - // <tr> - // <td>TIME</td> - // <td>The time slot center of the current data (in MJD seconds). - // It is assumed that all data have the same interval, which is - // used to find missing time slots. - // </td> - // </tr> - // <tr> - // <td>DATA</td> - // <td>The visibility data as [ncorr,nchan,nbaseline]. Only the - // part given by startchan and nchan is read. If a time slot is - // inserted, all its data are zero. - // </td> - // </tr> - // <tr> - // <td>FLAG</td> - // <td>The data flags as [ncorr,nchan,nbaseline] (True is bad). - // They are read from the FLAG column. If a FLAG_ROW is set, all - // flags for that baseline will be set. Also the flag of data - // containing NaN or infinite numbers will be set. - // All flags of an inserted time slot are set. - // </td> - // </tr> - // <tr> - // <td>WEIGHT</td> - // <td>The data weights as [ncorr,nchan,nbaseline]. Column - // WEIGHT_SPECTRUM is used if present and containing valid data, - // otherwise column WEIGHT is used. The weights of an inserted - // time slot are set to 0. - // If autoweight is on, the autocorrelations are used to - // calculate proper weights. - // </td> - // </tr> - // <tr> - // <td>UVW</td> - // <td>The UVW coordinates in meters as [3,nbaseline]. - // They are calculated for a missing time slot. - // </td> - // </tr> - // <tr> - // <td>FULLRESFLAG</td> - // <td>For each baseline the LOFAR_FULL_RES_FLAG column is stored as - // a uChar array with shape [orignchan/8, ntimeavg]. The bits - // represent the flags. They are converted to a Bool array with shape - // [orignchan, ntimeavg, nbaseline]. - // If column LOFAR_FULL_RES_FLAG is not present, the flags are used - // and it is assumed that no averaging was done yet (thus ntimeavg=1 - // and orignchan=nchan). - // </td> - // </tr> - // </table> - - class Filter: public DPStep - { - public: - // Default constructor. - Filter(); - - // Construct the object for the given MS. - // Parameters are obtained from the parset using the given prefix. - Filter (DPInput* input, const ParameterSet&, const string& prefix); - - // Construct the object for the given MS and baseline selection. - Filter (DPInput* input, const BaselineSelection&); - - virtual ~Filter(); - - // Process the next data chunk. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // If needed, remove the deleted stations from the subtables - // and renumber the remaining stations. - virtual void addToMS (const string& msName); - - // Does the filter step has an actual selection? - bool hasSelection() const - { return itsDoSelect; } - - // Get the indices of the selected baselines. - const vector<uint>& getIndicesBL() const - { return itsSelBL; } - - // Get the buffer. - const DPBuffer& getBuffer() const - { return itsBuf; } - - private: - // Create the mapping from old to new id (e.g. ANTENNA_ID). - // The removed ids get a mapping -1. - casacore::Vector<casacore::Int> - createIdMap (casacore::uInt nrId, - const casacore::Vector<casacore::uInt>& removedIds) const; - - // Remove rows with deleted stations from a subtable. - // Renumber the ANTENNA_ID of the remaining rows. - // It fills nrId with the original number of rows in the subtable - // and returns the vector of removed row numbers. - casacore::Vector<casacore::uInt> - renumberSubTable (const casacore::Table& ms, const casacore::String& name, - const casacore::String& colName, - const casacore::Vector<casacore::uInt>& removedAnt, - const casacore::Vector<casacore::Int>& antMap, - casacore::uInt& nrId) const; - - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuf; - DPBuffer itsBufTmp; - casacore::String itsStartChanStr; //# startchan expression - casacore::String itsNrChanStr; //# nchan expression - bool itsRemoveAnt; //# Remove from ANTENNA table? - BaselineSelection itsBaselines; - uint itsStartChan; - vector<uint> itsSelBL; //# Index of baselines to select - bool itsDoSelect; //# Any selection? - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/FlagCounter.h b/CEP/DP3/DPPP/include/DPPP/FlagCounter.h deleted file mode 100644 index 538b17c4a31..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/FlagCounter.h +++ /dev/null @@ -1,123 +0,0 @@ -//# FlagCounter.h: Class to keep counts of nr of flagged points -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_FLAGCOUNTER_H -#define DPPP_FLAGCOUNTER_H - -// @file -// @brief Class to keep counts of nr of flagged points - -#include <Common/lofar_vector.h> -#include <Common/lofar_string.h> -#include <Common/LofarTypes.h> -#include <casacore/casa/Arrays/Vector.h> - -namespace LOFAR { - class ParameterSet; - - namespace DPPP { - //# Forward Declarations. - class DPInfo; - - // @ingroup NDPPP - - // This class contains counts the number of flags. - // The flags can be counted per baseline, channel, and correlation. - // Once the counting is completed, they can be printed using the 'show' - // functions. When printing, the baselines counts are shown per antenna. - // - // Optionally the flagging percentages can be saved in a table. - // The name of the table is the MS name suffixed by the step name and '.flagxx'. - - class FlagCounter - { - public: - // The default constructor creates an empty object. It does not save. - FlagCounter(); - - // This constructor creates an empty object. - // It reads info from the parset to see if percentages have to be saved. - FlagCounter (const string& msName, const ParameterSet&, - const string& prefix); - - // Size all counters and initialize them to zero using the sizes - // from the DPInfo object. - void init (const DPInfo& info); - - // Increment the count per baseline. - void incrBaseline (uint bl) - { itsBLCounts[bl]++; } - - // Increment the count per channel. - void incrChannel (uint chan) - { itsChanCounts[chan]++; } - - // Increment the count per correlation. - void incrCorrelation (uint corr) - { itsCorrCounts[corr]++; } - - // Add the contents of that to this. - void add (const FlagCounter& that); - - // Get the counts. - const vector<int64>& baselineCounts() const - { return itsBLCounts; } - const vector<int64>& channelCounts() const - { return itsChanCounts; } - const vector<int64>& correlationCounts() const - { return itsCorrCounts; } - - // Print the counts and optionally save percentages in a table. - void showBaseline (ostream& os, int64 ntimes) const; - void showChannel (ostream& os, int64 ntimes) const; - void showCorrelation (ostream& os, int64 ntimes) const; - - // Show percentage with 1 decimal. - static void showPerc1 (std::ostream&, double value, double total); - - // Show percentage with 3 decimals. - static void showPerc3 (std::ostream&, double value, double total); - - private: - // Save the percentages per station in a table. - void saveStation (int64 npoints, const casacore::Vector<int64>& nused, - const casacore::Vector<int64>& count) const; - - // Save the percentages per channel. - void saveChannel (int64 npoints, - const casacore::Vector<int64>& count) const; - - //# Data members. - const DPInfo* itsInfo; - string itsSaveName; - double itsWarnPerc; - bool itsShowFF; - vector<int64> itsBLCounts; - vector<int64> itsChanCounts; - vector<int64> itsCorrCounts; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/GainCal.h b/CEP/DP3/DPPP/include/DPPP/GainCal.h deleted file mode 100644 index 559dc0a30e0..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/GainCal.h +++ /dev/null @@ -1,220 +0,0 @@ -//# GainCal.h: DPPP step class to calibrate (direction independent) gains -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.h 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_GAINCAL_H -#define DPPP_GAINCAL_H - -// @file -// @brief DPPP step class to apply a calibration correction to the data - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/PhaseFitter.h> -#include <DPPP/BaselineSelection.h> -#include <DPPP/StefCal.h> -#include <DPPP/Patch.h> -#include <DPPP/UVWFlagger.h> -#include <DPPP/Predict.h> -#include <ParmDB/ParmFacade.h> -#include <ParmDB/ParmSet.h> -#include <DPPP/SourceDBUtil.h> -#include <DPPP/ApplyBeam.h> -#include <StationResponse/Station.h> -#include <StationResponse/Types.h> -#include <ParmDB/Parm.h> -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/Quanta/MVEpoch.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/casa/Arrays/ArrayMath.h> - -// Convince HDF5 to use new API, even when system is configured to use 1.6 API -#define H5Acreate_vers 2 -#define H5Tarray_create_vers 2 -#define H5Dcreate_vers 2 -#define H5Gcreate_vers 2 -#include <H5Cpp.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class to calibrate (direction independent) gains. - - typedef std::vector<Patch::ConstPtr> PatchList; - typedef std::pair<size_t, size_t >Baseline; - - class GainCal: public DPStep - { - public: - - enum CalType {COMPLEXGAIN, SCALARCOMPLEXGAIN, FULLJONES, PHASEONLY, SCALARPHASE, AMPLITUDEONLY, - SCALARAMPLITUDE, TECANDPHASE, TEC, TECSCREEN, ROTATIONANDDIAGONAL, ROTATION}; - - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - GainCal (DPInput*, const ParameterSet&, const std::string& prefix); - - virtual ~GainCal(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Convert string to a CalType - static CalType stringToCalType(const std::string& mode); - - // Convert CalType to a string - static std::string calTypeToString(CalType caltype); - - // Make a soltab with the given type - static std::vector<H5Parm::SolTab> makeSolTab(H5Parm& h5parm, CalType caltype, - std::vector<H5Parm::AxisInfo>& axes); - - private: - // Perform stefcal (polarized or unpolarized) - void stefcal(); - - // Check for scalar mode - static bool scalarMode(CalType caltype); - - // Check for diagonal mode - static bool diagonalMode(CalType caltype); - - // Apply the solution - void applySolution(DPBuffer& buf, const casacore::Cube<casacore::DComplex>& invsol); - - // Invert solution (for applying it) - casacore::Cube<casacore::DComplex> invertSol(const casacore::Cube<casacore::DComplex>& sol); - - // Fills the matrices itsVis and itsMVis - void fillMatrices (casacore::Complex* model, casacore::Complex* data, - float* weight, const casacore::Bool* flag); - - // Initialize the parmdb - void initParmDB(); - - // Get parmdbname from itsMode - std::string parmName(); - - // Determine which stations are used - void setAntennaUsed(); - - // Write out the solutions of the current parameter chunk (timeslotsperparmupdate) - // Variant for writing ParmDB - void writeSolutionsParmDB(double startTime); - - // Write out the solutions of the current parameter chunk (timeslotsperparmupdate) - // Variant for writing H5Parm - void writeSolutionsH5Parm(double startTime); - - //# Data members. - DPInput* itsInput; - std::string itsName; - std::vector<DPBuffer> itsBuf; - bool itsUseModelColumn; - casacore::Cube<casacore::Complex> itsModelData; - std::string itsParmDBName; - bool itsUseH5Parm; - boost::shared_ptr<BBS::ParmDB> itsParmDB; - std::string itsParsetString; // Parset, for logging in H5Parm - - CalType itsMode; - - uint itsDebugLevel; - bool itsDetectStalling; - - bool itsApplySolution; - - std::vector<casacore::Cube<casacore::DComplex> > itsSols; // for every timeslot, nCr x nSt x nFreqCells - std::vector<casacore::Matrix<double> > itsTECSols; // for every timeslot, 2 x nSt (alpha and beta) - std::vector<double> itsFreqData; // Mean frequency for every freqcell - - std::vector<casacore::CountedPtr<PhaseFitter> > itsPhaseFitters; // Length nSt - - std::vector<StefCal> iS; - - UVWFlagger itsUVWFlagStep; - ResultStep::ShPtr itsDataResultStep; // Result step for data after UV-flagging - - Predict itsPredictStep; - ApplyBeam itsApplyBeamStep; // Beam step for applying beam to modelcol - ResultStep::ShPtr itsResultStep; // For catching results from Predict or Beam - bool itsApplyBeamToModelColumn; - - BaselineSelection itsBaselineSelection; // Filter - casacore::Vector<bool> itsSelectedBL; // Vector (length nBl) telling - // which baselines are selected - casacore::Vector<bool> itsAntennaUsed; // Vector (length nSt) telling - // which stations are solved for - - std::map<std::string,int> itsParmIdMap; //# -1 = new parm name - - uint itsMaxIter; - double itsTolerance; - bool itsPropagateSolutions; - uint itsSolInt; // Time cell size - uint itsNChan; // Frequency cell size - uint itsNFreqCells; - - uint itsTimeSlotsPerParmUpdate; - uint itsConverged; - uint itsNonconverged; - uint itsFailed; - uint itsStalled; - std::vector<uint> itsNIter; // Total iterations made (for converged, stalled, nonconverged, failed) - uint itsStepInParmUpdate; // Timestep within parameter update - double itsChunkStartTime; // First time value of chunk to be stored - uint itsStepInSolInt; // Timestep within solint - - casacore::Array<casacore::DComplex> itsAllSolutions; // Array that holds all solutions for all iterations - - FlagCounter itsFlagCounter; - - NSTimer itsTimer; - NSTimer itsTimerPredict; - NSTimer itsTimerSolve; - NSTimer itsTimerPhaseFit; - NSTimer itsTimerWrite; - NSTimer itsTimerFill; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/GaussianSource.h b/CEP/DP3/DPPP/include/DPPP/GaussianSource.h deleted file mode 100644 index 3cc56ebd272..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/GaussianSource.h +++ /dev/null @@ -1,93 +0,0 @@ -//# GaussianSource.h: Gaussian source model component. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_GAUSSIANSOURCE_H -#define DPPP_GAUSSIANSOURCE_H - -// \file -// Gaussian source model component. - -#include <DPPP/PointSource.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -class GaussianSource: public PointSource -{ -public: - typedef shared_ptr<GaussianSource> Ptr; - typedef shared_ptr<const GaussianSource> ConstPtr; - - GaussianSource(const Position &position); - GaussianSource(const Position &position, const Stokes &stokes); - - // Set position angle in radians. The position angle is the smallest angle - // between the major axis and North, measured positively North over East. - void setPositionAngle(double angle); - double positionAngle() const; - - // Set the major axis length (FWHM in radians). - void setMajorAxis(double fwhm); - double majorAxis() const; - - // Set the minor axis length (FWHM in radians). - void setMinorAxis(double fwhm); - double minorAxis() const; - - virtual void accept(ModelComponentVisitor &visitor) const; - -private: - double itsPositionAngle; - double itsMajorAxis; - double itsMinorAxis; -}; - -// @} - -// -------------------------------------------------------------------------- // -// - Implementation: GaussianSource - // -// -------------------------------------------------------------------------- // - -inline double GaussianSource::positionAngle() const -{ - return itsPositionAngle; -} - -inline double GaussianSource::majorAxis() const -{ - return itsMajorAxis; -} - -inline double GaussianSource::minorAxis() const -{ - return itsMinorAxis; -} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/GridInterpolate.h b/CEP/DP3/DPPP/include/DPPP/GridInterpolate.h deleted file mode 100644 index cfd05379232..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/GridInterpolate.h +++ /dev/null @@ -1,67 +0,0 @@ -//# GridInterpolate.h: Interpolate data from regular 2d grid to another -//# Copyright (C) 2018 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GridInterpolate.h 37169 2017-04-19 12:41:21Z dijkema $ -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_GRIDINTERPOLATE_H -#define DPPP_GRIDINTERPOLATE_H - -// @file -// @brief Interpolate data from regular 2d grid to another - -#include <vector> -#include <cassert> -#include <stdexcept> - -namespace LOFAR { - //! Get the nearest-neighbor indices - ///*! \param ax_src[in] Vector with points where the data is defined. - // Should be increasing. - // * \param ax_tgt[in] Vector with the points at which the values are - // needed. Should be increasing. - // * \param[out] indices Vector (same length as ax_tgt) with for each number - // in ax_src, the index of the nearest point in ax_src. - // * \param[in] nearest Get the nearest point. If false, gets the largest - // point that is smaller. - // */ - void getAxisIndices(const std::vector<double>& ax_src, - const std::vector<double>& ax_tgt, - std::vector<size_t>& indices, - bool nearest = true); - - //! Regrid 2d-gridded data onto another 2d grid - /*! \param[in] x_src x-axis on which the data is defined - * \param[in] y_src y-axis on which the data is defined - * \param[in] x_tgt x-axis on which the data will be evaluated - * \param[in] y_tgt y-axis on which the data will be evaluated - * \param[in] vals_src original data, y-axis varies fastest - * \param[out] vals_tgt regridded data, y-axis varies fastest - */ - void gridNearestNeighbor(const std::vector<double>& x_src, - const std::vector<double>& y_src, - const std::vector<double>& x_tgt, - const std::vector<double>& y_tgt, - const double* vals_src, - double* vals_tgt, - bool nearest = true); -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/H5Parm.h b/CEP/DP3/DPPP/include/DPPP/H5Parm.h deleted file mode 100644 index d2a3a393088..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/H5Parm.h +++ /dev/null @@ -1,254 +0,0 @@ -#ifndef DPPP_H5PARM_H -#define DPPP_H5PARM_H - -#include <string> -#include <vector> -#include <complex> -#include <map> - -#include <H5Cpp.h> - -#include <utility> - -namespace LOFAR { - class H5Parm : private H5::H5File - { - typedef struct antenna_t { - char name[16]; - float position[3]; - } antenna_t; - - typedef struct source_t { - char name[128]; - float dir[2]; - } source_t; - - typedef struct polarization_t { - char name[2]; - } polarization_t; - - public: - // A name and the length of an exis, e.g. ('freq', 800) for 800 frequencies - struct AxisInfo { - public: AxisInfo(const std::string& name, uint size) : - name(name), size(size) {}; - - std::string name; - uint size; - }; - - // SolTab is a solution table as defined in the H5Parm standard. It - // contains one solution, e.g. all TEC values, with different axes - // for that solution (e.g. time, freq, pol). - class SolTab : private H5::Group { - public: - // Default constructor - SolTab() {}; - - // Create a new soltab, add it to its parent - SolTab(H5::Group group, - const std::string& type, - const std::vector<AxisInfo> axes // Axes, fastest varying last - ); - - // Create a soltab from a H5::Group (for reading existing files) - SolTab(H5::Group& group); - - // The destructor could check for valid subtables - virtual ~SolTab(); - - SolTab operator=(H5::Group group); - - std::vector<AxisInfo>& getAxes() {return _axes;} - - AxisInfo getAxis(uint i) const; - - // Get an axis, throw an exception if it does not exist - AxisInfo getAxis(const std::string& axisName) const; - - size_t nAxes() { return _axes.size(); } - - bool hasAxis(const std::string& axisName); - - // Get the index of an axis - size_t getAxisIndex(const std::string& axisname); - - void setAntennas(const std::vector<std::string>& solAntennas); - - void setSources(const std::vector<std::string>& solSources); - - void setPolarizations(const std::vector<std::string>& polarizations); - - void setFreqs(const std::vector<double>& freqs); - - // Get the values of a real-valued axis (e.g. "time" or "freq") - std::vector<double> getRealAxis(const std::string& axisname) const; - - // Get the values of a string-valued axis (e.g. "dir" or "pol") - std::vector<std::string> getStringAxis(const std::string& axisname); - - // Get the index of freq, using nearest neighbor - // This assumes that the frequencies are in increasing order. - hsize_t getFreqIndex(double freq) const; - - // Get the index of a time. Matches with 0.5*timeInterval - // This assumes that all times are regularly spaced - hsize_t getTimeIndex(double time) const; - - hsize_t getDirIndex(const std::string& dirName); - - // Gets the interval (in s.) between a time slot (default first) and - // the next. Throws error if there is only one time slot. - double getTimeInterval(size_t start=0) const { - return getInterval("time", start); - } - - // Gets the interval (in s.) between a channel (default first) and - // the next. Throws error if there is only one frequency. - double getFreqInterval(size_t start=0) const { - return getInterval("freq", start); - } - - void setTimes(const std::vector<double>& times); - - // Set metadata about an axis (like freq or time)) - void setAxisMeta(const std::string& metaName, - const std::vector<double>& metaVals); - - // Set metadata about an axis (like polarization, direction) - void setAxisMeta(const std::string& metaName, - size_t strLen, - const std::vector<std::string>& metaVals); - - // Adds a real solution. - // If weights are emtpy, write ones everywhere - void setValues(const std::vector<double>& vals, - const std::vector<double>& weights, - const std::string& history=""); - - // Add a complex solution, taking either amplitude or phase - void setComplexValues(const std::vector<std::complex<double> >& vals, - const std::vector<double>& weights, - bool toAmplitudes, const std::string& history=""); - - - - // Get the name of this SolTab - std::string getName() const; - - std::string getType() const {return _type;} - - // Get the values of this SolTab for a given antenna. - std::vector<double> getValues( - const std::string& antName, - uint starttimeslot, uint ntime, uint timestep=1, - uint startfreq=0, uint nfreq=1, uint freqstep=1, - uint pol=0, uint dir=0) { - return getValuesOrWeights("val", antName, - starttimeslot, ntime, timestep, - startfreq, nfreq, freqstep, - pol, dir); - } - - // Get the weights of this SolTab for a given antenna. - std::vector<double> getWeights( - const std::string& antName, - uint starttimeslot, uint ntime, uint timestep=1, - uint startfreq=0, uint nfreq=1, uint freqstep=1, - uint pol=0, uint dir=0) { - return getValuesOrWeights("weight", antName, - starttimeslot, ntime, timestep, - startfreq, nfreq, freqstep, - pol, dir); - } - - std::vector<double> getValuesOrWeights( - const std::string& valOrWeight, - const std::string& antName, - const std::vector<double>& times, - const std::vector<double>& freqs, - uint pol, uint dir); - private: - // Get the values or weights of this SolTab for a given antenna. - std::vector<double> getValuesOrWeights( - const std::string& valOrWeight, - const std::string& antName, - uint starttimeslot, uint ntime, uint timestep, - uint startfreq, uint nfreq, uint freqstep, - uint pol, uint dir); - - void readAxes(); - - void fillCache(std::map<std::string, hsize_t>& cache, - const std::string& tableName); - - // Get the interval of the axis axisName - double getInterval(const std::string& axisName, size_t start=0) const; - hsize_t getAntIndex(const std::string& antName); - hsize_t getNamedIndex(std::map<std::string, hsize_t>& cache, - const std::string& tableName, - const std::string& elementName); - - std::string _type; - std::vector<AxisInfo> _axes; - std::map<std::string, hsize_t> _antMap; - std::map<std::string, hsize_t> _dirMap; - }; - - // Open existing H5Parm or create a new one - // Default name is given by solSetName, if that does not exist continue - // searching for sol000, sol001, etc. - // Only one solset of an H5Parm can be opened at once; this object only - // provides info about one SolSet (even though the file can contain more). - H5Parm(const std::string& filename, bool forceNew=false, - bool forceNewSolSet=false, const std::string& solSetName=""); - - - H5Parm(); - - virtual ~H5Parm(); - - // Add metadata (directions on the sky in J2000) about named sources - void addSources (const std::vector<std::string>& names, - const std::vector<std::pair<double, double> >& dirs); - - // Add metadata (positions on earth in ITRF) about antennas - void addAntennas(const std::vector<std::string>& names, - const std::vector<std::vector<double> >& positions); - - // Add metadata about polarizations - void addPolarizations(const std::vector<std::string>& polarizations); - - // Add a version stamp in the attributes of the group - static void addVersionStamp(H5::Group &node); - - // Create and return a new soltab. Type is the type as used in BBS - SolTab& createSolTab(const std::string& name, - const std::string& type, - const std::vector<AxisInfo> axes); - - SolTab& getSolTab(const std::string& name); - - // Get the name of the one SolSet used in this H5Parm - std::string getSolSetName() const ; - - // Get the number of SolTabs in the active solset of this h5parm - size_t nSolTabs() { return _solTabs.size(); } - - // Is the given soltab resent in the active solset of this h5parm - bool hasSolTab(const std::string& solTabName) const; - private: - - static double takeAbs(std::complex<double> c) { - return std::abs(c); - } - static double takeArg(std::complex<double> c) { - return std::arg(c); - } - - std::map<std::string, SolTab> _solTabs; - H5::Group _solSet; - }; -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/H5ParmPredict.h b/CEP/DP3/DPPP/include/DPPP/H5ParmPredict.h deleted file mode 100644 index ad1a4645836..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/H5ParmPredict.h +++ /dev/null @@ -1,94 +0,0 @@ -//# H5ParmPredict.h: DPPP step class to H5ParmPredict visibilities from a source model -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_H5ParmPredict_H -#define DPPP_H5ParmPredict_H - -// @file -// @brief DPPP step class to H5ParmPredict visibilities from a source model - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/Predict.h> - -#include <DPPP/H5Parm.h> - -#include <utility> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class to H5ParmPredict visibilities with optionally beam - - typedef std::pair<size_t, size_t> Baseline; - typedef std::pair<ModelComponent::ConstPtr, Patch::ConstPtr> Source; - - class H5ParmPredict: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - H5ParmPredict (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~H5ParmPredict(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuffer; - - std::vector<Predict::ShPtr> itsPredictSteps; - ResultStep* itsResultStep; - - std::string itsH5ParmName; - std::vector<std::string> itsDirections; - - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/MSReader.h b/CEP/DP3/DPPP/include/DPPP/MSReader.h deleted file mode 100644 index ffb5ca1fbfa..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/MSReader.h +++ /dev/null @@ -1,332 +0,0 @@ -//# MSReader.h: DPPP step reading from an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_MSREADER_H -#define DPPP_MSREADER_H - -// @file -// @brief DPPP step reading from an MS - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/UVWCalculator.h> -#include <DPPP/FlagCounter.h> -#include <casacore/tables/Tables/TableIter.h> -#include <casacore/tables/Tables/RefRows.h> -#include <casacore/casa/Arrays/Slicer.h> -#include <Common/lofar_vector.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPInput step reading the data from a MeasurementSet. - // At the beginning it finds out the shape of the data; i.e., the - // number of correlations, channels, baselines, and time slots. - // It requires the data to be regularly shaped. - // - // The object is constructed from the 'msin' keywords in the parset file. - // Currently the following can be given: - // <ul> - // <li> msin: name of the MS - // <li> msin.autoweight: calculate weights from autocorrelations? [no] - // <li> msin.startchan: first channel to use [0] - // <li> msin.nchan: number of channels to use [all] - // <li> msin.useflag: use the existing flags? [yes] - // <li> msin.datacolumn: the data column to use [DATA] - // <li> msin.weightcolumn: the weights column to use [WEIGHT_SPECTRUM or - // WEIGHT] - // <li> msin.starttime: first time to use [first time in MS] - // <li> msin.endtime: last time to use [last time in MS] - // </ul> - // - // If a time slot is missing, it is inserted with flagged data set to zero. - // Missing time slots can also be detected at the beginning or end of the - // MS by giving the correct starttime and endtime. - // The correct UVW coordinates are calculated for inserted time slots. - // - // The process function only reads the data and flags to avoid that - // too much data is kept in memory. - // Other columns (like WEIGHT, UVW) can be read when needed by using the - // appropriate DPInput::fetch function. - // - // The data columns are handled in the following way: - // <table> - // <tr> - // <td>TIME</td> - // <td>The time slot center of the current data (in MJD seconds). - // It is assumed that all data have the same interval, which is - // used to find missing time slots. - // </td> - // </tr> - // <tr> - // <td>DATA</td> - // <td>The visibility data as [ncorr,nchan,nbaseline]. Only the - // part given by startchan and nchan is read. If a time slot is - // inserted, all its data are zero. - // </td> - // </tr> - // <tr> - // <td>FLAG</td> - // <td>The data flags as [ncorr,nchan,nbaseline] (True is bad). - // They are read from the FLAG column. If a FLAG_ROW is set, all - // flags for that baseline will be set. Also the flag of data - // containing NaN or infinite numbers will be set. - // All flags of an inserted time slot are set. - // </td> - // </tr> - // <tr> - // <td>WEIGHT</td> - // <td>The data weights as [ncorr,nchan,nbaseline]. Column - // WEIGHT_SPECTRUM is used if present and containing valid data, - // otherwise column WEIGHT is used. The weights of an inserted - // time slot are set to 0. - // If autoweight is on, the autocorrelations are used to - // calculate proper weights. - // </td> - // </tr> - // <tr> - // <td>UVW</td> - // <td>The UVW coordinates in meters as [3,nbaseline]. - // They are calculated for a missing time slot. - // </td> - // </tr> - // <tr> - // <td>FULLRESFLAG</td> - // <td>For each baseline the LOFAR_FULL_RES_FLAG column is stored as - // a uChar array with shape [orignchan/8, ntimeavg]. The bits - // represent the flags. They are converted to a Bool array with shape - // [orignchan, ntimeavg, nbaseline]. - // If column LOFAR_FULL_RES_FLAG is not present, the flags are used - // and it is assumed that no averaging was done yet (thus ntimeavg=1 - // and orignchan=nchan). - // </td> - // </tr> - // </table> - - class MSReader: public DPInput - { - public: - // Default constructor. - MSReader(); - - // Construct the object for the given MS. - // Parameters are obtained from the parset using the given prefix. - // The missingData argument is for MultiMSReader. - MSReader (const std::string& msName, - const ParameterSet&, const string& prefix, - bool missingData = false); - - virtual ~MSReader(); - - // Process the next data chunk. - // It returns false when at the end. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Add some data to the MeasurementSet written/updated. - // Do nothing. - virtual void addToMS (const string&) {}; - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // If needed, show the flag counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Read the UVW at the given row numbers into the buffer. - virtual void getUVW (const casacore::RefRows& rowNrs, - double time, - DPBuffer&); - - // Read the weights at the given row numbers into the buffer. - // Note: the buffer must contain DATA if autoweighting is in effect. - virtual void getWeights (const casacore::RefRows& rowNrs, - DPBuffer&); - - // Read the fullRes flags (LOFAR_FULL_RES_FLAG) at the given row numbers - // into the buffer. - // If there is no such column, the flags are set to false and false is - // returned. - virtual bool getFullResFlags (const casacore::RefRows& rowNrs, - DPBuffer&); - - // Read the model data at the given row numbers into the array. - virtual void getModelData (const casacore::RefRows& rowNrs, - casacore::Cube<casacore::Complex>&); - - // Fill the vector with station beam info from the input MS. - // Only fill it for the given station names. - virtual void fillBeamInfo (vector<StationResponse::Station::Ptr>&, - const casacore::Vector<casacore::String>& antNames); - - // Tell if the visibility data are to be read. - virtual void setReadVisData (bool readVisData); - - // Get the main MS table. - casacore::Table& table() - { return itsMS; } - - // Get the name of the data column to be used. - const casacore::String& dataColumnName() const - { return itsDataColName; } - - const casacore::String& weightColumnName() const - { return itsWeightColName; } - - const casacore::String& modelColumnName() const - { return itsModelColName; } - - // Get the slicer in the FLAG and DATA column. - const casacore::Slicer& colSlicer() const - { return itsColSlicer; } - - // Get the rownrs for meta info of missing time slots. - // It uses the rows of the first time slot. - const casacore::Vector<uint>& getBaseRowNrs() const - { return itsBaseRowNrs; } - - // Get the name of the MS. - virtual casacore::String msName() const; - - // Get the time information. - double firstTime() const - { return itsFirstTime; } - double lastTime() const - { return itsLastTime; } - - // Get the selected spectral window. - uint spectralWindow() const - { return itsSpw; } - - // Get the baseline selection. - const string& baselineSelection() const - { return itsSelBL; } - - // Is the data column missing? - bool missingData() const - { return itsMissingData; } - - // Get the start channel. - uint startChan() const - { return itsStartChan; } - - // Get the nr of averaged full resolution channels. - uint nchanAvgFullRes() const - { return itsFullResNChanAvg; } - // Get the nr of averaged full resolution time slots. - uint ntimeAvgFullRes() const - { return itsFullResNTimeAvg; } - - // Tell if the input MS has LOFAR_FULL_RES_FLAG. - bool hasFullResFlags() const - { return itsHasFullResFlags; } - - // Get access to the buffer. - const DPBuffer& getBuffer() const - { return itsBuffer; } - - // Flags inf and NaN - static void flagInfNaN(const casacore::Cube<casacore::Complex>& dataCube, - casacore::Cube<bool>& flagsCube, FlagCounter& flagCounter); - - private: - // Prepare the access to the MS. - // Return the first and last time and the interval. - void prepare (double& firstTime, double& lastTime, - double& interval); - - // Do the rest of the preparation. - void prepare2(); - - // Skip the first times in the MS in case a start time was given. - // If needed, it sets itsFirstTime properly. - void skipFirstTimes(); - - // Calculate the UVWs for a missing time slot. - void calcUVW (double time, DPBuffer&); - - // Calculate the weights from the autocorrelations. - void autoWeight (casacore::Cube<float>& weights, const DPBuffer& buf); - - protected: - //# Data members. - casacore::String itsMSName; - casacore::Table itsMS; - casacore::Table itsSelMS; //# possible selection of spw, baseline - casacore::TableIterator itsIter; - casacore::String itsDataColName; - casacore::String itsWeightColName; - casacore::String itsModelColName; - casacore::String itsStartChanStr; //# startchan expression - casacore::String itsNrChanStr; //# nchan expression - string itsSelBL; //# Baseline selection string - bool itsReadVisData; //# read visibility data? - bool itsNeedSort; //# sort needed on time,baseline? - bool itsAutoWeight; //# calculate weights from autocorr? - bool itsAutoWeightForce; //# always calculate weights? - bool itsHasWeightSpectrum; - bool itsUseFlags; - bool itsUseAllChan; //# all channels (i.e. no slicer)? - bool itsMissingData; //# allow missing data column? - int itsSpw; //# spw (band) to use (<0 no select) - uint itsNrBl; - uint itsNrCorr; - uint itsNrChan; - uint itsStartChan; - double itsTimeTolerance; //# tolerance for time comparison - double itsTimeInterval; - double itsStartTime; - double itsFirstTime; - double itsLastTime; - double itsNextTime; - double itsLastMSTime; - uint itsNrRead; //# nr of time slots read from MS - uint itsNrInserted; //# nr of inserted time slots - casacore::Slicer itsColSlicer; //# slice in corr,chan column - casacore::Slicer itsArrSlicer; //# slice in corr,chan,bl array - bool itsHasFullResFlags; - uint itsFullResNChanAvg; - uint itsFullResNTimeAvg; - DPBuffer itsBuffer; - UVWCalculator itsUVWCalc; - casacore::Vector<uint> itsBaseRowNrs; //# rownrs for meta of missing times - FlagCounter itsFlagCounter; - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/MSUpdater.h b/CEP/DP3/DPPP/include/DPPP/MSUpdater.h deleted file mode 100644 index cd6237b2989..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/MSUpdater.h +++ /dev/null @@ -1,134 +0,0 @@ -//# MSUpdater.h: DPPP step writing to an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_MSUPDATER_H -#define DPPP_MSUPDATER_H - -// @file -// @brief DPPP step writing to an MS - -#include <DPPP/DPStep.h> -#include <DPPP/StManParsetKeys.h> - -#include <Common/LofarTypes.h> -#include <casacore/tables/Tables/ColumnDesc.h> -#include <casacore/tables/Tables/RefRows.h> -#include <casacore/tables/Tables/Table.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - //# Forward Declarations. - class MSReader; - - // @ingroup NDPPP - - // This class updates the flags in an existing MeasurementSet. - // Hardly anything is done in this class. - // It uses function putFlags in MSReader to do the actual write. - // - // Like MSWriter it adds an entry to the HISTORY table of the MS - // containing the parset values and DPPP version. - - class MSUpdater: public DPStep - { - public: - MSUpdater (MSReader* reader, casacore::String msName, - const ParameterSet& parset, const std::string& prefix, - bool writeHistory=true); - - virtual ~MSUpdater(); - - // Process the next data chunk. - // It returns false when at the end. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Add some data to the MeasurementSet written/updated. - // Calls addToMS from the previous step, with the current output msname. - virtual void addToMS (const string&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Tests if an update of the buffer described in info to the MS msName - // is possible. When throwError is true, it will throw an error with a - // descriptive string before returning false - static bool updateAllowed (const DPInfo& info, casacore::String msName, - bool throwError=true); - - private: - // Write the flags at the given row numbers. - void putFlags (const casacore::RefRows& rowNrs, - const casacore::Cube<bool>& flags); - - // Write the weights at the given row numbers - void putWeights (const casacore::RefRows& rowNrs, - const casacore::Cube<float>& weights); - - // Write the data at the given row numbers. - void putData (const casacore::RefRows& rowNrs, - const casacore::Cube<casacore::Complex>& data); - - // If not existing yet, add the column specified by colname. - // Column will containt arrays of type datatype. - // If the column has been added, this function returns true - bool addColumn(const string& colname, const casacore::DataType dataType, - const casacore::ColumnDesc& cd); - - //# Data members - MSReader* itsReader; - string itsName; - casacore::String itsMSName; - casacore::Table itsMS; - const ParameterSet& itsParset; - DPBuffer itsBuffer; - casacore::String itsDataColName; - casacore::String itsWeightColName; - uint itsNrTimesFlush; //# flush every N time slots (0=no flush) - bool itsWriteData; - bool itsWriteWeights; - bool itsWriteFlags; - uint itsNrDone; //# nr of time slots written - bool itsDataColAdded; //# has data column been added? - bool itsWeightColAdded; //# has weight column been added? - bool itsWriteHistory; //# Should history be written? - NSTimer itsTimer; - uint itsTileSize; - StManParsetKeys itsStManKeys; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/MSWriter.h b/CEP/DP3/DPPP/include/DPPP/MSWriter.h deleted file mode 100644 index 08500b34fe7..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/MSWriter.h +++ /dev/null @@ -1,200 +0,0 @@ -//# MSWriter.h: DPPP step writing to an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_MSWRITER_H -#define DPPP_MSWRITER_H - -// @file -// @brief DPPP step writing to an MS - -#include <DPPP/DPStep.h> -#include <DPPP/MSReader.h> -#include <DPPP/StManParsetKeys.h> - -#include <casacore/tables/Tables/Table.h> -#include <casacore/tables/Tables/ColumnDesc.h> -#include <casacore/tables/Tables/ScalarColumn.h> -#include <casacore/tables/Tables/ArrayColumn.h> -#include <casacore/tables/DataMan/TiledColumnStMan.h> - -namespace LOFAR { - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep creating a new MeasurementSet and writing - // all data in it. - // Most meta information (subtables and meta columns in main table) is - // copied from the input MeasurementSet given by the MSReader object. - // <br> - // In principle the new MS uses the same storage managers as used in the - // input MS, but in case of an MS stored with LofarStMan it will use the - // optimal storage managers (ISM for slowly varying meta data, TSM for - // bulk data, SSM for others). - // - // The SPECTRAL_WINDOW table will be changed to reflect the channels - // being used or averaged. - // The OBSERVATION table will be updated for the correct start and end time. - // The HISTORY table gets an entry containing the parset values and the - // DPPP version. - - class MSWriter: public DPStep - { - public: - explicit MSWriter (MSReader* reader, const std::string& outName, - const ParameterSet&, const string& prefix); - - virtual ~MSWriter(); - - // Process the next data chunk. - // It returns false when at the end. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Add some data to the MeasurementSet written/updated. - // Calls addToMS from the previous step, with the current output msname. - virtual void addToMS (const string&); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Write the parset info into the HISTORY table of the MS. - static void writeHistory (casacore::Table& ms, - const ParameterSet& parset); - - private: - // Create an array column description and add to table with given - // stoage manager (if given). - void makeArrayColumn (casacore::ColumnDesc desc, const casacore::IPosition& shape, - casacore::DataManager* dm, casacore::Table& table, bool makeDirectColumn = false); - - // Create the MS by cloning all subtables from the input MS. - // All output columns in the main table are using normal storage managers. - // The SPECTRAL_WINDOW table is adapted as needed. - void createMS (const std::string& outName, const DPInfo& info, - uint tileSize, uint tileNChan); - - // Update the SPECTRAL_WINDOW table for averaged channels. - void updateSpw (const string& outName, const DPInfo& info); - - // Update the OBSERVATION table with the correct start and end time. - void updateObs (const string& outName); - - // Update the FIELD table with the new phase center. - void updateField (const string& outName, const DPInfo& info); - - // Write the data, flags, etc. - void writeData (casacore::Table& out, const DPBuffer& buf); - - // Write the full resolution flags (flags before any averaging). - void writeFullResFlags (casacore::Table& out, const DPBuffer& buf); - - // Write all meta data columns for a time slot (ANTENNA1, etc.) - void writeMeta (casacore::Table& out, const DPBuffer& buf); - - // Copy meta data columns for a time slot (ANTENNA1, etc.) - // It also copies all time info if possible. - void copyMeta (const casacore::Table& in, casacore::Table& out, - bool copyTimeInfo); - - // Copy the contents of a scalar column. - template<typename T> void fillSca (const T& value, - casacore::Table& out, - const casacore::String& columnName) - { - casacore::ScalarColumn<T> outCol(out, columnName); - outCol.fillColumn (value); - } - - // Copy the contents of an array column. - template<typename T> void fillArr (const casacore::Array<T>& value, - casacore::Table& out, - const casacore::String& columnName) - { - casacore::ArrayColumn<T> outCol(out, columnName); - outCol.fillColumn (value); - } - - // Copy the contents of a scalar column. - template<typename T> void copySca (const casacore::Table& in, - casacore::Table& out, - const casacore::String& columnName) - { - casacore::ROScalarColumn<T> inCol(in, columnName); - casacore::ScalarColumn<T> outCol(out, columnName); - outCol.putColumn (inCol.getColumn()); - } - - // Copy the contents of an array column. - template<typename T> void copyArr (const casacore::Table& in, - casacore::Table& out, - const casacore::String& columnName) - { - casacore::ROArrayColumn<T> inCol(in, columnName); - casacore::ArrayColumn<T> outCol(out, columnName); - outCol.putColumn (inCol.getColumn()); - } - - //# Data items. - MSReader* itsReader; - string itsName; - string itsOutName; - DPBuffer itsBuffer; - casacore::Table itsMS; - ParameterSet itsParset; //# parset for writing history - casacore::String itsDataColName; - casacore::String itsWeightColName; - double itsInterval; - bool itsOverwrite; //# Overwrite an existing output MS? - bool itsCopyCorrData; - bool itsCopyModelData; - bool itsWriteFullResFlags; - uint itsTileSize; - uint itsTileNChan; - uint itsNrCorr; - uint itsNrChan; - uint itsNrBl; - uint itsNrTimes; - uint itsNChanAvg; //# nr of channels in input averaged to 1 - uint itsNTimeAvg; //# nr of times in input averaged to 1 - uint itsNrTimesFlush;//# flush every N time slots (0=no flush) - uint itsNrDone; //# nr of time slots written - std::string itsVdsDir; //# directory where to put VDS file - std::string itsClusterDesc; //# name of clusterdesc file - NSTimer itsTimer; - StManParsetKeys itsStManKeys; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/MedFlagger.h b/CEP/DP3/DPPP/include/DPPP/MedFlagger.h deleted file mode 100644 index 9b02b1c0f70..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/MedFlagger.h +++ /dev/null @@ -1,155 +0,0 @@ -//# MedFlagger.h: DPPP step class to flag data based on median filtering -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_MEDFLAGGER_H -#define DPPP_MEDFLAGGER_H - -// @file -// @brief DPPP step class to flag data based on median filtering - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/FlagCounter.h> -#include <Common/lofar_vector.h> - -namespace LOFAR { - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class flagging data points based on the median - // of the absolute difference of the data and the median of the data. - // Both medians are taken in a time/frequency window around the data point. - // Only unflagged data points in the window are taken into account. - // The size of the window is given in the parset file. - // - // The window around data points at the edges is formed by mirroring the - // data at the edge. For example, for channel 0 and a window size of 7 - // the data are mirrored, thus channels 3,2,1,0,1,2,3 will be used. - // For channel 1 the channels 2,1,0,1,2,3,4 will be used. - // The test program tMirror.cc can be used to check the correctness of - // the alogorithm to determine the channels to use. - // - // Taking the median is an O(N) operation, thus doing it for all data - // points is an O(N^2) operation. The test program tMedian.cc can be - // used to test the performance of the algorithms to determine the median. - // It shows that casacore's kthLargest outperforms STL's nth_element. - // <br> - // Shuffling the data around to be able to determine the medians is also - // an expensive operation, but takes less time than the medians themselves. - // - // When a correlation is flagged, all correlations for that data point - // are flagged. It is possible to specify which correlations have to be - // taken into account when flagging. Using, say, only XX may boost - // performance with a factor 4, but miss points to be flagged. - // It is also possible to specify the order in which the correlations - // have to be tested. - // - // It is possible to flag specific baselines only using a selection on - // baseline length. - // <br>Furthermore it is possible to only flag the autocorrelations and - // apply the resulting flags to the crosscorrelations, possibly selected - // on baseline length. - - class MedFlagger: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - MedFlagger (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~MedFlagger(); - - // Process the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - // It is used to adjust the parms if needed. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the flagger counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Flag for the entry at the given index. - // Use the given time entries for the medians. - // Process the result in the next step. - void flag (uint index, const vector<uint>& timeEntries); - - // Compute the median factors for given baseline, channel, and - // correlation. - void computeFactors (const vector<uint>& timeEntries, - uint bl, int chan, int corr, - int nchan, int ncorr, - float& Z1, float& Z2, - float* tempBuf, - NSTimer& moveTimer, NSTimer& medianTimer); - - // Get the values of the expressions for each baseline. - void getExprValues (int maxNChan, int maxNTime); - - protected: - //# Data members. - DPInput* itsInput; - string itsName; - string itsThresholdStr; - string itsFreqWindowStr; - string itsTimeWindowStr; - vector<float> itsThresholdArr; //# threshold per baseline - vector<uint> itsFreqWindowArr; //# freq window size per baseline - vector<uint> itsTimeWindowArr; //# time window size per baseline - float itsThreshold; - uint itsFreqWindow; - uint itsTimeWindow; - uint itsNTimes; - uint itsNTimesDone; - vector<uint> itsFlagCorr; - bool itsApplyAutoCorr; - vector<int> itsAutoCorrIndex; //# baseline index of autocorrelations - uint itsNrAutoCorr; - double itsMinBLength; //# minimum baseline length - double itsMaxBLength; //# maximum baseline length - vector<double> itsBLength; //# length of each baseline - vector<DPBuffer> itsBuf; - vector<casacore::Cube<float> > itsAmpl; //# amplitudes of the data - FlagCounter itsFlagCounter; - NSTimer itsTimer; - NSTimer itsComputeTimer; //# move/median timer - double itsMoveTime; //# data move timer (sum all threads) - double itsMedianTime; //# median timer (sum of all threads) - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/ModelComponent.h b/CEP/DP3/DPPP/include/DPPP/ModelComponent.h deleted file mode 100644 index 34c90cbe96c..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/ModelComponent.h +++ /dev/null @@ -1,58 +0,0 @@ -//# ModelComponent.h: Base class for model components. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_MODELCOMPONENT_H -#define DPPP_MODELCOMPONENT_H - -// \file -// Base class for model components. - -#include <Common/lofar_smartptr.h> - -namespace LOFAR -{ -namespace DPPP -{ - -class ModelComponentVisitor; -class Position; - -// \addtogroup NDPPP -// @{ - -class ModelComponent -{ -public: - typedef shared_ptr<ModelComponent> Ptr; - typedef shared_ptr<const ModelComponent> ConstPtr; - - virtual ~ModelComponent(); - virtual const Position &position() const = 0; - virtual void accept(ModelComponentVisitor&) const = 0; -}; - -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/ModelComponentVisitor.h b/CEP/DP3/DPPP/include/DPPP/ModelComponentVisitor.h deleted file mode 100644 index c45857cd0f9..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/ModelComponentVisitor.h +++ /dev/null @@ -1,55 +0,0 @@ -//# ModelComponentVisitor.h: Base class for visitors that visit model component -//# hierarchies. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_MODELCOMPONENTVISITOR_H -#define DPPP_MODELCOMPONENTVISITOR_H - -// \file -// Base class for visitors that visit model component hierarchies. - -namespace LOFAR -{ -namespace DPPP -{ - -class PointSource; -class GaussianSource; - -// \addtogroup NDPPP -// @{ - -class ModelComponentVisitor -{ -public: - virtual ~ModelComponentVisitor(); - - virtual void visit(const PointSource&) = 0; - virtual void visit(const GaussianSource&) = 0; -}; - -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/MultiMSReader.h b/CEP/DP3/DPPP/include/DPPP/MultiMSReader.h deleted file mode 100644 index e7ef4961790..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/MultiMSReader.h +++ /dev/null @@ -1,201 +0,0 @@ -//# MultiMSReader.h: DPPP step reading from multiple MSs -//# Copyright (C) 2011 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: MultiMSReader.h 17800 2011-04-19 12:37:59Z diepen $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_MULTIMSREADER_H -#define DPPP_MULTIMSREADER_H - -// @file -// @brief DPPP step reading from multiple MSs - -#include <DPPP/MSReader.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/UVWCalculator.h> -#include <DPPP/FlagCounter.h> -#include <casacore/tables/Tables/TableIter.h> -#include <casacore/tables/Tables/RefRows.h> -#include <casacore/casa/Arrays/Slicer.h> -#include <Common/lofar_vector.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPInput step reading the data from a MeasurementSet. - // At the beginning it finds out the shape of the data; i.e., the - // number of correlations, channels, baselines, and time slots. - // It requires the data to be regularly shaped. - // - // The object is constructed from the 'msin' keywords in the parset file. - // Currently the following can be given: - // <ul> - // <li> msin: name of the MS - // <li> msin.autoweight: calculate weights from autocorrelations? [no] - // <li> msin.startchan: first channel to use [0] - // <li> msin.nchan: number of channels to use [all] - // <li> msin.useflag: use the existing flags? [yes] - // <li> msin.datacolumn: the data column to use [DATA] - // <li> msin.starttime: first time to use [first time in MS] - // <li> msin.endtime: last time to use [last time in MS] - // </ul> - // - // If a time slot is missing, it is inserted with flagged data set to zero. - // Missing time slots can also be detected at the beginning or end of the - // MS by giving the correct starttime and endtime. - // The correct UVW coordinates are calculated for inserted time slots. - // - // The process function only reads the data and flags to avoid that - // too much data is kept in memory. - // Other columns (like WEIGHT, UVW) can be read when needed by using the - // appropriate DPInput::fetch function. - // - // The data columns are handled in the following way: - // <table> - // <tr> - // <td>TIME</td> - // <td>The time slot center of the current data (in MJD seconds). - // It is assumed that all data have the same interval, which is - // used to find missing time slots. - // </td> - // </tr> - // <tr> - // <td>DATA</td> - // <td>The visibility data as [ncorr,nchan,nbaseline]. Only the - // part given by startchan and nchan is read. If a time slot is - // inserted, all its data are zero. - // </td> - // </tr> - // <tr> - // <td>FLAG</td> - // <td>The data flags as [ncorr,nchan,nbaseline] (True is bad). - // They are read from the FLAG column. If a FLAG_ROW is set, all - // flags for that baseline will be set. Also the flag of data - // containing NaN or infinite numbers will be set. - // All flags of an inserted time slot are set. - // </td> - // </tr> - // <tr> - // <td>WEIGHT</td> - // <td>The data weights as [ncorr,nchan,nbaseline]. Column - // WEIGHT_SPECTRUM is used if present and containing valid data, - // otherwise column WEIGHT is used. The weights of an inserted - // time slot are set to 0. - // If autoweight is on, the autocorrelations are used to - // calculate proper weights. - // </td> - // </tr> - // <tr> - // <td>UVW</td> - // <td>The UVW coordinates in meters as [3,nbaseline]. - // They are calculated for a missing time slot. - // </td> - // </tr> - // <tr> - // <td>FULLRESFLAG</td> - // <td>For each baseline the LOFAR_FULL_RES_FLAG column is stored as - // a uChar array with shape [orignchan/8, ntimeavg]. The bits - // represent the flags. They are converted to a Bool array with shape - // [orignchan, ntimeavg, nbaseline]. - // If column LOFAR_FULL_RES_FLAG is not present, the flags are used - // and it is assumed that no averaging was done yet (thus ntimeavg=1 - // and orignchan=nchan). - // </td> - // </tr> - // </table> - - class MultiMSReader: public MSReader - { - public: - // Construct the object for the given MS. - // Parameters are obtained from the parset using the given prefix. - MultiMSReader (const vector<string>& msNames, - const ParameterSet&, const string& prefix); - - virtual ~MultiMSReader(); - - // Process the next data chunk. - // It returns false when at the end. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info (by initializing it). - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // If needed, show the flag counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Read the UVW at the given row numbers. - virtual void getUVW (const casacore::RefRows& rowNrs, - double time, - DPBuffer& buf); - - // Read the weights at the given row numbers. - virtual void getWeights (const casacore::RefRows& rowNrs, - DPBuffer& buf); - - // Read the FullRes flags (LOFAR_FULL_RES_FLAG) at the given row numbers. - // It returns a 3-dim array [norigchan, ntimeavg, nbaseline]. - // If undefined, false is returned. - virtual bool getFullResFlags (const casacore::RefRows& rowNrs, - DPBuffer& buf); - - // Tell if the visibility data are to be read. - virtual void setReadVisData (bool readVisData); - - private: - // Handle the info for all bands. - void handleBands(); - - // Sort the bands (MSs) inorder of frequency. - void sortBands(); - - // Fill the band info where some MSs are missing. - void fillBands(); - - //# Data members. - bool itsOrderMS; //# sort multi MS in order of freq? - int itsFirst; //# first valid MSReader (<0 = none) - int itsNMissing; //# nr of missing MSs - vector<string> itsMSNames; - vector<MSReader*> itsReaders; //# same as itsSteps - vector<DPStep::ShPtr> itsSteps; //# used for automatic destruction - vector<DPBuffer> itsBuffers; - uint itsFillNChan; //# nr of chans for missing MSs - FlagCounter itsFlagCounter; - bool itsRegularChannels; // Are resulting channels regularly spaced - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/OneApplyCal.h b/CEP/DP3/DPPP/include/DPPP/OneApplyCal.h deleted file mode 100644 index 2170a7f8630..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/OneApplyCal.h +++ /dev/null @@ -1,142 +0,0 @@ -//# OneApplyCal.h: DPPP step class to apply a calibration correction to the data -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: OneApplyCal.h 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_ONEAPPLYCAL_H -#define DPPP_ONEAPPLYCAL_H - -// @file -// @brief DPPP step class to apply a calibration correction to the data - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/H5Parm.h> -#include <ParmDB/ParmFacade.h> -#include <ParmDB/ParmSet.h> -#include <ParmDB/Parm.h> -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <DPPP/FlagCounter.h> - -namespace LOFAR { - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class applying calibration parameters to the data. - // It only applies one correction. - - class OneApplyCal: public DPStep - { - public: - // Define the shared pointer for this type. - typedef shared_ptr<OneApplyCal> ShPtr; - - enum CorrectType {GAIN, FULLJONES, TEC, CLOCK, ROTATIONANGLE, SCALARPHASE, PHASE, - ROTATIONMEASURE, SCALARAMPLITUDE, AMPLITUDE}; - - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - OneApplyCal (DPInput*, const ParameterSet&, const std::string& prefix, - const std::string& defaultPrefix, - bool substep=false, std::string predictDirection=""); - - virtual ~OneApplyCal(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - bool invert() { - return itsInvert; - } - - private: - // Read parameters from the associated parmdb and store them in itsParms - void updateParms (const double bufStartTime); - - // If needed, show the flag counts. - virtual void showCounts (std::ostream&) const; - - void initDataArrays(); - - // Check the number of polarizations in the parmdb or h5parm - uint nPol(const std::string& parmName); - - // Replace values by NaN on places where weight is zero - static void applyFlags(std::vector<double>& values, - const std::vector<double>& weights); - - static std::string correctTypeToString(CorrectType); - static CorrectType stringToCorrectType(const string&); - - //# Data members. - DPInput* itsInput; - DPBuffer itsBuffer; - string itsName; - string itsParmDBName; - bool itsUseH5Parm; - string itsSolSetName; - boost::shared_ptr<BBS::ParmFacade> itsParmDB; - H5Parm itsH5Parm; - string itsSolTabName; - H5Parm::SolTab itsSolTab; - H5Parm::SolTab itsSolTab2; // in the case of full Jones, amp and phase table need to be open - CorrectType itsCorrectType; - bool itsInvert; - uint itsTimeSlotsPerParmUpdate; - double itsSigmaMMSE; - bool itsUpdateWeights; - - uint itsCount; // number of steps - - // Expressions to search for in itsParmDB - vector<casacore::String> itsParmExprs; - - // parameters, numparms, antennas, time x frequency - casacore::Cube<casacore::DComplex> itsParms; - uint itsTimeStep; // time step within current chunk - uint itsNCorr; - double itsTimeInterval; - double itsLastTime; // last time of current chunk - FlagCounter itsFlagCounter; - bool itsUseAP; //# use ampl/phase or real/imag - hsize_t itsDirection; - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Patch.h b/CEP/DP3/DPPP/include/DPPP/Patch.h deleted file mode 100644 index 9aec497bf7e..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Patch.h +++ /dev/null @@ -1,141 +0,0 @@ -//# Patch.h: A set of sources for which direction dependent effects are assumed -//# to be equal. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_PATCH_H -#define DPPP_PATCH_H - -// \file -// A set of sources for which direction dependent effects are assumed to be -// equal. - -#include <DPPP/ModelComponent.h> -#include <DPPP/Position.h> -#include <Common/lofar_vector.h> -#include <Common/lofar_string.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -class Patch -{ -public: - typedef shared_ptr<Patch> Ptr; - typedef shared_ptr<const Patch> ConstPtr; - typedef vector<ModelComponent::ConstPtr>::const_iterator const_iterator; - - template <typename T> - Patch(const string &name, T first, T last); - - const string &name() const; - const Position &position() const; - double brightness() const; - void setPosition (const Position&); - void setBrightness (double); - - size_t nComponents() const; - ModelComponent::ConstPtr component(size_t i) const; - - const_iterator begin() const; - const_iterator end() const; - - // Compute the position as the average of the positions of the components. - void computePosition(); - -private: - - string itsName; - Position itsPosition; - double itsBrightness; - vector<ModelComponent::ConstPtr> itsComponents; -}; - - -// @} - -// -------------------------------------------------------------------------- // -// - Implementation: Patch - // -// -------------------------------------------------------------------------- // - -template <typename T> -Patch::Patch(const string &name, T first, T last) - : itsName(name), - itsComponents(first, last) -{ - computePosition(); -} - -inline const string &Patch::name() const -{ - return itsName; -} - -inline const Position &Patch::position() const -{ - return itsPosition; -} - -inline double Patch::brightness() const -{ - return itsBrightness; -} - -inline void Patch::setPosition (const Position& pos) -{ - itsPosition = pos; -} - -inline void Patch::setBrightness (double brightness) -{ - itsBrightness = brightness; -} - -inline size_t Patch::nComponents() const -{ - return itsComponents.size(); -} - -inline ModelComponent::ConstPtr Patch::component(size_t i) const -{ - return itsComponents[i]; -} - -inline Patch::const_iterator Patch::begin() const -{ - return itsComponents.begin(); -} - -inline Patch::const_iterator Patch::end() const -{ - return itsComponents.end(); -} - - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/PhaseFitter.h b/CEP/DP3/DPPP/include/DPPP/PhaseFitter.h deleted file mode 100644 index 93caa23c16b..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/PhaseFitter.h +++ /dev/null @@ -1,316 +0,0 @@ -//# phasefitter.h: Class to perform phase fitting (TEC), allowing phase wraps -//# Copyright (C) 2016 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: phasefitter.cc 21598 2012-07-16 08:07:34Z offringa $ -//# -//# @author André Offringa - -/** - * @file phasefitter.h Implements TEC model phase filter @ref PhaseFitter. - * @author André Offringa - * @date 2016-04-06 - */ - -#ifndef PHASE_FITTER_H -#define PHASE_FITTER_H - -#include <vector> -#include <cmath> -#include <cstring> - -/** - * Phase fitter that can force phase solutions over frequency onto a TEC model. - * To use: - * - Construct and set the frequencies (with @ref FrequencyData() ) and if already possible - * the weights (@ref WeightData()). - * - Perform a calibration iteration. - * - Set the phase values (@ref PhaseData()) and, if not yet done, the weights (@ref WeightData()) - * to the current phase solutions / weights of a single antenna. - * - Call @ref FitDataToTEC1Model() or @ref FitDataToTEC2Model(). - * - Read the new phase values. - * - When fitting multiple polarizations, the above steps should be done twice for each - * diagonal value of the Jones matrix. Also repeat for all antennae. - * - Continue the iteration with the new phase values. - * - * Methods with name containing TEC1 refer to a single-parameter TEC model (no delay), while - * methods with TEC2 refer to dual-parameter TEC model (TEC + delay). - */ -class PhaseFitter -{ - public: - PhaseFitter() : - _phases(), - _frequencies(), - _weights(), - _fittingAccuracy(1e-6) - { } - - /** - * Construct a phase fitter for the given number of channels. - * Weights are initialized to unity. The fitting accuracy is - * initialized to 1e-6. - * @param channelCount number of channels. - */ - PhaseFitter(size_t channelCount) : - _phases(channelCount, 0.0), - _frequencies(channelCount, 0.0), - _weights(channelCount, 1.0), - _fittingAccuracy(1e-6) - { } - - /** - * Change the number of channels to be fitted. All phase, weight and frequency data is discarded. - * @param channelCount New number of channels - */ - void SetChannelCount(size_t channelCount) - { - _phases.assign(channelCount, 0.0); - _frequencies.assign(channelCount, 0.0); - _weights.assign(channelCount, 1.0); - } - - /** - * Fits the given phase values to a TEC model and returns the parameters. This function is - * robust even when phase wrapping occurs. - * After this call, the @ref PhaseData() satisfy the TEC model. - * The TEC model has two parameters and are fitted as described in - * @ref FitTEC2ModelParameters(). - * @param alpha Found value for the alpha parameter. - * @param beta Found value for the beta parameter. - * @returns Cost of the found solution. - */ - double FitDataToTEC2Model(double& alpha, double& beta); - - /** - * Like @ref FitDataToTEC2Model(double&,double&), but without returning the parameters. - */ - void FitDataToTEC2Model() - { - double a,b; - FitDataToTEC2Model(a, b); - } - - /** - * Fits the given phase values to a TEC model using prior estimates of the - * model parameters. This method is similar to @ref FitDataToTEC2Model(), - * except that it will use the provided initial values of alpha and - * beta to speed up the solution. When the provided initial values - * are not accurate, the fit might not be accurate. - * - * @todo No fast method has been implemented -- instead it will perform a full parameter search. - * @param alpha Estimate of alpha parameter on input, found value on output. - * @param beta Estimate of beta parameter on input, found value on output. - */ - double FitDataToTEC2ModelWithInitialValues(double& alpha, double& beta) - { - return FitDataToTEC2Model(alpha, beta); - } - - /** - * Fit the data and get the best fitting parameters. The model - * used is f(nu) = alpha/nu + beta, with possible 2pi wrappings in the - * data. - * The phase data is not changed. - * The alpha parameter is linearly related to the TEC. The beta parameter - * is a constant phase offset, given in radians. - * The fitting algorithm uses a combination of brute force searching and - * binary-like searching (ternary search). - * @param alpha Will be set to the fitted value for the alpha parameter - * (value on input is not used). - * @param beta Will be set to the fitted value for the beta parameter - * (value on input is not used). - */ - void FitTEC2ModelParameters(double& alpha, double& beta) const; - - /** - * Get a pointer to the array of phase values. This array should be filled with the - * phases of solutions before calling one of the fit methods. @ref FitDataToTEC1Model() - * and ~TEC2~ sets this array to the fitted phases. - * Normally, these values should be set to std::arg(z) or atan2(z.imag(), z.real()), where - * z is a complex solution for one polarizations. All phases should correspond to the same - * polarizations, i.e., different polarizations (xx/yy/ll/rr, etc.) should be independently - * fitted. - * @returns Array of @ref Size() doubles with the phases. - */ - double* PhaseData() { return _phases.data(); } - - /** - * Get a constant pointer to the array of values. - * @returns Constant array of @ref Size() doubles with the phases. - */ - const double* PhaseData() const { return _phases.data(); } - - /** - * Get a pointer to the array of frequency values. This array should be set to the - * frequency values of the channels, such that FrequencyData()[ch] is the frequency - * corresponding to the phase value PhaseData()[ch]. The fitter will not change this - * array. - * @returns Array of @ref Size() doubles with the frequencies in Hz. - */ - double* FrequencyData() { return _frequencies.data(); } - - /** - * Constant frequency data. - * @returns Constant array of @ref Size() doubles with the frequencies in Hz. - */ - const double* FrequencyData() const { return _frequencies.data(); } - - /** - * This array should be filled with the weights - * of the channel phase solutions. If the solver supports weights during solving, this value should - * be set to the sum of weights of all visibilities that are used for the solution of - * this channel. If the solver does not support weights, it should be set to the number - * of unflagged visibilities used by the solver to generate the corresponding phase. Another - * way of saying this, is that the weights should be set to the esimated inverse variance of the phase - * solutions. - * - * The use of weights will make sure that noisy channels do not bias the result. Weighting is - * for example helpful to avoid that the few remaining samples in a badly RFI contaminated - * channels cause the fit to be inaccurate. - * - * While the weights could be different for each antenna solution, generally the weight of a channel - * is constant over the antennas. The latter implies that the weights can be set once before - * the solution starts, and only the @ref PhaseData() need to be changed within solution - * iterations. - * - * The weights are initially set to one. - * - * @returns Array of @ref Size() doubles with the weights. - */ - double* WeightData() { - return _weights.data(); - } - - /** - * Constant array of weights, as described above. - * @returns Constant array of @ref Size() doubles with weights. - */ - const double* WeightData() const { return _weights.data(); } - - /** - * Number of channels used for the fitter. - * @returns Number of channels. - */ - size_t Size() const { return _phases.size(); } - - /** - * Get the fitting accuracy. The fitter will stop once this accuracy is approximately reached. - * The default value is 1e-6. - * @returns Fitting accuracy. - */ - double FittingAccuracy() const { return _fittingAccuracy; } - - /** - * Change the fitting accuracy. See @ref FittingAccuracy(). - * @param newAccuracy New accuracy. - */ - void SetFittingAccuracy(double newAccuracy) { _fittingAccuracy = newAccuracy; } - - /** - * Evaluate the cost function for given TEC model parameters. The higher the - * cost, the worser the data fit the given parameters. - * @param alpha TEC parameter - * @param beta Phase offset parameter - * @returns sum of | nu_i / alpha + beta - theta_i |, and each sum term is - * phase unwrapped. - */ - double TEC2ModelCost(double alpha, double beta) const; - - /** - * Like @ref TEC2ModelFunc(), but 2-pi wrapped. - * @param nu Frequency in Hz - * @param alpha TEC parameter (in undefined units) - * @param beta Phase offset parameter (in radians) - * @returns | nu_i / alpha + beta | % 2pi - */ - static double TEC2ModelFunc(double nu, double alpha, double beta) - { - return alpha / nu + beta; - } - - double FitDataToTEC1Model(double& alpha); - - /** - * Like @ref FitDataToTEC1Model(double&,double&), but without returning the parameters. - */ - void FitDataToTEC1Model() - { - double a; - FitDataToTEC1Model(a); - } - - /** - * Like @ref TEC2ModelFunc(), but 2-pi wrapped. - * @param nu Frequency in Hz - * @param alpha TEC parameter (in undefined units) - * @param beta Phase offset parameter (in radians) - * @returns | nu_i / alpha + beta | % 2pi - */ - static double TEC2ModelFuncWrapped(double nu, double alpha, double beta) - { - return fmod(alpha / nu + beta, 2.0*M_PI); - } - - double FitDataToTEC1ModelWithInitialValues(double& alpha) - { - return FitDataToTEC1Model(alpha); - } - - void FitTEC1ModelParameters(double& alpha) const; - - /** - * Evaluate the cost function for given TEC model parameter. The higher the - * cost, the worser the data fit the given parameters. - * @param alpha TEC parameter - * @returns sum of | alpha / nu_i - theta_i |, and each sum term is - * phase unwrapped. - */ - double TEC1ModelCost(double alpha) const; - - /** - * Like @ref TEC1ModelFunc(), but 2-pi wrapped. - * @param nu Frequency in Hz - * @param alpha TEC parameter (in undefined units) - * @param beta Phase offset parameter (in radians) - * @returns | alpha / nu_i + beta | % 2pi - */ - static double TEC1ModelFuncWrapped(double nu, double alpha) - { - return fmod(alpha / nu, 2.0*M_PI); - } - - static double AlphaToTEC(double alpha) - { - return alpha / -8.44797245e9; - } - private: - std::vector<double> _phases, _frequencies, _weights; - double _fittingAccuracy; - - double fitTEC2ModelBeta(double alpha, double betaEstimate) const; - void bruteForceSearchTEC2Model(double& lowerAlpha, double& upperAlpha, double& beta) const; - double ternarySearchTEC2ModelAlpha(double startAlpha, double endAlpha, double& beta) const; - void fillDataWithTEC2Model(double alpha, double beta); - void fillDataWithTEC1Model(double alpha); - - void bruteForceSearchTEC1Model(double& lowerAlpha, double& upperAlpha) const; - double ternarySearchTEC1ModelAlpha(double startAlpha, double endAlpha) const; -}; - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/PhaseShift.h b/CEP/DP3/DPPP/include/DPPP/PhaseShift.h deleted file mode 100644 index 94c3f9e9bec..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/PhaseShift.h +++ /dev/null @@ -1,114 +0,0 @@ -//# PhaseShift.h: DPPP step class to shift the data to another phase center -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_PHASESHIFT_H -#define DPPP_PHASESHIFT_H - -// @file -// @brief DPPP step class to shift the data to another phase center - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <casacore/casa/Arrays/Matrix.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class to shift the data and UVW coordinates - // to another phase center. If no phase center is given, a shift is - // done back to the original phase center. - // - // The code is based on the script phaseshift.py by Bas vd Tol. - - class PhaseShift: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - // This is the standard constructor where the phasecenter must be given. - PhaseShift (DPInput*, const ParameterSet&, const string& prefix); - - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - // This is a constructor for Demixer where the phasecenter has the - // given default value. - PhaseShift (DPInput*, const ParameterSet&, const string& prefix, - const vector<string>& defVal); - - virtual ~PhaseShift(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Fill the transformation matrix for given ra/dec. - static void fillTransMatrix (casacore::Matrix<double>& mat, - double ra, double dec); - - // Get the phasors resulting from the last process step. - // This is used in the Demixer. - const casacore::Matrix<casacore::DComplex>& getPhasors() const - { return itsPhasors; } - - // Get the phase center. - const vector<string>& getPhaseCenter() const - { return itsCenter; } - - private: - // Interpret the phase center specification. - // Currently only J2000 RA and DEC can be given. - casacore::MDirection handleCenter(); - - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuf; - vector<string> itsCenter; - vector<double> itsFreqC; //# freq/C - casacore::Matrix<double> itsMat1; //# TT in phasehift.py - double itsXYZ[3]; //# numpy.dot((w-w1).T, T) - casacore::Matrix<casacore::DComplex> itsPhasors; //# phase factor per chan,bl - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/PointSource.h b/CEP/DP3/DPPP/include/DPPP/PointSource.h deleted file mode 100644 index 2d3935b91f1..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/PointSource.h +++ /dev/null @@ -1,105 +0,0 @@ -//# PointSource.h: Point source model component with optional spectral index and -//# rotation measure. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_POINTSOURCE_H -#define DPPP_POINTSOURCE_H - -// \file -// Point source model component with optional spectral index and rotation -// measure. - -#include <DPPP/ModelComponent.h> -#include <DPPP/Position.h> -#include <DPPP/Stokes.h> -#include <Common/lofar_vector.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -class PointSource: public ModelComponent -{ -public: - typedef shared_ptr<PointSource> Ptr; - typedef shared_ptr<const PointSource> ConstPtr; - - PointSource(const Position &position); - PointSource(const Position &position, const Stokes &stokes); - - virtual const Position &position() const; - void setPosition(const Position &position); - - void setStokes(const Stokes &stokes); - - template <typename T> - void setSpectralTerms(double refFreq, bool isLogarithmic, T first, T last); - - void setRotationMeasure(double fraction, double angle, double rm); - - Stokes stokes(double freq) const; - - virtual void accept(ModelComponentVisitor &visitor) const; - -private: - bool hasSpectralTerms() const; - bool hasRotationMeasure() const; - - Position itsPosition; - Stokes itsStokes; - double itsRefFreq; - vector<double> itsSpectralTerms; - double itsPolarizedFraction; - double itsPolarizationAngle; - double itsRotationMeasure; - bool itsHasRotationMeasure; - bool itsHasLogarithmicSI; -}; - -// @} - -// -------------------------------------------------------------------------- // -// - Implementation: PointSource - // -// -------------------------------------------------------------------------- // - -template <typename T> -void PointSource::setSpectralTerms(double refFreq, bool isLogarithmic, T first, T last) -{ - itsRefFreq = refFreq; - itsHasLogarithmicSI = isLogarithmic; - itsSpectralTerms.clear(); - itsSpectralTerms.insert(itsSpectralTerms.begin(), first, last); -} - -inline const Position &PointSource::position() const -{ - return itsPosition; -} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Position.h b/CEP/DP3/DPPP/include/DPPP/Position.h deleted file mode 100644 index e89381d9949..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Position.h +++ /dev/null @@ -1,71 +0,0 @@ -//# Position.h: A position on the celestial sphere. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_POSITION_H -#define DPPP_POSITION_H - -// \file -// A position on the celestial sphere. - -#include <cstring> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -class Position -{ -public: - Position(); - Position(double alpha, double delta); - - const double &operator[](size_t i) const; - double &operator[](size_t i); - -private: - double itsPosition[2]; -}; - -// @} - -// -------------------------------------------------------------------------- // -// - Implementation: Position - // -// -------------------------------------------------------------------------- // - -inline const double &Position::operator[](size_t i) const -{ - return itsPosition[i]; -} - -inline double &Position::operator[](size_t i) -{ - return itsPosition[i]; -} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/PreFlagger.h b/CEP/DP3/DPPP/include/DPPP/PreFlagger.h deleted file mode 100644 index 9640841c933..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/PreFlagger.h +++ /dev/null @@ -1,296 +0,0 @@ -//# PreFlagger.h: DPPP step class to flag data on channel, baseline, or time -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_PREFLAGGER_H -#define DPPP_PREFLAGGER_H - -// @file -// @brief DPPP step class to flag data on channel, baseline, or time - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/BaselineSelection.h> -#include <Common/lofar_vector.h> -#include <casacore/measures/Measures/MDirection.h> - -namespace LOFAR { - class ParameterSet; - class ParameterValue; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class flagging data points based on data - // selections given in the parset file. - // The following selections can be given: - // <ul> - // <li> minimum and/or maximum UV distance (projected baseline length) - // <li> minimum and/or maximum baseline length (intrinsic) - // <li> autocorrelations or crosscorrelations - // <li> baselines using names for antenna 1 and 2 - // <li> antennae using antenna names - // <li> minimum and/or maximum amplitude/phase/real/imag per correlation - // <li> channel numbers - // <li> frequency ranges - // <li> sequence nr or time ranges - // <li> LST - // <li> azimuth/elevation - // </ul> - // The antenna names can contain shell-style wildcards (* ? [] {}). - // - // All selections are ANDed, thus only the data points matching all - // selections are flagged. It is however, possible to specify a logical - // expression of selections by means of the internal PSet class. - // A PSet objects contains a set of ANDed selections. The PSets can - // be logically combined by the user using the normal logical operators. - - class PreFlagger: public DPStep - { - // Make this Test class a friend, so it can access private code. - friend class TestPSet; - - public: - enum Mode {SetFlag, ClearFlag, SetComp, ClearComp}; - - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - PreFlagger (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~PreFlagger(); - - // Process the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the average info. - // It is used to adjust the parms if needed. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the flag counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - // This internal class represents a single set of ANDed selections. - // PSets can be logically combined by the PreFlagger class. - class PSet - { - // Make this Test class a friend, so it can access private code. - friend class TestPSet; - - public: - // Define the operators in pset expressions. - // They have to have negative values in order of precedence. - enum Oper { - OpParen = -1, - OpOr = -2, - OpAnd = -3, - OpNot = -4 - }; - - // Define the shared pointer for this type. - typedef shared_ptr<PSet> ShPtr; - - // Default constructor (for test purposes). - PSet() - {} - - // Construct from the parset parameters. - PSet (DPInput*, const ParameterSet& parset, const string& prefix); - - // Set and return the flags. - casacore::Cube<bool>* process (const DPBuffer&, DPBuffer&, uint timeSlot, - const casacore::Block<bool>& matchBL, - NSTimer& timer); - - // Update the general info. - // It is used to adjust the parms if needed. - void updateInfo (const DPInfo&); - - // Show the pset parameters. - void show (std::ostream&, bool showName) const; - - private: - // Test if the time matches the time ranges. - bool matchTime (double time, uint timeSlot) const; - - // Test if the value matches one of the ranges in the vector. - bool matchRange (double v, const vector<double>& ranges) const; - - // Clear itsMatchBL for mismatching baselines. - // If returns false if no matches were found. - bool flagBL(); - - // Clear itsMatchBL for baselines with mismatching UV distances. - // If returns false if no matches were found. - bool flagUV (const casacore::Matrix<double>& uvw); - - // Clear itsMatchBL for baselines with mismatching AzEl. - // If returns false if no matches were found. - bool flagAzEl (double time); - - // Test if azimuth or elevation of given antenna mismatches. - // If so, clear itsMatchBL for all baselines containing the antenna. - void testAzEl (casacore::MDirection::Convert& converter, - uint blnr, int ant, - const int* ant1, const int* ant2); - - // Set the flags based on amplitude threshold per correlation. - void flagAmpl (const casacore::Cube<float>& amplitudes); - - // Set the flags based on phase threshold per correlation. - void flagPhase (const casacore::Cube<casacore::Complex>& data); - - // Set the flags based on real/imaginary threshold per correlation. - void flagReal (const casacore::Cube<casacore::Complex>& data); - void flagImag (const casacore::Cube<casacore::Complex>& data); - - // Flag the channels given in itsChannels. - void flagChannels(); - - // Convert a string of (date)time ranges to double. Each range - // must be given with .. or +-. - // <tt>asTime=true</tt> means that the strings should contain times, - // otherwise date/times. - vector<double> fillTimes (const vector<string>& str, bool asTime, - bool canEndBeforeStart); - - // Read the string as time or date/time and convert to seconds. - // usepm indicates if the value is a plusminus value. If so, the - // value must be a positive time. - double getSeconds (const string& str, bool asTime, bool usepm); - - // Fill the baseline matrix; set true for baselines to flag. - void fillBLMatrix(); - - // Fill itsChannels if channel/freq selection is done. - void fillChannels (const DPInfo&); - - // Return a vector with a value per correlation. - // If no parm value given use the default. - // If the parm value is a vector, use the given values. Use the - // default for non-given correlations. - // If the parm value is a single value, use it for all correlations. - // <br>doFlag is set if values are given. - vector<float> fillValuePerCorr (const ParameterValue& value, - float defVal, bool& doFlag); - - // Handle the frequency ranges given and determine which channels - // have to be flagged. - casacore::Vector<bool> handleFreqRanges - (const casacore::Vector<double>& chanFreqs); - - // Get the value and possible unit. - // If no unit is given, the argument is left untouched. - void getValue (const string& str, double& value, casacore::String& unit); - - // Get the frequency in Hz using the value and unit. - double getFreqHz (double value, const casacore::String& unit); - - // Convert a PSet expression to Reversed Polish Notation in itsRpn. - // It returns the names of all PSets. - vector<string> exprToRpn (const string& expr); - - //# Data members of PreFlagger::PSet. - DPInput* itsInput; - const DPInfo* itsInfo; - string itsName; - string itsStrExpr; - bool itsFlagOnTimeOnly; //# true = only flag on time info - bool itsFlagOnTime; //# true = do time based flagging - bool itsFlagOnUV; //# true = do uv distance based flagging - bool itsFlagOnBL; //# true = do ant/bl based flagging - bool itsFlagOnAmpl; //# true = do amplitude based flagging - bool itsFlagOnPhase;//# true = do phase based flagging - bool itsFlagOnReal; //# true = do real based flagging - bool itsFlagOnImag; //# true = do imag based flagging - bool itsFlagOnAzEl; //# true = do Az/El based flagging - BaselineSelection itsSelBL; - double itsMinUV; //# minimum UV distance; <0 means ignore - double itsMaxUV; //# maximum UV distance; <0 means ignore - casacore::Matrix<bool> itsFlagBL; //# true = flag baseline [i,j] - vector<double> itsAzimuth; //# azimuth ranges to be flagged - vector<double> itsElevation;//# elevation ranges to be flagged - vector<double> itsTimes; //# time of day ranges to be flagged - vector<double> itsLST; //# sidereal time ranges to be flagged - vector<double> itsATimes; //# absolute time ranges to be flagged - vector<double> itsRTimes; //# relative time ranges to be flagged - vector<uint> itsTimeSlot; //# time slots to be flagged - vector<float> itsAmplMin; //# minimum amplitude for each corr - vector<float> itsAmplMax; //# maximum amplitude for each corr - vector<float> itsPhaseMin; //# minimum phase for each corr - vector<float> itsPhaseMax; //# maximum phase for each corr - vector<float> itsRealMin; //# minimum real for each corr - vector<float> itsRealMax; //# maximum real for each corr - vector<float> itsImagMin; //# minimum imaginary for each corr - vector<float> itsImagMax; //# maximum imaginary for each corr - vector<uint> itsChannels; //# channels to be flagged. - vector<string> itsStrChan; //# channel ranges to be flagged. - vector<string> itsStrFreq; //# frequency ranges to be flagged - vector<string> itsStrTime; //# time ranges to be flagged - vector<string> itsStrLST; //# LST ranges to be flagged - vector<string> itsStrATime; //# absolute time ranges to be flagged - vector<string> itsStrRTime; //# relative time ranges to be flagged - vector<string> itsStrAzim; //# azimuth ranges to be flagged - vector<string> itsStrElev; //# elevation ranges to be flagged - vector<int> itsRpn; //# PSet expression in RPN form - vector<PSet::ShPtr> itsPSets; //# PSets used in itsRpn - casacore::Matrix<bool> itsChanFlags; //# flags for channels to be flagged - casacore::Cube<bool> itsFlags; - casacore::Block<bool> itsMatchBL; //# true = baseline in buffer matches - }; - - // Set the flags in outPtr where inPtr matches mode. - void setFlags (const bool* inPtr, bool* outPtr, - uint nrcorr, uint nrchan, uint nrbl, bool mode); - - // Clear the flags in outPtr where inPtr matches mode. - // If the corresponding data point of a flag is invalid - // (non-finite or zero), it is always flagged. - void clearFlags (const bool* inPtr, bool* outPtr, - uint nrcorr, uint nrchan, uint nrbl, bool mode, - const DPBuffer& buf); - - //# Data members of PreFlagger. - string itsName; - DPInput* itsInput; - DPBuffer itsBuffer; - Mode itsMode; - NSTimer itsTimer; - PSet itsPSet; - uint itsCount; - FlagCounter itsFlagCounter; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Predict.h b/CEP/DP3/DPPP/include/DPPP/Predict.h deleted file mode 100644 index d4899a38740..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Predict.h +++ /dev/null @@ -1,162 +0,0 @@ -//# Predict.h: DPPP step class to predict visibilities from a source model -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_PREDICT_H -#define DPPP_PREDICT_H - -// @file -// @brief DPPP step class to predict visibilities from a source model - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/Patch.h> -#include <DPPP/SourceDBUtil.h> -#include <DPPP/ApplyBeam.h> -#include <DPPP/ModelComponent.h> -#include <StationResponse/Station.h> -#include <StationResponse/Types.h> -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/Quanta/MVEpoch.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <utility> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class to predict visibilities with optionally beam - - typedef std::pair<size_t, size_t> Baseline; - typedef std::pair<ModelComponent::ConstPtr, Patch::ConstPtr> Source; - - class Predict: public DPStep - { - public: - typedef shared_ptr<Predict> ShPtr; - - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - Predict (DPInput*, const ParameterSet&, const string& prefix); - - // Constructor with explicit sourcelist - Predict (DPInput*, const ParameterSet&, const string& prefix, - const vector<string>& sourcePatterns); - - // The actual constructor - void init (DPInput*, const ParameterSet&, const string& prefix, - const vector<string>& sourcePatterns); - - // Set the applycal substep - void setApplyCal(DPInput*, const ParameterSet&, const string& prefix); - - // Set the operation type - void setOperation(const std::string& type); - - Predict(); - - virtual ~Predict(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Prepare the sources - void setSources(const vector<string>& sourcePatterns); - - // Return the direction of the first patch - std::pair<double, double> getFirstDirection() const; - - private: - StationResponse::vector3r_t dir2Itrf (const casacore::MDirection& dir, - casacore::MDirection::Convert& measConverter); - void addBeamToData (Patch::ConstPtr patch, double time, - const StationResponse::vector3r_t& refdir, - const StationResponse::vector3r_t& tiledir, - uint thread, uint nSamples, dcomplex* data0); - - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuffer; - string itsSourceDBName; - string itsOperation; - bool itsApplyBeam; - bool itsStokesIOnly; - bool itsUseChannelFreq; - bool itsOneBeamPerPatch; - Position itsPhaseRef; - - bool itsDoApplyCal; - ApplyCal itsApplyCalStep; - DPBuffer itsTempBuffer; - ResultStep* itsResultStep; // For catching results from ApplyCal - - uint itsDebugLevel; - - vector<Baseline> itsBaselines; - - // Vector containing info on converting baseline uvw to station uvw - vector<int> itsUVWSplitIndex; - - // UVW coordinates per station (3 coordinates per station) - casacore::Matrix<double> itsUVW; - - // The info needed to calculate the station beams. - vector<vector<StationResponse::Station::Ptr> > itsAntBeamInfo; - vector<casacore::MeasFrame> itsMeasFrames; - vector<casacore::MDirection::Convert> itsMeasConverters; - vector<vector<StationResponse::matrix22c_t> > itsBeamValues; - ApplyBeam::BeamMode itsBeamMode; - - std::string itsDirectionsStr; // Definition of patches, to pass to applycal - vector<Patch::ConstPtr> itsPatchList; - vector<Source> itsSourceList; - - vector<casacore::Cube<dcomplex> > itsModelVis; // one for every thread - vector<casacore::Cube<dcomplex> > itsModelVisPatch; - - NSTimer itsTimer; - NSTimer itsTimerPredict; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/ProgressMeter.h b/CEP/DP3/DPPP/include/DPPP/ProgressMeter.h deleted file mode 100644 index 8c3912a1a83..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/ProgressMeter.h +++ /dev/null @@ -1,128 +0,0 @@ -//# ProgressMeter.h: Visual indication of a tasks progress. -//# Copyright (C) 1997,2000 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef LOFAR_COMMON_PROGRESSMETER_H -#define LOFAR_COMMON_PROGRESSMETER_H - -//# Includes -#include <Common/lofar_string.h> - -namespace LOFAR { - -// @ingroup NDPPP - -// This class shows the progress of a task. -// It is copied from casacore. -// -// It shows the progress on stdout using a line with dots and percentages. -// -// It is possible to attach the progressmeter to function in, say, a GUI -// that can show the progress in a more visual way. -// -// The progress meter will usually be removed from the screen once the maximum -// value is set, so you should not reuse the ProgressMeter after that has -// happened. It is harmless, but it will not result in any visual feedback for -// the user. -// -// While the "min" is usually less than "max", if in fact it is greater than -// "max" the progress meter will count down correctly. -// -// For example: -// <srcblock> -// void calculate(uint n) { -// int skip = n / 200; -// ProgressMeter meter(0, n, "Title", "Subtitle", "", "", true, skip); -// for (uint i=0; i<n; i++) { -// ... calculate ... -// meter.update(i); -// } -// } -// </srcblock> - -class ProgressMeter -{ -public: - // Makes a null progress meter, i.e. no updates to the screen are - // generated. - ProgressMeter(); - - // Create a progress meter with the given min and max values and labels. - // if <tt>estimateTime=true</tt>, an estimate of the - // time remaining will be made for the user. This estimate assumes that - // the remaining portion will compute at the same rate as the portion - // completed so far, so the time should not be estimated for processes - // which are non-linear. - // - // Any labels which are set to the empty string will have sensible defaults - // supplied. In particular, <tt>minlabel</tt> and <tt>maxlabel</tt> - // will be set to the display the minimum and maximum values. - // - // Normally the progress bar will be updated with every call to - // <tt>update()</tt>. If however you will be sending many events - // then you might want to update the GUI every <tt>updateEvery</tt>'th - // event for efficiency. Generally there's no point updating more than - // a couple of hundred times since the eye can't distinguish differences - // in the progress bar position at that level. If updateEvery is <=0, it - // is set to 1 for you. - ProgressMeter(double min, double max, - const string& title, const string& subtitle, - const string& minlabel, const string& maxlabel, - bool estimateTime=true, int updateEvery=1); - - // The destruction of the meter will cause an update to be sent with the - // maximum value. This will usually cause the GUI window to be removed - // from the screen. Thus the progress meter should generally live as long - // as the calculation it is tracking. - ~ProgressMeter(); - - void update(double value, bool force=false); - - // Get the min and max values of the progress meter. - // <group> - double min() const - { return min_p; } - double max() const - { return max_p; } - // </group> - - friend class ObjectController; -private: - int id_p; - double min_p, max_p; - int update_every_p, update_count_p; - - // These are set by ObjectController for executables that have the tasking - // system in them, otherwise they are null and this class just does no-ops. - static int (*creation_function_p)(double, double, - const string&, const string&, - const string&, const string&, - bool); - static void (*update_function_p)(int, double); - - // Undefined and inaccessible - ProgressMeter(const ProgressMeter&); - ProgressMeter& operator=(const ProgressMeter&); -}; - - -} //# NAMESPACE LOFAR END - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/ScaleData.h b/CEP/DP3/DPPP/include/DPPP/ScaleData.h deleted file mode 100644 index 0e5504ba587..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/ScaleData.h +++ /dev/null @@ -1,100 +0,0 @@ -//# ScaleData.h: DPPP step class for freq-dependent scaling of the data -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: ScaleData.h 23223 2012-12-07 14:09:42Z schoenmakers $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_SCALEDATA_H -#define DPPP_SCALEDATA_H - -// @file -// @brief DPPP step class for freq-dependent scaling of the data - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <casacore/casa/Arrays/Cube.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class scaling the data using a polynomial - // in frequency (in MHz) for LBA and HBA. The coefficients can be given - // as ParSet parameters having a default determined by Adam Deller. - // - // The polynomial coefficients can depend on station by giving them - // per station name regular expression. The default coefficients are - // used for the station not matching any regular expression. - // - // The data are multiplied with a factor sqrt(scale[ant1] * scale[ant2]). - // An extra scale factor can be applied to compensate for the different - // number of dipoles or tiles or for missing ones. By default that - // extra scale factor is only applied to stations using the default - // coefficients, because it is assumed that coefficients are scaled well - // when specifying them explicitly for stations. - - class ScaleData: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - ScaleData (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~ScaleData(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - // Fill the scale factors for stations having different nr of tiles. - void fillSizeScaleFactors (uint nNominal, vector<double>& fact); - - //# Data members. - string itsName; - bool itsScaleSizeGiven; - bool itsScaleSize; - vector<string> itsStationExp; // station regex strings - vector<string> itsCoeffStr; // coeff per station regex - vector<vector<double> > itsStationFactors; // scale factor per station,freq - casacore::Cube<double> itsFactors; // scale factor per baseline,freq,pol - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Simulate.h b/CEP/DP3/DPPP/include/DPPP/Simulate.h deleted file mode 100644 index 5f40d29054b..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Simulate.h +++ /dev/null @@ -1,134 +0,0 @@ -//# Simulate.h: Simulate visibilities for a patch of sources. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_SIMULATE_H -#define DPPP_SIMULATE_H - -// \file -// Simulate visibilities for a patch of sources. - -#include <DPPP/Baseline.h> -#include <DPPP/Cursor.h> -#include <DPPP/Patch.h> -#include <DPPP/Position.h> -#include <Common/lofar_complex.h> - -//# Forward Declaration. -namespace casacore -{ - template<typename T> class Vector; - template<typename T> class Matrix; -} - -namespace LOFAR -{ -namespace DPPP -{ - - // \addtogroup NDPPP - // @{ - - // Setup the splitting of the baseline UVWs into station UVWs. It returns - // the indices of the baselines needed to split the baseline UVWs into - // station UVWs. They are in such an order that the UVW of a station is known - // before used in another baseline to derive the UVW of the other station. - // It can handle cases where baselines occur in disjoint station groups - // like 0-1, 0-2, 1-2 and 3-4, 4-5, 5-6. - // Note that the first station of a group gets UVW=0. All other station UVWs - // are relative to it using the baseline UVWs. - // Also note that nr of groups can be derived from the size of the returned - // vector (because it contains no entry for the first antenna in a group). - vector<int> nsetupSplitUVW (uint nant, const casacore::Vector<int>& ant1, - const casacore::Vector<int>& ant2); - - // Do the actual splitting of baseline UVWs into station UVWs using - // the index vector generated by setupSplitUVW. - void nsplitUVW (const vector<int>& blindex, - const vector<Baseline>& baselines, - const casacore::Matrix<double>& uvwbl, - casacore::Matrix<double>& uvwant); - -// Split baseline UVW coordinates into station UVW coordinates (by assuming the -// station with index 0 has UVW coordinates of (0, 0, 0)). -// -// \param[in] nStation -// The number of stations. -// \param[in] nBaseline -// The number of baselines. -// \param[in] baselines -// A cursor for a 1-D buffer of baselines of shape (\p nBaseline). -// \param[in] uvw -// A cursor for a 2-D buffer of UVW coordinates of shape (\p nBaseline, 3). -// \param[in] split -// A cursor for a 2-D buffer of station UVW coordinates of shape -// (\p nStation, 3). -void splitUVW(size_t nStation, size_t nBaseline, - const_cursor<Baseline> baselines, const_cursor<double> uvw, - cursor<double> split); - -// Transform UVW coordinates from phase reference position \p from to phase -// reference position \p to. The transformation is performed in place. -// -// \param[in] from -// Current phase reference position for the UVW coordinates. -// \param[in] to -// New phase reference position for the UVW coordinates. -// \param[in] nUVW -// The number of UVW coordinates to transform. -// \param[in] uvw -// A 2-D buffer of UVW coordinates of shape (\p UVW, 3). -void rotateUVW(const Position &from, const Position &to, size_t nUVW, - double *uvw); - -// Simulate visibilities for a patch of sources. The computed visibilities are -// added to \p vis. -// -// \param[in] reference -// Phase reference position. -// \param[in] patch -// Patch of sources to simulate visibilities for. -// \param[in] nStation -// The number of stations. -// \param[in] nBaseline -// The number of baselines. -// \param[in] nChannel -// The number of frequency channels. -// \param[in] baselines -// A cursor for a 1-D buffer of baselines of shape (\p nBaseline). -// \param[in] freq -// A cursor for a 1-D buffer of channel frequencies of shape (\p nChannel). -// \param[in] uvw -// A cursor for a 2-D buffer of station UVW coordinates of shape -// (\p nStation, 3). -// \param[in] buffer -// A cursor for a 3-D buffer of shape (\p nBaseline, \p nChannel, 4) into which -// the simulated visibilities will be written. -void simulate(const Position &reference, const Patch::ConstPtr &patch, - size_t nStation, size_t nBaseline, size_t nChannel, - const_cursor<Baseline> baselines, const_cursor<double> freq, - const_cursor<double> uvw, cursor<dcomplex> buffer); -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Simulator.h b/CEP/DP3/DPPP/include/DPPP/Simulator.h deleted file mode 100644 index 19c2bacc4b7..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Simulator.h +++ /dev/null @@ -1,112 +0,0 @@ -//# Simulator.h: Compute visibilities for different model components types -//# (implementation of ModelComponentVisitor). -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_SIMULATOR_H -#define DPPP_SIMULATOR_H - -// \file -// Compute visibilities for different model components types (implementation of -// ModelComponentVisitor). - -#include <DPPP/Baseline.h> -#include <DPPP/ModelComponent.h> -#include <DPPP/ModelComponentVisitor.h> -#include <DPPP/Position.h> - -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Arrays/Matrix.h> -#include <casacore/casa/Arrays/Cube.h> - -#include <Common/lofar_complex.h> -#include <Common/lofar_vector.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -class Simulator: public ModelComponentVisitor -{ -public: - Simulator(const Position &reference, size_t nStation, size_t nBaseline, - size_t nChannel, const casacore::Vector<Baseline>& baselines, - const casacore::Vector<double>& freq, const casacore::Matrix<double>& uvw, - casacore::Cube<dcomplex>& buffer, bool stokesIOnly=false); - - template <typename T> - class Matrix { - public: - Matrix(): - itsNRows(0) { - } ; - - Matrix(size_t nrows, size_t ncols) - { - resize(nrows, ncols); - } - - void resize(size_t nrows, size_t ncols) { - itsNRows = nrows; - itsData.resize(nrows*ncols); - } - - T& operator()(size_t row, size_t col) { - return itsData[col*itsNRows+row]; - } - - T* data() { - return &itsData[0]; - } - - private: - std::vector<T> itsData; - size_t itsNRows; - }; - - void simulate(const ModelComponent::ConstPtr &component); - -private: - virtual void visit(const PointSource &component); - virtual void visit(const GaussianSource &component); - -private: - Position itsReference; - size_t itsNStation, itsNBaseline, itsNChannel; - bool itsStokesIOnly; - const casacore::Vector<Baseline> itsBaselines; - const casacore::Vector<double> itsFreq; - const casacore::Matrix<double> itsUVW; - casacore::Cube<dcomplex> itsBuffer; - Matrix<dcomplex> itsShiftBuffer; - Matrix<dcomplex> itsSpectrumBuffer; -}; - -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/SourceDBUtil.h b/CEP/DP3/DPPP/include/DPPP/SourceDBUtil.h deleted file mode 100644 index 52fdd76ad48..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/SourceDBUtil.h +++ /dev/null @@ -1,71 +0,0 @@ -//# SourceDBUtil.h: Helper functions to extract patch and source information -//# from a SourceDB. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_SOURCEDBUTIL_H -#define DPPP_SOURCEDBUTIL_H - -// \file -// Helper functions to extract patch and source information from a SourceDB. - -#include <DPPP/Patch.h> -#include <Common/lofar_string.h> -#include <Common/LofarTypes.h> - -namespace LOFAR -{ -namespace BBS -{ -class SourceDB; -} - -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - vector<Patch::ConstPtr> makePatches(BBS::SourceDB &sourceDB, - const vector<string> &patchNames, - uint nModel); - - // Create a source list (with patch name) from a patchlist - // Needed for efficient multithreading - std::vector<std::pair<ModelComponent::ConstPtr,Patch::ConstPtr> > - makeSourceList (const std::vector<Patch::ConstPtr>& patchList); - - // From a given PatchList, create a new one with one patch per component - vector<Patch::ConstPtr> makeOnePatchPerComponent( - const vector<Patch::ConstPtr>&); - - vector<string> makePatchList(BBS::SourceDB &sourceDB, - vector<string> patterns); - - bool checkPolarized(BBS::SourceDB &sourceDB, - const vector<string> &patchNames, - uint nModel); - -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Split.h b/CEP/DP3/DPPP/include/DPPP/Split.h deleted file mode 100644 index f35b956e1ff..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Split.h +++ /dev/null @@ -1,81 +0,0 @@ -//# Split.h: DPPP step class to Split visibilities from a source model -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_Split_H -#define DPPP_Split_H - -// @file -// @brief DPPP step class to Split visibilities from a source model - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> - -#include <utility> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is an empty DPStep subclass to use as implementation template - - class Split: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - Split (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~Split(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - //# Data members. - string itsName; - - std::vector<std::string> itsReplaceParms; // The names of the parameters that differ along the substeps - std::vector<DPStep::ShPtr> itsSubsteps; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/StManParsetKeys.h b/CEP/DP3/DPPP/include/DPPP/StManParsetKeys.h deleted file mode 100644 index 158b0e022ca..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/StManParsetKeys.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef DPPP_STMANPARSETKEYS_H -#define DPPP_STMANPARSETKEYS_H - -#include <Common/ParameterSet.h> - -#include <string> - -#include <casacore/casa/Containers/Record.h> - -namespace LOFAR { - namespace DPPP { - struct StManParsetKeys - { - casacore::String stManName; - uint dyscoDataBitRate; //# Bits per data float, or 0 if data column is not compressed - uint dyscoWeightBitRate; //# Bits per weight float, or 0 if weight column is not compressed - std::string dyscoDistribution; //# Distribution assumed for compression; e.g. "Uniform" or "TruncatedGaussian" - double dyscoDistTruncation; //# For truncated distributions, the truncation point (e.g. 3 for 3 sigma in TruncGaus). - std::string dyscoNormalization; //# Kind of normalization; "AF", "RF" or "Row". - - void Set(const ParameterSet& parset, const std::string& prefix) - { - stManName = toLower(parset.getString(prefix+"storagemanager", - parset.getString(prefix+"storagemanager.name", - string()))); - if(stManName == "dysco") { - dyscoDataBitRate = parset.getInt( - prefix+"storagemanager.databitrate", 10); - dyscoWeightBitRate = parset.getInt( - prefix+"storagemanager.weightbitrate", 12); - dyscoDistribution = parset.getString( - prefix+"storagemanager.distribution", - "TruncatedGaussian"); - dyscoDistTruncation = parset.getDouble( - prefix+"storagemanager.disttruncation", 2.5); - dyscoNormalization = parset.getString( - prefix+"storagemanager.normalization", "AF"); - } - } - - casacore::Record GetDyscoSpec() const - { - casacore::Record dyscoSpec; - dyscoSpec.define ("distribution", dyscoDistribution); - dyscoSpec.define ("normalization", dyscoNormalization); - dyscoSpec.define ("distributionTruncation", dyscoDistTruncation); - // DPPP uses bitrate of 0 to disable compression of the data/weight column. - // However, Dysco does not allow the data or weight bitrates to be set to 0, - // so we set the values to something different. The values are not actually used. - uint dataBitRate = dyscoDataBitRate; - if(dataBitRate == 0) - dataBitRate = 16; - dyscoSpec.define ("dataBitCount", dataBitRate); - uint weightBitRate = dyscoWeightBitRate; - if(weightBitRate == 0) - weightBitRate = 16; - dyscoSpec.define ("weightBitCount", weightBitRate); - return dyscoSpec; - } - }; - } -} -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/StationAdder.h b/CEP/DP3/DPPP/include/DPPP/StationAdder.h deleted file mode 100644 index dd0dbf499b2..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/StationAdder.h +++ /dev/null @@ -1,124 +0,0 @@ -//# StationAdder.h: DPPP step class to add stations as a superstation -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_STATIONADDER_H -#define DPPP_STATIONADDER_H - -// @file -// @brief DPPP step class to add stations as a superstation - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/UVWCalculator.h> -#include <Common/ParameterRecord.h> -#include <casacore/measures/Measures/MPosition.h> - -namespace LOFAR { - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class summing stations to a superstation. - // - // It is possible to define one or more groups of stations to be summed. - // Each group has a name which is the name of the new station. - // The complex values of baselines are added for which one station occurs - // in only one group. A baseline is not added if no or both stations are - // member of a summing group. - // <br>The summation is done in a weighted way, where the weight of a - // new station is the sum of the original weights. Optionally weights 1 - // can be used instead of the original weights. - // - // Only unflagged data points are used. If too few data points are - // unflagged, the output data point is flagged. - // - // Questions: - // 1. check if phases do not differ too much? Flag if too much? - // 2. must all stations exist or possible that some don't? - - class StationAdder: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - StationAdder (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~StationAdder(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Add new meta info to the MS. - virtual void addToMS (const string& msName); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Return the indices of the stations in antennaNames matching - // the pattern list. - // The patterns are processed from left to right. A pattern can start - // with ! or ^ meaning that the the matches are discarded. In this - // way first a broad pattern can be given, which can be narrowed down. - // A warning is given if a pattern does not match any station name. - static vector<int> getMatchingStations - (const casacore::Vector<casacore::String>& antennaNames, - const vector<string>& patterns); - - private: - // Update the beam info subtables. - void updateBeamInfo (const string& msName, uint origNant, - casacore::Table& antTab); - - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuf; - DPBuffer itsBufTmp; - ParameterRecord itsStatRec; // stations definitions - vector<casacore::Vector<int> > itsParts; // the stations in each superstation - vector<vector<int> > itsBufRows; // old baseline rows in each new baseline - uint itsMinNPoint ; // flag data if too few unflagged data - bool itsMakeAutoCorr; // also form new auto-correlations? - bool itsSumAutoCorr; // sum auto- or cross-correlations? - bool itsDoAverage; // average or sum? - bool itsUseWeight; // false = use weight 1 per station - UVWCalculator itsUVWCalc; - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/StefCal.h b/CEP/DP3/DPPP/include/DPPP/StefCal.h deleted file mode 100644 index a509d3fd264..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/StefCal.h +++ /dev/null @@ -1,143 +0,0 @@ -//# StefCal.h: Perform StefCal algorithm for gain calibration -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: StefCal.h 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_STEFCAL_H -#define DPPP_STEFCAL_H - -// @file -// @brief DPPP step class to apply a calibration correction to the data -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/Arrays/ArrayMath.h> - -namespace LOFAR { - - namespace DPPP { - // @ingroup NDPPP - - class StefCal - { - public: - enum Status {CONVERGED=1, NOTCONVERGED=2, STALLED=3, FAILED=4}; - - enum StefCalMode {DEFAULT, PHASEONLY, AMPLITUDEONLY, FULLJONES}; - - // mode can be "diagonal", "fulljones", "phaseonly", "scalarphase" - StefCal(uint solInt, uint nChan, StefCalMode mode, bool scalar, - double tolerance, uint maxAntennas, bool detectStalling, - uint debugLevel); - - // Sets visibility matrices to zero - void resetVis(); - - // Initializes a new run of stefcal, resizes all internal vectors - // If initSolutions is false, you are responsible for setting them - // before running the solver. You could set the solutions to those - // of the previous time step. - void init(bool initSolutions); - - // Perform sone iteration of stefcal. Returns CONVERGED, NOTCONVERGED - // or STALLED - Status doStep(uint iter); - - // Returns the solution. The return matrix has a length of maxAntennas, - // which is zero for antennas for which no solution was computed. - // The mapping is stored in the antenna map - casacore::Matrix<casacore::DComplex> getSolution(bool setNaNs); - - double getWeight() { - return _totalWeight; - } - - // Increments the weight (only relevant for TEC-fitting) - void incrementWeight(float weight); - - // Returns a reference to the visibility matrix - casacore::Array<casacore::DComplex>& getVis() { - return _vis; - } - - // Returns a reference to the model visibility matrix - casacore::Array<casacore::DComplex>& getMVis() { - return _mvis; - } - - casacore::Vector<bool>& getStationFlagged() { - return _stationFlagged; - } - - // Number of correlations in the solution (1,2 or 4) - uint numCorrelations() { - return _savedNCr; - } - - // Number of correlations (1 or 4) - uint nCr() { - return _nCr; - } - - // Clear antFlagged - void clearStationFlagged(); - - private: - // Perform relaxation - Status relax(uint iter); - - void doStep_polarized(); - void doStep_unpolarized(); - - double getAverageUnflaggedSolution(); - - uint _savedNCr; - casacore::Vector<bool> _stationFlagged ; // Contains true for totally flagged stations - casacore::Array<casacore::DComplex> _vis; // Visibility matrix - casacore::Array<casacore::DComplex> _mvis; // Model visibility matrix - casacore::Matrix<casacore::DComplex> _g; // Solution, indexed by station, correlation - casacore::Matrix<casacore::DComplex> _gx; // Previous solution - casacore::Matrix<casacore::DComplex> _gxx; // Solution before previous solution - casacore::Matrix<casacore::DComplex> _gold; // Previous solution - casacore::Matrix<casacore::DComplex> _h; // Hermitian transpose of previous solution - casacore::Matrix<casacore::DComplex> _z; // Internal stefcal vector - - uint _nSt; // number of stations in the current solution - uint _nUn; // number of unknowns - uint _nCr; // number of correlations (1 or 4) - uint _nSp; // number that is two for scalarphase, one else - uint _badIters; // number of bad iterations, for stalling detection - uint _veryBadIters; // number of iterations where solution got worse - uint _solInt; // solution interval - uint _nChan; // number of channels - StefCalMode _mode; // diagonal, scalarphase, fulljones or phaseonly - bool _scalar; // false if each polarization has a separate solution - double _tolerance; - double _totalWeight; - bool _detectStalling; - uint _debugLevel; - - double _dg, _dgx; // previous convergence - std::vector<double> _dgs; // convergence history - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Stokes.h b/CEP/DP3/DPPP/include/DPPP/Stokes.h deleted file mode 100644 index e720f2cf424..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Stokes.h +++ /dev/null @@ -1,50 +0,0 @@ -//# Stokes.h: Complex Stokes vector. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_STOKES_H -#define DPPP_STOKES_H - -// \file -// Complex Stokes vector. - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ - -class Stokes -{ -public: - Stokes(); - - double I, Q, U, V; -}; - -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/SubtractMixed.h b/CEP/DP3/DPPP/include/DPPP/SubtractMixed.h deleted file mode 100644 index 3f2af79e88f..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/SubtractMixed.h +++ /dev/null @@ -1,66 +0,0 @@ -//# SubtractMixed.h: Subtract visibilities from buffer after weighting by mixing -//# coefficients. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_SUBTRACTMIXED_H -#define DPPP_SUBTRACTMIXED_H - -// \file -// Subtract visibilities from a buffer after weighting by mixing coefficients. - -#include <DPPP/Baseline.h> -#include <DPPP/Cursor.h> -#include <Common/lofar_complex.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ -// Subtract visibilities from a buffer after weighting by mixing coefficients. -// -// \param[in] nBaseline -// Number of baselines. -// \param[in] nChannel -// Number of frequency channels. -// \param[in] baselines -// A cursor for a 1-D buffer of baselines of shape (\p nBaseline). -// \param[in] data -// A cursor for a 3-D buffer of observed visibilities of shape -// (\p nBaseline, \p nChannel, 4). -// \param[in] model -// A cursor for a 3-D buffer of simulated visibilities of shape -// (\p nBaseline, \p nChannel, 4). -// \param[in] weight -// A cursor for a 3-D buffer of mixing weight of shape -// (\p nBaseline, \p nChannel, 4). -void subtract(size_t nBaseline, size_t nChannel, - const_cursor<Baseline> baselines, cursor<fcomplex> data, - const_cursor<dcomplex> model, const_cursor<dcomplex> weight); -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/SubtractNew.h b/CEP/DP3/DPPP/include/DPPP/SubtractNew.h deleted file mode 100644 index 000f22d011a..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/SubtractNew.h +++ /dev/null @@ -1,68 +0,0 @@ -//# SubtractNew.h: Subtract visibilities from buffer after weighting by mixing -//# coefficients. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#ifndef DPPP_SUBTRACTNEW_H -#define DPPP_SUBTRACTNEW_H - -// \file -// Subtract visibilities from a buffer after weighting by mixing coefficients. - -#include <DPPP/Baseline.h> -#include <DPPP/Cursor.h> -#include <Common/lofar_complex.h> -#include <Common/lofar_vector.h> - -namespace LOFAR -{ -namespace DPPP -{ - -// \addtogroup NDPPP -// @{ -// Subtract visibilities from a buffer after weighting by mixing coefficients. -// -// \param[in] nBaseline -// Number of baselines. -// \param[in] nChannel -// Number of frequency channels. -// \param[in] baselines -// A cursor for a 1-D buffer of baselines of shape (\p nBaseline). -// \param[in] data -// A cursor for a 3-D buffer of observed visibilities of shape -// (\p nBaseline, \p nChannel, 4). -// \param[in] model -// A cursor for a 3-D buffer of simulated visibilities of shape -// (\p nBaseline, \p nChannel, 4). -// \param[in] weight -// A cursor for a 3-D buffer of mixing weight of shape -// (\p nBaseline, \p nChannel, 4). -void subtract(size_t nBaseline, size_t nChannel, - const_cursor<Baseline> baselines, cursor<fcomplex> data, - const_cursor<dcomplex> model, const_cursor<dcomplex> weight, - vector<float>& sumAmpl); -// @} - -} //# namespace DPPP -} //# namespace LOFAR - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/UVWCalculator.h b/CEP/DP3/DPPP/include/DPPP/UVWCalculator.h deleted file mode 120000 index a38d43b2609..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/UVWCalculator.h +++ /dev/null @@ -1 +0,0 @@ -../../src/UVWCalculator/UVWCalculator.h \ No newline at end of file diff --git a/CEP/DP3/DPPP/include/DPPP/UVWFlagger.h b/CEP/DP3/DPPP/include/DPPP/UVWFlagger.h deleted file mode 100644 index 3939d5ebd65..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/UVWFlagger.h +++ /dev/null @@ -1,136 +0,0 @@ -//# UVWFlagger.h: DPPP step class to flag data on UVW coordinates -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#ifndef DPPP_UVWFLAGGER_H -#define DPPP_UVWFLAGGER_H - -// @file -// @brief DPPP step class to flag data on UVW coordinates - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/UVWCalculator.h> -#include <Common/lofar_vector.h> - -namespace LOFAR { - class ParameterSet; - class ParameterValue; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class flagging data points based on data - // selections given in the parset file. - // The following selections can be given: - // <ul> - // <li> minimum and/or maximum UV distance - // <li> minimum or maximum value for U, V, and/or W - // <li> both can be used with a different phase center which can be - // be given as a position or as a moving source like SUN or JUPITER. - // </ul> - // The UVW values can be given in meters or in wavelengths. - - class UVWFlagger: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - // The antenna names are used to find antenna numbers. - // The channel frequencies as they are in the input step must be given - // starting at the start-channel. - UVWFlagger (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~UVWFlagger(); - - // Process the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - // It is used to adjust the parms if needed. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the flag counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - // Test if uvw matches a range in meters. - bool testUVWm (double uvw, const vector<double>& ranges); - - // Set flags for channels where uvw (in m) matches a range in wavelengths. - void testUVWl (double uvw, const vector<double>& ranges, - bool* flagPtr, uint nrcorr); - - // Return a vector with UVW ranges. - // It looks for the named parameter suffixed with 'range', 'min', and - // 'max'. The returned vector contains 2 subsequent values for each range - // (min and max are also turned into a range). - // Optionally the values are squared to avoid having to take a sqrt - // of the data's UVW coordinates. - vector<double> fillUVW (const ParameterSet& parset, - const string& prefix, - const string& name, - bool square); - - // Handle the specification of a phase center. - // It setups the UVWCalculator. - void handleCenter(); - - //# Data members. - DPInput* itsInput; - string itsName; - DPBuffer itsBuffer; - uint itsNTimes; - - // If nothing is filled in, this step just passes through data - bool itsIsDegenerate; - - casacore::Vector<double> itsRecWavel; //# reciprokes of wavelengths - vector<double> itsRangeUVm; //# UV ranges (in m) to be flagged - vector<double> itsRangeUm; //# U ranges (in m) to be flagged - vector<double> itsRangeVm; //# V ranges (in m) to be flagged - vector<double> itsRangeWm; //# W ranges (in m) to be flagged - vector<double> itsRangeUVl; //# UV ranges (in wavel) to be flagged - vector<double> itsRangeUl; //# U ranges (in wavel) to be flagged - vector<double> itsRangeVl; //# V ranges (in wavel) to be flagged - vector<double> itsRangeWl; //# W ranges (in wavel) to be flagged - UVWCalculator itsUVWCalc; - vector<string> itsCenter; - NSTimer itsTimer; - NSTimer itsUVWTimer; - FlagCounter itsFlagCounter; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/include/DPPP/Upsample.h b/CEP/DP3/DPPP/include/DPPP/Upsample.h deleted file mode 100644 index d2baa9014ed..00000000000 --- a/CEP/DP3/DPPP/include/DPPP/Upsample.h +++ /dev/null @@ -1,83 +0,0 @@ -//# Upsample.h: DPPP step class to upsample visibilities -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_DummyStep_H -#define DPPP_DummyStep_H - -// @file -// @brief DPPP step class to Upsample visibilities - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> - -#include <utility> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is an empty DPStep subclass to use as implementation template - - class Upsample: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - Upsample (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~Upsample(); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - private: - //# Data members. - string itsName; - double itsOldTimeInterval; - uint itsTimeStep; - - std::vector<DPBuffer> itsPrevBuffers; - std::vector<DPBuffer> itsBuffers; - uint itsFirstToFlush; - - NSTimer itsTimer; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/share/CMakeLists.txt b/CEP/DP3/DPPP/share/CMakeLists.txt deleted file mode 100644 index 75e8809b010..00000000000 --- a/CEP/DP3/DPPP/share/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -# $Id$ - -# Data files -install(FILES - LBAdefault - HBAdefault - DESTINATION share/rfistrategies) diff --git a/CEP/DP3/DPPP/share/HBAdefault b/CEP/DP3/DPPP/share/HBAdefault deleted file mode 100644 index b6844bb0013..00000000000 --- a/CEP/DP3/DPPP/share/HBAdefault +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- This is a strategy configuration file for the AOFlagger RFI -detector by André Offringa (offringa@gmail.com). -Created by AOFlagger 2.7.2 (2015-09-27) ---> -<rfi-strategy format-version="3.7" reader-version-required="3.4"> - <action type="Strategy"> - <children> - <action type="SetFlaggingAction"> - <new-flagging>0</new-flagging> - </action> - <action type="ForEachPolarisationBlock"> - <on-xx>0</on-xx> - <on-xy>1</on-xy> - <on-yx>1</on-yx> - <on-yy>0</on-yy> - <on-stokes-i>0</on-stokes-i> - <on-stokes-q>0</on-stokes-q> - <on-stokes-u>0</on-stokes-u> - <on-stokes-v>0</on-stokes-v> - <children> - <action type="ForEachComplexComponentAction"> - <on-amplitude>1</on-amplitude> - <on-phase>0</on-phase> - <on-real>0</on-real> - <on-imaginary>0</on-imaginary> - <restore-from-amplitude>0</restore-from-amplitude> - <children> - <action type="IterationBlock"> - <iteration-count>2</iteration-count> - <sensitivity-start>4</sensitivity-start> - <children> - <action type="SumThresholdAction"> - <base-sensitivity>1</base-sensitivity> - <time-direction-flagging>1</time-direction-flagging> - <frequency-direction-flagging>1</frequency-direction-flagging> - </action> - <action type="CombineFlagResults"> - <children> - <action type="FrequencySelectionAction"> - <threshold>3</threshold> - </action> - <action type="TimeSelectionAction"> - <threshold>3.5</threshold> - </action> - </children> - </action> - <action type="SetImageAction"> - <new-image>1</new-image> - </action> - <action type="ChangeResolutionAction"> - <time-decrease-factor>3</time-decrease-factor> - <frequency-decrease-factor>3</frequency-decrease-factor> - <restore-revised>1</restore-revised> - <restore-masks>0</restore-masks> - <children> - <action type="HighPassFilterAction"> - <horizontal-kernel-sigma-sq>2.5</horizontal-kernel-sigma-sq> - <vertical-kernel-sigma-sq>5</vertical-kernel-sigma-sq> - <window-width>21</window-width> - <window-height>31</window-height> - <mode>1</mode> - </action> - </children> - </action> - </children> - </action> - <action type="SumThresholdAction"> - <base-sensitivity>1</base-sensitivity> - <time-direction-flagging>1</time-direction-flagging> - <frequency-direction-flagging>1</frequency-direction-flagging> - </action> - </children> - </action> - </children> - </action> - <action type="SetFlaggingAction"> - <new-flagging>4</new-flagging> - </action> - <action type="StatisticalFlagAction"> - <enlarge-frequency-size>0</enlarge-frequency-size> - <enlarge-time-size>0</enlarge-time-size> - <max-contaminated-frequencies-ratio>0.5</max-contaminated-frequencies-ratio> - <max-contaminated-times-ratio>0.5</max-contaminated-times-ratio> - <minimum-good-frequency-ratio>0.2</minimum-good-frequency-ratio> - <minimum-good-time-ratio>0.2</minimum-good-time-ratio> - </action> - </children> - </action> -</rfi-strategy> \ No newline at end of file diff --git a/CEP/DP3/DPPP/share/LBAdefault b/CEP/DP3/DPPP/share/LBAdefault deleted file mode 100644 index a0f1f3c1889..00000000000 --- a/CEP/DP3/DPPP/share/LBAdefault +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- This is a strategy configuration file for the AOFlagger RFI -detector by André Offringa (offringa@gmail.com). -Created by AOFlagger 2.7.2 (2015-09-27) ---> -<rfi-strategy format-version="3.7" reader-version-required="3.4"> - <action type="Strategy"> - <children> - <action type="SetFlaggingAction"> - <new-flagging>0</new-flagging> - </action> - <action type="ForEachPolarisationBlock"> - <on-xx>1</on-xx> - <on-xy>1</on-xy> - <on-yx>1</on-yx> - <on-yy>1</on-yy> - <on-stokes-i>0</on-stokes-i> - <on-stokes-q>0</on-stokes-q> - <on-stokes-u>0</on-stokes-u> - <on-stokes-v>0</on-stokes-v> - <children> - <action type="ForEachComplexComponentAction"> - <on-amplitude>1</on-amplitude> - <on-phase>0</on-phase> - <on-real>0</on-real> - <on-imaginary>0</on-imaginary> - <restore-from-amplitude>0</restore-from-amplitude> - <children> - <action type="IterationBlock"> - <iteration-count>2</iteration-count> - <sensitivity-start>4</sensitivity-start> - <children> - <action type="SumThresholdAction"> - <base-sensitivity>1</base-sensitivity> - <time-direction-flagging>1</time-direction-flagging> - <frequency-direction-flagging>1</frequency-direction-flagging> - </action> - <action type="CombineFlagResults"> - <children> - <action type="FrequencySelectionAction"> - <threshold>3</threshold> - </action> - <action type="TimeSelectionAction"> - <threshold>3.5</threshold> - </action> - </children> - </action> - <action type="SetImageAction"> - <new-image>1</new-image> - </action> - <action type="ChangeResolutionAction"> - <time-decrease-factor>3</time-decrease-factor> - <frequency-decrease-factor>3</frequency-decrease-factor> - <restore-revised>1</restore-revised> - <restore-masks>0</restore-masks> - <children> - <action type="HighPassFilterAction"> - <horizontal-kernel-sigma-sq>2.5</horizontal-kernel-sigma-sq> - <vertical-kernel-sigma-sq>5</vertical-kernel-sigma-sq> - <window-width>21</window-width> - <window-height>31</window-height> - <mode>1</mode> - </action> - </children> - </action> - </children> - </action> - <action type="SumThresholdAction"> - <base-sensitivity>1</base-sensitivity> - <time-direction-flagging>1</time-direction-flagging> - <frequency-direction-flagging>1</frequency-direction-flagging> - </action> - </children> - </action> - </children> - </action> - <action type="SetFlaggingAction"> - <new-flagging>4</new-flagging> - </action> - <action type="StatisticalFlagAction"> - <enlarge-frequency-size>0</enlarge-frequency-size> - <enlarge-time-size>0</enlarge-time-size> - <max-contaminated-frequencies-ratio>0.5</max-contaminated-frequencies-ratio> - <max-contaminated-times-ratio>0.5</max-contaminated-times-ratio> - <minimum-good-frequency-ratio>0.2</minimum-good-frequency-ratio> - <minimum-good-time-ratio>0.2</minimum-good-time-ratio> - </action> - <action type="TimeSelectionAction"> - <threshold>3.5</threshold> - </action> - </children> - </action> -</rfi-strategy> \ No newline at end of file diff --git a/CEP/DP3/DPPP/src/Apply.cc b/CEP/DP3/DPPP/src/Apply.cc deleted file mode 100644 index cd5dadbfa8a..00000000000 --- a/CEP/DP3/DPPP/src/Apply.cc +++ /dev/null @@ -1,97 +0,0 @@ -//# Apply.cc: Apply station Jones matrices to a set of visibilities. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/Apply.h> - -namespace LOFAR -{ -namespace DPPP -{ - -void apply(size_t nBaseline, size_t nChannel, const_cursor<Baseline> baselines, - const_cursor<double> coeff, cursor<dcomplex> data) -{ - for(size_t bl = 0; bl < nBaseline; ++bl) - { - const size_t p = baselines->first; - const size_t q = baselines->second; - - if(p != q) - { - // Jones matrix for station P. - coeff.forward(1, p); - const dcomplex Jp_00(coeff[0], coeff[1]); - const dcomplex Jp_01(coeff[2], coeff[3]); - const dcomplex Jp_10(coeff[4], coeff[5]); - const dcomplex Jp_11(coeff[6], coeff[7]); - coeff.backward(1, p); - - // Jones matrix for station Q, conjugated. - coeff.forward(1, q); - const dcomplex Jq_00(coeff[0], -coeff[1]); - const dcomplex Jq_01(coeff[2], -coeff[3]); - const dcomplex Jq_10(coeff[4], -coeff[5]); - const dcomplex Jq_11(coeff[6], -coeff[7]); - coeff.backward(1, q); - - // Compute (Jp x conj(Jq)) * vec(data), where 'x' denotes the - // Kronecker product. - for(size_t ch = 0; ch < nChannel; ++ch) - { - // Fetch visibilities. - const dcomplex xx = data[0]; - const dcomplex xy = data[1]; - const dcomplex yx = data[2]; - const dcomplex yy = data[3]; - - // Precompute terms involving conj(Jq) and data. Each term - // appears twice in the computation of (Jp x conj(Jq)) - // * vec(data). - const dcomplex Jq_00xx_01xy = Jq_00 * xx + Jq_01 * xy; - const dcomplex Jq_00yx_01yy = Jq_00 * yx + Jq_01 * yy; - const dcomplex Jq_10xx_11xy = Jq_10 * xx + Jq_11 * xy; - const dcomplex Jq_10yx_11yy = Jq_10 * yx + Jq_11 * yy; - - // Compute (Jp x conj(Jq)) * vec(data) from the precomputed - // terms. - data[0] = Jp_00 * Jq_00xx_01xy + Jp_01 * Jq_00yx_01yy; - data[1] = Jp_00 * Jq_10xx_11xy + Jp_01 * Jq_10yx_11yy; - data[2] = Jp_10 * Jq_00xx_01xy + Jp_11 * Jq_00yx_01yy; - data[3] = Jp_10 * Jq_10xx_11xy + Jp_11 * Jq_10yx_11yy; - - // Move to the next channel. - data.forward(1); - } // Channels. - - // Reset cursor to the beginning of the current baseline. - data.backward(1, nChannel); - } - - // Move to the next baseline. - data.forward(2); - ++baselines; - } // Baselines. -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/ApplyBeam.cc b/CEP/DP3/DPPP/src/ApplyBeam.cc deleted file mode 100644 index 42d07008d99..00000000000 --- a/CEP/DP3/DPPP/src/ApplyBeam.cc +++ /dev/null @@ -1,208 +0,0 @@ -//# ApplyBeam.cc: DPPP step class to ApplyBeam visibilities -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/ApplyBeam.h> - -#include <iostream> -//#include <iomanip> -#include <Common/ParameterSet.h> -#include <Common/Timer.h> -#include <Common/StringUtil.h> -#include <Common/OpenMP.h> -#include <DPPP/DPInfo.h> -#include <DPPP/FlagCounter.h> -#include <DPPP/Position.h> - -#include <casacore/casa/Arrays/Array.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/measures/Measures/MeasConvert.h> - -#include <stddef.h> -#include <string> -#include <sstream> -#include <utility> -#include <vector> - -using namespace casacore; -using namespace LOFAR::BBS; - -namespace LOFAR { - namespace DPPP { - - ApplyBeam::ApplyBeam(DPInput* input, const ParameterSet& parset, - const string& prefix, bool substep) - : - itsInput(input), - itsName(prefix), - itsUpdateWeights(parset.getBool(prefix + "updateweights", false)), - itsUseChannelFreq(parset.getBool(prefix + "usechannelfreq", true)), - itsDebugLevel(parset.getInt(prefix + "debuglevel", 0)) - { - // only read 'invert' parset key if it is a separate step - // if applybeam is called from gaincal/predict, the invert key should always be false - if (substep) { - itsInvert=false; - } else { - itsInvert=parset.getBool(prefix + "invert", true); - } - string mode=toLower(parset.getString(prefix + "beammode","default")); - ASSERT (mode=="default" || mode=="array_factor" || mode=="element"); - if (mode=="default") { - itsMode=DEFAULT; - } else if (mode=="array_factor") { - itsMode=ARRAY_FACTOR; - } else if (mode=="element") { - itsMode=ELEMENT; - } else { - THROW(Exception, "Beammode should be DEFAULT, ARRAY_FACTOR or ELEMENT"); - } - } - - ApplyBeam::ApplyBeam() - { - } - - ApplyBeam::~ApplyBeam() - { - } - - void ApplyBeam::updateInfo(const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - if (itsUpdateWeights) { - info().setWriteWeights(); - } - - MDirection dirJ2000( - MDirection::Convert(infoIn.phaseCenter(), MDirection::J2000)()); - Quantum<Vector<Double> > angles = dirJ2000.getAngle(); - itsPhaseRef = Position(angles.getBaseValue()[0], - angles.getBaseValue()[1]); - - const size_t nSt = info().nantenna(); - const size_t nCh = info().nchan(); - - itsBeamValues.resize(OpenMP::maxThreads()); - - // Create the Measure ITRF conversion info given the array position. - // The time and direction are filled in later. - itsMeasConverters.resize(OpenMP::maxThreads()); - itsMeasFrames.resize(OpenMP::maxThreads()); - itsAntBeamInfo.resize(OpenMP::maxThreads()); - - for (uint thread = 0; thread < OpenMP::maxThreads(); ++thread) { - itsBeamValues[thread].resize(nSt * nCh); - itsMeasFrames[thread].set(info().arrayPosCopy()); - itsMeasFrames[thread].set( - MEpoch(MVEpoch(info().startTime() / 86400), MEpoch::UTC)); - itsMeasConverters[thread].set( - MDirection::J2000, - MDirection::Ref(MDirection::ITRF, itsMeasFrames[thread])); - itsInput->fillBeamInfo(itsAntBeamInfo[thread], info().antennaNames()); - } - } - - void ApplyBeam::show(std::ostream& os) const - { - os << "ApplyBeam " << itsName << endl; - os << " mode: "; - if (itsMode==DEFAULT) - os<<"default"; - else if (itsMode==ARRAY_FACTOR) - os<<"array_factor"; - else os<<"element"; - os << endl; - os << " use channelfreq: " << boolalpha << itsUseChannelFreq << endl; - os << " invert: " << boolalpha << itsInvert << endl; - os << " update weights: " << boolalpha << itsUpdateWeights << endl; - } - - void ApplyBeam::showTimings(std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1(os, itsTimer.getElapsed(), duration); - os << " ApplyBeam " << itsName << endl; - } - - bool ApplyBeam::process(const DPBuffer& bufin) - { - itsTimer.start(); - itsBuffer.copy (bufin); - Complex* data=itsBuffer.getData().data(); - - if (itsUpdateWeights) { - itsInput->fetchWeights (bufin, itsBuffer, itsTimer); - } - float* weight = itsBuffer.getWeights().data(); - - double time = itsBuffer.getTime(); - - //Set up directions for beam evaluation - StationResponse::vector3r_t refdir, tiledir; - - for (uint thread = 0; thread < OpenMP::maxThreads(); ++thread) { - itsMeasFrames[thread].resetEpoch( - MEpoch(MVEpoch(time / 86400), MEpoch::UTC)); - //Do a conversion on all threads, because converters are not - //thread safe and apparently need to be used at least once - refdir = dir2Itrf(info().delayCenter(), itsMeasConverters[thread]); - tiledir = dir2Itrf(info().tileBeamDir(), itsMeasConverters[thread]); - } - - uint thread = OpenMP::threadNum(); - - StationResponse::vector3r_t srcdir = refdir; - applyBeam(info(), time, data, weight, srcdir, refdir, tiledir, - itsAntBeamInfo[thread], itsBeamValues[thread], - itsUseChannelFreq, itsInvert, itsMode, itsUpdateWeights); - - itsTimer.stop(); - getNextStep()->process(itsBuffer); - return false; - } - - StationResponse::vector3r_t ApplyBeam::dir2Itrf( - const MDirection& dir, MDirection::Convert& measConverter) - { - const MDirection& itrfDir = measConverter(dir); - const Vector<Double>& itrf = itrfDir.getValue().getValue(); - StationResponse::vector3r_t vec; - vec[0] = itrf[0]; - vec[1] = itrf[1]; - vec[2] = itrf[2]; - return vec; - } - - void ApplyBeam::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/ApplyCal.cc b/CEP/DP3/DPPP/src/ApplyCal.cc deleted file mode 100644 index 2a41912f49a..00000000000 --- a/CEP/DP3/DPPP/src/ApplyCal.cc +++ /dev/null @@ -1,299 +0,0 @@ -//# GainCal.cc: DPPP step class to ApplyCal visibilities -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/ApplyCal.h> - -#include <iostream> -#include <Common/ParameterSet.h> -#include <Common/ParameterValue.h> -#include <Common/Timer.h> - -#include <stddef.h> -#include <string> -#include <sstream> -#include <utility> -#include <vector> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - ApplyCal::ApplyCal (DPInput* input, - const ParameterSet& parset, - const string& prefix, - bool substep, - string predictDirection - ) - : itsIsSubstep(substep) - { - vector<string> subStepNames; - ParameterValue namesPar (parset.getString(prefix + "steps", "")); - - if (namesPar.isVector()) { - subStepNames = namesPar.getStringVector(); - } else { - subStepNames.push_back(namesPar.getString()); - } - - vector<string>::const_iterator subStepNameIter; - for (subStepNameIter = subStepNames.begin(); - subStepNameIter != subStepNames.end(); - ++subStepNameIter) { - string subStepName = (*subStepNameIter); - string subStepPrefix; - if (subStepName.empty()) { - // No substeps given, use parameters of this step - subStepPrefix = prefix; - } else { - // Substeps given, use named parameters like applycal.applySol.parmdb - subStepPrefix = prefix + subStepName + "."; - } - itsApplyCals.push_back(OneApplyCal::ShPtr(new OneApplyCal( - input, parset, subStepPrefix, prefix, substep, - predictDirection))); - } - - uint numSteps = itsApplyCals.size(); - for (uint step=0; step<numSteps-1; ++step) { - itsApplyCals[step]->setNextStep(itsApplyCals[step+1]); - } - } - - ApplyCal::ApplyCal() - {} - - ApplyCal::~ApplyCal() - {} - - void ApplyCal::setNextStep (DPStep::ShPtr nextStep) - { - DPStep::setNextStep(itsApplyCals[0]); - itsApplyCals[itsApplyCals.size()-1]->setNextStep(nextStep); - } - - void ApplyCal::show(std::ostream& os) const - { - // If not a substep, show will be called by DPRun, - // through the nextStep() mechanism - if (itsIsSubstep) { - vector<OneApplyCal::ShPtr>::const_iterator applycalIter; - - for (applycalIter = itsApplyCals.begin(); - applycalIter != itsApplyCals.end(); - applycalIter++) { - (*applycalIter)->show(os); - } - } - } - - void ApplyCal::showTimings (std::ostream& os, double duration) const - { - if (itsIsSubstep) { - vector<OneApplyCal::ShPtr>::const_iterator iter; - for (iter = itsApplyCals.begin(); - iter != itsApplyCals.end(); - iter++) { - (*iter)->showTimings(os, duration); - } - } - } - - bool ApplyCal::process (const DPBuffer& bufin) - { - getNextStep()->process(bufin); - return true; - } - - - void ApplyCal::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - - void ApplyCal::applyDiag (const DComplex* gainA, const DComplex* gainB, - Complex* vis, float* weight, bool* flag, - uint bl, uint chan, bool updateWeights, - FlagCounter& flagCounter) { - // If parameter is NaN or inf, do not apply anything and flag the data - if (! (isFinite(gainA[0].real()) && isFinite(gainA[0].imag()) && - isFinite(gainB[0].real()) && isFinite(gainB[0].imag()) && - isFinite(gainA[1].real()) && isFinite(gainA[1].imag()) && - isFinite(gainB[1].real()) && isFinite(gainB[1].imag())) ) { - // Only update flagcounter for first correlation - if (!flag[0]) { - flagCounter.incrChannel(chan); - flagCounter.incrBaseline(bl); - } - for (uint corr=0; corr<4; ++corr) { - flag[corr]=true; - } - return; - } - - vis[0] *= gainA[0] * conj(gainB[0]); - vis[1] *= gainA[0] * conj(gainB[1]); - vis[2] *= gainA[1] * conj(gainB[0]); - vis[3] *= gainA[1] * conj(gainB[1]); - - if (updateWeights) { - weight[0] /= norm(gainA[0]) * norm(gainB[0]); - weight[1] /= norm(gainA[0]) * norm(gainB[1]); - weight[2] /= norm(gainA[1]) * norm(gainB[0]); - weight[3] /= norm(gainA[1]) * norm(gainB[1]); - } - } - - void ApplyCal::applyScalar(const DComplex* gainA, const DComplex* gainB, - Complex* vis, float* weight, bool* flag, - uint bl, uint chan, bool updateWeights, - FlagCounter& flagCounter) { - // If parameter is NaN or inf, do not apply anything and flag the data - if (! (isFinite(gainA[0].real()) && isFinite(gainA[0].imag()) && - isFinite(gainB[0].real()) && isFinite(gainB[0].imag())) ) { - // Only update flagcounter for first correlation - if (!flag[0]) { - flagCounter.incrChannel(chan); - flagCounter.incrBaseline(bl); - } - for (uint corr=0; corr<4; ++corr) { - flag[corr]=true; - } - return; - } - - vis[0] *= gainA[0] * conj(gainB[0]); - vis[1] *= gainA[0] * conj(gainB[0]); - vis[2] *= gainA[0] * conj(gainB[0]); - vis[3] *= gainA[0] * conj(gainB[0]); - - if (updateWeights) { - weight[0] /= norm(gainA[0]) * norm(gainB[0]); - weight[1] /= norm(gainA[0]) * norm(gainB[0]); - weight[2] /= norm(gainA[0]) * norm(gainB[0]); - weight[3] /= norm(gainA[0]) * norm(gainB[0]); - } - } - - // Inverts complex 2x2 input matrix - void ApplyCal::invert (DComplex* v, double sigmaMMSE) - { - // Add the variance of the nuisance term to the elements on the diagonal. - const double variance = sigmaMMSE * sigmaMMSE; - DComplex v0 = v[0] + variance; - DComplex v3 = v[3] + variance; - // Compute inverse in the usual way. - DComplex invDet(1.0 / (v0 * v3 - v[1] * v[2])); - v[0] = v3 * invDet; - v[2] = v[2] * -invDet; - v[1] = v[1] * -invDet; - v[3] = v0 * invDet; - } - - void ApplyCal::applyFull (const DComplex* gainA, const DComplex* gainB, - Complex* vis, float* weight, bool* flag, - uint bl, uint chan, bool doUpdateWeights, - FlagCounter& flagCounter) { - DComplex gainAxvis[4]; - - // If parameter is NaN or inf, do not apply anything and flag the data - bool anyinfnan = false; - for (uint corr=0; corr<4; ++corr) { - if (! (isFinite(gainA[corr].real()) && isFinite(gainA[corr].imag()) && - isFinite(gainB[corr].real()) && isFinite(gainB[corr].imag())) ) { - anyinfnan = true; - break; - } - } - if (anyinfnan) { - // Only update flag counter for first correlation - if (!flag[0]) { - flagCounter.incrChannel(chan); - flagCounter.incrBaseline(bl); - } - for (uint corr=0; corr<4; ++corr) { - flag[corr]=true; - } - return; - } - - // gainAxvis = gainA * vis - for (uint row=0;row<2;++row) { - for (uint col=0;col<2;++col) { - gainAxvis[2*row+col]=gainA[2*row+0] * DComplex(vis[2*0+col]) + - gainA[2*row+1] * DComplex(vis[2*1+col]); - } - } - - // vis = gainAxvis * gainB^H - for (uint row=0;row<2;++row) { - for (uint col=0;col<2;++col) { - vis[2*row+col]=gainAxvis[2*row+0] * conj(gainB[2*col+0])+ - gainAxvis[2*row+1] * conj(gainB[2*col+1]); - } - } - - if (doUpdateWeights) { - applyWeights(gainA, gainB, weight); - } - } - - void ApplyCal::applyWeights(const DComplex* gainA, - const DComplex* gainB, - float* weight) { - float cov[4], normGainA[4], normGainB[4]; - for (uint i=0;i<4;++i) { - cov[i]=1./weight[i]; - normGainA[i]=norm(gainA[i]); - normGainB[i]=norm(gainB[i]); - } - - weight[0]=cov[0]*(normGainA[0]*normGainB[0]) - +cov[1]*(normGainA[0]*normGainB[1]) - +cov[2]*(normGainA[1]*normGainB[0]) - +cov[3]*(normGainA[1]*normGainB[1]); - weight[0]=1./weight[0]; - - weight[1]=cov[0]*(normGainA[0]*normGainB[2]) - +cov[1]*(normGainA[0]*normGainB[3]) - +cov[2]*(normGainA[1]*normGainB[2]) - +cov[3]*(normGainA[1]*normGainB[3]); - weight[1]=1./weight[1]; - - weight[2]=cov[0]*(normGainA[2]*normGainB[0]) - +cov[1]*(normGainA[2]*normGainB[1]) - +cov[2]*(normGainA[3]*normGainB[0]) - +cov[3]*(normGainA[3]*normGainB[1]); - weight[2]=1./weight[2]; - - weight[3]=cov[0]*(normGainA[2]*normGainB[2]) - +cov[1]*(normGainA[2]*normGainB[3]) - +cov[2]*(normGainA[3]*normGainB[2]) - +cov[3]*(normGainA[3]*normGainB[3]); - weight[3]=1./weight[3]; - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/Averager.cc b/CEP/DP3/DPPP/src/Averager.cc deleted file mode 100644 index 92b43124e39..00000000000 --- a/CEP/DP3/DPPP/src/Averager.cc +++ /dev/null @@ -1,408 +0,0 @@ -//# Averager.cc: DPPP step class to average in time and/or freq -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Averager.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <Common/StringUtil.h> - -#include <iostream> -#include <iomanip> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - Averager::Averager (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsMinNPoint (parset.getUint (prefix+"minpoints", 1)), - itsMinPerc (parset.getFloat (prefix+"minperc", 0.) / 100.), - itsNTimes (0), - itsTimeInterval (0), - itsNoAvg (true) - { - string freqResolutionStr = parset.getString(prefix+"freqresolution","0"); - itsFreqResolution = getFreqHz(freqResolutionStr); - - if (itsFreqResolution > 0) { - itsNChanAvg = 0; // Will be set later in updateinfo - } else { - itsNChanAvg = parset.getUint (prefix+"freqstep", 1); - } - - itsTimeResolution = parset.getFloat(prefix+"timeresolution", 0.); - if (itsTimeResolution > 0) { - itsNTimeAvg = 0; // Will be set later in updateInfo - } else { - itsNTimeAvg = parset.getUint(prefix+"timestep", 1); - } - } - - Averager::Averager (DPInput* input, const string& stepName, - uint nchanAvg, uint ntimeAvg) - : itsInput (input), - itsName (stepName), - itsFreqResolution (0), - itsTimeResolution (0), - itsNChanAvg (nchanAvg), - itsNTimeAvg (ntimeAvg), - itsMinNPoint (1), - itsMinPerc (0), - itsNTimes (0), - itsTimeInterval (0) - { - if (itsNChanAvg <= 0) itsNChanAvg = 1; - if (itsNTimeAvg <= 0) itsNTimeAvg = 1; - itsNoAvg = (itsNChanAvg == 1 && itsNTimeAvg == 1); - } - - Averager::~Averager() - {} - - void Averager::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - info().setWriteFlags(); - info().setMetaChanged(); - - if (itsNChanAvg <= 0) { - if (itsFreqResolution > 0) { - double chanwidth = infoIn.chanWidths()[0]; - itsNChanAvg = std::max(1, (int)(itsFreqResolution / chanwidth + 0.5)); - } else { - itsNChanAvg = 1; - } - } - - itsTimeInterval = infoIn.timeInterval(); - if (itsNTimeAvg <= 0) { - if (itsTimeResolution > 0) { - itsNTimeAvg = std::max(1, (int)(itsTimeResolution / itsTimeInterval + 0.5)); - } else { - itsNTimeAvg = 1; - } - } - - itsNoAvg = (itsNChanAvg == 1 && itsNTimeAvg == 1); - - // Adapt averaging to available nr of channels and times. - itsNTimeAvg = std::min (itsNTimeAvg, infoIn.ntime()); - itsNChanAvg = info().update (itsNChanAvg, itsNTimeAvg); - } - - void Averager::show (std::ostream& os) const - { - os << "Averager " << itsName << std::endl; - os << " freqstep: " << itsNChanAvg; - if (itsFreqResolution>0) { - os << " (set by freqresolution: " << itsFreqResolution << " Hz)" << std::endl; - } - os << " timestep: " << itsNTimeAvg; - if (itsTimeResolution>0) { - os << " (set by timeresolution: " << itsTimeResolution << ")"; - } - os << std::endl; - os << " minpoints: " << itsMinNPoint << std::endl; - os << " minperc: " << 100*itsMinPerc << std::endl; - } - - void Averager::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " Averager " << itsName << endl; - } - - bool Averager::process (const DPBuffer& buf) - { - // Nothing needs to be done if no averaging. - if (itsNoAvg) { - getNextStep()->process (buf); - return true; - } - itsTimer.start(); - // Sum the data in time applying the weights. - // The summing in channel and the averaging is done in function average. - if (itsNTimes == 0) { - // The first time we assign because that is faster than first clearing - // and adding thereafter. - itsBuf.getData().assign (buf.getData()); - itsBuf.getFlags().assign (buf.getFlags()); - itsBuf.getUVW().assign (itsInput->fetchUVW(buf, itsBuf, itsTimer)); - itsBuf.getWeights().assign (itsInput->fetchWeights(buf, itsBuf, itsTimer)); - IPosition shapeIn = buf.getData().shape(); - itsNPoints.resize (shapeIn); - itsAvgAll.reference (buf.getData() * itsBuf.getWeights()); - itsWeightAll.resize (shapeIn); - itsWeightAll = itsBuf.getWeights(); - // Take care of the fullRes flags. - // We have to shape the output array and copy to a part of it. - const Cube<bool>& fullResFlags = - itsInput->fetchFullResFlags (buf, itsBufTmp, itsTimer); - IPosition ofShape = fullResFlags.shape(); - ofShape[1] *= itsNTimeAvg; // more time entries, same chan and bl - itsBuf.getFullResFlags().resize (ofShape); - itsBuf.getFullResFlags() = true; // initialize for times missing at end - copyFullResFlags (fullResFlags, buf.getFlags(), 0); - // Set middle of new interval. - double time = buf.getTime() + 0.5*(itsNTimeAvg-1)*itsTimeInterval; - itsBuf.setTime (time); - itsBuf.setExposure (itsNTimeAvg*itsTimeInterval); - // Only set. - itsNPoints = 1; - // Set flagged points to zero. - Array<bool>::const_contiter infIter = buf.getFlags().cbegin(); - Array<Complex>::contiter dataIter = itsBuf.getData().cbegin(); - Array<float>::contiter wghtIter = itsBuf.getWeights().cbegin(); - Array<int>::contiter outnIter = itsNPoints.cbegin(); - Array<int>::contiter outnIterEnd = itsNPoints.cend(); - while (outnIter != outnIterEnd) { - if (*infIter) { - // Flagged data point - *outnIter = 0; - *dataIter = Complex(); - *wghtIter = 0; - } else { - // Weigh the data point - *dataIter *= *wghtIter; - } - ++infIter; - ++dataIter; - ++wghtIter; - ++outnIter; - } - } else { - // Not the first time. - // For now we assume that all timeslots have the same nr of baselines, - // so check if the buffer sizes are the same. - ASSERT (itsBuf.getData().shape() == buf.getData().shape()); - itsBufTmp.referenceFilled (buf); - itsBuf.getUVW() += itsInput->fetchUVW (buf, itsBufTmp, itsTimer); - copyFullResFlags (itsInput->fetchFullResFlags (buf, itsBufTmp, itsTimer), - buf.getFlags(), itsNTimes); - const Cube<float>& weights = - itsInput->fetchWeights (buf, itsBufTmp, itsTimer); - // Ignore flagged points. - Array<Complex>::const_contiter indIter = buf.getData().cbegin(); - Array<float>::const_contiter inwIter = weights.cbegin(); - Array<bool>::const_contiter infIter = buf.getFlags().cbegin(); - Array<Complex>::contiter outdIter = itsBuf.getData().cbegin(); - Array<Complex>::contiter alldIter = itsAvgAll.cbegin(); - Array<float>::contiter outwIter = itsBuf.getWeights().cbegin(); - Array<float>::contiter allwIter = itsWeightAll.cbegin(); - Array<int>::contiter outnIter = itsNPoints.cbegin(); - Array<int>::contiter outnIterEnd = itsNPoints.cend(); - while (outnIter != outnIterEnd) { - *alldIter += *indIter * *inwIter; - *allwIter += *inwIter; - if (!*infIter) { - *outdIter += *indIter * *inwIter; - *outwIter += *inwIter; - (*outnIter)++; - } - ++indIter; - ++inwIter; - ++infIter; - ++outdIter; - ++alldIter; - ++outwIter; - ++allwIter; - ++outnIter; - } - } - // Do the averaging if enough time steps have been processed. - itsNTimes += 1; - if (itsNTimes >= itsNTimeAvg) { - average(); - itsTimer.stop(); - getNextStep()->process (itsBufOut); - itsNTimes = 0; - } else { - itsTimer.stop(); - } - return true; - } - - void Averager::finish() - { - // Average remaining entries. - if (itsNTimes > 0) { - itsTimer.start(); - average(); - itsTimer.stop(); - getNextStep()->process (itsBufOut); - itsNTimes = 0; - } - // Let the next steps finish. - getNextStep()->finish(); - } - - void Averager::average() - { - IPosition shp = itsBuf.getData().shape(); - uint nchanin = shp[1]; - uint npin = shp[0] * nchanin; - shp[1] = (shp[1] + itsNChanAvg - 1) / itsNChanAvg; - itsBufOut.getData().resize (shp); - itsBufOut.getWeights().resize (shp); - itsBufOut.getFlags().resize (shp); - uint ncorr = shp[0]; - uint nchan = shp[1]; - int nbl = shp[2]; - uint npout = ncorr * nchan; - ///#pragma omp parallel for - // GCC-4.3 only supports OpenMP 2.5 needing signed iteration variables. - for (int k=0; k<nbl; ++k) { - const Complex* indata = itsBuf.getData().data() + k*npin; - const Complex* inalld = itsAvgAll.data() + k*npin; - const float* inwght = itsBuf.getWeights().data() + k*npin; - const float* inallw = itsWeightAll.data() + k*npin; - const int* innp = itsNPoints.data() + k*npin; - Complex* outdata = itsBufOut.getData().data() + k*npout; - float* outwght = itsBufOut.getWeights().data() + k*npout; - bool* outflags = itsBufOut.getFlags().data() + k*npout; - for (uint i=0; i<ncorr; ++i) { - uint inxi = i; - uint inxo = i; - for (uint ch=0; ch<nchan; ++ch) { - uint nch = std::min(itsNChanAvg, nchanin - ch*itsNChanAvg); - uint navgAll = nch * itsNTimes; - Complex sumd; - Complex sumad; - float sumw = 0; - float sumaw = 0; - uint np = 0; - for (uint j=0; j<nch; ++j) { - sumd += indata[inxi]; // Note: weight is accounted for in process - sumad += inalld[inxi]; - sumw += inwght[inxi]; - sumaw += inallw[inxi]; - np += innp[inxi]; - inxi += ncorr; - } - // Flag the point if insufficient unflagged data. - if (sumw == 0 || np < itsMinNPoint || np < navgAll*itsMinPerc) { - outdata[inxo] = (sumaw==0 ? Complex() : sumad/sumaw); - outflags[inxo] = true; - outwght[inxo] = sumaw; - } else { - outdata[inxo] = sumd / sumw; - outflags[inxo] = false; - outwght[inxo] = sumw; - } - inxo += ncorr; - } - } - } - // Set the remaining values in the output buffer. - itsBufOut.setTime (itsBuf.getTime()); - itsBufOut.setExposure (itsBuf.getExposure()); - itsBufOut.setFullResFlags (itsBuf.getFullResFlags()); - // The result UVWs are the average of the input. - // If ever needed, UVWCalculator can be used to calculate the UVWs. - itsBufOut.setUVW (itsBuf.getUVW() / double(itsNTimes)); - } - - void Averager::copyFullResFlags (const Cube<bool>& fullResFlags, - const Cube<bool>& flags, - int timeIndex) - { - // Copy the fullRes flags to the given index. - // Furthermore the appropriate FullRes flags are set for a - // flagged data point. It can be the case that an input data point - // has been averaged before, thus has fewer channels than FullResFlags. - // nchan and nbl are the same for in and out. - // ntimout is a multiple of ntimavg. - IPosition shapeIn = fullResFlags.shape(); - IPosition shapeOut = itsBuf.getFullResFlags().shape(); - IPosition shapeFlg = flags.shape(); - uint nchan = shapeIn[0]; // original nr of channels - uint ntimavg = shapeIn[1]; // nr of averaged times in input data - uint nchanavg = nchan / shapeFlg[1]; // nr of avg chan in input data - uint ntimout = shapeOut[1]; // nr of averaged times in output data - int nbl = shapeIn[2]; // nr of baselines - uint ncorr = shapeFlg[0]; // nr of correlations (in FLAG) - // in has to be copied to the correct time index in out. - bool* outBase = itsBuf.getFullResFlags().data() + nchan*ntimavg*timeIndex; - ///#pragma omp parallel for - // GCC-4.3 only supports OpenMP 2.5 needing signed iteration variables. - for (int k=0; k<nbl; ++k) { - const bool* inPtr = fullResFlags.data() + k*nchan*ntimavg; - const bool* flagPtr = flags.data() + k*ncorr*shapeFlg[1]; - bool* outPtr = outBase + k*nchan*ntimout; - memcpy (outPtr, inPtr, nchan*ntimavg*sizeof(bool)); - // Applying the flags only needs to be done if the input data - // was already averaged before. - if (ntimavg > 1 || nchanavg > 1) { - for (int j=0; j<shapeFlg[1]; ++j) { - // If a data point is flagged, the flags in the corresponding - // FullRes window have to be set. - // Only look at the flags of the first correlation. - if (*flagPtr) { - bool* avgPtr = outPtr + j*nchanavg; - for (uint i=0; i<ntimavg; ++i) { - std::fill (avgPtr, avgPtr+nchanavg, true); - avgPtr += nchan; - } - } - flagPtr += ncorr; - } - } - } - } - - double Averager::getFreqHz(const string& freqstr) { - String unit; - // See if a unit is given at the end. - String v(freqstr); - // Remove possible trailing blanks. - rtrim(v); - Regex regex("[a-zA-Z]+$"); - string::size_type pos = v.index (regex); - if (pos != String::npos) { - unit = v.from (pos); - v = v.before (pos); - } - // Set value and unit. - - double value = strToDouble(v); - if (unit.empty()) { - return value; - } else { - Quantity q(value, unit); - return q.getValue("Hz", true); - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/BaselineSelection.cc b/CEP/DP3/DPPP/src/BaselineSelection.cc deleted file mode 100644 index 085a6cf0e85..00000000000 --- a/CEP/DP3/DPPP/src/BaselineSelection.cc +++ /dev/null @@ -1,272 +0,0 @@ -//# BaselineSelection.cc: Class to handle the baseline selection -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/BaselineSelection.h> -#include <DPPP/DPLogger.h> -#include <MS/BaselineSelect.h> -#include <Common/ParameterSet.h> -#include <Common/ParameterValue.h> -#include <Common/LofarLogger.h> -#include <Common/StringUtil.h> -#include <Common/StreamUtil.h> - -using namespace casacore; -using namespace std; - -namespace LOFAR { - namespace DPPP { - - BaselineSelection::BaselineSelection() - {} - - BaselineSelection::BaselineSelection (const ParameterSet& parset, - const string& prefix, - bool minmax, - const string& defaultCorrType, - const string& defaultBaseline) - : itsStrBL (parset.getString (prefix + "baseline", defaultBaseline)), - itsCorrType (parset.getString (prefix + "corrtype", defaultCorrType)), - itsRangeBL (parset.getDoubleVector (prefix + "blrange", - vector<double>())) - { - if (minmax) { - double minbl = parset.getDouble (prefix + "blmin", -1); - double maxbl = parset.getDouble (prefix + "blmax", -1); - if (minbl > 0) { - itsRangeBL.push_back (0.); - itsRangeBL.push_back (minbl); - } - if (maxbl > 0) { - itsRangeBL.push_back (maxbl); - itsRangeBL.push_back (1e30); - } - } - ASSERTSTR (itsRangeBL.size()%2 == 0, - "NDPPP error: uneven number of lengths in baseline range"); - } - - bool BaselineSelection::hasSelection() const - { - return !((itsStrBL.empty() || itsStrBL == "[]") && - itsCorrType.empty() && itsRangeBL.empty()); - } - - void BaselineSelection::show (ostream& os, const string& blanks) const - { - os << " Baseline selection:" << std::endl; - os << " baseline: " << blanks << itsStrBL << std::endl; - os << " corrtype: " << blanks << itsCorrType << std::endl; - os << " blrange: " << blanks << itsRangeBL << std::endl; - } - - Matrix<bool> BaselineSelection::apply (const DPInfo& info) const - { - // Size and initialize the selection matrix. - int nant = info.antennaNames().size(); - Matrix<bool> selectBL(nant, nant, true); - // Apply the various parts if given. - if (! itsStrBL.empty() && itsStrBL != "[]") { - handleBL (selectBL, info); - } - if (! itsCorrType.empty()) { - handleCorrType (selectBL); - } - if (! itsRangeBL.empty()) { - handleLength (selectBL, info); - } - return selectBL; - } - - Vector<bool> BaselineSelection::applyVec (const DPInfo& info) const - { - Matrix<bool> sel = apply(info); - Vector<bool> vec; - vec.resize (info.nbaselines()); - for (uint i=0; i<info.nbaselines(); ++i) { - vec[i] = sel(info.getAnt1()[i], info.getAnt2()[i]); - } - return vec; - } - - void BaselineSelection::handleBL (Matrix<bool>& selectBL, - const DPInfo& info) const - { - // Handle the value(s) in the baseline selection string. - ParameterValue pvBL(itsStrBL); - // The value can be a vector or an MSSelection string. - // Alas the ParameterValue vector test cannot be used, because - // the first character of a MSSelection string can also be [. - // So if the first is [ and a ] is found before the end and before - // another [, it must be a MSSelection string. - bool mssel = true; - if (itsStrBL[0] == '[') { - String::size_type rb = itsStrBL.find (']'); - ASSERTSTR (rb != string::npos, - "Baseline selection " + itsStrBL + - " has no ending ]"); - if (rb == itsStrBL.size()-1) { - mssel = false; - } else { - String::size_type lb = itsStrBL.find ('[', 1); - mssel = (lb == string::npos || lb > rb); - } - } - if (!mssel) { - // Specified as a vector of antenna name patterns. - selectBL = selectBL && handleBLVector (pvBL, info.antennaNames()); - } else { - // Specified in casacore's MSSelection format. - string msName = info.msName(); - ASSERT (! msName.empty()); - std::ostringstream os; - Matrix<bool> sel(BaselineSelect::convert (msName, itsStrBL, os)); - // Show possible messages about unknown stations. - if (! os.str().empty()) { - vector<string> messages = StringUtil::split (os.str(), '\n'); - for (size_t i=0; i<messages.size(); ++i) { - DPLOG_WARN_STR (messages[i]); - } - } - // The resulting matrix can be smaller because new stations might have - // been added that are not present in the MS's ANTENNA table. - if (sel.nrow() == selectBL.nrow()) { - selectBL = selectBL && sel; - } else { - // Only and the subset. - Matrix<bool> selBL = selectBL(IPosition(2,0), - IPosition(2,sel.nrow()-1)); - selBL = selBL && sel; - } - } - } - - Matrix<bool> BaselineSelection::handleBLVector (const ParameterValue& pvBL, - const Vector<String>& antNames) const - { - Matrix<Bool> sel(antNames.size(), antNames.size()); - sel = false; - vector<ParameterValue> pairs = pvBL.getVector(); - // Each ParameterValue can be a single value (antenna) or a pair of - // values (a baseline). - // Note that [ant1,ant2] is somewhat ambiguous; it means two antennae, - // but one might think it means a baseline [[ant1,ant2]]. - if (pairs.size() == 2 && - !(pairs[0].isVector() || pairs[1].isVector())) { - LOG_WARN_STR ("PreFlagger baseline " << pvBL.get() - << " means two antennae, but is somewhat ambigious; " - << "it's more clear to use [[ant1],[ant2]]"); - } - for (uint i=0; i<pairs.size(); ++i) { - vector<string> bl = pairs[i].getStringVector(); - if (bl.size() == 1) { - // Turn the given antenna name pattern into a regex. - Regex regex(Regex::fromPattern (bl[0])); - int nmatch = 0; - // Loop through all antenna names and set matrix for matching ones. - for (uint i2=0; i2<antNames.size(); ++i2) { - if (antNames[i2].matches (regex)) { - nmatch++; - // Antenna matches, so set all corresponding flags. - for (uint j=0; j<antNames.size(); ++j) { - sel(i2,j) = true; - sel(j,i2) = true; - } - } - } - if (nmatch == 0) { - DPLOG_WARN_STR ("PreFlagger: no matches for antenna name pattern [" - << bl[0] << "]"); - } - } else { - ASSERTSTR (bl.size() == 2, "PreFlagger baseline " << bl << - " should contain 1 or 2 antenna name patterns"); - // Turn the given antenna name pattern into a regex. - Regex regex1(Regex::fromPattern (bl[0])); - Regex regex2(Regex::fromPattern (bl[1])); - int nmatch = 0; - // Loop through all antenna names and set matrix for matching ones. - for (uint i2=0; i2<antNames.size(); ++i2) { - if (antNames[i2].matches (regex2)) { - // Antenna2 matches, now try Antenna1. - for (uint i1=0; i1<antNames.size(); ++i1) { - if (antNames[i1].matches (regex1)) { - nmatch++; - sel(i1,i2) = true; - sel(i2,i1) = true; - } - } - } - } - if (nmatch == 0) { - DPLOG_WARN_STR ("PreFlagger: no matches for baseline name pattern [" - << bl[0] << ',' << bl[1] << "]"); - } - } - } - return sel; - } - - void BaselineSelection::handleCorrType (Matrix<bool>& selectBL) const - { - // Process corrtype if given. - string corrType = toLower(itsCorrType); - ASSERTSTR (corrType == "auto" || corrType == "cross", - "NDPPP corrType " << corrType - << " is invalid; must be auto, cross, or empty string"); - if (corrType == "auto") { - Vector<bool> diag = selectBL.diagonal().copy(); - selectBL = false; - selectBL.diagonal() = diag; - } else { - selectBL.diagonal() = false; - } - } - - void BaselineSelection::handleLength (Matrix<bool>& selectBL, - const DPInfo& info) const - { - // Get baseline lengths. - const vector<double>& blength = info.getBaselineLengths(); - const Vector<Int>& ant1 = info.getAnt1(); - const Vector<Int>& ant2 = info.getAnt2(); - for (uint i=0; i<ant1.size(); ++i) { - // Clear selection if no range matches. - bool match = false; - for (uint j=0; j<itsRangeBL.size(); j+=2) { - if (blength[i] >= itsRangeBL[j] && blength[i] <= itsRangeBL[j+1]) { - match = true; - break; - } - } - if (!match) { - int a1 = ant1[i]; - int a2 = ant2[i]; - selectBL(a1,a2) = false; - selectBL(a2,a1) = false; - } - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/CMakeLists.txt b/CEP/DP3/DPPP/src/CMakeLists.txt deleted file mode 100644 index cb4eb74985e..00000000000 --- a/CEP/DP3/DPPP/src/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -# $Id$ - -include(LofarPackageVersion) -include(PythonInstall) - -lofar_add_library(dppp - Package__Version.cc - DPRun.cc DPStep.cc DPInput.cc DPBuffer.cc DPInfo.cc - DPLogger.cc ProgressMeter.cc FlagCounter.cc - UVWCalculator/UVWCalculator.cc BaselineSelection.cc ApplyCal.cc - MSReader.cc MultiMSReader.cc MSWriter.cc MSUpdater.cc Counter.cc - Averager.cc MedFlagger.cc PreFlagger.cc UVWFlagger.cc - StationAdder.cc ScaleData.cc Filter.cc PhaseShift.cc - Demixer.cc - Position.cc Stokes.cc SourceDBUtil.cc - Apply.cc EstimateMixed.cc EstimateNew.cc Simulate.cc Simulator.cc - SubtractMixed.cc SubtractNew.cc - ModelComponent.cc PointSource.cc GaussianSource.cc Patch.cc - ModelComponentVisitor.cc GainCal.cc StefCal.cc - DemixerNew.cc DemixInfo.cc DemixWorker.cc - Predict.cc OneApplyCal.cc - ApplyBeam.cc - PhaseFitter.cc H5Parm.cc SolTab.cc DummyStep.cc H5ParmPredict.cc GridInterpolate.cc - Upsample.cc Split.cc -) - -lofar_add_bin_program(NDPPP NDPPP.cc) -lofar_add_bin_program(versiondppp versiondppp.cc) - -install(CODE "EXECUTE_PROCESS( - COMMAND \"${CMAKE_COMMAND}\" -E create_symlink NDPPP DPPP WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin - )" -) - -lofar_add_bin_scripts(taqlflagger) - -# Python modules. -python_install( - __init__.py - DESTINATION lofar/dppp) diff --git a/CEP/DP3/DPPP/src/Counter.cc b/CEP/DP3/DPPP/src/Counter.cc deleted file mode 100644 index 7f25db6c9e9..00000000000 --- a/CEP/DP3/DPPP/src/Counter.cc +++ /dev/null @@ -1,101 +0,0 @@ -//# Counter.cc: DPPP step class to count flags -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Counter.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <iostream> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - Counter::Counter (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsName (prefix), - itsCount (0), - itsFlagCounter (input->msName(), parset, prefix) - { - itsFlagData = parset.getBool (prefix+"flagdata", false); - } - - Counter::~Counter() - {} - - void Counter::show (std::ostream& os) const - { - os << "Counter " << itsName << std::endl; - } - - void Counter::showCounts (std::ostream& os) const - { - os << endl << "Cumulative flag counts in Counter " << itsName; - os << endl << "=================================" << endl; - itsFlagCounter.showBaseline (os, itsCount); - itsFlagCounter.showChannel (os, itsCount); - } - - void Counter::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - // Visibility data must be read if needed, so NaNs are flagged. - if (itsFlagData) { - info().setNeedVisData(); - } - // Initialize the flag counters. - itsFlagCounter.init (infoIn); - } - - bool Counter::process (const DPBuffer& buf) - { - const IPosition& shape = buf.getFlags().shape(); - uint nrcorr = shape[0]; - uint nrchan = shape[1]; - uint nrbl = shape[2]; - const bool* flagPtr = buf.getFlags().data(); - for (uint i=0; i<nrbl; ++i) { - for (uint j=0; j<nrchan; ++j) { - if (*flagPtr) { - itsFlagCounter.incrBaseline(i); - itsFlagCounter.incrChannel(j); - } - flagPtr += nrcorr; // only count 1st corr - } - } - // Let the next step do its processing. - getNextStep()->process (buf); - itsCount++; - return true; - } - - void Counter::finish() - { - // Let the next step finish its processing. - getNextStep()->finish(); - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/DPBuffer.cc b/CEP/DP3/DPPP/src/DPBuffer.cc deleted file mode 100644 index 27f2c9a2e78..00000000000 --- a/CEP/DP3/DPPP/src/DPBuffer.cc +++ /dev/null @@ -1,143 +0,0 @@ -//# DPBuffer.cc: Buffer holding the data of a timeslot/band -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <DPPP/DPBuffer.h> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - DPBuffer::DPBuffer() - : itsTime (0), - itsExposure (0) - {} - - DPBuffer::DPBuffer (const DPBuffer& that) - { - operator= (that); - } - - DPBuffer& DPBuffer::operator= (const DPBuffer& that) - { - if (this != &that) { - itsTime = that.itsTime; - itsExposure = that.itsExposure; - itsRowNrs.reference (that.itsRowNrs); - itsData.reference (that.itsData); - itsFlags.reference (that.itsFlags); - itsWeights.reference (that.itsWeights); - itsUVW.reference (that.itsUVW); - itsFullResFlags.reference (that.itsFullResFlags); - } - return *this; - } - - void DPBuffer::copy (const DPBuffer& that) - { - if (this != &that) { - itsTime = that.itsTime; - itsExposure = that.itsExposure; - itsRowNrs.assign (that.itsRowNrs); - if (! that.itsData.empty()) { - itsData.assign (that.itsData); - } - if (! that.itsFlags.empty()) { - itsFlags.assign (that.itsFlags); - } - if (! that.itsWeights.empty()) { - itsWeights.assign (that.itsWeights); - } - if (! that.itsUVW.empty()) { - itsUVW.assign (that.itsUVW); - } - if (! that.itsFullResFlags.empty()) { - itsFullResFlags.assign (that.itsFullResFlags); - } - } - } - - void DPBuffer::referenceFilled (const DPBuffer& that) - { - if (this != &that) { - itsTime = that.itsTime; - itsExposure = that.itsExposure; - itsRowNrs.reference (that.itsRowNrs); - if (! that.itsData.empty()) { - itsData.reference (that.itsData); - } - if (! that.itsFlags.empty()) { - itsFlags.reference (that.itsFlags); - } - if (! that.itsWeights.empty()) { - itsWeights.reference (that.itsWeights); - } - if (! that.itsUVW.empty()) { - itsUVW.reference (that.itsUVW); - } - if (! that.itsFullResFlags.empty()) { - itsFullResFlags.reference (that.itsFullResFlags); - } - } - } - - void DPBuffer::mergeFullResFlags (Cube<bool>& fullResFlags, - const Cube<bool>& flags) - { - // Flag shape is [ncorr, newnchan, nbl]. - // FullRes shape is [orignchan, navgtime, nbl] - // where orignchan = navgchan * newnchan. - const IPosition& fullResShape = fullResFlags.shape(); - const IPosition& flagShape = flags.shape(); - int orignchan = fullResShape[0]; - int newnchan = flagShape[1]; - int navgchan = orignchan / newnchan; - int navgtime = fullResShape[1]; - int nbl = fullResShape[2]; - int ncorr = flagShape[0]; - bool* fullResPtr = fullResFlags.data(); - const bool* flagPtr = flags.data(); - // Loop over all baselines and new channels. - // Only use the first correlation in the loop. - for (int j=0; j<nbl; ++j) { - for (int i=0; i<newnchan; ++i) { - // If ta data point is flagged, the flags in the corresponding - // FullRes window have to be set. - // This is needed in case a data point is further averaged. - if (*flagPtr) { - for (int i=0; i<navgtime; ++i) { - std::fill (fullResPtr, fullResPtr+navgchan, true); - fullResPtr += orignchan; - } - fullResPtr -= navgtime*orignchan; - } - flagPtr += ncorr; - fullResPtr += navgchan; - } - // Set pointer to next baseline. - fullResPtr += (navgtime-1)*orignchan; - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/DPInfo.cc b/CEP/DP3/DPPP/src/DPInfo.cc deleted file mode 100644 index 03578710ea5..00000000000 --- a/CEP/DP3/DPPP/src/DPInfo.cc +++ /dev/null @@ -1,434 +0,0 @@ -//# DPInfo.cc: General info about DPPP data processing attributes like averaging -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPInput.h> -#include <Common/LofarLogger.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MCPosition.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <casacore/casa/BasicSL/STLIO.h> - -using namespace casacore; -using namespace std; - -namespace LOFAR { - namespace DPPP { - - DPInfo::DPInfo() - : itsNeedVisData (false), - itsWriteData (false), - itsWriteFlags (false), - itsWriteWeights (false), - itsMetaChanged (false), - itsNCorr (0), - itsStartChan (0), - itsNChan (0), - itsChanAvg (1), - itsNTime (0), - itsTimeAvg (1), - itsStartTime (0), - itsTimeInterval (0), - itsPhaseCenterIsOriginal (true) - {} - - void DPInfo::init (uint ncorr, uint nchan, - uint ntime, double startTime, double timeInterval, - const string& msName, const string& antennaSet) - { - itsNCorr = ncorr; - itsNChan = nchan; - itsOrigNChan = nchan; - itsNTime = ntime; - itsStartTime = startTime; - itsTimeInterval = timeInterval; - itsMSName = msName; - itsAntennaSet = antennaSet; - } - - void DPInfo::set (const Vector<double>& chanFreqs, - const Vector<double>& chanWidths, - const Vector<double>& resolutions, - const Vector<double>& effectiveBW, - double totalBW, double refFreq) - { - itsChanFreqs.reference (chanFreqs); - itsChanWidths.reference (chanWidths); - if (resolutions.size() == 0) { - itsResolutions.reference (chanWidths); - } else { - itsResolutions.reference (resolutions); - } - if (effectiveBW.size() == 0) { - itsEffectiveBW.reference (chanWidths); - } else { - itsEffectiveBW.reference (effectiveBW); - } - if (totalBW == 0) { - itsTotalBW = sum(itsEffectiveBW); - } else { - itsTotalBW = totalBW; - } - if (refFreq == 0) { - int n = itsChanFreqs.size(); - // Takes mean of middle elements if n is even; takes middle if odd. - itsRefFreq = 0.5 * (itsChanFreqs[(n-1)/2] + itsChanFreqs[n/2]); - } else { - itsRefFreq = refFreq; - } - } - - void DPInfo::set (const MPosition& arrayPos, - const MDirection& phaseCenter, - const MDirection& delayCenter, - const MDirection& tileBeamDir) - { - itsArrayPos = arrayPos; - itsPhaseCenter = phaseCenter; - itsDelayCenter = delayCenter; - itsTileBeamDir = tileBeamDir; - } - - void DPInfo::set (const Vector<String>& antNames, - const Vector<Double>& antDiam, - const vector<MPosition>& antPos, - const Vector<Int>& ant1, - const Vector<Int>& ant2) - { - ASSERT (antNames.size() == antDiam.size() && - antNames.size() == antPos.size()); - ASSERT (ant1.size() == ant2.size()); - itsAntNames.reference (antNames); - itsAntDiam.reference (antDiam); - itsAntPos = antPos; - itsAnt1.reference (ant1); - itsAnt2.reference (ant2); - // Set which antennae are used. - setAntUsed(); - } - - void DPInfo::setAntUsed() - { - itsAntUsed.clear(); - itsAntMap.resize (itsAntNames.size()); - std::fill (itsAntMap.begin(), itsAntMap.end(), -1); - for (uint i=0; i<itsAnt1.size(); ++i) { - ASSERT (itsAnt1[i] >= 0 && itsAnt1[i] < int(itsAntMap.size()) && - itsAnt2[i] >= 0 && itsAnt2[i] < int(itsAntMap.size())); - itsAntMap[itsAnt1[i]] = 0; - itsAntMap[itsAnt2[i]] = 0; - } - itsAntUsed.reserve (itsAntNames.size()); - for (uint i=0; i<itsAntMap.size(); ++i) { - if (itsAntMap[i] == 0) { - itsAntMap[i] = itsAntUsed.size(); - itsAntUsed.push_back (i); - } - } - } - - MeasureHolder DPInfo::copyMeasure(const MeasureHolder fromMeas) - { - Record rec; - String msg; - ASSERT (fromMeas.toRecord (msg, rec)); - MeasureHolder mh2; - ASSERT (mh2.fromRecord (msg, rec)); - return mh2; - } - - uint DPInfo::update (uint chanAvg, uint timeAvg) - { - if (chanAvg > itsNChan) { - chanAvg = itsNChan; - } - if (timeAvg > itsNTime) { - timeAvg = itsNTime; - } - ASSERTSTR (itsNChan % chanAvg == 0, - "When averaging, nr of channels must divide integrally; " - "itsNChan=" << itsNChan << " chanAvg=" << chanAvg); - itsChanAvg *= chanAvg; - itsNChan = (itsNChan + chanAvg - 1) / chanAvg; - itsTimeAvg *= timeAvg; - itsNTime = (itsNTime + timeAvg - 1) / timeAvg; - itsTimeInterval *= timeAvg; - Vector<double> freqs(itsNChan); - Vector<double> widths(itsNChan, 0.); - Vector<double> resols(itsNChan, 0.); - Vector<double> effBWs(itsNChan, 0.); - double totBW = 0; - for (uint i=0; i<itsNChan; ++i) { - freqs[i] = 0.5 * (itsChanFreqs[i*chanAvg] + - itsChanFreqs[(i+1)*chanAvg - 1]); - for (uint j=0; j<chanAvg; ++j) { - widths[i] += itsChanWidths[i*chanAvg+j]; - resols[i] += itsResolutions[i*chanAvg+j]; - effBWs[i] += itsEffectiveBW[i*chanAvg+j]; - } - totBW += effBWs[i]; - } - itsChanFreqs.reference (freqs); - itsChanWidths.reference (widths); - itsResolutions.reference (resols); - itsEffectiveBW.reference (effBWs); - itsTotalBW = totBW; - return chanAvg; - } - - void DPInfo::update (uint startChan, uint nchan, - const vector<uint>& baselines, bool removeAnt) - { - Slice slice(startChan, nchan); - itsStartChan=startChan; - itsChanFreqs.reference (itsChanFreqs (slice).copy()); - itsChanWidths.reference (itsChanWidths(slice).copy()); - itsResolutions.reference (itsResolutions(slice).copy()); - itsEffectiveBW.reference (itsEffectiveBW(slice).copy()); - itsNChan = nchan; - // Keep only selected baselines. - if (! baselines.empty()) { - Vector<Int> ant1 (baselines.size()); - Vector<Int> ant2 (baselines.size()); - for (uint i=0; i<baselines.size(); ++i) { - ant1[i] = itsAnt1[baselines[i]]; - ant2[i] = itsAnt2[baselines[i]]; - } - itsAnt1.reference (ant1); - itsAnt2.reference (ant2); - // Clear; they'll be recalculated if needed. - itsBLength.resize (0); - itsAutoCorrIndex.resize (0); - } - setAntUsed(); - // If needed, remove the stations and renumber the baselines. - if (removeAnt) { - removeUnusedAnt(); - } - } - - void DPInfo::removeUnusedAnt() - { - if (itsAntUsed.size() < itsAntMap.size()) { - // First remove stations. - Vector<String> antNames (itsAntUsed.size()); - Vector<Double> antDiam (itsAntUsed.size()); - vector<MPosition> antPos; - antPos.reserve (itsAntUsed.size()); - for (uint i=0; i<itsAntUsed.size(); ++i) { - antNames[i] = itsAntNames[itsAntUsed[i]]; - antDiam[i] = itsAntDiam[itsAntUsed[i]]; - antPos.push_back (itsAntPos[itsAntUsed[i]]); - } - // Use the new vectors. - itsAntNames.reference (antNames); - itsAntDiam.reference (antDiam); - itsAntPos.swap (antPos); - // Renumber the baselines. - for (uint i=0; i<itsAnt1.size(); ++i) { - itsAnt1[i] = itsAntMap[itsAnt1[i]]; - itsAnt2[i] = itsAntMap[itsAnt2[i]]; - } - // Now fill the itsAntUsed and itsAntMap vectors again. - setAntUsed(); - // Clear; they'll be recalculated if needed. - itsBLength.resize (0); - itsAutoCorrIndex.resize (0); - } - } - - const vector<double>& DPInfo::getBaselineLengths() const - { - // Calculate the baseline lengths if not done yet. - if (itsBLength.empty()) { - // First get the antenna positions. - const vector<MPosition>& antPos = antennaPos(); - vector<Vector<double> > antVec; - antVec.reserve (antPos.size()); - for (vector<MPosition>::const_iterator iter = antPos.begin(); - iter != antPos.end(); ++iter) { - // Convert to ITRF and keep as x,y,z in m. - antVec.push_back - (MPosition::Convert(*iter, MPosition::ITRF)().getValue().getValue()); - } - // Fill in the length of each baseline. - vector<double> blength; - itsBLength.reserve (itsAnt1.size()); - for (uint i=0; i<itsAnt1.size(); ++i) { - Array<double> diff(antVec[itsAnt2[i]] - antVec[itsAnt1[i]]); - itsBLength.push_back (sqrt(sum(diff*diff))); - } - } - return itsBLength; - } - - const vector<int>& DPInfo::getAutoCorrIndex() const - { - if (itsAutoCorrIndex.empty()) { - int nant = 1 + std::max(max(itsAnt1), max(itsAnt2)); - itsAutoCorrIndex.resize (nant); - std::fill (itsAutoCorrIndex.begin(), itsAutoCorrIndex.end(), -1); - // Keep the baseline table index for the autocorrelations. - for (uint i=0; i<itsAnt1.size(); ++i) { - if (itsAnt1[i] == itsAnt2[i]) { - itsAutoCorrIndex[itsAnt1[i]] = i; - } - } - } - return itsAutoCorrIndex; - } - - Record DPInfo::toRecord() const - { - Record rec; - rec.define ("NeedVisData", itsNeedVisData); - rec.define ("WriteData", itsWriteData); - rec.define ("WriteFlags", itsWriteFlags); - rec.define ("WriteWeights", itsWriteWeights); - rec.define ("MetaChanged", itsMetaChanged); - rec.define ("MSName", itsMSName); - rec.define ("AntennaSet", itsAntennaSet); - rec.define ("NCorr", itsNCorr); - rec.define ("StartChan", itsStartChan); - rec.define ("OrigNChan", itsOrigNChan); - rec.define ("NChan", itsNChan); - rec.define ("ChanAvg", itsChanAvg); - rec.define ("NTime", itsNTime); - rec.define ("TimeAvg", itsTimeAvg); - rec.define ("StartTime", itsStartTime); - rec.define ("TimeInterval", itsTimeInterval); - rec.define ("ChanFreqs", itsChanFreqs); - rec.define ("ChanWidths", itsChanWidths); - rec.define ("Resolutions", itsResolutions); - rec.define ("EffectiveBW", itsEffectiveBW); - rec.define ("TotalBW", itsTotalBW); - rec.define ("RefFreq", itsRefFreq); - rec.define ("AntNames", itsAntNames); - rec.define ("AntDiam", itsAntDiam); - rec.define ("AntUsed", Vector<int>(itsAntUsed)); - rec.define ("AntMap", Vector<int>(itsAntMap)); - rec.define ("Ant1", itsAnt1); - rec.define ("Ant2", itsAnt2); - rec.define ("BLength", Vector<double>(itsBLength)); - rec.define ("AutoCorrIndex", Vector<int>(itsAutoCorrIndex)); - return rec; - } - - void DPInfo::fromRecord (const Record& rec) - { - if (rec.isDefined ("NeedVisData")) { - rec.get ("NeedVisData", itsNeedVisData); - } - if (rec.isDefined ("WriteData")) { - rec.get ("WriteData", itsWriteData); - } - if (rec.isDefined ("WriteFlags")) { - rec.get ("WriteFlags", itsWriteFlags); - } - if (rec.isDefined ("WriteWeights")) { - rec.get ("WriteWeights", itsWriteWeights); - } - if (rec.isDefined ("MetaChanged")) { - rec.get ("MetaChanged", itsMetaChanged); - } - if (rec.isDefined ("MSName")) { - itsMSName = rec.asString ("MSName"); - } - if (rec.isDefined ("AntennaSet")) { - itsAntennaSet = rec.asString ("AntennaSet"); - } - if (rec.isDefined ("NCorr")) { - rec.get ("NCorr", itsNCorr); - } - if (rec.isDefined ("StartChan")) { - rec.get ("StartChan", itsStartChan); - } - if (rec.isDefined ("OrigNChan")) { - rec.get ("OrigNChan", itsOrigNChan); - } - if (rec.isDefined ("NChan")) { - rec.get ("NChan", itsNChan); - } - if (rec.isDefined ("ChanAvg")) { - rec.get ("ChanAvg", itsChanAvg); - } - if (rec.isDefined ("NTime")) { - rec.get ("NTime", itsNTime); - } - if (rec.isDefined ("TimeAvg")) { - rec.get ("TimeAvg", itsTimeAvg); - } - if (rec.isDefined ("StartTime")) { - rec.get ("StartTime", itsStartTime); - } - if (rec.isDefined ("TimeInterval")) { - rec.get ("TimeInterval", itsTimeInterval); - } - if (rec.isDefined ("ChanFreqs")) { - rec.get ("ChanFreqs", itsChanFreqs); - } - if (rec.isDefined ("ChanWidths")) { - rec.get ("ChanWidths", itsChanWidths); - } - if (rec.isDefined ("Resolutions")) { - rec.get ("Resolutions", itsResolutions); - } - if (rec.isDefined ("EffectiveBW")) { - rec.get ("EffectiveBW", itsEffectiveBW); - } - if (rec.isDefined ("TotalBW")) { - rec.get ("TotalBW", itsTotalBW); - } - if (rec.isDefined ("RefFreq")) { - rec.get ("RefFreq", itsRefFreq); - } - if (rec.isDefined ("AntNames")) { - rec.get ("AntNames", itsAntNames); - } - if (rec.isDefined ("AntDiam")) { - rec.get ("AntDiam", itsAntDiam); - } - ///if (rec.isDefined ("AntUsed")) { - ///itsAntUsed = rec.toArrayInt("AntUsed").tovector(); - ///} - ///if (rec.isDefined ("AntMap")) { - /// itsAntMap = rec.toArrayInt("AntMap").tovector(); - ///} - if (rec.isDefined ("Ant1")) { - rec.get ("Ant1", itsAnt1); - } - if (rec.isDefined ("Ant2")) { - rec.get ("Ant2", itsAnt2); - } - ///if (rec.isDefined ("BLength")) { - /// itsBLength = rec.toArrayDouble("BLength").tovector(); - ///} - ///if (rec.isDefined ("AutoCorrIndex")) { - /// itsAutoCorrIndex = rec.toArrayInt("AutoCorrIndex").tovector(); - ///} - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/DPInput.cc b/CEP/DP3/DPPP/src/DPInput.cc deleted file mode 100644 index 93a19b23e55..00000000000 --- a/CEP/DP3/DPPP/src/DPInput.cc +++ /dev/null @@ -1,127 +0,0 @@ -//# DPInput.cc: Abstract base class for a DPStep generating input -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DPInput.h> -#include <Common/Exception.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MPosition.h> -#include <casacore/measures/Measures/MCPosition.h> -#include <casacore/casa/Utilities/Copy.h> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - DPInput::~DPInput() - {} - - casacore::String DPInput::msName() const - { - return String(); - } - - const Cube<bool>& DPInput::fetchFullResFlags (const DPBuffer& bufin, - DPBuffer& bufout, - NSTimer& timer, - bool merge) - { - // If already defined in the buffer, return those fullRes flags. - if (! bufin.getFullResFlags().empty()) { - return bufin.getFullResFlags(); - } - // No fullRes flags in buffer, so get them from the input. - timer.stop(); - bool fnd = getFullResFlags (bufin.getRowNrs(), bufout); - timer.start(); - Cube<bool>& fullResFlags = bufout.getFullResFlags(); - if (!fnd) { - // No fullRes flags in input; form them from the flags in the buffer. - // Only use the XX flags; no averaging done, thus navgtime=1. - // (If any averaging was done, the flags would be in the buffer). - IPosition shp(bufin.getFlags().shape()); - ASSERT (fullResFlags.shape()[0] == shp[1] && - fullResFlags.shape()[1] == 1 && - fullResFlags.shape()[2] == shp[2]); - objcopy (fullResFlags.data(), bufin.getFlags().data(), - fullResFlags.size(), 1, shp[0]); // only copy XX. - return fullResFlags; - } - // There are fullRes flags. - // If needed, merge them with the buffer's flags. - if (merge) { - DPBuffer::mergeFullResFlags (fullResFlags, bufin.getFlags()); - } - return fullResFlags; - } - - const Cube<float>& DPInput::fetchWeights (const DPBuffer& bufin, - DPBuffer& bufout, - NSTimer& timer) - { - // If already defined in the buffer, return those weights. - if (! bufin.getWeights().empty()) { - return bufin.getWeights(); - } - // No weights in buffer, so get them from the input. - // It might need the data and flags in the buffer. - timer.stop(); - getWeights (bufin.getRowNrs(), bufout); - timer.start(); - return bufout.getWeights(); - } - - const Matrix<double>& DPInput::fetchUVW (const DPBuffer& bufin, - DPBuffer& bufout, - NSTimer& timer) - { - // If already defined in the buffer, return those UVW. - if (! bufin.getUVW().empty()) { - return bufin.getUVW(); - } - // No UVW in buffer, so get them from the input. - timer.stop(); - getUVW (bufin.getRowNrs(), bufin.getTime(), bufout); - timer.start(); - return bufout.getUVW(); - } - - void DPInput::getUVW (const RefRows&, double, DPBuffer&) - { throw Exception ("DPInput::getUVW not implemented"); } - - void DPInput::getWeights (const RefRows&, DPBuffer&) - { throw Exception ("DPInput::getWeights not implemented"); } - - bool DPInput::getFullResFlags (const RefRows&, DPBuffer&) - { throw Exception ("DPInput::getFullResFlags not implemented"); } - - void DPInput::getModelData (const RefRows&, Cube<Complex>&) - { throw Exception ("DPInput::getModelData not implemented"); } - - void DPInput::fillBeamInfo (vector<StationResponse::Station::Ptr>&, - const Vector<String>&) - { throw Exception ("DPInput::fillBeamInfo not implemented"); } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/DPLogger.cc b/CEP/DP3/DPPP/src/DPLogger.cc deleted file mode 100644 index 6efa9ea6317..00000000000 --- a/CEP/DP3/DPPP/src/DPLogger.cc +++ /dev/null @@ -1,31 +0,0 @@ -//# DPLogger.cc: Log on cout/cerr or through the logging system -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DPLogger.h> - -namespace LOFAR { - namespace DPPP { - bool DPLogger::useLogger = false; - } -} diff --git a/CEP/DP3/DPPP/src/DPRun.cc b/CEP/DP3/DPPP/src/DPRun.cc deleted file mode 100644 index 809e2b8220f..00000000000 --- a/CEP/DP3/DPPP/src/DPRun.cc +++ /dev/null @@ -1,427 +0,0 @@ -//# DPRun.cc: Class to run steps like averaging and flagging on an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DPRun.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/MSReader.h> -#include <DPPP/MultiMSReader.h> -#include <DPPP/MSWriter.h> -#include <DPPP/MSUpdater.h> -#include <DPPP/ApplyBeam.h> -#include <DPPP/Averager.h> -#include <DPPP/MedFlagger.h> -#include <DPPP/PreFlagger.h> -#include <DPPP/UVWFlagger.h> -#include <DPPP/PhaseShift.h> -#include <DPPP/Demixer.h> -#include <DPPP/DemixerNew.h> -#include <DPPP/StationAdder.h> -#include <DPPP/ScaleData.h> -#include <DPPP/ApplyCal.h> -#include <DPPP/Predict.h> -#include <DPPP/H5ParmPredict.h> -#include <DPPP/GainCal.h> -#include <DPPP/Split.h> -#include <DPPP/Upsample.h> -#include <DPPP/Filter.h> -#include <DPPP/Counter.h> -#include <DPPP/ProgressMeter.h> -#include <DPPP/DPLogger.h> -#include <Common/Timer.h> -#include <Common/StreamUtil.h> -#include <Common/OpenMP.h> - -#include <casacore/casa/OS/Path.h> -#include <casacore/casa/OS/DirectoryIterator.h> -#include <casacore/casa/OS/Timer.h> -#include <casacore/casa/OS/DynLib.h> -#include <casacore/casa/Utilities/Regex.h> - -namespace LOFAR { - namespace DPPP { - - // Initialize the statics. - std::map<std::string, DPRun::StepCtor*> DPRun::theirStepMap; - - void DPRun::registerStepCtor (const std::string& type, StepCtor* func) - { - theirStepMap[type] = func; - } - - DPRun::StepCtor* DPRun::findStepCtor (const std::string& type) - { - std::map<std::string,StepCtor*>::const_iterator iter = - theirStepMap.find (type); - if (iter != theirStepMap.end()) { - return iter->second; - } - // Try to load the step from a dynamic library with that name - // (in lowercase). - // A dot can be used to have a specific library name (so multiple - // steps can use the same shared library). - std::string libname(toLower(type)); - string::size_type pos = libname.find_first_of ("."); - if (pos != string::npos) { - libname = libname.substr (0, pos); - } - // Try to load and initialize the dynamic library. - casacore::DynLib dl(libname, string("libdppp_"), "register_"+libname, false); - if (dl.getHandle()) { - // See if registered now. - iter = theirStepMap.find (type); - if (iter != theirStepMap.end()) { - return iter->second; - } - } - THROW(Exception, "Step type " + type + - " is unknown and no shared library lib" + libname + " or libdppp_" + - libname + " found in (DY)LD_LIBRARY_PATH"); - } - - - void DPRun::execute (const string& parsetName, int argc, char* argv[]) - { - casacore::Timer timer; - NSTimer nstimer; - nstimer.start(); - ParameterSet parset; - if (! parsetName.empty()) { - parset.adoptFile (parsetName); - } - // Adopt possible parameters given at the command line. - parset.adoptArgv (argc, argv); //# works fine if argc==0 and argv==0 - DPLogger::useLogger = parset.getBool ("uselogger", false); - bool showProgress = parset.getBool ("showprogress", true); - bool showTimings = parset.getBool ("showtimings", true); - // checkparset is an integer parameter now, but accept a bool as well - // for backward compatibility. - int checkparset = 0; - try { - checkparset = parset.getInt ("checkparset", 0); - } catch (...) { - DPLOG_WARN_STR ("Parameter checkparset should be an integer value"); - checkparset = parset.getBool ("checkparset") ? 1:0; - } - - bool showcounts = parset.getBool ("showcounts", true); - - uint numThreads = parset.getInt("numthreads", OpenMP::maxThreads()); - OpenMP::setNumThreads(numThreads); - - // Create the steps, link them toggether - DPStep::ShPtr firstStep = makeSteps (parset, "", 0); - - // Let all steps fill their DPInfo object using the info from the previous step. - DPInfo lastInfo = firstStep->setInfo (DPInfo()); - - // Show the steps. - DPStep::ShPtr step = firstStep; - DPStep::ShPtr lastStep; - while (step) { - ostringstream os; - step->show (os); - DPLOG_INFO (os.str(), true); - lastStep = step; - step = step->getNextStep(); - } - if (checkparset >= 0) { - // Show unused parameters (might be misspelled). - vector<string> unused = parset.unusedKeys(); - if (! unused.empty()) { - DPLOG_WARN_STR - (endl - << "*** WARNING: the following parset keywords were not used ***" - << endl - << " maybe they are misspelled" - << endl - << " " << unused << endl); - ASSERTSTR (checkparset==0, "Unused parset keywords found"); - } - } - // Process until the end. - uint ntodo = firstStep->getInfo().ntime(); - DPLOG_INFO_STR ("Processing " << ntodo << " time slots ..."); - { - ProgressMeter* progress = 0; - if (showProgress) { - progress = new ProgressMeter(0.0, ntodo, "NDPPP", - "Time slots processed", - "", "", true, 1); - } - double ndone = 0; - if (showProgress && ntodo > 0) { - progress->update (ndone, true); - } - DPBuffer buf; - while (firstStep->process (buf)) { - ++ndone; - if (showProgress && ntodo > 0) { - progress->update (ndone, true); - } - } - delete progress; - } - // Finish the processing. - DPLOG_INFO_STR ("Finishing processing ..."); - firstStep->finish(); - // Give all steps the option to add something to the MS written. - // It starts with the last step to get the name of the output MS, - // but each step must first call its previous step before - // it adds something itself. - lastStep->addToMS(""); - - // Show the counts where needed. - if (showcounts) { - step = firstStep; - while (step) { - ostringstream os; - step->showCounts (os); - DPLOG_INFO (os.str(), true); - step = step->getNextStep(); - } - } - // Show the overall timer. - nstimer.stop(); - double duration = nstimer.getElapsed(); - ostringstream ostr; - ostr << endl; - // Output special line for pipeline use. - if (DPLogger::useLogger) { - ostr << "Start timer output" << endl; - } - timer.show (ostr, "Total NDPPP time"); - DPLOG_INFO (ostr.str(), true); - if (showTimings) { - // Show the timings per step. - step = firstStep; - while (step) { - ostringstream os; - step->showTimings (os, duration); - if (! os.str().empty()) { - DPLOG_INFO (os.str(), true); - } - step = step->getNextStep(); - } - } - if (DPLogger::useLogger) { - ostr << "End timer output" << endl; - } - // The destructors are called automatically at this point. - } - - DPStep::ShPtr DPRun::makeSteps (const ParameterSet& parset, - const string& prefix, - DPInput* reader) - { - DPStep::ShPtr firstStep; - DPStep::ShPtr lastStep; - if (!reader) { - // Get input and output MS name. - // Those parameters were always called msin and msout. - // However, SAS/MAC cannot handle a parameter and a group with the same - // name, hence one can also use msin.name and msout.name. - vector<string> inNames = parset.getStringVector ("msin.name", - vector<string>()); - if (inNames.empty()) { - inNames = parset.getStringVector ("msin"); - } - ASSERTSTR (inNames.size() > 0, "No input MeasurementSets given"); - // Find all file names matching a possibly wildcarded input name. - // This is only possible if a single name is given. - if (inNames.size() == 1) { - if (inNames[0].find_first_of ("*?{['") != string::npos) { - vector<string> names; - names.reserve (80); - casacore::Path path(inNames[0]); - casacore::String dirName(path.dirName()); - casacore::Directory dir(dirName); - // Use the basename as the file name pattern. - casacore::DirectoryIterator dirIter (dir, - casacore::Regex::fromPattern(path.baseName())); - while (!dirIter.pastEnd()) { - names.push_back (dirName + '/' + dirIter.name()); - dirIter++; - } - ASSERTSTR (!names.empty(), "No datasets found matching msin " - << inNames[0]); - inNames = names; - } - } - - // Get the steps. - // Currently the input MS must be given. - // In the future it might be possible to have a simulation step instead. - // Create MSReader step if input ms given. - if (inNames.size() == 1) { - reader = new MSReader (inNames[0], parset, "msin."); - } else { - reader = new MultiMSReader (inNames, parset, "msin."); - } - firstStep = DPStep::ShPtr (reader); - } - - casacore::Path pathIn (reader->msName()); - casacore::String currentMSName (pathIn.absoluteName()); - - // Create the other steps. - vector<string> steps = parset.getStringVector (prefix + "steps"); - lastStep = firstStep; - DPStep::ShPtr step; - for (vector<string>::const_iterator iter = steps.begin(); - iter != steps.end(); ++iter) { - string prefix(*iter + '.'); - // The alphabetic part of the name is the default step type. - // This allows names like average1, out3. - string defaulttype = (*iter); - while (defaulttype.size()>0 && std::isdigit(*defaulttype.rbegin())) { - defaulttype.resize(defaulttype.size()-1); - } - - string type = toLower(parset.getString (prefix+"type", defaulttype)); - // Define correct name for AOFlagger synonyms. - if (type == "aoflagger" || type == "rficonsole") { - type = "aoflag"; - } - if (type == "averager" || type == "average" || type == "squash") { - step = DPStep::ShPtr(new Averager (reader, parset, prefix)); - } else if (type == "madflagger" || type == "madflag") { - step = DPStep::ShPtr(new MedFlagger (reader, parset, prefix)); - } else if (type == "preflagger" || type == "preflag") { - step = DPStep::ShPtr(new PreFlagger (reader, parset, prefix)); - } else if (type == "uvwflagger" || type == "uvwflag") { - step = DPStep::ShPtr(new UVWFlagger (reader, parset, prefix)); - } else if (type == "counter" || type == "count") { - step = DPStep::ShPtr(new Counter (reader, parset, prefix)); - } else if (type == "phaseshifter" || type == "phaseshift") { - step = DPStep::ShPtr(new PhaseShift (reader, parset, prefix)); - } else if (type == "demixer" || type == "demix") { - step = DPStep::ShPtr(new Demixer (reader, parset, prefix)); - } else if (type == "smartdemixer" || type == "smartdemix") { - step = DPStep::ShPtr(new DemixerNew (reader, parset, prefix)); - } else if (type == "stationadder" || type == "stationadd") { - step = DPStep::ShPtr(new StationAdder (reader, parset, prefix)); - } else if (type == "scaledata") { - step = DPStep::ShPtr(new ScaleData (reader, parset, prefix)); - } else if (type == "filter") { - step = DPStep::ShPtr(new Filter (reader, parset, prefix)); - } else if (type == "applycal" || type == "correct") { - step = DPStep::ShPtr(new ApplyCal (reader, parset, prefix)); - } else if (type == "predict") { - step = DPStep::ShPtr(new Predict (reader, parset, prefix)); - } else if (type == "h5parmpredict") { - step = DPStep::ShPtr(new H5ParmPredict (reader, parset, prefix)); - } else if (type == "applybeam") { - step = DPStep::ShPtr(new ApplyBeam (reader, parset, prefix)); - } else if (type == "gaincal" || type == "calibrate") { - step = DPStep::ShPtr(new GainCal (reader, parset, prefix)); - } else if (type == "upsample") { - step = DPStep::ShPtr(new Upsample (reader, parset, prefix)); - } else if (type == "split" || type == "explode") { - step = DPStep::ShPtr(new Split (reader, parset, prefix)); - } else if (type == "out" || type=="output" || type=="msout") { - step = makeOutputStep(dynamic_cast<MSReader*>(reader), parset, prefix, currentMSName); - } else { - // Maybe the step is defined in a dynamic library. - step = findStepCtor(type) (reader, parset, prefix); - } - if (lastStep) { - lastStep->setNextStep (step); - } - lastStep = step; - // Define as first step if not defined yet. - if (!firstStep) { - firstStep = step; - } - } - // Add an output step if not explicitly added in steps (unless last step is a 'split' step) - if (steps.size()==0 || ( - steps[steps.size()-1] != "out" && - steps[steps.size()-1] != "output" && - steps[steps.size()-1] != "msout" && - steps[steps.size()-1] != "split")) { - step = makeOutputStep(dynamic_cast<MSReader*>(reader), parset, "msout.", currentMSName); - lastStep->setNextStep (step); - lastStep = step; - } - - // Add a null step, so the last step can use getNextStep->process(). - DPStep::ShPtr nullStep(new NullStep()); - if (lastStep) { - lastStep->setNextStep (nullStep); - } else { - firstStep = nullStep; - } - return firstStep; - } - - DPStep::ShPtr DPRun::makeOutputStep (MSReader* reader, - const ParameterSet& parset, - const string& prefix, - casacore::String& currentMSName) - { - DPStep::ShPtr step; - casacore::String outName; - bool doUpdate = false; - if (prefix == "msout.") { - // The last output step. - outName = parset.getString ("msout.name", ""); - if (outName.empty()) { - outName = parset.getString ("msout"); - } - } else { - // An intermediate output step. - outName = parset.getString(prefix + "name"); - } - - // A name equal to . or the last name means an update of the last MS. - if (outName.empty() || outName == ".") { - outName = currentMSName; - doUpdate = true; - } else { - casacore::Path pathOut(outName); - if (currentMSName == pathOut.absoluteName()) { - outName = currentMSName; - doUpdate = true; - } - } - if (doUpdate) { - // Create MSUpdater. - // Take care the history is not written twice. - // Note that if there is nothing to write, the updater won't do anything. - step = DPStep::ShPtr(new MSUpdater(dynamic_cast<MSReader*>(reader), - outName, parset, prefix, - outName!=currentMSName)); - } else { - step = DPStep::ShPtr(new MSWriter (reader, outName, parset, prefix)); - reader->setReadVisData (true); - } - casacore::Path pathOut(outName); - currentMSName = pathOut.absoluteName(); - return step; - } - - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/DPStep.cc b/CEP/DP3/DPPP/src/DPStep.cc deleted file mode 100644 index 3bd88613dda..00000000000 --- a/CEP/DP3/DPPP/src/DPStep.cc +++ /dev/null @@ -1,124 +0,0 @@ -//# DPStep.cc: Abstract base class for a DPPP step -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DPStep.h> - -namespace LOFAR { - namespace DPPP { - - DPStep::~DPStep() - {} - - const DPInfo& DPStep::setInfo (const DPInfo& info) - { - // Update the info of this step using the given info. - updateInfo (info); - // If there is a next step, set its info using the info of this step. - if (getNextStep()) { - return getNextStep()->setInfo (getInfo()); - } - return getInfo(); - } - - void DPStep::updateInfo (const DPInfo& infoIn) - { info() = infoIn; } - - void DPStep::addToMS (const string& msName) - { - if (itsPrevStep) itsPrevStep->addToMS(msName); - } - - void DPStep::showCounts (std::ostream&) const - {} - - void DPStep::showTimings (std::ostream&, double) const - {} - - - NullStep::~NullStep() - {} - - bool NullStep::process (const DPBuffer&) - { return true; } - - void NullStep::finish() - {} - - void NullStep::show (std::ostream&) const - {} - - - ResultStep::ResultStep() - { - setNextStep (DPStep::ShPtr (new NullStep())); - } - - ResultStep::~ResultStep() - {} - - bool ResultStep::process (const DPBuffer& buf) - { - itsBuffer = buf; - getNextStep()->process (buf); - return true; - } - - void ResultStep::finish() - { - getNextStep()->finish(); - } - - void ResultStep::show (std::ostream&) const - {} - - - MultiResultStep::MultiResultStep (uint size) - : itsSize (0) - { - setNextStep (DPStep::ShPtr (new NullStep())); - itsBuffers.resize (size); - } - - MultiResultStep::~MultiResultStep() - {} - - bool MultiResultStep::process (const DPBuffer& buf) - { - ASSERT (itsSize < itsBuffers.size()); - itsBuffers[itsSize].copy (buf); - itsSize++; - getNextStep()->process (buf); - return true; - } - - void MultiResultStep::finish() - { - getNextStep()->finish(); - } - - void MultiResultStep::show (std::ostream&) const - {} - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/DemixInfo.cc b/CEP/DP3/DPPP/src/DemixInfo.cc deleted file mode 100644 index 12c3cb6e466..00000000000 --- a/CEP/DP3/DPPP/src/DemixInfo.cc +++ /dev/null @@ -1,458 +0,0 @@ -//# DemixInfo.cc: Struct to hold the common demix variables -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: Demixer.h 23223 2012-12-07 14:09:42Z schoenmakers $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DemixInfo.h> -#include <DPPP/PointSource.h> -#include <DPPP/GaussianSource.h> -#include <DPPP/Stokes.h> -#include <DPPP/Simulate.h> -#include <ParmDB/SourceDB.h> -#include <Common/ParameterSet.h> -#include <Common/StreamUtil.h> -#include <Common/OpenMP.h> - -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/measures/Measures/MeasConvert.h> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - DemixInfo::DemixInfo (const ParameterSet& parset, const string& prefix) - : itsSelBL (parset, prefix, false, "cross"), - itsSelBLTarget (parset, prefix+"target.", false, "cross", "CS*&"), - itsPredictModelName (parset.getString(prefix+"estimate.skymodel", "")), - itsDemixModelName (parset.getString(prefix+"ateam.skymodel")), - itsTargetModelName (parset.getString(prefix+"target.skymodel")), - itsSourceNames (parset.getStringVector (prefix+"sources")), - itsRatio1 (parset.getDouble (prefix+"ratio1", 5.)), - itsRatio2 (parset.getDouble (prefix+"ratio2", 0.25)), - // Default thresholds depend on freq, so filled by function update. - itsAteamAmplThreshold (parset.getDouble (prefix+"ateam.threshold", - 0.)), - itsTargetAmplThreshold (parset.getDouble (prefix+"target.threshold", - 0.)), - itsAngdistThreshold (parset.getDouble (prefix+"distance.threshold", 60)), - itsAngdistRefFreq (parset.getDouble (prefix+"distance.reffreq", 60e6)), - itsDefaultGain (parset.getDouble (prefix+"defaultgain", 1e-3)), - itsPropagateSolution(parset.getBool (prefix+"propagatesolutions", - false)), - itsApplyBeam (parset.getBool (prefix+"applybeam", true)), - itsSolveBoth (parset.getBool (prefix+"solveboth", false)), - itsDoSubtract (parset.getBool (prefix+"subtract", true)), - itsTargetHandling (parset.getUint (prefix+"targethandling", 0)), - itsVerbose (parset.getUint (prefix+"verbose", 0)), - itsMaxIter (parset.getUint (prefix+"maxiter", 50)), - itsMinNBaseline (parset.getUint (prefix+"minnbaseline", 6)), - itsMinNStation (parset.getUint (prefix+"minnstation", 5)), - itsNStation (0), - itsNBl (0), - itsNCorr (0), - itsNChanIn (0), - itsNChanAvgSubtr (parset.getUint (prefix+"freqstep", 1)), - itsNChanAvg (parset.getUint (prefix+"demixfreqstep", - itsNChanAvgSubtr)), - itsNChanOutSubtr (0), - itsNChanOut (0), - itsNTimeAvgSubtr (parset.getUint (prefix+"timestep", 1)), - itsNTimeAvg (parset.getUint (prefix+"demixtimestep", - itsNTimeAvgSubtr)), - itsChunkSize (parset.getUint (prefix+"chunksize", - itsNTimeAvg)), - itsNTimeChunk (parset.getUint (prefix+"ntimechunk", 0)), - itsTimeIntervalAvg (0) - { - if (itsNTimeChunk == 0) { - itsNTimeChunk = OpenMP::maxThreads(); - } - // Get delta in arcsec and take cosine of it (convert to radians first). - double delta = parset.getDouble (prefix+"target.delta", 60.); - itsCosTargetDelta = cos (delta / 3600. * casacore::C::pi / 180.); - ASSERTSTR (!(itsTargetModelName.empty() || itsDemixModelName.empty()), - "An empty name is given for a sky model"); - // If the estimate source model is given, read it. - if (! itsPredictModelName.empty()) { - itsAteamList = makePatchList (itsPredictModelName, itsSourceNames); - // Use all predict patch names if no source names given. - // In this way we're sure both A-team lists have the same sources - // in the same order. - if (itsSourceNames.empty()) { - itsSourceNames.reserve (itsAteamList.size()); - for (size_t i=0; i<itsAteamList.size(); ++i) { - itsSourceNames.push_back (itsAteamList[i]->name()); - } - } - } - itsAteamDemixList = makePatchList (itsDemixModelName, itsSourceNames); - if (itsTargetHandling != 3) { - itsTargetList = makePatchList (itsTargetModelName, vector<string>()); - } - // If no estimate model is given, use the demix model. - if (itsAteamList.empty()) { - itsAteamList = itsAteamDemixList; - } - if (itsSourceNames.empty()) { - itsSourceNames.reserve (itsAteamList.size()); - for (size_t i=0; i<itsAteamList.size(); ++i) { - itsSourceNames.push_back (itsAteamList[i]->name()); - } - } - // Note that the A-team models are in the same order of name. - // Check they have matching positions. - ASSERT (itsAteamList.size() == itsAteamDemixList.size()); - for (size_t i=0; i<itsAteamList.size(); ++i) { - ASSERT (itsAteamList[i]->name() == itsAteamDemixList[i]->name()); - ASSERTSTR (testAngDist (itsAteamDemixList[i]->position()[0], - itsAteamDemixList[i]->position()[1], - itsAteamList[i]->position()[0], - itsAteamList[i]->position()[1], - itsCosTargetDelta), - "Position mismatch of source " << itsAteamList[i]->name() - << " in A-team SourceDBs ([" - << itsAteamDemixList[i]->position()[0] << ", " - << itsAteamDemixList[i]->position()[1] << "] and [" - << itsAteamList[i]->position()[0] << ", " - << itsAteamList[i]->position()[1] << "])"); - } - makeTargetDemixList(); - } - - void DemixInfo::makeTargetDemixList() - { - // Get all A-team models for demixing. - // Note that in the constructor only some sources were read. - // First open the SourceDB. - BBS::SourceDB sdb(BBS::ParmDBMeta(string(), itsDemixModelName)); - sdb.lock(); - vector<Patch::ConstPtr> patchList = makePatchList (itsDemixModelName, - vector<string>()); - // The demix target list is the same as the predict list, but A-team - // sources must be replaced with their demix model. - // Also these sources must be removed from the A-team model. - vector<Patch::ConstPtr> targetDemixList; - uint ncomponent = 0; - itsTargetDemixList.reserve (itsTargetList.size()); - for (size_t i=0; i<itsTargetList.size(); ++i) { - itsTargetDemixList.push_back (itsTargetList[i]); - ncomponent += itsTargetList[i]->nComponents(); - // Look if an A-team source matches this target source. - for (size_t j=0; j<patchList.size(); ++j) { - if (testAngDist (itsTargetList[i]->position()[0], - itsTargetList[i]->position()[1], - patchList[j]->position()[0], - patchList[j]->position()[1], - itsCosTargetDelta)) { - // Match, so use the detailed A-team model. - itsTargetDemixList[i] = patchList[j]; - ncomponent += (patchList[j]->nComponents() - - itsTargetList[i]->nComponents()); - itsTargetReplaced.push_back (patchList[j]->name()); - // A-source is in target, so remove from A-team models (if in there). - for (size_t k=0; k<itsAteamList.size(); ++k) { - if (testAngDist (itsTargetDemixList[i]->position()[0], - itsTargetDemixList[i]->position()[1], - itsAteamList[k]->position()[0], - itsAteamList[k]->position()[1], - itsCosTargetDelta)) { - itsAteamRemoved.push_back (itsAteamList[k]->name()); - itsAteamList.erase (itsAteamList.begin() + k); - itsAteamDemixList.erase (itsAteamDemixList.begin() + k); - break; - } - } - break; - } - } - } - } - - void DemixInfo::update (const DPInfo& infoSel, DPInfo& info) - { - // Remove unused antennae and renumber remaining ones. - itsInfoSel = infoSel; - itsInfoSel.removeUnusedAnt(); - // Get size info. - itsNChanIn = infoSel.nchan(); - itsNCorr = infoSel.ncorr(); - ASSERTSTR (itsNCorr==4, "Demixing requires data with 4 polarizations"); - // NB. The number of baselines and stations refer to the number of - // selected baselines and the number of unique stations participating - // in the selected baselines. - itsNBl = infoSel.nbaselines(); - itsNStation = infoSel.antennaUsed().size(); - - // The default thresholds depend on frequency. - if (itsAteamAmplThreshold <= 0) { - if (info.refFreq() < 100e6) { - itsAteamAmplThreshold = 50; - } else { - itsAteamAmplThreshold = 5; - } - } - if (itsTargetAmplThreshold <= 0) { - if (info.refFreq() < 100e6) { - itsTargetAmplThreshold = 200; - } else { - itsTargetAmplThreshold = 100; - } - } - - // Setup the baseline index vector used to split the UVWs. - itsUVWSplitIndex = nsetupSplitUVW (itsInfoSel.nantenna(), - itsInfoSel.getAnt1(), - itsInfoSel.getAnt2()); - if (itsVerbose > 1) { - cout << "splitindex="<<itsUVWSplitIndex<<endl; - } - - // Determine which baselines to use when estimating A-team and target. - itsSelTarget = itsSelBLTarget.applyVec (infoSel); - - // Form the baselines. - // the numbering due to unused stations. - /// Why is that needed for predict/solve? - for (uint i=0; i<itsNBl; ++i) { - itsBaselines.push_back (Baseline(itsInfoSel.getAnt1()[i], - itsInfoSel.getAnt2()[i])); - } - - // Adapt averaging to available nr of channels and times. - // Use a copy of the DPInfo, otherwise it is updated multiple times. - DPInfo infoDemix(infoSel); - itsNTimeAvg = std::min (itsNTimeAvg, infoSel.ntime()); - itsNChanAvg = infoDemix.update (itsNChanAvg, itsNTimeAvg); - itsNChanOut = infoDemix.nchan(); - itsTimeIntervalAvg = infoDemix.timeInterval(); - /// itsNTimeDemix = infoDemix.ntime(); - - // Update the overall Demixer DPInfo object. - itsNTimeAvgSubtr = std::min (itsNTimeAvgSubtr, infoSel.ntime()); - itsNChanAvgSubtr = info.update (itsNChanAvgSubtr, itsNTimeAvgSubtr); - itsNChanOutSubtr = info.nchan(); - ASSERTSTR (itsNChanAvg % itsNChanAvgSubtr == 0, - "Demix frequency averaging " << itsNChanAvg - << " must be a multiple of output averaging " - << itsNChanAvgSubtr); - ASSERTSTR (itsNTimeAvg % itsNTimeAvgSubtr == 0, - "Demix time averaging " << itsNTimeAvg - << " must be a multiple of output averaging " - << itsNTimeAvgSubtr); - ASSERTSTR (itsChunkSize % itsNTimeAvg == 0, - "Demix predict time chunk size " << itsChunkSize - << " must be a multiple of averaging time step " - << itsNTimeAvg); - itsNTimeOut = itsChunkSize / itsNTimeAvg; - itsNTimeOutSubtr = itsChunkSize / itsNTimeAvgSubtr; - // Store channel frequencies for the demix and subtract resolutions. - itsFreqDemix = infoDemix.chanFreqs(); - itsFreqSubtr = info.chanFreqs(); - - // Store phase center position in J2000. - MDirection dirJ2000(MDirection::Convert(infoSel.phaseCenter(), - MDirection::J2000)()); - Quantum<Vector<Double> > angles = dirJ2000.getAngle(); - itsPhaseRef = Position(angles.getBaseValue()[0], - angles.getBaseValue()[1]); - - // Determine if the minimum distance (scaled with freq) of A-sources - // to target is within the threshold. - // First get the target position (average of its patches). - BBS::PatchSumInfo sumInfo(0); - for (size_t i=0; i<itsTargetList.size(); ++i) { - sumInfo.add (itsTargetList[i]->position()[0], - itsTargetList[i]->position()[1], - 1.); - } - double targetRa = sumInfo.getRa(); - double targetDec = sumInfo.getDec(); - // Determine the minimum distance. - double minDist = 1e30; - double freqRatio = info.refFreq() / itsAngdistRefFreq; - for (size_t i=0; i<itsAteamList.size(); ++i) { - double dist = acos (getCosAngDist (itsAteamList[i]->position()[0], - itsAteamList[i]->position()[1], - targetRa, targetDec)); - dist *= freqRatio; - if (verbose() > 10) { - cout << "Target distance to " << itsAteamList[i]->name() - << " = " << dist*180./C::pi << " deg" << endl; - } - if (dist < minDist) minDist = dist; - } - itsIsAteamNearby = cos(minDist) > cos(itsAngdistThreshold*C::pi/180.); - } - - void DemixInfo::show (ostream& os) const - { - os << " estimate.skymodel: " << itsPredictModelName << endl; - os << " ateam.skymodel: " << itsDemixModelName << endl; - os << " target.skymodel: " << itsTargetModelName << endl; - os << " sources: " << itsSourceNames << endl; - os << " " << itsAteamRemoved - << " removed from A-team model (in target)" << endl; - os << " " << itsTargetReplaced - << " replaced in target model (better A-team model)" << endl; - os << " ratio1: " << itsRatio1 << endl; - os << " ratio2: " << itsRatio2 << endl; - os << " ateam.threshold: " << itsAteamAmplThreshold << endl; - os << " target.threshold: " << itsTargetAmplThreshold << endl; - os << " target.delta: " - << acos(itsCosTargetDelta) * 3600. / casacore::C::pi * 180. - << " arcsec" << endl; - os << " distance.threshold: " << itsAngdistThreshold << " deg" << endl; - os << " distance.reffreq: " << itsAngdistRefFreq << " Hz" << endl; - os << " minnbaseline: " << itsMinNBaseline << endl; - os << " minnstation: " << itsMinNStation << endl; - os << " maxiter: " << itsMaxIter << endl; - os << " defaultgain: " << itsDefaultGain << endl; - os << " propagatesolutions: " << (itsPropagateSolution ? "True":"False") - << endl; - os << " applybeam: " << (itsApplyBeam ? "True":"False") << endl; - os << " solveboth: " << (itsSolveBoth ? "True":"False") << endl; - os << " subtract: " << (itsDoSubtract ? "True":"False") - << endl; - os << " freqstep: " << itsNChanAvgSubtr << endl; - os << " timestep: " << itsNTimeAvgSubtr << endl; - os << " demixfreqstep: " << itsNChanAvg << endl; - os << " demixtimestep: " << itsNTimeAvg << endl; - os << " chunksize: " << itsChunkSize << endl; - os << " ntimechunk: " << itsNTimeChunk << endl; - os << " target estimate"; - itsSelBLTarget.show (os, " "); - os << " demix"; - itsSelBL.show (os, " "); - } - - vector<Patch::ConstPtr> - DemixInfo::makePatchList (const string& sdbName, - const vector<string>& patchNames) - { - // Open the SourceDB. - BBS::SourceDB sdb(BBS::ParmDBMeta(string(), sdbName)); - sdb.lock(); - // Get all patches from it. - vector<string> names(sdb.getPatches()); - vector<string>::const_iterator pnamesIter = patchNames.begin(); - vector<string>::const_iterator pnamesEnd = patchNames.end(); - if (patchNames.empty()) { - pnamesIter = names.begin(); - pnamesEnd = names.end(); - } - // Create a patch component list for each matching patch name. - vector<Patch::ConstPtr> patchList; - patchList.reserve (patchNames.size()); - for (; pnamesIter != pnamesEnd; ++pnamesIter) { - ASSERTSTR (std::find (names.begin(), names.end(), *pnamesIter) - != names.end(), - "Demixer: sourcename " << *pnamesIter - << " not found in SourceDB " << sdbName); - // Use this patch; get all its sources. - vector<BBS::SourceData> patch = sdb.getPatchSourceData (*pnamesIter); - vector<ModelComponent::Ptr> componentList; - componentList.reserve (patch.size()); - for (vector<BBS::SourceData>::const_iterator iter=patch.begin(); - iter!=patch.end(); ++iter) { - const BBS::SourceData& src = *iter; - // Fetch position. - ASSERT (src.getInfo().getRefType() == "J2000"); - Position position; - position[0] = src.getRa(); - position[1] = src.getDec(); - - // Fetch stokes vector. - Stokes stokes; - stokes.I = src.getI(); - stokes.V = src.getV(); - if (!src.getInfo().getUseRotationMeasure()) { - stokes.Q = src.getQ(); - stokes.U = src.getU(); - } - - PointSource::Ptr source; - switch (src.getInfo().getType()) { - case BBS::SourceInfo::POINT: - { - source = PointSource::Ptr(new PointSource(position, stokes)); - } - break; - case BBS::SourceInfo::GAUSSIAN: - { - GaussianSource::Ptr gauss(new GaussianSource(position, stokes)); - const double deg2rad = (casacore::C::pi / 180.0); - gauss->setPositionAngle(src.getOrientation() * deg2rad); - const double arcsec2rad = (casacore::C::pi / 3600.0) / 180.0; - gauss->setMajorAxis(src.getMajorAxis() * arcsec2rad); - gauss->setMinorAxis(src.getMinorAxis() * arcsec2rad); - source = gauss; - } - break; - default: - { - ASSERTSTR(false, "Only point sources and Gaussian sources are" - " supported at this time."); - } - } - - // Fetch spectral index attributes (if applicable). - if (src.getSpectralTerms().size() > 0) { - bool isLogarithmic = true; - source->setSpectralTerms(src.getInfo().getSpectralTermsRefFreq(), - isLogarithmic, - src.getSpectralTerms().begin(), - src.getSpectralTerms().end()); - } - - // Fetch rotation measure attributes (if applicable). - if (src.getInfo().getUseRotationMeasure()) { - source->setRotationMeasure(src.getPolarizedFraction(), - src.getPolarizationAngle(), - src.getRotationMeasure()); - } - - // Add the source definition. - componentList.push_back(source); - } - - // Add the component list as a patch to the list of patches. - Patch::Ptr ppatch(new Patch(*pnamesIter, - componentList.begin(), - componentList.end())); - vector<BBS::PatchInfo> patchInfo(sdb.getPatchInfo(-1, *pnamesIter)); - ASSERT (patchInfo.size() == 1); - // Set the position and apparent flux of the patch. - Position patchPosition; - patchPosition[0] = patchInfo[0].getRa(); - patchPosition[1] = patchInfo[0].getDec(); - ppatch->setPosition (patchPosition); - ppatch->setBrightness (patchInfo[0].apparentBrightness()); - patchList.push_back (ppatch); - } - return patchList; - } - - - } //# end namespace -} //# end namespace diff --git a/CEP/DP3/DPPP/src/DemixWorker.cc b/CEP/DP3/DPPP/src/DemixWorker.cc deleted file mode 100644 index 132cc073e8b..00000000000 --- a/CEP/DP3/DPPP/src/DemixWorker.cc +++ /dev/null @@ -1,1346 +0,0 @@ -//# DemixerWorker.cc: Demixing helper class to demix a time chunk -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: Demixer.cc 24221 2013-03-12 12:24:48Z diepen $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DemixWorker.h> -#include <DPPP/Apply.h> -#include <DPPP/Averager.h> -#include <DPPP/CursorUtilCasa.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/PhaseShift.h> -#include <DPPP/Simulate.h> -#include <DPPP/Simulator.h> -#include <DPPP/SubtractNew.h> -#include <DPPP/DPLogger.h> - -#include <ParmDB/Axis.h> -#include <ParmDB/SourceDB.h> -#include <ParmDB/ParmDB.h> -#include <ParmDB/ParmSet.h> -#include <ParmDB/ParmCache.h> -#include <ParmDB/Parm.h> - -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <Common/OpenMP.h> -#include <Common/StreamUtil.h> -#include <Common/lofar_iomanip.h> -#include <Common/lofar_iostream.h> -#include <Common/lofar_fstream.h> - -#include <casacore/casa/Quanta/MVAngle.h> -#include <casacore/casa/Quanta/MVEpoch.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Arrays/Matrix.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <casacore/casa/Arrays/MatrixMath.h> -#include <casacore/casa/Arrays/MatrixIter.h> -#include <casacore/casa/Containers/Record.h> -#include <casacore/scimath/Mathematics/MatrixMathLA.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/measures/Measures/MeasureHolder.h> - -#include <sstream> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - using LOFAR::operator<<; - - namespace - { - string toString (double value); - } //# end unnamed namespace - - DemixWorker::DemixWorker (DPInput* input, - const string& prefix, - const DemixInfo& mixInfo, - const DPInfo& info, - int workerNr) - : itsWorkerNr (workerNr), - itsMix (&mixInfo), - itsFilter (input, mixInfo.selBL()), - itsNrSolves (0), - itsNrConverged (0), - itsNrIter (0), - itsNrNoDemix (0), - itsNrIncludeStrongTarget (0), - itsNrIncludeCloseTarget (0), - itsNrIgnoreTarget (0), - itsNrDeprojectTarget (0) - { - // Add a null step as the last step in the filter. - DPStep::ShPtr nullStep(new NullStep()); - itsFilter.setNextStep (nullStep); - // The worker will process up to chunkSize input time slots. - // Size buffers accordingly. - uint nsrc = itsMix->ateamList().size(); - itsFactors.resize (itsMix->ntimeOut()); - itsFactorsSubtr.resize (itsMix->ntimeOutSubtr()); - itsOrigPhaseShifts.reserve (nsrc); - itsOrigFirstSteps.reserve (nsrc+1); // also needed for target direction - itsAvgResults.reserve (nsrc+1); - itsDemixList.resize (nsrc+1); - - // Read the antenna beam info from the MS. - // Only take the stations actually used. - input->fillBeamInfo (itsAntBeamInfo, itsMix->antennaNames()); - - // Create the solve and subtract steps for the sources to be removed. - // Solving consists of the following steps: - // - select the requested baselines (longer baselines may need no demix) - // - phaseshift selected data to each demix source direction - // - average selected data in each direction, also original phasecenter. - // - determine and average demix factors for all directions - // - predict and solve in each direction. It is possible to predict - // more directions than to solve (for strong sources in field). - // Subtract consists of the following steps: - // - average all data (possibly different averaging than used in solve) - // - determine and average demix factors (using select output in solve) - // - select the requested baselines - // - subtract sources for selected data - // - merge subtract result into averaged data. This is not needed if - // no selection is done. - // Note that multiple time chunks are handled jointly, so a - // MultiResultStep is used to catch the results of all time chunks. - const vector<Patch::ConstPtr>& patchList = itsMix->ateamDemixList(); - vector<string> sourceVec(2); - for (uint i=0; i<nsrc; ++i) { - // First make the phaseshift and average steps for each demix source. - // The resultstep gets the result. - // The phasecenter can be given in a parameter. Its name is the default. - // Look up the source direction in the patch table. - // If found, turn it into a vector of strings. - sourceVec[0] = toString(patchList[i]->position()[0]); - sourceVec[1] = toString(patchList[i]->position()[1]); - PhaseShift* step1 = new PhaseShift(input, ParameterSet(), - prefix+itsMix->sourceNames()[i]+'.', - sourceVec); - itsOrigFirstSteps.push_back (DPStep::ShPtr(step1)); - itsOrigPhaseShifts.push_back (step1); - DPStep::ShPtr step2 (new Averager(input, prefix, itsMix->nchanAvg(), - itsMix->ntimeAvg())); - step1->setNextStep (step2); - MultiResultStep* step3 = new MultiResultStep(itsMix->ntimeOut()); - step2->setNextStep (DPStep::ShPtr(step3)); - // There is a single demix factor step which needs to get all results. - itsAvgResults.push_back (step3); - } - - // Now create the step to average the data themselves. - DPStep::ShPtr targetAvg(new Averager(input, prefix, - itsMix->nchanAvg(), - itsMix->ntimeAvg())); - itsOrigFirstSteps.push_back (targetAvg); - MultiResultStep* targetAvgRes = new MultiResultStep(itsMix->ntimeOut()); - targetAvg->setNextStep (DPStep::ShPtr(targetAvgRes)); - itsAvgResults.push_back (targetAvgRes); - - // Create the data average step for the subtract. - // The entire average result is needed for the next NDPPP step. - // Only the selected baselines need to be subtracted, so add a - // filter step as the last one. - itsAvgStepSubtr = DPStep::ShPtr(new Averager(input, prefix, - itsMix->nchanAvgSubtr(), - itsMix->ntimeAvgSubtr())); - itsAvgResultFull = new MultiResultStep(itsMix->ntimeOutSubtr()); - itsFilterSubtr = new Filter(input, itsMix->selBL()); - itsAvgResultSubtr = new MultiResultStep(itsMix->ntimeOutSubtr()); - itsAvgStepSubtr->setNextStep (DPStep::ShPtr(itsAvgResultFull)); - itsAvgResultFull->setNextStep (DPStep::ShPtr(itsFilterSubtr)); - itsFilterSubtr->setNextStep (DPStep::ShPtr(itsAvgResultSubtr)); - - // Let the internal steps update their data. - itsFilter.setInfo (info); - for (uint i=0; i<itsOrigFirstSteps.size(); ++i) { - itsOrigFirstSteps[i]->setInfo (itsFilter.getInfo()); - } - itsAvgStepSubtr->setInfo (info); - - // Size the various work buffers to the maximum size possibly needed. - // As few as possible dynamic buffers are used, because each malloc - // requires a thread-lock. - itsFactorBuf.resize (IPosition(4, itsMix->ncorr(), itsMix->nchanIn(), - itsMix->nbl(), nsrc*(nsrc+1)/2)); - itsFactorBufSubtr.resize (itsFactorBuf.shape()); - itsAvgUVW.resize (3, itsMix->nbl()); - itsStationUVW.resize (3, itsMix->nstation(), itsMix->ntimeOutSubtr()); - itsUVW.resize (3, itsMix->nstation()); - itsSrcSet.reserve (nsrc+1); - itsStationsToUse.resize (nsrc); - itsUnknownsIndex.resize (nsrc+1); - for (uint dr=0; dr<nsrc+1; ++dr) { - itsUnknownsIndex[dr].resize (itsMix->nstation()); - } - itsSolveStation.resize (itsMix->nstation()); - itsNrSourcesDemixed.resize (nsrc); - itsNrSourcesDemixed = 0; - itsNrStationsDemixed.resize (itsMix->nstation()); - itsNrStationsDemixed = 0; - itsStatSourceDemixed.resize (nsrc, itsMix->nstation()); - itsStatSourceDemixed = 0; - itsPredictVis.resize (itsMix->ncorr(), itsMix->nchanOut(), - itsMix->nbl()); - // itsModelVisDemix could be reused also for subtracting to save memory. - // Not doing this now, so that the elements can be a Cube and do not need - // to be resized. - itsModelVisDemix.resize (nsrc+1); - for (uint dr=0; dr<nsrc+1; ++dr) { - itsModelVisDemix[dr].resize(itsMix->ncorr(), - itsMix->nchanOut(), - itsMix->nbl()); - } - itsModelVisSubtr.resize (nsrc+1); - for (uint dr=0; dr<nsrc+1; ++dr) { - itsModelVisSubtr[dr].resize(itsMix->ncorr(), - itsMix->nchanOutSubtr(), - itsMix->nbl()); - } - itsAteamAmpl.resize (nsrc); - for (uint dr=0; dr<nsrc; ++dr) { - itsAteamAmpl[dr].resize (itsMix->nchanOut(), itsMix->nbl(), - itsMix->ntimeOut()); - } - itsAteamAmplSel.resize (itsMix->nbl(), nsrc); - itsTargetAmpl.resize (itsMix->nchanOut(), itsMix->nbl(), - itsMix->ntimeOut()); - itsTmpAmpl.resize (itsTargetAmpl.size()); - itsObservedAmpl.resize (itsMix->nbl()); - itsSourceAmpl.resize (itsMix->nbl()); - itsSumSourceAmpl.resize (itsMix->nbl()); - itsAmplSubtrMean.resize (itsMix->nbl(), nsrc+1); - itsAmplSubtrM2.resize (itsMix->nbl(), nsrc+1); - itsAmplSubtrNr.resize (itsMix->nbl(), nsrc+1); - itsAmplSubtrMean = 0.; - itsAmplSubtrM2 = 0.; - itsAmplSubtrNr = 0; - itsEstimate.update (nsrc+1, itsMix->nbl(), itsMix->nstation(), - itsMix->nchanOut(), itsMix->maxIter(), - itsMix->propagateSolution()); - itsBeamValues.resize (itsMix->nchanOutSubtr() * itsMix->nstation()); - // Make a copy of the array position and directions, because using the - // same Measure object in multiple threads is not safe. - // The only way to make a deep copy if using a MeasureHolder which - // gets converted to/from a Record. - String msg; - { - Record rec; - MeasureHolder mh1(info.arrayPos()); - ASSERT (mh1.toRecord (msg, rec)); - MeasureHolder mh2; - ASSERT (mh2.fromRecord (msg, rec)); - itsArrayPos = mh2.asMPosition(); - } - { - Record rec; - MeasureHolder mh1(info.delayCenter()); - ASSERT (mh1.toRecord (msg, rec)); - MeasureHolder mh2; - ASSERT (mh2.fromRecord (msg, rec)); - itsDelayCenter = mh2.asMDirection(); - } - { - Record rec; - MeasureHolder mh1(info.tileBeamDir()); - ASSERT (mh1.toRecord (msg, rec)); - MeasureHolder mh2; - ASSERT (mh2.fromRecord (msg, rec)); - itsTileBeamDir = mh2.asMDirection(); - } - // Create the Measure ITRF conversion info given the array position. - // The time and direction are filled in later. - itsMeasFrame.set (itsArrayPos); - itsMeasFrame.set (MEpoch(MVEpoch(info.startTime()/86400), MEpoch::UTC)); - itsMeasConverter.set (MDirection::J2000, - MDirection::Ref(MDirection::ITRF, itsMeasFrame)); - // Do a dummy conversion, because Measure initialization does not - // seem to be thread-safe. - dir2Itrf(itsDelayCenter); - } - - void DemixWorker::process (const DPBuffer* bufin, uint nbufin, - DPBuffer* bufout, vector<double>* solutions, - uint chunkNr) - { - itsTimer.start(); - itsTimerCoarse.start(); - if (itsMix->verbose() > 10) { - cout << endl << "Info for time chunk " << chunkNr - << " ( "<< nbufin << " time slots)" - << endl << "===================" << endl; - } - // Average and split the baseline UVW coordinates per station. - // Do this at the demix time resolution. - // The buffer has not been filtered yet, so the UVWs have to be filtered. - uint ntime = avgSplitUVW (bufin, nbufin, itsMix->ntimeAvg(), - itsFilter.getIndicesBL()); - double timeStep = bufin[0].getExposure(); - double time = bufin[0].getTime() + (itsMix->ntimeAvg()-1) * 0.5*timeStep; - // First do the predict of the coarse A-team sources at demix resolution. - // It fills the indices of the sources to demix. - // It also fills in the baselines that do not need to used. - predictAteam (itsMix->ateamList(), ntime, time, timeStep); - // If no sources to demix, simply average the input buffers. - if (itsSrcSet.empty()) { - itsNrNoDemix++; - // Set all solutions to 0. - uint nout = (nbufin + itsMix->ntimeAvg() - 1) / itsMix->ntimeAvg(); - for (size_t i=0; i<nout; ++i) { - solutions[i].resize ((itsMix->ateamList().size() + 1) * - itsMix->nstation() * 8); - std::fill (solutions[i].begin(), solutions[i].end(), 0.); - } - // Set statistics to 0. - /// itsAmplSubtrMean = 0.; - /// itsAmplSubtrM2 = 0.; - /// itsAmplSubtrNr = 0; - itsTimerCoarse.stop(); - itsTimerPhaseShift.start(); - average (bufin, nbufin, bufout); - itsTimerPhaseShift.stop(); - itsTimer.stop(); - return; - } - // The target has to be predicted as well (also at demix resolution). - predictTarget (itsMix->targetList(), ntime, time, timeStep); - // Determine what needs to be done. - // It fills in the steps to perform for the sources to demix. - setupDemix (chunkNr); - itsTimerCoarse.stop(); - // Loop over the buffers and process them. - itsNTimeOut = 0; - itsNTimeOutSubtr = 0; - for (uint i=0; i<nbufin; ++i) { - // Do the filter step first. - itsFilter.process (bufin[i]); - const DPBuffer& selBuf = itsFilter.getBuffer(); - // Do the next steps (phaseshift and average) on the filter output. - itsTimerPhaseShift.start(); - for (uint j=0; j<itsFirstSteps.size(); ++j) { - itsFirstSteps[j]->process (selBuf); - } - // Do the average and filter step for the output for all data. - itsAvgStepSubtr->process (bufin[i]); - // Finish averaging when last buffer. - if (i == nbufin-1) { - for (size_t j=0; j<itsFirstSteps.size(); ++j) { - itsFirstSteps[j]->finish(); - } - itsAvgStepSubtr->finish(); - } - itsTimerPhaseShift.stop(); - - // For each NTimeAvg times, calculate the phase rotation per direction - // for the selected data. - itsTimerDemix.start(); - addFactors (selBuf, itsFactorBuf); - if ((i+1) % itsMix->ntimeAvg() == 0 || i == nbufin-1) { - makeFactors (itsFactorBuf, itsFactors[itsNTimeOut], - itsAvgResults[itsSrcSet[0]]->get()[itsNTimeOut].getWeights(), - itsMix->nchanOut(), - itsMix->nchanAvg()); - // Deproject sources without a model. - deproject (itsFactors[itsNTimeOut], itsAvgResults, itsNTimeOut); - itsFactorBuf = Complex(); // Clear summation buffer - itsNTimeOut++; - } - // Subtract is done with different averaging parameters, so calculate - // the factors for it (again for selected data only). - addFactors (selBuf, itsFactorBufSubtr); - if ((i+1) % itsMix->ntimeAvgSubtr() == 0 || i == nbufin-1) { - makeFactors (itsFactorBufSubtr, itsFactorsSubtr[itsNTimeOutSubtr], - itsAvgResultSubtr->get()[itsNTimeOutSubtr].getWeights(), - itsMix->nchanOutSubtr(), - itsMix->nchanAvgSubtr()); - itsFactorBufSubtr = Complex(); // Clear summation buffer - itsNTimeOutSubtr++; - } - itsTimerDemix.stop(); - } - - // Estimate gains and subtract source contributions. - handleDemix (bufout, solutions, time, timeStep); - itsTimer.stop(); - } - - uint DemixWorker::avgSplitUVW (const DPBuffer* bufin, uint nbufin, - uint ntimeAvg, const vector<uint>& selbl) - { - ASSERT (selbl.size() == size_t(itsAvgUVW.shape()[1])); - // First average the UVWs to the predict time window. - uint ntime = (nbufin + ntimeAvg - 1) / ntimeAvg; - const DPBuffer* buf = bufin; - uint nleft = nbufin; - // Loop over nr of output time slots. - MatrixIterator<double> uvwIter(itsStationUVW); - for (uint i=0; i<ntime; ++i) { - // Sum the times for this output time slot. - // Only take the selected baselines into account. - itsAvgUVW = 0.; - uint ntodo = std::min(ntimeAvg, nleft); - for (uint j=0; j<ntodo; ++j) { - double* sumPtr = itsAvgUVW.data(); - for (uint k=0; k<selbl.size(); ++k) { - const double* uvwPtr = buf->getUVW().data() + 3*selbl[k]; - for (int k1=0; k1<3; ++k1) { - *sumPtr++ += uvwPtr[k1]; - } - } - buf++; - } - // Average the UVWs. - itsAvgUVW /= double(ntodo); - if (itsMix->verbose() > 12) { - cout<<"avguvw="<<ntodo<<itsAvgUVW<<endl; - } - nleft -= ntodo; - // Split the baseline UVW coordinates per station. - nsplitUVW (itsMix->uvwSplitIndex(), itsMix->baselines(), - itsAvgUVW, uvwIter.matrix()); - uvwIter.next(); - } - if (itsMix->verbose() > 12) { - cout<<"stationuwv="<<itsStationUVW; - } - return ntime; - } - - void DemixWorker::predictTarget (const vector<Patch::ConstPtr>& patchList, - uint ntime, double time, double timeStep) - { - // This is only needed for the short baselines, but it takes hardly - // any time to do it for all selected baselines. - // So no effort is spent on further selection. - itsTargetAmpl = 0; - MatrixIterator<float> miter(itsTargetAmpl); - MatrixIterator<double> uvwiter(itsStationUVW); - double t = time; - for (uint j=0; j<ntime; ++j) { - for (uint dr=0; dr<patchList.size(); ++dr) { - itsPredictVis = dcomplex(); - Simulator simulator(itsMix->phaseRef(), - itsMix->nstation(), - itsMix->nbl(), - itsMix->freqDemix().size(), - itsMix->baselines(), - itsMix->freqDemix(), - uvwiter.matrix(), - itsPredictVis); - for(size_t i = 0; i < patchList[dr]->nComponents(); ++i) - { - simulator.simulate(patchList[dr]->component(i)); - } - // Get and apply beam for target patch. - applyBeam (t, patchList[dr]->position(), True); - addStokesI (miter.matrix()); - } - miter.next(); - uvwiter.next(); - t += timeStep; - } - } - - void DemixWorker::addStokesI (Matrix<float>& ampl) - { - ASSERT (ampl.contiguousStorage()); - // Calculate the StokesI ampl ((XX+YY)/2). - Array<dcomplex>::const_contiter iterEnd = itsPredictVis.cend(); - float* amplp = ampl.data(); - for (Array<dcomplex>::const_contiter iter=itsPredictVis.cbegin(); - iter!=iterEnd; ++iter) { - float a = abs(*iter); - ++iter; ++iter; ++iter; // skip XY and YX - // Add amplitude. - *amplp++ += 0.5*(a + abs(*iter)); - } - } - - void DemixWorker::predictAteam (const vector<Patch::ConstPtr>& patchList, - uint ntime, double time, double timeStep) - { - itsAteamAmplSel = false; - itsSolveStation = false; - for (uint dr=0; dr<patchList.size(); ++dr) { - itsAteamAmpl[dr] = 0; - MatrixIterator<float> miter(itsAteamAmpl[dr]); - MatrixIterator<double> uvwiter(itsStationUVW); - double t = time; - for (uint j=0; j<ntime; ++j) { - itsPredictVis = dcomplex(); - Simulator simulator(itsMix->phaseRef(), - itsMix->nstation(), - itsMix->nbl(), - itsMix->freqDemix().size(), - itsMix->baselines(), - itsMix->freqDemix(), - uvwiter.matrix(), - itsPredictVis); - for(size_t i = 0; i < patchList[dr]->nComponents(); ++i) - { - simulator.simulate(patchList[dr]->component(i)); - } - // Get and apply beam. - applyBeam (t, patchList[dr]->position(), True); - // Keep the StokesI ampl ((XX+YY)/2). - addStokesI (miter.matrix()); - miter.next(); - uvwiter.next(); - t += timeStep; - } - } - // Determine per A-source which stations to use. - itsSrcSet.resize (0); - vector<uint> antCount (itsMix->nstation()); - for (uint i=0; i<patchList.size(); ++i) { - // Count the stations of baselines with sufficient amplitude. - std::fill (antCount.begin(), antCount.end(), 0); - MatrixIterator<float> miter(itsAteamAmpl[i], 0, 2); - for (uint j=0; j<itsMix->nbl(); ++j, miter.next()) { - if (itsMix->verbose() > 11) { - cout<<"source "<<i<<", baseline "<<itsMix->getAnt1()[j] - <<' '<<itsMix->getAnt2()[j] - <<" has max ampl " << max(miter.matrix())<<endl; - } - if (max(miter.matrix()) >= itsMix->ateamAmplThreshold()) { - antCount[itsMix->getAnt1()[j]]++; - antCount[itsMix->getAnt2()[j]]++; - itsAteamAmplSel(j,i) = true; - } - } - // Determine which stations have sufficient occurrence. - itsStationsToUse[i].resize (0); - for (uint j=0; j<antCount.size(); ++j) { - if (antCount[j] >= itsMix->minNBaseline()) { - itsStationsToUse[i].push_back (j); - } else { - if (itsMix->verbose() > 10) { - cout << "ignore station " << j << " for source " - << patchList[i]->name() - << " (occurs in " << antCount[j] << " baselines)" << endl; - } - } - } - // Use this A-team source if more than N stations have matched. - // If used, count the stations for it. - // For fewer stations there are insufficient baselines. - if (itsStationsToUse[i].size() >= itsMix->minNStation()) { - itsSrcSet.push_back (i); - itsNrSourcesDemixed[i]++; - for (uint j=0; j<itsStationsToUse[i].size(); ++j) { - uint st = itsStationsToUse[i][j]; - itsStatSourceDemixed(i,st)++; - itsSolveStation[st] = true; - } - } else { - itsStationsToUse[i].clear(); - itsSrcSet.push_back (i); - if (itsMix->verbose() > 10) { - cout << "ignore source " << patchList[i]->name() - << " (" << itsStationsToUse[i].size() << " stations)" << endl; - } - } - } - // Add to statistics if a station is solved for. - for (size_t i=0; i<itsSolveStation.size(); ++i) { - if (itsSolveStation[i]) { - itsNrStationsDemixed[i]++; - } - } - } - - void DemixWorker::average (const DPBuffer* bufin, uint nbufin, - DPBuffer* bufout) - { - for (uint i=0; i<nbufin; ++i) { - itsAvgStepSubtr->process (bufin[i]); - } - itsAvgStepSubtr->finish(); - ASSERT (itsAvgResultFull->size() <= itsMix->ntimeOutSubtr()); - for (uint i=0; i<itsAvgResultFull->size(); ++i) { - bufout[i] = itsAvgResultFull->get()[i]; - } - itsAvgResultFull->clear(); - } - - float DemixWorker::findMedian (const Cube<float>& ampl, - const bool* selbl) - { - // Take the median for only the baselines with sufficient amplitude. - // Copy the amplitudes of those baselines to make them contiguous. - const IPosition& shp = ampl.shape(); - float* tmp = &(itsTmpAmpl[0]); - uint nrtmp = 0; - for (uint bl=0; bl<shp[1]; ++bl) { - if (selbl[bl]) { - for (uint tm=0; tm<shp[2]; ++tm) { - for (uint ch=0; ch<shp[0]; ++ch) { - tmp[nrtmp++] = ampl(ch,bl,tm); - } - } - } - } - // Median is middle element. - if (nrtmp == 0) { - return 0; - } - return GenSort<float>::kthLargest (tmp, nrtmp, (nrtmp-1)/2); - } - - void DemixWorker::setupDemix (uint chunkNr) - { - // Decide if the target has to be included, ignored, or deprojected - // which depends on the ratio target/Ateam of the total ampl. - // Fill in the steps to be executed by removing the too weak A-sources. - uint nsrc = itsSrcSet.size(); - itsPhaseShifts.resize (nsrc); - itsFirstSteps.resize (nsrc+1); - // Add target. - itsFirstSteps[nsrc] = itsOrigFirstSteps[itsOrigFirstSteps.size() - 1]; - float minMedAmpl = 1e30; - float maxMedAmpl = 0; - // Add sources to be demixed. - // Determine their minimum and maximum amplitude. - for (uint i=0; i<nsrc; ++i) { - uint srcOrig = itsSrcSet[i]; - itsPhaseShifts[i] = itsOrigPhaseShifts[srcOrig]; - itsFirstSteps[i] = itsOrigFirstSteps[srcOrig]; - itsDemixList[i] = itsMix->ateamDemixList()[srcOrig]; - float medAmpl = findMedian (itsAteamAmpl[srcOrig], - &(itsAteamAmplSel(0,srcOrig))); - if (medAmpl < minMedAmpl) { - minMedAmpl = medAmpl; - } - if (medAmpl > maxMedAmpl) { - maxMedAmpl = medAmpl; - } - } - float targetMedAmpl = findMedian(itsTargetAmpl, itsMix->selTarget().data()); - float targetMaxAmpl = max(itsTargetAmpl); - itsIncludeTarget = false; - itsIgnoreTarget = false; - itsNModel = nsrc; - itsNSubtr = nsrc; - itsNDir = nsrc+1; - // For special purposes (testing) it is possible to set target handling, - // but normally it is dependent on the data. - if (itsMix->targetHandling() == 1) { - itsIncludeTarget = true; - itsNrIncludeCloseTarget++; - } else if (itsMix->targetHandling() == 2) { - itsNrDeprojectTarget++; - } else if (itsMix->targetHandling() == 3) { - itsIgnoreTarget = true; - itsNrIgnoreTarget++; - } else { - if (targetMedAmpl / maxMedAmpl > itsMix->ratio1() || - targetMaxAmpl > itsMix->targetAmplThreshold()) { - itsIncludeTarget = true; - itsNrIncludeStrongTarget++; - if (itsMix->verbose() > 10) { - cout << "include strong target" << endl; - } - } else if (! itsMix->isAteamNearby()) { - if (itsMix->verbose() > 10) { - cout << "deproject target" << endl; - } - itsNrDeprojectTarget++; - } else if (targetMedAmpl / minMedAmpl > itsMix->ratio2()) { - itsIncludeTarget = true; - itsNrIncludeCloseTarget++; - if (itsMix->verbose() > 10) { - cout << "include close target" << endl; - } - } else { - itsIgnoreTarget = true; - itsNrIgnoreTarget++; - if (itsMix->verbose() > 10) { - cout << "ignore target" << endl; - } - } - if (itsMix->verbose() > 10) { - cout << " targetMedAmpl=" << targetMedAmpl - << " targetMaxAmpl=" << targetMaxAmpl - << " maxAteamMedAmpl=" << maxMedAmpl - << " minAteamMedAmpl=" << minMedAmpl << endl; - } - } - // Determine the unknowns to be solved. - // The unknowns are complex values of a Jones matrix per source/station. - // thus 8 real unknowns per source/station. - // Their names are DirectionalGain:i:j:Type::Station::Source - // where i:j gives the Jones element and Type is Real or Imag. - // Fill the map of source/station to unknown seqnr (4 pol, ampl/phase). - uint nUnknown = 0; - for (uint dr=0; dr<itsNModel; ++dr) { - uint drOrig = itsSrcSet[dr]; - // Initialize first. - std::fill (itsUnknownsIndex[dr].begin(), itsUnknownsIndex[dr].end(), -1); - if (itsMix->verbose() > 11) { - cout << "stationstouse "<<drOrig<<" = "<<itsStationsToUse[drOrig] - << endl; - } - for (uint j=0; j<itsStationsToUse[drOrig].size(); ++j) { - uint st = itsStationsToUse[drOrig][j]; - itsUnknownsIndex[dr][st] = nUnknown; - nUnknown += 8; - } - } - if (itsMix->verbose() > 11) { - cout<<"nunkb="<<nUnknown<<endl; - } - // Do the same for the target if it has to be solved as well. - // Solve for all stations. - // Also add the target step. - std::fill (itsUnknownsIndex[itsNModel].begin(), - itsUnknownsIndex[itsNModel].end(), -1); - if (itsIncludeTarget) { - itsSrcSet.push_back (itsMix->ateamList().size()); - for (uint j=0; j<itsUnknownsIndex[itsNModel].size(); ++j) { - itsUnknownsIndex[itsNModel][j] = nUnknown; - nUnknown += 8; - } - itsNModel++; - } - if (itsMix->verbose() > 11) { - cout<<"nunka="<<nUnknown<<endl; - } - // Show info if needed. - if (itsMix->verbose() > 0) { - ostringstream os; - os << "chunk" << setw(5) << chunkNr << ": "; - if (itsIncludeTarget) { - os << " include target "; - } else if (itsIgnoreTarget) { - os << " ignore target "; - } else { - os << " deproject target"; - } - os << " "; - for (size_t i=0; i<itsNSubtr; ++i) { - if (i > 0) os << ", "; - os << itsMix->ateamList()[itsSrcSet[i]]->name() << " (" - << itsStationsToUse[itsSrcSet[i]].size() << " st)"; - } - DPLOG_INFO (os.str(), true); - } - } - - - void DemixWorker::applyBeam (double time, const Position& pos, bool apply) - { - // Get the beam for demix resolution and apply to itsPredictVis. - applyBeam (time, pos, apply, itsMix->freqDemix(), itsPredictVis.data()); - } - - void DemixWorker::applyBeam (double time, const Position& pos, bool apply, - const Vector<double>& chanFreqs, - dcomplex* data) - { - // For test purposes applying the beam can be defeated. - // In this way an exact comparison with the old demixer is possible. - if (! apply) { - return; - } - // Convert the directions to ITRF for the given time. - itsMeasFrame.resetEpoch (MEpoch(MVEpoch(time/86400), MEpoch::UTC)); - StationResponse::vector3r_t refdir = dir2Itrf(itsDelayCenter); - StationResponse::vector3r_t tiledir = dir2Itrf(itsTileBeamDir); - MDirection dir (MVDirection(pos[0], pos[1]), MDirection::J2000); - StationResponse::vector3r_t srcdir = dir2Itrf(dir); - // Get the beam values for each station. - uint nchan = chanFreqs.size(); - for (size_t st=0; st<itsMix->nstation(); ++st) { - itsAntBeamInfo[st]->response (nchan, time, chanFreqs.cbegin(), - srcdir, itsMix->getInfo().refFreq(), - refdir, tiledir, - &(itsBeamValues[nchan*st])); - } - // Apply the beam values of both stations to the predicted data. - dcomplex tmp[4]; - for (size_t bl=0; bl<itsMix->nbl(); ++bl) { - const StationResponse::matrix22c_t* left = - &(itsBeamValues[nchan * itsMix->getAnt1()[bl]]); - const StationResponse::matrix22c_t* right = - &(itsBeamValues[nchan * itsMix->getAnt2()[bl]]); - for (size_t ch=0; ch<nchan; ++ch) { - dcomplex l[] = {left[ch][0][0], left[ch][0][1], - left[ch][1][0], left[ch][1][1]}; - // Form transposed conjugate of right. - dcomplex r[] = {conj(right[ch][0][0]), conj(right[ch][1][0]), - conj(right[ch][0][1]), conj(right[ch][1][1])}; - // left*data - tmp[0] = l[0] * data[0] + l[1] * data[2]; - tmp[1] = l[0] * data[1] + l[1] * data[3]; - tmp[2] = l[2] * data[0] + l[3] * data[2]; - tmp[3] = l[2] * data[1] + l[3] * data[3]; - // data*conj(right) - data[0] = tmp[0] * r[0] + tmp[1] * r[2]; - data[1] = tmp[0] * r[1] + tmp[1] * r[3]; - data[2] = tmp[2] * r[0] + tmp[3] * r[2]; - data[3] = tmp[2] * r[1] + tmp[3] * r[3]; - data += 4; - } - } - } - - StationResponse::vector3r_t DemixWorker::dir2Itrf (const MDirection& dir) - { - const MDirection& itrfDir = itsMeasConverter(dir); - const Vector<Double>& itrf = itrfDir.getValue().getValue(); - StationResponse::vector3r_t vec; - vec[0] = itrf[0]; - vec[1] = itrf[1]; - vec[2] = itrf[2]; - return vec; - } - - void DemixWorker::addFactors (const DPBuffer& newBuf, - Array<DComplex>& factorBuf) - { - // Nothing to do if only target direction. - if (itsNDir <= 1) return; - int ncorr = newBuf.getData().shape()[0]; - int nchan = newBuf.getData().shape()[1]; - int nbl = newBuf.getData().shape()[2]; - int ncc = ncorr*nchan; - //# If ever in the future a time dependent phase center is used, - //# the machine must be reset for each new time, thus each new call - //# to process. - // Add the weighted factors for each pair of directions. - // The input factor is the phaseshift from target direction to - // source direction. By combining them you get the shift from one - // source direction to another. - int dirnr = 0; - for (uint i1=0; i1<itsNDir-1; ++i1) { - for (uint i0=i1+1; i0<itsNDir; ++i0) { - if (i0 == itsNDir-1) { - // The last direction is the target direction, so no need to - // combine the factors. Take conj to get shift source to target. - for (int i=0; i<nbl; ++i) { - const bool* flagPtr = newBuf.getFlags().data() + i*ncc; - const float* weightPtr = newBuf.getWeights().data() + i*ncc; - DComplex* factorPtr = factorBuf.data() + (dirnr*nbl + i)*ncc; - const DComplex* phasor1 = itsPhaseShifts[i1]->getPhasors().data() - + i*nchan; - for (int j=0; j<nchan; ++j) { - DBGASSERT (phasor1 < itsPhaseShifts[i1]->getPhasors().data()+itsPhaseShifts[i1]->getPhasors().size()); - DComplex factor = conj(*phasor1++); - for (int k=0; k<ncorr; ++k) { - DBGASSERT (flagPtr < newBuf.getFlags().data()+newBuf.getFlags().size()); - DBGASSERT (weightPtr < newBuf.getWeights().data()+newBuf.getWeights().size()); - if (! *flagPtr) { - *factorPtr += factor * double(*weightPtr); - } - flagPtr++; - weightPtr++; - factorPtr++; - } - } - } - } else { - // Different source directions; take both phase terms into account. - for (int i=0; i<nbl; ++i) { - const bool* flagPtr = newBuf.getFlags().data() + i*ncc; - const float* weightPtr = newBuf.getWeights().data() + i*ncc; - DComplex* factorPtr = factorBuf.data() + (dirnr*nbl + i)*ncc; - const DComplex* phasor0 = itsPhaseShifts[i0]->getPhasors().data() - + i*nchan; - const DComplex* phasor1 = itsPhaseShifts[i1]->getPhasors().data() - + i*nchan; - for (int j=0; j<nchan; ++j) { - DComplex factor = *phasor0++ * conj(*phasor1++); - for (int k=0; k<ncorr; ++k) { - if (! *flagPtr) { - *factorPtr += factor * double(*weightPtr); - } - flagPtr++; - weightPtr++; - factorPtr++; - } - } - } - } - // Next direction pair. - dirnr++; - } - } - } - - void DemixWorker::makeFactors (const Array<DComplex>& bufIn, - Array<DComplex>& bufOut, - const Cube<float>& weightSums, - uint nChanOut, - uint nChanAvg) - { - // Nothing to do if only target direction. - if (itsNDir <= 1) return; - ASSERT (! weightSums.empty()); - bufOut.resize (IPosition(5, itsNDir, itsNDir, - itsMix->ncorr(), nChanOut, itsMix->nbl())); - bufOut = DComplex(1,0); - int ncc = itsMix->ncorr()*nChanOut; - int nccdd = ncc*itsNDir*itsNDir; - int nccin = itsMix->ncorr()*itsMix->nchanIn(); - // Fill the factors for each combination of different directions. - uint dirnr = 0; - for (uint d0=0; d0<itsNDir; ++d0) { - for (uint d1=d0+1; d1<itsNDir; ++d1) { - // Average factors by summing channels. - // Note that summing in time is done in addFactors. - // The sum per output channel is divided by the summed weight. - // Note there is a summed weight per baseline,outchan,corr. - for (int k=0; k<int(itsMix->nbl()); ++k) { - const DComplex* phin = bufIn.data() + (dirnr*itsMix->nbl() + k)*nccin; - DComplex* ph1 = bufOut.data() + k*nccdd + (d0*itsNDir + d1); - DComplex* ph2 = bufOut.data() + k*nccdd + (d1*itsNDir + d0); - const float* weightPtr = weightSums.data() + k*ncc; - for (uint c0=0; c0<nChanOut; ++c0) { - // Sum the factors for the input channels to average. - DComplex sum[4]; - // In theory the last output channel could consist of fewer - // input channels, so take care of that. - uint nch = std::min(nChanAvg, itsMix->nchanIn()-c0*nChanAvg); - for (uint c1=0; c1<nch; ++c1) { - for (uint j=0; j<itsMix->ncorr(); ++j) { - DBGASSERT (phin < bufIn.data()+bufIn.size()); - sum[j] += *phin++; - } - } - for (uint j=0; j<itsMix->ncorr(); ++j) { - DBGASSERT (ph1 < bufOut.data()+bufOut.size()); - DBGASSERT (ph2 < bufOut.data()+bufOut.size()); - DBGASSERT (weightPtr < weightSums.data() + weightSums.size()); - if (*weightPtr == 0) { - *ph1 = 0; - } else { - *ph1 = sum[j] / double(*weightPtr++); - } - *ph2 = conj(*ph1); - ph1 += itsNDir*itsNDir; - ph2 += itsNDir*itsNDir; - } - } - } - // Next input direction pair. - dirnr++; - } - } - //cout<<"makefactors "<<weightSums<<bufOut; - } - - void DemixWorker::deproject (Array<DComplex>& factors, - vector<MultiResultStep*> avgResults, - uint resultIndex) - { - // Sources without a model have to be deprojected. - // Optionally no deprojection of target direction. - uint nrDeproject = itsNDir - itsNModel; - if (itsIgnoreTarget) { - nrDeproject--; - } - // Nothing to do if only target direction or nothing to deproject. - if (itsNDir <= 1 || nrDeproject == 0) return; - // Get pointers to the data for the various directions. - vector<Complex*> resultPtr(itsNDir); - for (uint dr=0; dr<itsNDir; ++dr) { - uint drOrig = avgResults.size() - 1; - if (dr < itsSrcSet.size()) drOrig = itsSrcSet[dr]; - resultPtr[dr] = avgResults[drOrig]->get()[resultIndex].getData().data(); - } - // The projection matrix is given by - // P = I - A * inv(A.T.conj * A) * A.T.conj - // where A is the last column of the demixing matrix M. - // The BBS equations get: - // P * M' * v_predict = P * v_averaged - // where M' is obtained by removing the last column of demixing matrix M. - // The dimensions of the matrices/vectors are: - // P : NxN - // M' : Nx(N-1) - // v_predict : (N-1) x 1 - // v_averaged: N x 1 - // where N is the number of modeled sources to use in demixing. - // In the general case S sources might not have a source model. - // In that case A is the NxS matrix containing all these columns - // from M and M' is the Nx(N-S) matrix without all these columns. - - // Calculate P for all baselines,channels,correlations. - IPosition shape = factors.shape(); - int nvis = shape[2] * shape[3] * shape[4]; - shape[1] = itsNModel; - Array<DComplex> newFactors (shape); - IPosition inShape (2, itsNDir, itsNDir); - IPosition outShape(2, itsNDir, itsNModel); - { - Matrix<DComplex> a(itsNDir, nrDeproject); - Matrix<DComplex> ma(itsNDir, itsNModel); - vector<DComplex> vec(itsNDir); - for (int i=0; i<nvis; ++i) { - // Split the matrix into the modeled and deprojected sources. - // Copy the columns to the individual matrices. - const DComplex* inptr = factors.data() + i*itsNDir*itsNDir; - DComplex* outptr = newFactors.data() + i*itsNDir*itsNModel; - Matrix<DComplex> out (outShape, outptr, SHARE); - // Copying a bit of data is probably faster than taking a matrix - // subset. - objcopy (ma.data(), inptr, itsNDir*itsNModel); - objcopy (a.data(), inptr + itsNDir*itsNModel, itsNDir*nrDeproject); - // Calculate conjugated transpose of A, multiply with A, and invert. - Matrix<DComplex> at(adjoint(a)); - Matrix<DComplex> ata(invert(product(at, a))); - if (ata.empty()) { - ata.resize (nrDeproject, nrDeproject); - } - DBGASSERT(ata.ncolumn()==nrDeproject && ata.nrow()==nrDeproject); - // Calculate P = I - A * ata * A.T.conj - Matrix<DComplex> aata(product(a,ata)); - Matrix<DComplex> p (-product(product(a, ata), at)); - Vector<DComplex> diag(p.diagonal()); - diag += DComplex(1,0); - // Multiply the demixing factors with P (get stored in newFactors). - out = product(p, ma); - // Multiply the averaged data point with P. - std::fill (vec.begin(), vec.end(), DComplex()); - for (uint j=0; j<itsNDir; ++j) { - for (uint k=0; k<itsNDir; ++k) { - vec[k] += DComplex(resultPtr[j][i]) * p(k,j); - } - } - // Put result back in averaged data for those sources. - for (uint j=0; j<itsNDir; ++j) { - resultPtr[j][i] = vec[j]; - } - } - } - // Set the new demixing factors. - factors.reference (newFactors); - } - - void DemixWorker::handleDemix (DPBuffer* bufout, vector<double>* solutions, - double time, double timeStep) - { - demix (solutions, time, timeStep); - // If selection was done, merge the subtract results back into the - // buffer. - if (itsMix->doSubtract() && itsMix->selBL().hasSelection()) { - mergeSubtractResult(); - } - // Clear the input buffers. - for (size_t i=0; i<itsAvgResults.size(); ++i) { - itsAvgResults[i]->clear(); - } - // Store the output buffers. - for (uint i=0; i<itsNTimeOutSubtr; ++i) { - // DPBuffer copying uses reference semantics which is fine. - // At the end the itsAvgResultxxx buffers get removed, thus the ones - // in bufout cannot be overwritten. - if (itsMix->doSubtract() && itsMix->selBL().hasSelection()) { - bufout[i] = itsAvgResultFull->get()[i]; - } else { - bufout[i] = itsAvgResultSubtr->get()[i]; - } - } - // Clear the output buffers. - itsAvgResultFull->clear(); - itsAvgResultSubtr->clear(); - } - - void DemixWorker::mergeSubtractResult() - { - // Merge the selected baselines from the subtract buffer into the - // full buffer. Do it for all timestamps. - for (uint i=0; i<itsNTimeOutSubtr; ++i) { - const Array<Complex>& arr = itsAvgResultSubtr->get()[i].getData(); - size_t nr = arr.shape()[0] * arr.shape()[1]; - const Complex* in = arr.data(); - Complex* out = itsAvgResultFull->get()[i].getData().data(); - for (size_t j=0; j<itsFilter.getIndicesBL().size(); ++j) { - size_t inx = itsFilter.getIndicesBL()[j]; - memcpy (out+inx*nr, in+j*nr, nr*sizeof(Complex)); - } - } - } - - void DemixWorker::demix (vector<double>* solutions, - double time, double timeStep) - { - // Determine the various sizes. - const size_t nTime = itsAvgResults[itsSrcSet[0]]->size(); - const size_t nTimeSubtr = itsAvgResultSubtr->size(); - const size_t multiplier = itsMix->ntimeAvg() / itsMix->ntimeAvgSubtr(); - const size_t nSt = itsMix->nstation(); - const size_t nBl = itsMix->baselines().size(); - const size_t nCh = itsMix->freqDemix().size(); - const size_t nChSubtr = itsMix->freqSubtr().size(); - const size_t nCr = 4; - // Define various cursors to iterate through arrays. - const_cursor<Baseline> cr_baseline(&(itsMix->baselines()[0])); - // Do a solve and subtract for each predict time slot. - // Determine the time step for the subtract. - double subtrTimeStep = timeStep / multiplier; - for (size_t ts=0; ts<nTime; ++ts) { - itsTimerPredict.start(); - // Compute the model visibilities for each A-team source. - size_t stride_model[3] = {1, nCr, nCr*nCh}; - for (size_t dr=0; dr<itsNModel; ++dr) { - uint drOrig = itsSrcSet[dr]; - // Split the baseline UVW coordinates per station. - nsplitUVW (itsMix->uvwSplitIndex(), itsMix->baselines(), - itsAvgResults[drOrig]->get()[ts].getUVW(), itsUVW); - if (itsMix->verbose() > 13) { - cout <<"uvw"<<dr<<'='<<itsUVW; - } - // Initialize this part of the buffer. - itsModelVisDemix[dr]=dcomplex(); - if (dr == itsNSubtr) { - // This is the target which consists of multiple components. - // To each of them the beam must be applied. - for (uint i=0; i<itsMix->targetDemixList().size(); ++i) { - itsPredictVis = dcomplex(); - Simulator simulator(itsMix->phaseRef(), nSt, nBl, nCh, - itsMix->baselines(), itsMix->freqDemix(), - itsUVW, itsPredictVis); - for(size_t j = 0; j < itsMix->targetDemixList()[i]->nComponents(); ++j) - { - simulator.simulate(itsMix->targetDemixList()[i]->component(j)); - } - applyBeam (time, itsMix->targetDemixList()[i]->position(), - itsMix->applyBeam()); - itsModelVisDemix[dr]+=itsPredictVis; - } - } else { - itsModelVisDemix[dr]=dcomplex(); - Simulator simulator(itsDemixList[dr]->position(), nSt, nBl, nCh, - itsMix->baselines(), itsMix->freqDemix(), - itsUVW, itsModelVisDemix[dr]); - for(size_t i = 0; i < itsDemixList[dr]->nComponents(); ++i) - { - simulator.simulate(itsDemixList[dr]->component(i)); - } - applyBeam (time, itsMix->ateamDemixList()[drOrig]->position(), - itsMix->applyBeam(), itsMix->freqDemix(), - itsModelVisDemix[dr].data()); - } - } // end nModel - itsTimerPredict.stop(); - if (itsMix->verbose() > 13) { - cout<<"modelvis="<<itsModelVisDemix<<endl; - } - // A Jones matrix will be estimated for each pair of stations and - // direction. - // A single (overdetermined) non-linear set of equations for all - // stations and directions is solved iteratively. The influence of - // each direction on each other direction is given by the mixing - // matrix. - itsTimerSolve.start(); - const_cursor<bool> cr_flag = - casa_const_cursor(itsAvgResults[itsSrcSet[0]]->get()[ts].getFlags()); - const_cursor<float> cr_weight = - casa_const_cursor(itsAvgResults[itsSrcSet[0]]->get()[ts].getWeights()); - const_cursor<dcomplex> cr_mix = casa_const_cursor(itsFactors[ts]); - if (itsMix->verbose() > 14) { - cout << "demixfactor "<<ts<<" = "<<itsFactors[ts]<<endl; - } - // Create a cursor per source. - vector<const_cursor<fcomplex> > cr_data(itsNModel); - vector<const_cursor<dcomplex> > cr_model(itsNModel); - for (size_t dr=0; dr<itsNModel; ++dr) { - uint drOrig = itsSrcSet[dr]; - cr_data[dr] = - casa_const_cursor(itsAvgResults[drOrig]->get()[ts].getData()); - cr_model[dr] = - const_cursor<dcomplex>(itsModelVisDemix[dr].data(), 3, stride_model); - } - // If solving the system succeeds, increment nconverged. - bool converged = itsEstimate.estimate (itsUnknownsIndex, - itsSrcSet, - cr_baseline, cr_data, - cr_model, cr_flag, - cr_weight, cr_mix, - itsMix->defaultGain(), - itsMix->solveBoth(), - itsMix->verbose()); - // Copy solutions to overall solution array. - solutions[ts] = itsEstimate.getSolution(); - itsNrSolves++; - if (converged) { - itsNrConverged++; - itsNrIter += itsEstimate.nIterations(); - } - itsTimerSolve.stop(); - - // Compute the residual. - // - // All the so-called "subtract sources" are subtracted from the - // observed data. The previously estimated Jones matrices, as well as - // the appropriate mixing weight are applied before subtraction. - // - // Note that the resolution of the residual can differ from the - // resolution at which the Jones matrices were estimated. - if (itsMix->doSubtract()) { - itsTimerSubtract.start(); - // Get middle of first subtract time interval. - double subtrTime = time - 0.5*(timeStep - subtrTimeStep); - for (size_t ts_subtr = multiplier * ts, - ts_subtr_end = min(ts_subtr + multiplier, nTimeSubtr); - ts_subtr != ts_subtr_end; ++ts_subtr) { - // Get the observed amplitude per baseline for the middle channel. - const Complex* data = - itsAvgResultSubtr->get()[ts_subtr].getData().data() + nChSubtr/2*4; - for (size_t bl=0; bl<nBl; ++bl) { - itsSumSourceAmpl[bl] = 0; - itsObservedAmpl[bl] = 0.5 * (abs(data[0]) + abs(data[3])); - data += 4*nChSubtr; - } - for (size_t dr=0; dr<itsNSubtr; ++dr) { - uint drOrig = itsSrcSet[dr]; - // Re-use simulation used for estimating Jones matrices if possible. - cursor<dcomplex> cr_model_subtr(itsModelVisSubtr[dr].data(), - 3, stride_model); - // Re-simulate if required. - if (multiplier != 1 || nCh != nChSubtr) { - nsplitUVW (itsMix->uvwSplitIndex(), itsMix->baselines(), - itsAvgResultSubtr->get()[ts_subtr].getUVW(), itsUVW); - // Rotate the UVW coordinates for the target direction to the - // direction of source to subtract. This is required because at - // the resolution of the residual the UVW coordinates for - // directions other than the target are unavailable (unless the - // resolution of the residual is equal to the resolution at - // which the Jones matrices were estimated, of course). - rotateUVW (itsMix->phaseRef(), - itsMix->ateamList()[drOrig]->position(), nSt, - itsUVW.data()); - // Initialize the visibility buffer. - std::fill (itsModelVisSubtr.begin(), itsModelVisSubtr.end(), dcomplex()); - // Simulate visibilities at the resolution of the residual. - size_t stride_model_subtr[3] = {1, nCr, nCr * nChSubtr}; - cr_model_subtr = cursor<dcomplex>(itsModelVisSubtr[0].data(), 3, - stride_model_subtr); - - Simulator simulator(itsMix->ateamList()[drOrig]->position(), - nSt, nBl, nChSubtr, itsMix->baselines(), - itsMix->freqSubtr(), itsUVW, - itsModelVisSubtr[0]); - for(size_t i = 0; i < itsMix->ateamList()[drOrig]->nComponents(); ++i) - { - simulator.simulate(itsMix->ateamList()[drOrig]->component(i)); - } - - applyBeam (subtrTime, - itsMix->ateamDemixList()[drOrig]->position(), - itsMix->applyBeam(), - itsMix->freqSubtr(), - itsModelVisSubtr[0].data()); - } - - // Apply Jones matrices. - size_t stride_unknowns[2] = {1, 8}; - const_cursor<double> cr_unknowns(&(solutions[ts][drOrig * nSt * 8]), - 2, stride_unknowns); - apply (nBl, nChSubtr, cr_baseline, cr_unknowns, cr_model_subtr); - - // Subtract the source contribution from the data. - cursor<fcomplex> cr_residual = - casa_cursor(itsAvgResultSubtr->get()[ts_subtr].getData()); - - // Construct a cursor to iterate over a slice of the mixing matrix - // at the resolution of the residual. The "to" and "from" direction - // are fixed. Since the full mixing matrix is 5-D, the slice is - // therefore 3-D. Each individual value in the slice quantifies the - // influence of the source to subtract on the target direction for - // a particular correlation, channel, and baseline. - // - // The target direction is the direction with the highest index by - // convention, i.e. index itsNDir - 1. The directions to subtract - // have the lowest indices by convention, i.e. indices - // [0, nDrSubtr). - const IPosition& stride_mix_subtr = - itsFactorsSubtr[ts_subtr].steps(); - size_t stride_mix_subtr_slice[3] = { - static_cast<size_t>(stride_mix_subtr[2]), - static_cast<size_t>(stride_mix_subtr[3]), - static_cast<size_t>(stride_mix_subtr[4]) - }; - ASSERT(stride_mix_subtr_slice[0] == itsNDir*itsNDir && - stride_mix_subtr_slice[1] == itsNDir*itsNDir*nCr && - stride_mix_subtr_slice[2] == itsNDir*itsNDir*nCr*nChSubtr); - - IPosition offset(5, itsNDir - 1, dr, 0, 0, 0); - const_cursor<dcomplex> cr_mix_subtr - (&(itsFactorsSubtr[ts_subtr](offset)), 3, stride_mix_subtr_slice); - - // Subtract the source. - // It fills in the subtracted amplitude per baseline. - subtract (nBl, nChSubtr, cr_baseline, cr_residual, cr_model_subtr, - cr_mix_subtr, itsSourceAmpl); - // Calculate the mean percentage amplitude subtracted per source. - // This array is ordered [nbl,nsrc] - for (size_t bl=0; bl<nBl; ++bl) { - itsSumSourceAmpl[bl] += itsSourceAmpl[bl]; - } - addMeanM2 (itsSourceAmpl, drOrig); - } // end itsNSubtr - // Calculate the totals per baseline. - addMeanM2 (itsSumSourceAmpl, itsAmplSubtrNr.shape()[1] - 1); - subtrTime += subtrTimeStep; - } // end ts_subtr - itsTimerSubtract.stop(); - } // end doSubtract - time += timeStep; - } // end nTime - } - - void DemixWorker::addMeanM2 (const vector<float>& sourceAmpl, uint dr) - { - for (size_t bl=0; bl<sourceAmpl.size(); ++bl) { - if (itsObservedAmpl[bl] != 0 && sourceAmpl[bl] != 0) { - // Calculate mean and stddev in a running way using a - // numerically stable algorithm - // See en.wikipedia.org/wiki/Algorithms_for_calculating_variance - itsAmplSubtrNr(bl,dr)++; - double perc = sourceAmpl[bl] / itsObservedAmpl[bl]; - double delta = perc - itsAmplSubtrMean(bl,dr); - itsAmplSubtrMean(bl,dr) += delta/itsAmplSubtrNr(bl,dr); - itsAmplSubtrM2(bl,dr) += delta*(perc-itsAmplSubtrMean(bl,dr)); - } - } - } - - - namespace - { - string toString (double value) - { - ostringstream os; - os << setprecision(16) << value; - return os.str(); - } - } //# end unnamed namespace - - } //# end namespace DPPP -} //# end namespace LOFAR diff --git a/CEP/DP3/DPPP/src/Demixer.cc b/CEP/DP3/DPPP/src/Demixer.cc deleted file mode 100644 index 1ab55014f84..00000000000 --- a/CEP/DP3/DPPP/src/Demixer.cc +++ /dev/null @@ -1,1161 +0,0 @@ -//# Demixer.cc: DPPP step class to subtract A-team sources -//# Copyright (C) 2011 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Demixer.h> -#include <DPPP/Apply.h> -#include <DPPP/Averager.h> -#include <DPPP/CursorUtilCasa.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/EstimateMixed.h> -#include <DPPP/PhaseShift.h> -#include <DPPP/Simulate.h> -#include <DPPP/SourceDBUtil.h> -#include <DPPP/SubtractMixed.h> -#include <DPPP/MSReader.h> -#include <DPPP/Simulator.h> - -#include <ParmDB/Axis.h> -#include <ParmDB/SourceDB.h> -#include <ParmDB/ParmDB.h> -#include <ParmDB/ParmSet.h> -#include <ParmDB/ParmCache.h> -#include <ParmDB/Parm.h> - -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <Common/OpenMP.h> -#include <Common/StreamUtil.h> -#include <Common/lofar_iomanip.h> -#include <Common/lofar_iostream.h> -#include <Common/lofar_fstream.h> - -#include <casacore/casa/Quanta/MVAngle.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Arrays/Matrix.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/MatrixMath.h> -#include <casacore/scimath/Mathematics/MatrixMathLA.h> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - using LOFAR::operator<<; - - namespace - { - string toString (double value); - } //# end unnamed namespace - - Demixer::Demixer (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsSkyName (parset.getString(prefix+"skymodel", "sky")), - itsInstrumentName (parset.getString(prefix+"instrumentmodel", - "instrument")), - itsDefaultGain (parset.getDouble(prefix+"defaultgain",1.0)), - itsMaxIter (parset.getInt(prefix+"maxiter",50)), - itsSelBL (parset, prefix, false, "cross"), - itsFilter (input, itsSelBL), - itsAvgResultSubtr (0), - itsIgnoreTarget (parset.getBool (prefix+"ignoretarget", false)), - itsTargetSource (parset.getString(prefix+"targetsource", string())), - itsSubtrSources (parset.getStringVector (prefix+"subtractsources")), - itsModelSources (parset.getStringVector (prefix+"modelsources", - vector<string>())), - itsExtraSources (parset.getStringVector (prefix+"othersources", - vector<string>())), -// itsCutOffs (parset.getDoubleVector (prefix+"elevationcutoffs", -// vector<double>())), -// itsJointSolve (parset.getBool (prefix+"jointsolve", true)), - itsPropagateSolutions(parset.getBool (prefix+"propagatesolutions", - false)), - itsNDir (0), - itsNModel (0), - itsNStation (0), - itsNBl (0), - itsNCorr (0), - itsNChanIn (0), - itsNTimeIn (0), - itsNTimeDemix (0), - itsNChanAvgSubtr (parset.getUint (prefix+"freqstep", 1)), - itsNTimeAvgSubtr (parset.getUint (prefix+"timestep", 1)), - itsNChanOutSubtr (0), - itsNTimeOutSubtr (0), - itsNTimeChunk (parset.getUint (prefix+"ntimechunk", 0)), - itsNTimeChunkSubtr(0), - itsNChanAvg (parset.getUint (prefix+"demixfreqstep", - itsNChanAvgSubtr)), - itsNTimeAvg (parset.getUint (prefix+"demixtimestep", - itsNTimeAvgSubtr)), - itsNChanOut (0), - itsNTimeOut (0), - itsTimeIntervalAvg(0), - itsTimeIndex (0), - itsNConverged (0) - { - // Get and set solver options. -// itsSolveOpt.maxIter = -// parset.getUint (prefix+"Solve.Options.MaxIter", 300); -// itsSolveOpt.epsValue = -// parset.getDouble(prefix+"Solve.Options.EpsValue", 1e-9); -// itsSolveOpt.epsDerivative = -// parset.getDouble(prefix+"Solve.Options.EpsDerivative", 1e-9); -// itsSolveOpt.colFactor = -// parset.getDouble(prefix+"Solve.Options.ColFactor", 1e-9); -// itsSolveOpt.lmFactor = -// parset.getDouble(prefix+"Solve.Options.LMFactor", 1.0); -// itsSolveOpt.balancedEq = -// parset.getBool (prefix+"Solve.Options.BalancedEqs", false); -// itsSolveOpt.useSVD = -// parset.getBool (prefix+"Solve.Options.UseSVD", true); - - // Note: - // Directions of unknown sources can be given in the PhaseShift step like - // demixstepname.sourcename.phasecenter - - ASSERTSTR (!(itsSkyName.empty() || itsInstrumentName.empty()), - "An empty name is given for the sky and/or instrument model"); - ASSERTSTR (!itsIgnoreTarget || itsTargetSource.empty(), - "Target source name cannot be given if ignoretarget=true"); - // Add a null step as last step in the filter. - DPStep::ShPtr nullStep(new NullStep()); - itsFilter.setNextStep (nullStep); - // Default nr of time chunks is maximum number of threads. - if (itsNTimeChunk == 0) { - itsNTimeChunk = OpenMP::maxThreads(); - } - // Check that time windows fit integrally. - ASSERTSTR ((itsNTimeChunk * itsNTimeAvg) % itsNTimeAvgSubtr == 0, - "time window should fit final averaging integrally"); - itsNTimeChunkSubtr = (itsNTimeChunk * itsNTimeAvg) / itsNTimeAvgSubtr; - // Collect all source names. - itsNModel = itsSubtrSources.size() + itsModelSources.size(); - itsNDir = itsNModel + itsExtraSources.size() + 1; - itsAllSources.reserve (itsNDir); - itsAllSources.insert (itsAllSources.end(), - itsSubtrSources.begin(), itsSubtrSources.end()); - itsAllSources.insert (itsAllSources.end(), - itsModelSources.begin(), itsModelSources.end()); - itsAllSources.insert (itsAllSources.end(), - itsExtraSources.begin(), itsExtraSources.end()); - itsAllSources.push_back (itsTargetSource); - - // Get the source info of all patches from the SourceDB table. - BBS::SourceDB sourceDB(BBS::ParmDBMeta("", itsSkyName), false); - vector<string> patchNames(itsAllSources); - // If the target source is given, add it to the model. - // Because the target source has to be the last direction, it means - // that (for the time being) no extra sources can be given. - if (! itsTargetSource.empty()) { - patchNames[itsNModel++] = itsTargetSource; - // The target has to be the last demix direction. - // If it has a source model, there cannot be any extra source - // because the sources to be predicted have to be a consecutive vector. - ASSERTSTR (itsExtraSources.empty(), "Currently no extrasources can " - "be given if the targetsource is given"); - } - itsPatchList = makePatches (sourceDB, patchNames, itsNModel); - ASSERT(itsPatchList.size() == itsNModel); - - // Size buffers. - itsFactors.resize (itsNTimeChunk); - itsFactorsSubtr.resize (itsNTimeChunkSubtr); - itsPhaseShifts.reserve (itsNDir-1); // not needed for target direction - itsFirstSteps.reserve (itsNDir); - itsAvgResults.reserve (itsNDir); - - // Create the solve and subtract steps for the sources to be removed. - // Solving consists of the following steps: - // - select the requested baselines (longer baselines may need no demix) - // - phaseshift selected data to each demix source - // - average selected data in each direction, also original phasecenter. - // - determine and average demix factors for all directions - // - predict and solve in each direction. It is possible to predict - // more directions than to solve (for strong sources in field). - // Subtract consists of the following steps: - // - average all data (possibly different averaging than used in solve) - // - determine and average demix factors (using select output in solve) - // - select the requested baselines - // - subtract sources for selected data - // - merge subtract result into averaged data. This is not needed if - // no selection is done. - // Note that multiple time chunks are handled jointly, so a - // MultiResultStep is used to catch the results of all time chunks. - for (uint i=0; i<itsNDir-1; ++i) { - // First make the phaseshift and average steps for each demix source. - // The resultstep gets the result. - // The phasecenter can be given in a parameter. Its name is the default. - // Look up the source direction in the patch table. - // If found, turn it into a vector of strings. - vector<string> sourceVec (1, itsAllSources[i]); - if(i < itsNModel) { - sourceVec[0] = toString(itsPatchList[i]->position()[0]); - sourceVec.push_back(toString(itsPatchList[i]->position()[1])); - } - PhaseShift* step1 = new PhaseShift (input, parset, - prefix + itsAllSources[i] + '.', - sourceVec); - itsFirstSteps.push_back (DPStep::ShPtr(step1)); - itsPhaseShifts.push_back (step1); - DPStep::ShPtr step2 (new Averager(input, prefix, itsNChanAvg, - itsNTimeAvg)); - step1->setNextStep (step2); - MultiResultStep* step3 = new MultiResultStep(itsNTimeChunk); - step2->setNextStep (DPStep::ShPtr(step3)); - // There is a single demix factor step which needs to get all results. - itsAvgResults.push_back (step3); - } - - // Now create the step to average the data themselves. - DPStep::ShPtr targetAvg(new Averager(input, prefix, - itsNChanAvg, itsNTimeAvg)); - itsFirstSteps.push_back (targetAvg); - MultiResultStep* targetAvgRes = new MultiResultStep(itsNTimeChunk); - targetAvg->setNextStep (DPStep::ShPtr(targetAvgRes)); - itsAvgResults.push_back (targetAvgRes); - - // Create the data average step for the subtract. - // The entire average result is needed for the next NDPPP step. - // Only the selected baselines need to be subtracted, so add a - // filter step as the last one. - itsAvgStepSubtr = DPStep::ShPtr(new Averager(input, prefix, - itsNChanAvgSubtr, - itsNTimeAvgSubtr)); - itsAvgResultFull = new MultiResultStep(itsNTimeChunkSubtr); - itsFilterSubtr = new Filter(input, itsSelBL); - itsAvgResultSubtr = new MultiResultStep(itsNTimeChunkSubtr); - itsAvgStepSubtr->setNextStep (DPStep::ShPtr(itsAvgResultFull)); - itsAvgResultFull->setNextStep (DPStep::ShPtr(itsFilterSubtr)); - itsFilterSubtr->setNextStep (DPStep::ShPtr(itsAvgResultSubtr)); - -// while(itsCutOffs.size() < itsNModel) { -// itsCutOffs.push_back(0.0); -// } -// itsCutOffs.resize(itsNModel); - } - - void Demixer::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - - // Get size info. - itsNChanIn = infoIn.nchan(); - itsNCorr = infoIn.ncorr(); - ASSERTSTR (itsNCorr==4, "Demixing requires data with 4 polarizations"); - - // Handle possible data selection. - itsFilter.setInfo (infoIn); - const DPInfo& infoSel = itsFilter.getInfo(); - // NB. The number of baselines and stations refer to the number of - // selected baselines and the number of unique stations that participate - // in the selected baselines. - itsNBl = infoSel.nbaselines(); - itsNStation = infoSel.antennaUsed().size(); - - // Re-number the station IDs in the selected baselines, removing gaps in - // the numbering due to unused stations. - const vector<int> &antennaMap = infoSel.antennaMap(); - for (uint i=0; i<itsNBl; ++i) { - itsBaselines.push_back(Baseline(antennaMap[infoSel.getAnt1()[i]], - antennaMap[infoSel.getAnt2()[i]])); - } - - // Prepare conversion from relative to absolute UVW - casacore::Vector<casacore::Int> newAnt1(itsNBl); - casacore::Vector<casacore::Int> newAnt2(itsNBl); - for (uint i=0; i<itsNBl; ++i) { - newAnt1[i]=antennaMap[infoSel.getAnt1()[i]]; - newAnt2[i]=antennaMap[infoSel.getAnt2()[i]]; - } - itsUVWSplitIndex = nsetupSplitUVW (itsNStation,newAnt1,newAnt2); - - // Allocate buffers used to compute the smearing factors. - itsFactorBuf.resize (IPosition(4, itsNCorr, itsNChanIn, itsNBl, - itsNDir*(itsNDir-1)/2)); - itsFactorBufSubtr.resize (IPosition(4, itsNCorr, itsNChanIn, itsNBl, - itsNDir*(itsNDir-1)/2)); - - // Adapt averaging to available nr of channels and times. - // Use a copy of the DPInfo, otherwise it is updated multiple times. - DPInfo infoDemix(infoSel); - itsNTimeAvg = std::min (itsNTimeAvg, infoSel.ntime()); - itsNChanAvg = infoDemix.update (itsNChanAvg, itsNTimeAvg); - itsNChanOut = infoDemix.nchan(); - itsTimeIntervalAvg = infoDemix.timeInterval(); - itsNTimeDemix = infoDemix.ntime(); - - // Let the internal steps update their data. - for (uint i=0; i<itsFirstSteps.size(); ++i) { - itsFirstSteps[i]->setInfo (infoSel); - } - itsAvgStepSubtr->setInfo (infoIn); - // Update the info of this object. - info().setNeedVisData(); - info().setWriteData(); - info().setWriteFlags(); - itsNTimeAvgSubtr = std::min (itsNTimeAvgSubtr, infoSel.ntime()); - itsNChanAvgSubtr = info().update (itsNChanAvgSubtr, itsNTimeAvgSubtr); - itsNChanOutSubtr = info().nchan(); - ASSERTSTR (itsNChanAvg % itsNChanAvgSubtr == 0, - "Demix averaging " << itsNChanAvg - << " must be multiple of output averaging " - << itsNChanAvgSubtr); - ASSERTSTR (itsNTimeAvg % itsNTimeAvgSubtr == 0, - "Demix averaging " << itsNTimeAvg - << " must be multiple of output averaging " - << itsNTimeAvgSubtr); - // Store channel frequencies for the demix and subtract resolutions. - itsFreqDemix = infoDemix.chanFreqs(); - itsFreqSubtr = getInfo().chanFreqs(); - - // Store phase center position in J2000. - MDirection dirJ2000(MDirection::Convert(infoIn.phaseCenter(), - MDirection::J2000)()); - Quantum<Vector<Double> > angles = dirJ2000.getAngle(); - itsPhaseRef = Position(angles.getBaseValue()[0], - angles.getBaseValue()[1]); - - // Intialize the unknowns. - itsUnknowns.resize(itsNTimeDemix * itsNModel * itsNStation * 8); - itsPrevSolution.resize(itsNModel * itsNStation * 8); - vector<double>::iterator it = itsPrevSolution.begin(); - vector<double>::iterator it_end = itsPrevSolution.end(); - while(it != it_end) - { - *it++ = itsDefaultGain; - *it++ = 0.0; - *it++ = 0.0; - *it++ = 0.0; - *it++ = 0.0; - *it++ = 0.0; - *it++ = itsDefaultGain; - *it++ = 0.0; - } - // Initialize the flag counters. - itsFlagCounter.init (getInfo()); - } - - void Demixer::show (std::ostream& os) const - { - os << "Demixer " << itsName << std::endl; - os << " skymodel: " << itsSkyName << std::endl; - os << " instrumentmodel: " << itsInstrumentName << std::endl; - os << " default gain: " << itsDefaultGain << std::endl; - os << " max iterations: " << itsMaxIter << std::endl; - itsSelBL.show (os); - if (itsSelBL.hasSelection()) { - os << " demixing " << itsFilter.getInfo().nbaselines() - << " out of " << getInfo().nbaselines() << " baselines (" - << itsFilter.getInfo().antennaUsed().size() - << " out of " << getInfo().antennaUsed().size() - << " stations)" << std::endl; - } - os << " targetsource: " << itsTargetSource << std::endl; - os << " subtractsources: " << itsSubtrSources << std::endl; - uint inx=0; - for (uint i=0; i<itsSubtrSources.size(); ++i ) { - os << " " - << itsPhaseShifts[inx++]->getPhaseCenter() << std::endl; - } - os << " modelsources: " << itsModelSources << std::endl; - for (uint i=0; i<itsModelSources.size(); ++i ) { - os << " " - << itsPhaseShifts[inx++]->getPhaseCenter() << std::endl; - } - os << " extrasources: " << itsExtraSources << std::endl; - for (uint i=0; i<itsExtraSources.size(); ++i ) { - os << " " - << itsPhaseShifts[inx++]->getPhaseCenter() << std::endl; - } -// os << " elevationcutoffs: " << itsCutOffs << std::endl; -// os << " jointsolve: " << itsJointSolve << std::endl; - os << " propagatesolutions: " << std::boolalpha << itsPropagateSolutions - << std::noboolalpha << std::endl; - os << " freqstep: " << itsNChanAvgSubtr << std::endl; - os << " timestep: " << itsNTimeAvgSubtr << std::endl; - os << " demixfreqstep: " << itsNChanAvg << std::endl; - os << " demixtimestep: " << itsNTimeAvg << std::endl; - os << " ntimechunk: " << itsNTimeChunk << std::endl; -// os << " Solve.Options.MaxIter: " << itsSolveOpt.maxIter << endl; -// os << " Solve.Options.EpsValue: " << itsSolveOpt.epsValue << endl; -// os << " Solve.Options.EpsDerivative: " << itsSolveOpt.epsDerivative << endl; -// os << " Solve.Options.ColFactor: " << itsSolveOpt.colFactor << endl; -// os << " Solve.Options.LMFactor: " << itsSolveOpt.lmFactor << endl; -// os << " Solve.Options.BalancedEqs: " << itsSolveOpt.balancedEq << endl; -// os << " Solve.Options.UseSVD: " << itsSolveOpt.useSVD <<endl; - } - - void Demixer::showCounts (std::ostream& os) const - { - os << endl << "Statistics for Demixer " << itsName; - os << endl << "======================" << endl; - os << endl << "Converged: " << itsNConverged << "/" << itsNTimeDemix - << " cells" << endl; - } - - void Demixer::showTimings (std::ostream& os, double duration) const - { - const double self = itsTimer.getElapsed(); - - os << " "; - FlagCounter::showPerc1 (os, self, duration); - os << " Demixer " << itsName << endl; - - os << " "; - FlagCounter::showPerc1 (os, itsTimerPhaseShift.getElapsed(), self); - os << " of it spent in phase shifting/averaging data" << endl; - os << " "; - FlagCounter::showPerc1 (os, itsTimerDemix.getElapsed(), self); - os << " of it spent in calculating decorrelation factors" << endl; - os << " "; - FlagCounter::showPerc1 (os, itsTimerSolve.getElapsed(), self); - os << " of it spent in estimating gains and computing residuals" << endl; - os << " "; - FlagCounter::showPerc1 (os, itsTimerDump.getElapsed(), self); - os << " of it spent in writing gain solutions to disk" << endl; - } - - bool Demixer::process (const DPBuffer& buf) - { - itsTimer.start(); - // Update the count. - itsNTimeIn++; - // Make sure all required data arrays are filled in. - /// itsBufTmp.referenceFilled (buf); - itsBufTmp.copy (buf); - itsInput->fetchUVW (buf, itsBufTmp, itsTimer); - itsInput->fetchWeights (buf, itsBufTmp, itsTimer); - itsInput->fetchFullResFlags (buf, itsBufTmp, itsTimer); - - // Do the filter step first. - itsFilter.process (itsBufTmp); - const DPBuffer& selBuf = itsFilter.getBuffer(); - // Do the next steps (phaseshift and average) on the filter output. - itsTimerPhaseShift.start(); - for (int i=0; i<int(itsFirstSteps.size()); ++i) { - itsFirstSteps[i]->process(selBuf); - } - // Do the average and filter step for the output for all data. - itsAvgStepSubtr->process (itsBufTmp); - itsTimerPhaseShift.stop(); - - // For each itsNTimeAvg times, calculate the phase rotation per direction - // for the selected data. - itsTimerDemix.start(); - addFactors (selBuf, itsFactorBuf); - if (itsNTimeIn % itsNTimeAvg == 0) { - makeFactors (itsFactorBuf, itsFactors[itsNTimeOut], - itsAvgResults[0]->get()[itsNTimeOut].getWeights(), - itsNChanOut, - itsNChanAvg); - // Deproject sources without a model. - deproject (itsFactors[itsNTimeOut], itsAvgResults, itsNTimeOut); - itsFactorBuf = Complex(); // Clear summation buffer - itsNTimeOut++; - } - // Subtract is done with different averaging parameters, so calculate the - // factors for it (again for selected data only). - addFactors (selBuf, itsFactorBufSubtr); - if (itsNTimeIn % itsNTimeAvgSubtr == 0) { - makeFactors (itsFactorBufSubtr, itsFactorsSubtr[itsNTimeOutSubtr], - itsAvgResultSubtr->get()[itsNTimeOutSubtr].getWeights(), - itsNChanOutSubtr, - itsNChanAvgSubtr); - itsFactorBufSubtr = Complex(); // Clear summation buffer - itsNTimeOutSubtr++; - } - itsTimerDemix.stop(); - - // Estimate gains and subtract source contributions when sufficient time - // slots have been collected. - if (itsNTimeOut == itsNTimeChunk) { - handleDemix(); - } - itsTimer.stop(); - return true; - } - - void Demixer::finish() - { - cerr << " " << itsNTimeIn << " time slots to finish in Demixer ..." - << endl; - itsTimer.start(); - - // Process remaining entries. - if (itsNTimeIn > 0) { - // Finish the initial steps (phaseshift and average). - itsTimerPhaseShift.start(); - for (int i=0; i<int(itsFirstSteps.size()); ++i) { - itsFirstSteps[i]->finish(); - } - itsAvgStepSubtr->finish(); - itsTimerPhaseShift.stop(); - // Only average if there is some unaveraged data. - itsTimerDemix.start(); - if (itsNTimeIn % itsNTimeAvg != 0) { - makeFactors (itsFactorBuf, itsFactors[itsNTimeOut], - itsAvgResults[0]->get()[itsNTimeOut].getWeights(), - itsNChanOut, - itsNChanAvg); - // Deproject sources without a model. - deproject (itsFactors[itsNTimeOut], itsAvgResults, itsNTimeOut); - itsNTimeOut++; - } - if (itsNTimeIn % itsNTimeAvgSubtr != 0) { - makeFactors (itsFactorBufSubtr, itsFactorsSubtr[itsNTimeOutSubtr], - itsAvgResultSubtr->get()[itsNTimeOutSubtr].getWeights(), - itsNChanOutSubtr, - itsNChanAvgSubtr); - itsNTimeOutSubtr++; - } - itsTimerDemix.stop(); - // Resize lists of mixing factors to the number of valid entries. - itsFactors.resize(itsNTimeOut); - itsFactorsSubtr.resize(itsNTimeOutSubtr); - - // Demix the source directions. - handleDemix(); - } - - // Write solutions to disk in ParmDB format. - itsTimerDump.start(); - dumpSolutions(); - itsTimerDump.stop(); - - itsTimer.stop(); - - // Let the next steps finish. - getNextStep()->finish(); - } - - void Demixer::handleDemix() - { - if(itsNModel > 0) { - itsTimerSolve.start(); - demix(); - itsTimerSolve.stop(); - // If selection was done, merge the subtract results back into the - // buffer. - } - // If needed, merge in the deselected baselines. - if (itsSelBL.hasSelection()) { - mergeSubtractResult(); - } - - // Clear the input buffers. - for (size_t i=0; i<itsAvgResults.size(); ++i) { - itsAvgResults[i]->clear(); - } - // Let the next step process the data. - for (uint i=0; i<itsNTimeOutSubtr; ++i) { - itsTimer.stop(); - DPBuffer* bufptr; - if (itsSelBL.hasSelection()) { - bufptr = &(itsAvgResultFull->get()[i]); - } else { - bufptr = &(itsAvgResultSubtr->get()[i]); - } - MSReader::flagInfNaN (bufptr->getData(), bufptr->getFlags(), - itsFlagCounter); - getNextStep()->process (*bufptr); - itsTimer.start(); - } - - // Clear the output buffer. - itsAvgResultFull->clear(); - itsAvgResultSubtr->clear(); - - // Reset counters. - itsNTimeIn = 0; - itsNTimeOut = 0; - itsNTimeOutSubtr = 0; - itsTimeIndex += itsNTimeChunk; - } - - void Demixer::mergeSubtractResult() - { - // Merge the selected baselines from the subtract buffer into the - // full buffer. Do it for all timestamps. - for (uint i=0; i<itsNTimeOutSubtr; ++i) { - const Array<Complex>& arr = itsAvgResultSubtr->get()[i].getData(); - size_t nr = arr.shape()[0] * arr.shape()[1]; - const Complex* in = arr.data(); - Complex* out = itsAvgResultFull->get()[i].getData().data(); - for (size_t j=0; j<itsFilter.getIndicesBL().size(); ++j) { - size_t inx = itsFilter.getIndicesBL()[j]; - memcpy (out+inx*nr, in+j*nr, nr*sizeof(Complex)); - } - } - } - - void Demixer::addFactors (const DPBuffer& newBuf, - Array<DComplex>& factorBuf) - { - // Nothing to do if only target direction. - if (itsNDir <= 1) return; - int ncorr = newBuf.getData().shape()[0]; - int nchan = newBuf.getData().shape()[1]; - int nbl = newBuf.getData().shape()[2]; - int ncc = ncorr*nchan; - //# If ever in the future a time dependent phase center is used, - //# the machine must be reset for each new time, thus each new call - //# to process. - // Add the weighted factors for each pair of directions. - // The input factor is the phaseshift from target direction to - // source direction. By combining them you get the shift from one - // source direction to another. - int dirnr = 0; - for (uint i1=0; i1<itsNDir-1; ++i1) { - for (uint i0=i1+1; i0<itsNDir; ++i0) { - if (i0 == itsNDir-1) { - // The last direction is the target direction, so no need to - // combine the factors. Take conj to get shift source to target. -#pragma omp parallel for - for (int i=0; i<nbl; ++i) { - const bool* flagPtr = newBuf.getFlags().data() + i*ncc; - const float* weightPtr = newBuf.getWeights().data() + i*ncc; - DComplex* factorPtr = factorBuf.data() + (dirnr*nbl + i)*ncc; - const DComplex* phasor1 = itsPhaseShifts[i1]->getPhasors().data() - + i*nchan; - for (int j=0; j<nchan; ++j) { - DComplex factor = conj(*phasor1++); - for (int k=0; k<ncorr; ++k) { - if (! *flagPtr) { - *factorPtr += factor * double(*weightPtr); - } - flagPtr++; - weightPtr++; - factorPtr++; - } - } - } // end omp parallel for - } else { - // Different source directions; take both phase terms into account. -#pragma omp parallel for - for (int i=0; i<nbl; ++i) { - const bool* flagPtr = newBuf.getFlags().data() + i*ncc; - const float* weightPtr = newBuf.getWeights().data() + i*ncc; - DComplex* factorPtr = factorBuf.data() + (dirnr*nbl + i)*ncc; - const DComplex* phasor0 = itsPhaseShifts[i0]->getPhasors().data() - + i*nchan; - const DComplex* phasor1 = itsPhaseShifts[i1]->getPhasors().data() - + i*nchan; - for (int j=0; j<nchan; ++j) { - DComplex factor = *phasor0++ * conj(*phasor1++); - for (int k=0; k<ncorr; ++k) { - if (! *flagPtr) { - *factorPtr += factor * double(*weightPtr); - } - flagPtr++; - weightPtr++; - factorPtr++; - } - } - } // end omp parallel for - } - - // Next direction pair. - dirnr++; - } - } - } - - void Demixer::makeFactors (const Array<DComplex>& bufIn, - Array<DComplex>& bufOut, - const Cube<float>& weightSums, - uint nChanOut, - uint nChanAvg) - { - // Nothing to do if only target direction. - if (itsNDir <= 1) return; - ASSERT (! weightSums.empty()); - bufOut.resize (IPosition(5, itsNDir, itsNDir, - itsNCorr, nChanOut, itsNBl)); - bufOut = DComplex(1,0); - int ncc = itsNCorr*nChanOut; - int nccdd = ncc*itsNDir*itsNDir; - int nccin = itsNCorr*itsNChanIn; - // Fill the factors for each combination of different directions. - uint dirnr = 0; - for (uint d0=0; d0<itsNDir; ++d0) { - for (uint d1=d0+1; d1<itsNDir; ++d1) { -#pragma omp parallel for - // Average factors by summing channels. - // Note that summing in time is done in addFactors. - // The sum per output channel is divided by the summed weight. - // Note there is a summed weight per baseline,outchan,corr. - for (int k=0; k<int(itsNBl); ++k) { - const DComplex* phin = bufIn.data() + (dirnr*itsNBl + k)*nccin; - DComplex* ph1 = bufOut.data() + k*nccdd + (d0*itsNDir + d1); - DComplex* ph2 = bufOut.data() + k*nccdd + (d1*itsNDir + d0); - const float* weightPtr = weightSums.data() + k*ncc; - for (uint c0=0; c0<nChanOut; ++c0) { - // Sum the factors for the input channels to average. - DComplex sum[4]; - // In theory the last output channel could consist of fewer - // input channels, so take care of that. - uint nch = std::min(nChanAvg, itsNChanIn-c0*nChanAvg); - for (uint c1=0; c1<nch; ++c1) { - for (uint j=0; j<itsNCorr; ++j) { - sum[j] += *phin++; - } - } - for (uint j=0; j<itsNCorr; ++j) { - *ph1 = sum[j] / double(*weightPtr++); - *ph2 = conj(*ph1); - ph1 += itsNDir*itsNDir; - ph2 += itsNDir*itsNDir; - } - } - } // end omp parallel for - // Next input direction pair. - dirnr++; - } - } - ///cout<<"makefactors "<<weightSums<<bufOut; - } - - void Demixer::deproject (Array<DComplex>& factors, - vector<MultiResultStep*> avgResults, - uint resultIndex) - { - // Sources without a model have to be deprojected. - // Optionally no deprojection of target direction. - uint nrDeproject = itsNDir - itsNModel; - if (itsIgnoreTarget) { - nrDeproject--; - } - // Nothing to do if only target direction or nothing to deproject. - if (itsNDir <= 1 || nrDeproject == 0) return; - // Get pointers to the data for the various directions. - vector<Complex*> resultPtr(itsNDir); - for (uint j=0; j<itsNDir; ++j) { - resultPtr[j] = avgResults[j]->get()[resultIndex].getData().data(); - } - // The projection matrix is given by - // P = I - A * inv(A.T.conj * A) * A.T.conj - // where A is the last column of the demixing matrix M. - // The BBS equations get: - // P * M' * v_predict = P * v_averaged - // where M' is obtained by removing the last column of demixing matrix M. - // The dimensions of the matrices/vectors are: - // P : NxN - // M' : Nx(N-1) - // v_predict : (N-1) x 1 - // v_averaged: N x 1 - // where N is the number of modeled sources to use in demixing. - // In the general case S sources might not have a source model. - // In that case A is the NxS matrix containing all these columns - // from M and M' is the Nx(N-S) matrix without all these columns. - - // Calculate P for all baselines,channels,correlations. - IPosition shape = factors.shape(); - int nvis = shape[2] * shape[3] * shape[4]; - shape[1] = itsNModel; - Array<DComplex> newFactors (shape); - IPosition inShape (2, itsNDir, itsNDir); - IPosition outShape(2, itsNDir, itsNModel); -///#pragma omp parallel - { - Matrix<DComplex> a(itsNDir, nrDeproject); - Matrix<DComplex> ma(itsNDir, itsNModel); - vector<DComplex> vec(itsNDir); - ///#pragma omp for - for (int i=0; i<nvis; ++i) { - // Split the matrix into the modeled and deprojected sources. - // Copy the columns to the individual matrices. - const DComplex* inptr = factors.data() + i*itsNDir*itsNDir; - DComplex* outptr = newFactors.data() + i*itsNDir*itsNModel; - Matrix<DComplex> out (outShape, outptr, SHARE); - // Copying a bit of data is probably faster than taking a matrix - // subset. - objcopy (ma.data(), inptr, itsNDir*itsNModel); - objcopy (a.data(), inptr + itsNDir*itsNModel, itsNDir*nrDeproject); - // Calculate conjugated transpose of A, multiply with A, and invert. - Matrix<DComplex> at(adjoint(a)); - Matrix<DComplex> ata(invert(product(at, a))); - if (ata.empty()) { - ata.resize (nrDeproject, nrDeproject); - } - DBGASSERT(ata.ncolumn()==nrDeproject && ata.nrow()==nrDeproject); - // Calculate P = I - A * ata * A.T.conj - Matrix<DComplex> aata(product(a,ata)); - Matrix<DComplex> p (-product(product(a, ata), at)); - Vector<DComplex> diag(p.diagonal()); - diag += DComplex(1,0); - // Multiply the demixing factors with P (get stored in newFactors). - out = product(p, ma); - // Multiply the averaged data point with P. - std::fill (vec.begin(), vec.end(), DComplex()); - for (uint j=0; j<itsNDir; ++j) { - for (uint k=0; k<itsNDir; ++k) { - vec[k] += DComplex(resultPtr[j][i]) * p(k,j); - } - } - // Put result back in averaged data for those sources. - for (uint j=0; j<itsNDir; ++j) { - resultPtr[j][i] = vec[j]; - } - } - } - // Set the new demixing factors. - factors.reference (newFactors); - } - - namespace { - struct ThreadPrivateStorage - { - vector<double> unknowns; - casacore::Matrix<double> uvw; - vector<casacore::Cube<dcomplex> > model; - casacore::Cube<dcomplex> model_subtr; - size_t count_converged; - }; - - void initThreadPrivateStorage(ThreadPrivateStorage &storage, - size_t nDirection, size_t nStation, size_t nBaseline, size_t nChannel, - size_t nChannelSubtr) - { - storage.unknowns.resize(nDirection * nStation * 8); - storage.uvw.resize(3, nStation); - storage.model.resize(nDirection); - for (uint dir=0;dir<nDirection; ++dir) { - storage.model[dir].resize(4, nChannel, nBaseline); - } - storage.model_subtr.resize(4, nChannelSubtr, nBaseline); - storage.count_converged = 0; - } - } //# end unnamed namespace - - void Demixer::demix() - { - const size_t nThread = OpenMP::maxThreads(); - const size_t nTime = itsAvgResults[0]->size(); - const size_t nTimeSubtr = itsAvgResultSubtr->size(); - const size_t multiplier = itsNTimeAvg / itsNTimeAvgSubtr; - const size_t nDr = itsNModel; - const size_t nDrSubtr = itsSubtrSources.size(); - const size_t nSt = itsNStation; - const size_t nBl = itsBaselines.size(); - const size_t nCh = itsFreqDemix.size(); - const size_t nChSubtr = itsFreqSubtr.size(); - const size_t nCr = 4; - - vector<ThreadPrivateStorage> threadStorage(nThread); - for(vector<ThreadPrivateStorage>::iterator it = threadStorage.begin(), - end = threadStorage.end(); it != end; ++it) - { - initThreadPrivateStorage(*it, nDr, nSt, nBl, nCh, nChSubtr); - - // Copy the previous solution to the thread private vectors of unknowns. - // When solution propagation is disabled, itsPrevSolution is never - // updated. It then contains 1.0+0.0i for the diagonal terms and - // 0.0+0.0i for the off-diagonal terms. Thus, when solution propagation - // is disabled this statement effectively re-initializes the thread - // private vectors of unknowns. - copy(itsPrevSolution.begin(), itsPrevSolution.end(), - it->unknowns.begin()); - } - - const_cursor<Baseline> cr_baseline(&(itsBaselines[0])); - -#pragma omp parallel for - for(size_t ts = 0; ts < nTime; ++ts) - { - const size_t thread = OpenMP::threadNum(); - ThreadPrivateStorage &storage = threadStorage[thread]; - - // If solution propagation is disabled, re-initialize the thread-private - // vector of unknowns. - if(!itsPropagateSolutions) - { - copy(itsPrevSolution.begin(), itsPrevSolution.end(), - storage.unknowns.begin()); - } - - // Simulate. - // - // Model visibilities for each direction of interest will be computed - // and stored. - size_t stride_model[3] = {1, nCr, nCr * nCh}; - fill(storage.model.begin(), storage.model.end(), 0.); - for(size_t dr = 0; dr < nDr; ++dr) - { - nsplitUVW(itsUVWSplitIndex, itsBaselines, itsAvgResults[dr]->get()[ts].getUVW(), storage.uvw); - ///cout<<"uvw"<<dr<<'='<<storage.uvw<<endl; - - Simulator simulator(itsPatchList[dr]->position(), nSt, nBl, nCh, - itsBaselines, itsFreqDemix, storage.uvw, - storage.model[dr]); - for(size_t i = 0; i < itsPatchList[dr]->nComponents(); ++i) - { - simulator.simulate(itsPatchList[dr]->component(i)); - } - - } - ///cout<<"modelvis="<<storage.model<<endl; - - // Estimate Jones matrices. - // - // A Jones matrix will be estimated for each pair of station and - // direction. - // - // A single (overdetermined) non-linear set of equations for all - // stations and directions is solved iteratively. The influence of - // each direction on each other direction is given by the mixing - // matrix. - const_cursor<bool> cr_flag = - casa_const_cursor(itsAvgResults[0]->get()[ts].getFlags()); - const_cursor<float> cr_weight = - casa_const_cursor(itsAvgResults[0]->get()[ts].getWeights()); - const_cursor<dcomplex> cr_mix = casa_const_cursor(itsFactors[ts]); - ///cout << "demixfactor "<<ts<<" = "<<itsFactors[ts]<<endl; - - vector<const_cursor<fcomplex> > cr_data(nDr); - vector<const_cursor<dcomplex> > cr_model(nDr); - for(size_t dr = 0; dr < nDr; ++dr) - { - cr_data[dr] = - casa_const_cursor(itsAvgResults[dr]->get()[ts].getData()); - cr_model[dr] = - const_cursor<dcomplex>(storage.model[dr].data(), 3, - stride_model); - } - - bool converged = estimate(nDr, nSt, nBl, nCh, cr_baseline, cr_data, - cr_model, cr_flag, cr_weight, cr_mix, &(storage.unknowns[0]), - itsMaxIter); - if(converged) - { - ++storage.count_converged; - } - - // Compute the residual. - // - // All the so-called "subtract sources" are subtracted from the - // observed data. The previously estimated Jones matrices, as well as - // the appropriate mixing weight are applied before subtraction. - // - // Note that the resolution of the residual can differ from the - // resolution at which the Jones matrices were estimated. - for(size_t ts_subtr = multiplier * ts, ts_subtr_end = min(ts_subtr - + multiplier, nTimeSubtr); ts_subtr != ts_subtr_end; ++ts_subtr) - { - for(size_t dr = 0; dr < nDrSubtr; ++dr) - { - // Re-use simulation used for estimating Jones matrices if possible. - cursor<dcomplex> cr_model_subtr(storage.model[dr].data(), - 3, stride_model); - - // Re-simulate if required. - if(multiplier != 1 || nCh != nChSubtr) - { - nsplitUVW(itsUVWSplitIndex, itsBaselines, itsAvgResultSubtr->get()[ts_subtr].getUVW(), storage.uvw); - - // Rotate the UVW coordinates for the target direction to the - // direction of source to subtract. This is required because at - // the resolution of the residual the UVW coordinates for - // directions other than the target are unavailable (unless the - // resolution of the residual is equal to the resolution at which - // the Jones matrices were estimated, of course). - rotateUVW(itsPhaseRef, itsPatchList[dr]->position(), nSt, - storage.uvw.data()); - - // Zero the visibility buffer. - storage.model_subtr=dcomplex(); - - // Simulate visibilities at the resolution of the residual. - size_t stride_model_subtr[3] = {1, nCr, nCr * nChSubtr}; - cr_model_subtr = cursor<dcomplex>(storage.model_subtr.data(), 3, - stride_model_subtr); - - Simulator simulator(itsPatchList[dr]->position(), nSt, nBl, - nChSubtr, itsBaselines, itsFreqSubtr, - storage.uvw, storage.model_subtr); - for(size_t i = 0; i < itsPatchList[dr]->nComponents(); ++i) - { - simulator.simulate(itsPatchList[dr]->component(i)); - } - } - - // Apply Jones matrices. - size_t stride_unknowns[2] = {1, 8}; - const_cursor<double> cr_unknowns(&(storage.unknowns[dr * nSt * 8]), - 2, stride_unknowns); - - apply(nBl, nChSubtr, cr_baseline, cr_unknowns, cr_model_subtr); - - // Subtract the source contribution from the data. - cursor<fcomplex> cr_residual = - casa_cursor(itsAvgResultSubtr->get()[ts_subtr].getData()); - - // Construct a cursor to iterate over a slice of the mixing matrix - // at the resolution of the residual. The "to" and "from" direction - // are fixed. Since the full mixing matrix is 5-D, the slice is - // therefore 3-D. Each individual value in the slice quantifies the - // influence of the source to subtract on the target direction for - // a particular correlation, channel, and baseline. - // - // The target direction is the direction with the highest index by - // convention, i.e. index itsNDir - 1. The directions to subtract - // have the lowest indices by convention, i.e. indices - // [0, nDrSubtr). - const IPosition &stride_mix_subtr = - itsFactorsSubtr[ts_subtr].steps(); - size_t stride_mix_subtr_slice[3] = { - static_cast<size_t>(stride_mix_subtr[2]), - static_cast<size_t>(stride_mix_subtr[3]), - static_cast<size_t>(stride_mix_subtr[4]) - }; - ASSERT(stride_mix_subtr_slice[0] == itsNDir * itsNDir - && stride_mix_subtr_slice[1] == itsNDir * itsNDir * nCr - && stride_mix_subtr_slice[2] == itsNDir * itsNDir * nCr * nChSubtr); - - IPosition offset(5, itsNDir - 1, dr, 0, 0, 0); - const_cursor<dcomplex> cr_mix_subtr = - const_cursor<dcomplex>(&(itsFactorsSubtr[ts_subtr](offset)), 3, - stride_mix_subtr_slice); - - // Subtract the source. - subtract(nBl, nChSubtr, cr_baseline, cr_residual, cr_model_subtr, - cr_mix_subtr); - } - } - - // Copy solutions to global solution array. - copy(storage.unknowns.begin(), storage.unknowns.end(), - &(itsUnknowns[(itsTimeIndex + ts) * nDr * nSt * 8])); - } - - // Store last known solutions. - if(itsPropagateSolutions && nTime > 0) - { - copy(&(itsUnknowns[(itsTimeIndex + nTime - 1) * nDr * nSt * 8]), - &(itsUnknowns[(itsTimeIndex + nTime) * nDr * nSt * 8]), - itsPrevSolution.begin()); - } - - // Update convergence count. - for(size_t i = 0; i < nThread; ++i) - { - itsNConverged += threadStorage[i].count_converged; - } - } - - void Demixer::dumpSolutions() - { - // Construct solution grid. - const Vector<double>& freq = getInfo().chanFreqs(); - const Vector<double>& freqWidth = getInfo().chanWidths(); - BBS::Axis::ShPtr freqAxis(new BBS::RegularAxis(freq[0] - freqWidth[0] - * 0.5, freqWidth[0], 1)); - BBS::Axis::ShPtr timeAxis(new BBS::RegularAxis(getInfo().startTime() - - getInfo().timeInterval() * 0.5, itsTimeIntervalAvg, itsNTimeDemix)); - BBS::Grid solGrid(freqAxis, timeAxis); - - // Create and initialize ParmDB. - BBS::ParmDB parmDB(BBS::ParmDBMeta("casa", itsInstrumentName), true); - BBS::ParmSet parmSet; - BBS::ParmCache parmCache(parmSet, solGrid.getBoundingBox()); - - // Store the (freq, time) resolution of the solutions. - vector<double> resolution(2); - resolution[0] = freqWidth[0]; - resolution[1] = itsTimeIntervalAvg; - parmDB.setDefaultSteps(resolution); - - // Map station indices in the solution array to the corresponding antenna - // names. This is required because solutions are only produced for - // stations that participate in one or more baselines. Due to the baseline - // selection or missing baselines, solutions may be available for less - // than the total number of station available in the observation. - const DPInfo &info = itsFilter.getInfo(); - const vector<int> &antennaUsed = info.antennaUsed(); - const Vector<String> &antennaNames = info.antennaNames(); - - vector<BBS::Parm> parms; - for(size_t dr = 0; dr < itsNModel; ++dr) { - for(size_t st = 0; st < itsNStation; ++st) { - string name(antennaNames[antennaUsed[st]]); - string suffix(name + ":" + itsAllSources[dr]); - - parms.push_back(BBS::Parm(parmCache, parmSet.addParm(parmDB, - "DirectionalGain:0:0:Real:" + suffix))); - parms.push_back(BBS::Parm(parmCache, parmSet.addParm(parmDB, - "DirectionalGain:0:0:Imag:" + suffix))); - - parms.push_back(BBS::Parm(parmCache, parmSet.addParm(parmDB, - "DirectionalGain:0:1:Real:" + suffix))); - parms.push_back(BBS::Parm(parmCache, parmSet.addParm(parmDB, - "DirectionalGain:0:1:Imag:" + suffix))); - - parms.push_back(BBS::Parm(parmCache, parmSet.addParm(parmDB, - "DirectionalGain:1:0:Real:" + suffix))); - parms.push_back(BBS::Parm(parmCache, parmSet.addParm(parmDB, - "DirectionalGain:1:0:Imag:" + suffix))); - - parms.push_back(BBS::Parm(parmCache, parmSet.addParm(parmDB, - "DirectionalGain:1:1:Real:" + suffix))); - parms.push_back(BBS::Parm(parmCache, parmSet.addParm(parmDB, - "DirectionalGain:1:1:Imag:" + suffix))); - } - } - - // Cache parameter values. - parmCache.cacheValues(); - - // Assign solution grid to parameters. - for(size_t i = 0; i < parms.size(); ++i) { - parms[i].setSolveGrid(solGrid); - } - - // Write solutions. - for(size_t ts = 0; ts < itsNTimeDemix; ++ts) { - double *unknowns = &(itsUnknowns[ts * itsNModel * itsNStation * 8]); - for(size_t i = 0; i < parms.size(); ++i) { - parms[i].setCoeff(BBS::Location(0, ts), unknowns + i, 1); - } - } - - // Flush solutions to disk. - parmCache.flush(); - } - - namespace - { - string toString (double value) - { - ostringstream os; - os << setprecision(16) << value; - return os.str(); - } - } //# end unnamed namespace - - } //# end namespace DPPP -} //# end namespace LOFAR diff --git a/CEP/DP3/DPPP/src/DemixerNew.cc b/CEP/DP3/DPPP/src/DemixerNew.cc deleted file mode 100644 index e4024c203d0..00000000000 --- a/CEP/DP3/DPPP/src/DemixerNew.cc +++ /dev/null @@ -1,517 +0,0 @@ -//# DemixerNew.cc: DPPP step class to subtract A-team sources in adaptive way -//# Copyright (C) 2011 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: DemixerNew.cc 24221 2013-03-12 12:24:48Z diepen $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DemixerNew.h> -#include <DPPP/DemixWorker.h> -#include <DPPP/DemixInfo.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <ParmDB/ParmDB.h> -#include <ParmDB/ParmValue.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <Common/OpenMP.h> -#include <Common/StreamUtil.h> -#include <Common/lofar_iostream.h> -#include <Common/lofar_iomanip.h> - -#include <casacore/casa/Arrays/ArrayPartMath.h> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - using LOFAR::operator<<; - - DemixerNew::DemixerNew (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsDemixInfo (parset, prefix), - itsInstrumentName (parset.getString(prefix+"instrumentmodel", - "instrument")), - itsFilter (input, itsDemixInfo.selBL()), - itsNTime (0), - itsNTimeOut (0), - itsNChunk (0) - { - ASSERTSTR (! itsInstrumentName.empty(), - "An empty name is given for the instrument model"); - } - - void DemixerNew::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - // Update the info of this object. - info().setNeedVisData(); - info().setWriteData(); - info().setWriteFlags(); - // Handle possible data selection. - itsFilter.updateInfo (getInfo()); - // Update itsDemixInfo and info(). - itsDemixInfo.update (itsFilter.getInfo(), info()); - // Size the buffers. - itsBufIn.resize (itsDemixInfo.ntimeChunk() * itsDemixInfo.chunkSize()); - itsBufOut.resize(itsDemixInfo.ntimeChunk() * itsDemixInfo.ntimeOutSubtr()); - itsSolutions.resize(itsDemixInfo.ntimeChunk() * itsDemixInfo.ntimeOut()); - // Create a worker per thread. - int nthread = OpenMP::maxThreads(); - itsWorkers.reserve (nthread); - for (int i=0; i<nthread; ++i) { - itsWorkers.push_back (DemixWorker (itsInput, itsName, itsDemixInfo, - infoIn, i)); - } - } - - void DemixerNew::show (ostream& os) const - { - os << "DemixerNew " << itsName << endl; - os << " instrumentmodel: " << itsInstrumentName << endl; - itsDemixInfo.show (os); - if (itsDemixInfo.selBL().hasSelection()) { - os << " demixing " << itsFilter.getInfo().nbaselines() - << " out of " << getInfo().nbaselines() << " baselines (" - << itsFilter.getInfo().antennaUsed().size() - << " out of " << getInfo().antennaUsed().size() - << " stations)" << std::endl; - } - } - - void DemixerNew::showCounts (ostream& os) const - { - os << endl << "Statistics for SmartDemixer " << itsName; - os << endl << "===========================" << endl; - // Add the statistics of all workers. - uint nsolves = 0; - uint nconverged = 0; - uint niter = 0; - uint nnodemix = 0; - uint nincludeStrong = 0; - uint nincludeClose = 0; - uint nignore = 0; - uint ndeproject = 0; - // Sum the counts from all workers. - uint ndir = itsDemixInfo.ateamList().size(); - Vector<uint> nsources(ndir, 0); - Vector<uint> nstation(itsDemixInfo.nstation(), 0); - Matrix<uint> statsrcs(ndir, nstation.size(), 0); - Matrix<double> amplSubtrMean (itsDemixInfo.nbl(), ndir+1, 0.); - Matrix<double> amplSubtrM2 (itsDemixInfo.nbl(), ndir+1, 0.); - Matrix<size_t> amplSubtrNr (itsDemixInfo.nbl(), ndir+1, 0); - double* amplmean = amplSubtrMean.data(); - double* amplm2 = amplSubtrM2.data(); - size_t* amplnr = amplSubtrNr.data(); - for (size_t i=0; i<itsWorkers.size(); ++i) { - nsolves += itsWorkers[i].nSolves(); - nconverged += itsWorkers[i].nConverged(); - niter += itsWorkers[i].nIterations(); - nnodemix += itsWorkers[i].nNoDemix(); - nincludeStrong += itsWorkers[i].nIncludeStrongTarget(); - nincludeClose += itsWorkers[i].nIncludeCloseTarget(); - nignore += itsWorkers[i].nIgnoreTarget(); - ndeproject += itsWorkers[i].nDeprojectTarget(); - nsources += itsWorkers[i].nsourcesDemixed(); - nstation += itsWorkers[i].nstationsDemixed(); - statsrcs += itsWorkers[i].statSourceDemixed(); - const double* partmean = itsWorkers[i].amplSubtrMean().data(); - const double* partm2 = itsWorkers[i].amplSubtrM2().data(); - const size_t* partnr = itsWorkers[i].amplSubtrNr().data(); - for (uint j=0; j<amplSubtrNr.size(); ++j) { - // Calculate overall mean and m2 for each baseline/direction. - addMeanM2 (amplmean[j], amplm2[j], amplnr[j], - partmean[j], partm2[j], partnr[j]); - } - } - uint ntimes = (nnodemix + nignore + ndeproject + - nincludeStrong + nincludeClose); - // Show statistics. - showStat (os, nconverged, nsolves, "Converged solves: ", "cells"); - os << " Average nr of iterations in converged solves: " - << uint(double(niter)/nconverged + 0.5) << endl; - showStat (os, nnodemix, ntimes, "No demixing: ", "times"); - showStat (os, nignore, ntimes, "Target ignored: ", "times"); - showStat (os, ndeproject, ntimes, "Target deprojected: ", "times"); - showStat (os, nincludeStrong, ntimes, "Strong target included:", "times"); - showStat (os, nincludeClose, ntimes, "Close target included: ", "times"); - // Show how often a source/station is demixed. - os << endl << "Percentage of times a station/source is demixed:" << endl; - os << setw(15) << " "; - for (size_t dr=0; dr<ndir; ++dr) { - os << setw(8) << itsDemixInfo.ateamList()[dr]->name().substr(0,8); - } - os << " Overall" << endl; - for (size_t st=0; st<nstation.size(); ++st) { - os << setw(4) << st << ' '; - // Show 10 characters of the source names; append with blanks as needed. - uint inx = itsFilter.getInfo().antennaUsed()[st]; - string nm = itsFilter.getInfo().antennaNames()[inx]; - os << nm.substr(0,10); - if (nm.size() < 10) { - os << setw(10 - nm.size()) << ' '; - } - for (size_t dr=0; dr<ndir; ++dr) { - os << " "; - showPerc1 (os, statsrcs(dr,st) / double(ntimes)); - } - os << " "; - showPerc1 (os, nstation(st) / double(ntimes)); - os << endl; - } - os << " Overall" << setw(3) << ' '; - for (size_t dr=0; dr<ndir; ++dr) { - os << " "; - showPerc1 (os, nsources[dr] / double(ntimes)); - } - os << endl; - - // Show percentage subtracted. - if (itsDemixInfo.doSubtract()) { - os << endl << "Mean/stddev percentage of subtracted Stokes I amplitude" - << " for the middle channel" << endl; - os << setw(8) << ' '; - for (size_t dr=0; dr<ndir; ++dr) { - if (nsources[dr] > 0) { - // Print name a bit right of the center. - const string& nm = itsDemixInfo.ateamList()[dr]->name().substr(0,13); - if (nm.size() > 10) { - cout << setw(13) << nm; - } else { - int szws = 13 - nm.size(); // whitespace - os << setw(szws/2+1) << ' '; - os << nm; - os << setw(szws-szws/2-1) << ' '; - } - } - } - os << setw(10) << "Total" << endl; - os << "baseline"; - for (size_t dr=0; dr<ndir; ++dr) { - if (nsources[dr] > 0) { - os << " mean stddev"; - } - } - os << " mean stddev" << endl; - vector<double> totsump(ndir+1, 0.); - vector<double> totm2p (ndir+1, 0.); - vector<size_t> totnrp (ndir+1, 0); - for (int bl=0; bl<amplSubtrMean.shape()[0]; ++bl) { - // Do not show if nothing subtracted for this baseline. - // Last entry contains the sum over all directions!! - if (amplSubtrNr(bl,ndir)) { - os << setw(4) << itsDemixInfo.getAnt1()[bl] << '-' - << setw(2) << itsDemixInfo.getAnt2()[bl] << " "; - for (uint dr=0; dr<ndir+1; ++dr) { - if (dr == ndir || nsources[dr] > 0) { - showPerc1 (os, amplSubtrMean(bl,dr)); - double variance = 0; - if (amplSubtrNr(bl,dr) > 1) { - variance = amplSubtrM2(bl,dr) / (amplSubtrNr(bl,dr) - 1); - } - showPerc1 (os, sqrt(variance)); - os << ' '; - addMeanM2 (totsump[dr], totm2p[dr], totnrp[dr], - amplSubtrMean(bl,dr), amplSubtrM2(bl,dr), - amplSubtrNr(bl,dr)); - } - } - os << endl; - } // end if show - } // end for bl - os << " Total "; - for (uint dr=0; dr<ndir+1; ++dr) { - if (dr == ndir || nsources[dr] > 0) { - double variance = 0; - if (totnrp[dr] > 1) { - variance = totm2p[dr] / (totnrp[dr] - 1); - } - showPerc1 (os, totsump[dr]); - showPerc1 (os, sqrt(variance)); - os << ' '; - } - } - os << endl; - } - } - - void DemixerNew::addMeanM2 (double& mean, double& m2, size_t& nr, - double partmean, double partm2, - size_t partnr) const - { - // Calculate overall mean and m2 (for stddev) from two partitions. - // See en.wikipedia.org/wiki/Algorithms_for_calculating_variance - if (partnr > 0) { - double delta = partmean - mean; - double mp = mean*nr + partmean*partnr; - double nab = double(nr) / (nr+partnr) * partnr; - nr += partnr; - mean = mp / nr; - m2 += partm2 + delta*nab*delta; - } - } - - void DemixerNew::showStat (ostream& os, double n, double ntot, - const string& str1, const string& str2) const - { - os << str1 << ' '; - showPerc1 (os, ntot==0 ? 0 : n/ntot); - os << " ("<< n << ' '<< str2 << " out of " << ntot << ')' << endl; - } - - void DemixerNew::showPerc1 (ostream& os, float perc) const - { - int p = int(1000*perc + 0.5); - os << std::setw(3) << p/10 << '.' << p%10 << '%'; - } - - void DemixerNew::showTimings (std::ostream& os, double duration) const - { - double self = itsTimer.getElapsed(); - double demix = itsTimerDemix.getElapsed(); - double tottime = 0; - double coatime = 0; - double psatime = 0; - double demtime = 0; - double pretime = 0; - double soltime = 0; - double subtime = 0; - for (uint i=0; i<itsWorkers.size(); ++i) { - tottime += itsWorkers[i].getTotalTime(); - coatime += itsWorkers[i].getCoarseTime(); - psatime += itsWorkers[i].getPhaseShiftTime(); - demtime += itsWorkers[i].getDemixTime(); - pretime += itsWorkers[i].getPredictTime(); - soltime += itsWorkers[i].getSolveTime(); - subtime += itsWorkers[i].getSubtractTime(); - } - os << " "; - FlagCounter::showPerc1 (os, self, duration); - os << " DemixerNew " << itsName << endl; - os << " "; - FlagCounter::showPerc1 (os, demix, self); - os << " of it spent in demixing the data of which" << endl; - os << " "; - FlagCounter::showPerc1 (os, coatime, tottime); - os << " in predicting coarse source models" << endl; - os << " "; - FlagCounter::showPerc1 (os, psatime, tottime); - os << " in phase shifting/averaging data" << endl; - os << " "; - FlagCounter::showPerc1 (os, demtime, tottime); - os << " in calculating decorrelation factors" << endl; - os << " "; - FlagCounter::showPerc1 (os, pretime, tottime); - os << " in predicting demix source models" << endl; - os << " "; - FlagCounter::showPerc1 (os, soltime, tottime); - os << " in solving complex gains" << endl; - os << " "; - FlagCounter::showPerc1 (os, subtime, tottime); - os << " in subtracting source models" << endl; - os << " "; - FlagCounter::showPerc1 (os, itsTimerDump.getElapsed(), self); - os << " of it spent in writing gain solutions to disk" << endl; - } - - bool DemixerNew::process (const DPBuffer& buf) - { - itsTimer.start(); - // Collect sufficient data buffers. - // Make sure all required data arrays are filled in. - DPBuffer& newBuf = itsBufIn[itsNTime]; - newBuf.copy (buf); - itsInput->fetchUVW(buf, newBuf, itsTimer); - itsInput->fetchWeights(buf, newBuf, itsTimer); - itsInput->fetchFullResFlags(buf, newBuf, itsTimer); - // Process the data if entire buffer is filled. - if (++itsNTime >= itsBufIn.size()) { - processData(); - itsNTime = 0; - } - itsTimer.stop(); - return true; - } - - void DemixerNew::processData() - { - itsTimerDemix.start(); - // Last batch might contain fewer time slots. - uint timeWindowIn = itsDemixInfo.chunkSize(); - uint timeWindowOut = itsDemixInfo.ntimeOutSubtr(); - uint timeWindowSol = itsDemixInfo.ntimeOut(); - int lastChunk = (itsNTime - 1) / timeWindowIn; - int lastNTimeIn = itsNTime - lastChunk*timeWindowIn; - int ntimeOut = ((itsNTime + itsDemixInfo.ntimeAvgSubtr() - 1) - / itsDemixInfo.ntimeAvgSubtr()); - int ntimeSol = ((itsNTime + itsDemixInfo.ntimeAvg() - 1) - / itsDemixInfo.ntimeAvg()); -#pragma omp parallel for schedule(dynamic) - for (int i=0; i<=lastChunk; ++i) { - if (i == lastChunk) { - itsWorkers[OpenMP::threadNum()].process - (&(itsBufIn[i*timeWindowIn]), lastNTimeIn, - &(itsBufOut[i*timeWindowOut]), - &(itsSolutions[i*timeWindowSol]), - itsNChunk+i); - } else { - itsWorkers[OpenMP::threadNum()].process - (&(itsBufIn[i*timeWindowIn]), timeWindowIn, - &(itsBufOut[i*timeWindowOut]), - &(itsSolutions[i*timeWindowSol]), - itsNChunk+i); - } - } - itsNChunk += lastChunk+1; - itsTimerDemix.stop(); - // Write the solutions into the instrument ParmDB. - // Let the next steps process the results. - // This could be done in parallel. - ///#pragma omp parallel for num_thread(2) - for (int i=0; i<2; ++i) { - if (i == 0) { - itsTimerDump.start(); - double startTime = (itsBufIn[0].getTime() + - 0.5 * itsBufIn[0].getExposure()); - writeSolutions (startTime, ntimeSol); - itsTimerDump.stop(); - } else { - itsTimer.stop(); - itsTimerNext.start(); - for (int j=0; j<ntimeOut; ++j) { - getNextStep()->process (itsBufOut[j]); - itsNTimeOut++; - } - itsTimerNext.stop(); - itsTimer.start(); - } - } - } - - void DemixerNew::finish() - { - cerr << " " << itsNTime << " time slots to finish in SmartDemixer ..." - << endl; - itsTimer.start(); - // Process remaining entries. - if (itsNTime > 0) { - processData(); - } - itsTimer.stop(); - // Let the next steps finish. - getNextStep()->finish(); - } - - void DemixerNew::writeSolutions (double startTime, int ntime) - { - if (itsDemixInfo.verbose() > 12) { - for (int i=0; i<ntime; ++i) { - cout << "solution " << i << endl; - const double* sol = &(itsSolutions[i][0]); - for (size_t dr=0; dr<itsSolutions[i].size()/(8*itsDemixInfo.nstation()); ++dr) { - for (size_t st=0; st<itsDemixInfo.nstation(); ++ st) { - cout << dr<<','<<st<<' '; - print (cout, sol, sol+8); - cout << endl; - sol += 8; - } - } - } - } - /// todo: skip solutions that are all 0. - // Construct solution grid. - const Vector<double>& freq = getInfo().chanFreqs(); - const Vector<double>& freqWidth = getInfo().chanWidths(); - BBS::Axis::ShPtr freqAxis(new BBS::RegularAxis(freq[0] - freqWidth[0] - * 0.5, freqWidth[0], 1)); - BBS::Axis::ShPtr timeAxis(new BBS::RegularAxis - (startTime, - itsDemixInfo.timeIntervalAvg(), ntime)); - BBS::Grid solGrid(freqAxis, timeAxis); - // Create domain grid. - BBS::Axis::ShPtr tdomAxis(new BBS::RegularAxis - (startTime, - itsDemixInfo.timeIntervalAvg() * ntime, 1)); - BBS::Grid domainGrid(freqAxis, tdomAxis); - - // Open the ParmDB at the first write. - // In that way the instrumentmodel ParmDB can be in the MS directory. - if (! itsParmDB) { - itsParmDB = boost::shared_ptr<BBS::ParmDB> - (new BBS::ParmDB(BBS::ParmDBMeta("casa", itsInstrumentName), - true)); - itsParmDB->lock(); - // Store the (freq, time) resolution of the solutions. - vector<double> resolution(2); - resolution[0] = freqWidth[0]; - resolution[1] = itsDemixInfo.timeIntervalAvg(); - itsParmDB->setDefaultSteps(resolution); - } - // Write the solutions per parameter. - const char* str01[] = {"0:","1:"}; - const char* strri[] = {"Real:","Imag:"}; - Matrix<double> values(1, ntime); - uint seqnr = 0; - for (size_t dr=0; dr<itsDemixInfo.ateamList().size()+1; ++dr) { - for (size_t st=0; st<itsDemixInfo.nstation(); ++st) { - string suffix(itsDemixInfo.antennaNames()[st]); - if (dr == itsDemixInfo.ateamList().size()) { - suffix += ":Target"; - } else { - suffix += ":" + itsDemixInfo.ateamList()[dr]->name(); - } - for (int i=0; i<2; ++i) { - for (int j=0; j<2; j++) { - for (int k=0; k<2; ++k) { - string name(string("DirectionalGain:") + - str01[i] + str01[j] + strri[k] + suffix); - // Collect its solutions for all times in a single array. - for (int ts=0; ts<ntime; ++ts) { - values(0, ts) = itsSolutions[ts][seqnr]; - } - seqnr++; - BBS::ParmValue::ShPtr pv(new BBS::ParmValue()); - pv->setScalars (solGrid, values); - BBS::ParmValueSet pvs(domainGrid, - vector<BBS::ParmValue::ShPtr>(1, pv)); - map<string,int>::const_iterator pit = itsParmIdMap.find(name); - if (pit == itsParmIdMap.end()) { - // First time, so a new nameId will be set. - int nameId = -1; - itsParmDB->putValues (name, nameId, pvs); - itsParmIdMap[name] = nameId; - } else { - // Parm has been put before. - int nameId = pit->second; - itsParmDB->putValues (name, nameId, pvs); - } - } - } - } - } - } - } - -} //# end namespace DPPP -} //# end namespace LOFAR diff --git a/CEP/DP3/DPPP/src/DummyStep.cc b/CEP/DP3/DPPP/src/DummyStep.cc deleted file mode 100644 index 4fb62624db7..00000000000 --- a/CEP/DP3/DPPP/src/DummyStep.cc +++ /dev/null @@ -1,91 +0,0 @@ -//# GainCal.cc: DPPP step class to DummyStep visibilities -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/DummyStep.h> - -#include <iostream> -#include <Common/ParameterSet.h> -#include <Common/Timer.h> - -#include <stddef.h> -#include <string> -#include <sstream> -#include <utility> -#include <vector> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - DummyStep::DummyStep (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput(input) - { - - } - - DummyStep::~DummyStep() - {} - - void DummyStep::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - } - - void DummyStep::show (std::ostream& os) const - { - os << "DummyStep " << itsName << endl; - } - - void DummyStep::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " DummyStep " << itsName << endl; - } - - bool DummyStep::process (const DPBuffer& bufin) - { - itsTimer.start(); - itsBuffer.copy (bufin); - itsInput->fetchUVW(bufin, itsBuffer, itsTimer); - itsInput->fetchWeights(bufin, itsBuffer, itsTimer); - - itsTimer.stop(); - getNextStep()->process(itsBuffer); - return false; - } - - - void DummyStep::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/EstimateMixed.cc b/CEP/DP3/DPPP/src/EstimateMixed.cc deleted file mode 100644 index b2eb4218e61..00000000000 --- a/CEP/DP3/DPPP/src/EstimateMixed.cc +++ /dev/null @@ -1,341 +0,0 @@ -//# EstimateMixed.cc: Estimate Jones matrices for several directions -//# simultaneously. A separate data stream is used for each direction. The -//# mixing coefficients quantify the influence of each direction on each of the -//# other directions (including time and frequency smearing). -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/EstimateMixed.h> -#include <Common/LofarLogger.h> -#include <casacore/scimath/Fitting/LSQFit.h> -#include <Common/StreamUtil.h> /// - -namespace LOFAR -{ -namespace DPPP -{ - -namespace -{ -// Compute a map that contains the index of the unknowns related to the -// specified baseline in the list of all unknowns. -void makeIndex(size_t nDirection, size_t nStation, const Baseline &baseline, - unsigned int *index) -{ - const size_t nCorrelation = 4; - for(size_t cr = 0; cr < nCorrelation; ++cr) - { - size_t idx0 = baseline.first * 8 + (cr / 2) * 4; // row of P - size_t idx1 = baseline.second * 8 + (cr % 2) * 4;// column of Q (row of Q^H) - - for(size_t dr = 0; dr < nDirection; ++dr) - { - *index++ = idx0; - *index++ = idx0 + 1; - *index++ = idx0 + 2; - *index++ = idx0 + 3; - - *index++ = idx1; - *index++ = idx1 + 1; - *index++ = idx1 + 2; - *index++ = idx1 + 3; - - idx0 += nStation * 8; - idx1 += nStation * 8; - } - } -} -} // Unnamed namespace. - - -bool estimate(size_t nDirection, size_t nStation, size_t nBaseline, - size_t nChannel, const_cursor<Baseline> baselines, - vector<const_cursor<fcomplex> > data, vector<const_cursor<dcomplex> > model, - const_cursor<bool> flag, const_cursor<float> weight, - const_cursor<dcomplex> mix, double *unknowns, size_t maxiter) -{ - ASSERT(data.size() == nDirection && model.size() == nDirection); - bool sh=false; - - // Initialize LSQ solver. - const size_t nUnknowns = nDirection * nStation * 4 * 2; - casacore::LSQFit solver(nUnknowns); - - // Each visibility provides information about two (complex) unknowns per - // station per direction. A visibility is measured by a specific - // interferometer, which is the combination of two stations. Thus, in total - // each visibility provides information about (no. of directions) x 2 x 2 - // x 2 (scalar) unknowns = (no. of directions) x 8. For each of these - // unknowns the value of the partial derivative of the model with respect - // to the unknown has to be computed. - const size_t nPartial = nDirection * 8; - vector<unsigned int> dIndex(4 * nPartial); - - // Allocate space for intermediate results. - vector<dcomplex> M(nDirection * 4), dM(nDirection * 16); - vector<double> dR(nPartial), dI(nPartial); - - // Iterate until convergence. - size_t nIterations = 0; - while(!solver.isReady() && nIterations < maxiter) - { - if (sh) cout<<endl<<"iteration " << nIterations << endl; - for(size_t bl = 0; bl < nBaseline; ++bl) - { - const size_t p = baselines->first; - const size_t q = baselines->second; - - if(p != q) - { - // Create partial derivative index for current baseline. - makeIndex(nDirection, nStation, *baselines, &(dIndex[0])); - if (sh) cout<<"derinx="<<dIndex<<endl; - - for(size_t ch = 0; ch < nChannel; ++ch) - { - for(size_t dr = 0; dr < nDirection; ++dr) - { - // Jones matrix for station P. - const double *Jp = - &(unknowns[dr * nStation * 8 + p * 8]); - const dcomplex Jp_00(Jp[0], Jp[1]); - const dcomplex Jp_01(Jp[2], Jp[3]); - const dcomplex Jp_10(Jp[4], Jp[5]); - const dcomplex Jp_11(Jp[6], Jp[7]); - - // Jones matrix for station Q, conjugated. - const double *Jq = - &(unknowns[dr * nStation * 8 + q * 8]); - const dcomplex Jq_00(Jq[0], -Jq[1]); - const dcomplex Jq_01(Jq[2], -Jq[3]); - const dcomplex Jq_10(Jq[4], -Jq[5]); - const dcomplex Jq_11(Jq[6], -Jq[7]); - - // Fetch model visibilities for the current direction. - const dcomplex xx = model[dr][0]; - const dcomplex xy = model[dr][1]; - const dcomplex yx = model[dr][2]; - const dcomplex yy = model[dr][3]; - - // Precompute terms involving conj(Jq) and the model - // visibilities. - const dcomplex Jq_00xx_01xy = Jq_00 * xx + Jq_01 * xy; - const dcomplex Jq_00yx_01yy = Jq_00 * yx + Jq_01 * yy; - const dcomplex Jq_10xx_11xy = Jq_10 * xx + Jq_11 * xy; - const dcomplex Jq_10yx_11yy = Jq_10 * yx + Jq_11 * yy; - - // Precompute (Jp x conj(Jq)) * vec(data), where 'x' - // denotes the Kronecker product. This is the model - // visibility for the current direction, with the - // current Jones matrix estimates applied. This is - // stored in M. - // Also, precompute the partial derivatives of M with - // respect to all 16 parameters (i.e. 2 Jones matrices - // Jp and Jq, 4 complex scalars per Jones matrix, 2 real - // scalars per complex scalar, 2 * 4 * 2 = 16). These - // partial derivatives are stored in dM. - M[dr * 4] = Jp_00 * Jq_00xx_01xy + Jp_01 * Jq_00yx_01yy; - dM[dr * 16] = Jq_00xx_01xy; //dM_00/dJp_00 - dM[dr * 16 + 1] = Jq_00yx_01yy; //dM_00/dJp_01 - dM[dr * 16 + 2] = Jp_00 * xx + Jp_01 * yx;//dM_00/dJq_00 - dM[dr * 16 + 3] = Jp_00 * xy + Jp_01 * yy;//dM_00/dJq_01 - - M[dr * 4 + 1] = Jp_00 * Jq_10xx_11xy + Jp_01 - * Jq_10yx_11yy; - dM[dr * 16 + 4] = Jq_10xx_11xy; //dM_01/dJp_00 - dM[dr * 16 + 5] = Jq_10yx_11yy; //dM_01/dJp_01 - dM[dr * 16 + 6] = dM[dr * 16 + 2]; //dM_01/dJq_10 - dM[dr * 16 + 7] = dM[dr * 16 + 3]; //dM_01/dJq_11 - - M[dr * 4 + 2] = Jp_10 * Jq_00xx_01xy + Jp_11 - * Jq_00yx_01yy; - dM[dr * 16 + 8] = dM[dr * 16]; //dM_10/dJp_10 - dM[dr * 16 + 9] = dM[dr * 16 + 1]; //dM_10/dJp_11 - dM[dr * 16 + 10] =Jp_10 * xx + Jp_11 * yx;//dM_10/dJq_00 - dM[dr * 16 + 11] =Jp_10 * xy + Jp_11 * yy;//dM_10/dJq_01 - - M[dr * 4 + 3] = Jp_10 * Jq_10xx_11xy + Jp_11 - * Jq_10yx_11yy; - dM[dr * 16 + 12] = dM[dr * 16 + 4]; //dM_11/dJp_10 - dM[dr * 16 + 13] = dM[dr * 16 + 5]; //dM_11/dJp_11 - dM[dr * 16 + 14] = dM[dr * 16 + 10]; //dM_11/dJq_10 - dM[dr * 16 + 15] = dM[dr * 16 + 11]; //dM_11/dJq_11 - } - if (sh) { - cout<<"M="<<M<<endl; - cout<<"dM="<<dM<<endl; - } - - for(size_t cr = 0; cr < 4; ++cr) // correlation: 00,01,10,11 - { - if(!flag[cr]) - { - for(size_t tg = 0; tg < nDirection; ++tg) - { - dcomplex visibility(0.0, 0.0); - for(size_t dr = 0; dr < nDirection; ++dr) - { - // Look-up mixing weight. - const dcomplex mix_weight = *mix; - - // Weight model visibility. - visibility += mix_weight * M[dr * 4 + cr]; - - // Compute weighted partial derivatives. - dcomplex derivative(0.0, 0.0); - derivative = - mix_weight * dM[dr * 16 + cr * 4]; - dR[dr * 8] = real(derivative); //for cr==0: Re(d/dRe(p_00))) - dI[dr * 8] = imag(derivative); //for cr==0: Re(d/dIm(p_00))) - dR[dr * 8 + 1] = -imag(derivative);//for cr==0: Im(d/dRe(p_00))) - dI[dr * 8 + 1] = real(derivative); //for cr==0: Im(d/dIm(p_00))) - - derivative = - mix_weight * dM[dr * 16 + cr * 4 + 1]; - dR[dr * 8 + 2] = real(derivative); //for cr==0: Re(d/dRe(p_01))) - dI[dr * 8 + 2] = imag(derivative); //for cr==0: Re(d/dIm(p_01))) - dR[dr * 8 + 3] = -imag(derivative);//for cr==0: Im(d/dRe(p_01))) - dI[dr * 8 + 3] = real(derivative); //for cr==0: Im(d/dIm(p_01))) - - derivative = - mix_weight * dM[dr * 16 + cr * 4 + 2]; - dR[dr * 8 + 4] = real(derivative); //for cr==0: Re(d/dRe(q_00))) - dI[dr * 8 + 4] = imag(derivative); //for cr==0: Re(d/dIm(q_00))) - dR[dr * 8 + 5] = imag(derivative); //for cr==0: Im(d/dRe(q_00))) - dI[dr * 8 + 5] = -real(derivative);//for cr==0: Im(d/dIm(q_00))) - - derivative = - mix_weight * dM[dr * 16 + cr * 4 + 3]; - dR[dr * 8 + 6] = real(derivative); //for cr==0: Re(d/dRe(q_01))) - dI[dr * 8 + 6] = imag(derivative); //for cr==0: Re(d/dIm(q_01))) - dR[dr * 8 + 7] = imag(derivative); //for cr==0: Im(d/dRe(q_01))) - dI[dr * 8 + 7] = -real(derivative);//for cr==0: Im(d/dIm(q_01))) - - // Move to next source direction. - mix.forward(1); - } // Source directions. - - // Compute the residual. - dcomplex residual = - static_cast<dcomplex>(data[tg][cr]) - - visibility; - - // Update the normal equations. - solver.makeNorm(nPartial, - &(dIndex[cr * nPartial]), &(dR[0]), - static_cast<double>(weight[cr]), - real(residual)); - solver.makeNorm(nPartial, - &(dIndex[cr * nPartial]), &(dI[0]), - static_cast<double>(weight[cr]), - imag(residual)); - if (sh) { - cout<<"makeres "<<real(residual)<<' '<<weight[cr]<<' '<<nPartial; - for (uint i=0; i<nPartial; ++i) { - cout << ' '<<dIndex[cr*nPartial+i]<<' '<<dR[i]; - } - cout<<endl; - } - - // Move to next target direction. - mix.backward(1, nDirection); - mix.forward(0); - } // Target directions. - - // Reset cursor to the start of the correlation. - mix.backward(0, nDirection); - } - - // Move to the next correlation. - mix.forward(2); - } // Correlations. - - // Move to the next channel. - mix.backward(2, 4); - mix.forward(3); - - for(size_t dr = 0; dr < nDirection; ++dr) - { - model[dr].forward(1); - data[dr].forward(1); - } - flag.forward(1); - weight.forward(1); - } // Channels. - - // Reset cursors to the start of the baseline. - for(size_t dr = 0; dr < nDirection; ++dr) - { - model[dr].backward(1, nChannel); - data[dr].backward(1, nChannel); - } - flag.backward(1, nChannel); - weight.backward(1, nChannel); - mix.backward(3, nChannel); - } - - // Move cursors to the next baseline. - for(size_t dr = 0; dr < nDirection; ++dr) - { - model[dr].forward(2); - data[dr].forward(2); - } - flag.forward(2); - weight.forward(2); - mix.forward(4); - ++baselines; - } // Baselines. - - // Reset all cursors for the next iteration. - for(size_t dr = 0; dr < nDirection; ++dr) - { - model[dr].backward(2, nBaseline); - data[dr].backward(2, nBaseline); - } - flag.backward(2, nBaseline); - weight.backward(2, nBaseline); - mix.backward(4, nBaseline); - baselines -= nBaseline; - - // Perform LSQ iteration. - casacore::uInt rank; - bool status = solver.solveLoop(rank, unknowns, true); - ASSERT(status); - if (sh) { - cout<<"solution=["; - for (uint i=0; i<nUnknowns; ++i) { - cout << unknowns[i]<<','; - } - cout<<endl; - } - - // Update iteration count. - ++nIterations; - } - - const bool converged = (solver.isReady() == casacore::LSQFit::SOLINCREMENT - || solver.isReady() == casacore::LSQFit::DERIVLEVEL); - return converged; -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/EstimateNew.cc b/CEP/DP3/DPPP/src/EstimateNew.cc deleted file mode 100644 index ac7c073a312..00000000000 --- a/CEP/DP3/DPPP/src/EstimateNew.cc +++ /dev/null @@ -1,475 +0,0 @@ -//# EstimateNew.cc: Estimate Jones matrices for several directions and stations -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/EstimateNew.h> -#include <Common/LofarLogger.h> -#include <Common/StreamUtil.h> /// - -#include <casacore/scimath/Fitting/LSQFit.h> - - -namespace LOFAR { - namespace DPPP { - - EstimateNew::EstimateNew() - {} - - void EstimateNew::update (size_t maxndir, size_t nBaseline, size_t nStation, - size_t nChannel, size_t maxIter, - bool propagateSolution) - { - itsNrBaselines = nBaseline; - itsNrStations = nStation; - itsNrChannels = nChannel; - itsMaxIter = maxIter; - itsNrDir = maxndir; - itsPropagateSolution = propagateSolution; - itsSolveStation.resize (nStation); - itsUnknowns.resize (maxndir * nStation * 4 * 2); - itsSolution.resize (itsUnknowns.size()); - std::fill (itsSolution.begin(), itsSolution.end(), 0); - itsDerivIndex.resize (maxndir*4*2*4); - itsM.resize (maxndir*4); - itsdM.resize (maxndir*4*4); - itsdR.resize (maxndir*8); - itsdI.resize (maxndir*8); - } - - // Initialize the solution to the defaultGain for sources/stations not to solve. - // Set to 0 and diagonal to defaultGaib for solvable ones if no propagation. - void EstimateNew::initSolution (const vector<vector<int> >& unknownsIndex, - const vector<uint>& srcSet, - double defaultGain) - { - uint dr=0; - double* solution = &(itsSolution[0]); - for (size_t i=0; i<itsNrDir; ++i) { - if (dr < srcSet.size() && srcSet[dr] == i) { - // This source is to be solved. - for (size_t st=0; st<itsNrStations; ++st) { - if (unknownsIndex[dr][st] >= 0) { - if (! itsPropagateSolution) { - std::fill (solution, solution+8, 0); - } - // Solvable; set diagonal to 1 if it is 0. - if (solution[0] == 0) solution[0] = 1; - if (solution[6] == 0) solution[6] = 1; - } else { - // Set non-solvable station-source to 0. - std::fill (solution, solution+8, 0); - solution[0] = solution[6] = defaultGain; - } - solution += 8; - } - dr++; - } else { - // Set entire non-solvable source to 0. - std::fill (solution, solution + 8*itsNrStations, 0.); - solution += 8*itsNrStations; - } - } - } - - // Clear the solution for unsolvable stations - // (essentially changing defaultGain to 0). - void EstimateNew::clearNonSolvable (const vector<vector<int> >& unknownsIndex, - const vector<uint>& srcSet) - { - uint dr=0; - double* solution = &(itsSolution[0]); - for (size_t i=0; i<itsNrDir; ++i) { - if (dr < srcSet.size() && srcSet[dr] == i) { - // This source is to be solved. - for (size_t st=0; st<itsNrStations; ++st) { - if (unknownsIndex[dr][st] < 0) { - // Set non-solvable station-source to 0. - std::fill (solution, solution+8, 0); - } - solution += 8; - } - dr++; - } else { - // Skip entire source. - solution += 8*itsNrStations; - } - } - } - - void EstimateNew::fillSolution (const vector<vector<int> >& unknownsIndex, - const vector<uint>& srcSet) - { - // Copy the solution for the direction-stations to solve. - // Note that the solution vector contains all possible sources/stations. - const double* unknowns = &(itsUnknowns[0]); - for (size_t dr=0; dr<srcSet.size(); ++dr) { - size_t inx = srcSet[dr] * itsNrStations * 8; - double* solution = &(itsSolution[inx]); - for (size_t st=0; st<itsNrStations; ++st) { - if (unknownsIndex[dr][st] >= 0) { - for (size_t k=0; k<8; ++k) { - *solution++ = *unknowns++; - } - } else { - solution += 8; - } - } - } - } - - // Form the partial derivative index for a particular baseline. - // Partial derivatives are only needed if direction-station is solved for. - // Each visibility provides information about two (complex) unknowns per - // station per direction. A visibility is measured by a specific - // interferometer, which is the combination of two stations. Thus, in total - // each visibility provides information about (no. of directions) x 2 x 2 - // x 2 (scalar) unknowns = (no. of directions) x 8. For each of these - // unknowns the value of the partial derivative of the model with respect - // to the unknown has to be computed. - uint EstimateNew::fillDerivIndex (size_t ndir, - const vector<vector<int> >& unknownsIndex, - const Baseline& baseline) - { - // Per direction a baseline has 32 equations with information about - // 16 unknowns: real and imag part of p00,p01,p10,p11,q00,q01,q10,q11 - // where p and q are the stations forming the baseline. - // However, only fill if a station has to be solved. - size_t n = 0; - for (size_t cr=0; cr<4; ++cr) { - for (size_t dr=0; dr<ndir; ++dr) { - if (unknownsIndex[dr][baseline.first] >= 0) { - size_t idx0 = unknownsIndex[dr][baseline.first] + (cr/2)*4; - itsDerivIndex[n++] = idx0; - itsDerivIndex[n++] = idx0 + 1; - itsDerivIndex[n++] = idx0 + 2; - itsDerivIndex[n++] = idx0 + 3; - } - if (unknownsIndex[dr][baseline.second] >= 0) { - size_t idx1 = unknownsIndex[dr][baseline.second] + (cr%2)*4; - itsDerivIndex[n++] = idx1; - itsDerivIndex[n++] = idx1 + 1; - itsDerivIndex[n++] = idx1 + 2; - itsDerivIndex[n++] = idx1 + 3; - } - } - } - // Return nr of partial derivatives per correlation. - return n/4; - } - - // Note that the cursors are passed by value, so a copy is made. - // In this way no explicit reset of the cursor is needed on a next call. - bool EstimateNew::estimate (const vector<vector<int> >& unknownsIndex, - const vector<uint>& srcSet, - const_cursor<Baseline> baselines, - vector<const_cursor<fcomplex> > data, - vector<const_cursor<dcomplex> > model, - const_cursor<bool> flag, - const_cursor<float> weight, - const_cursor<dcomplex> mix, - double defaultGain, - bool solveBoth, - uint verbose) - { - initSolution (unknownsIndex, srcSet, defaultGain); - // Determine if a station has to be solved for any source. - itsSolveStation = false; - size_t nUnknowns = 0; - const size_t nDirection = srcSet.size(); - for (size_t dr=0; dr<nDirection; ++dr) { - uint drOrig = srcSet[dr]; - const double* solution = &(itsSolution[drOrig*itsNrStations*8]); - for (size_t st=0; st<itsNrStations; ++st) { - if (unknownsIndex[dr][st] >= 0) { - itsSolveStation[st] = true; - std::copy (solution, solution+8, itsUnknowns.begin()+nUnknowns); - nUnknowns += 8; - } - solution += 8; - } - } - if (verbose > 12) { - cout<<"unkindex="<<unknownsIndex<<endl; - } - // Initialize LSQ solver. - casacore::LSQFit solver(nUnknowns); - // Iterate until convergence. - itsNrIter = 0; - while (!solver.isReady() && itsNrIter < itsMaxIter) { - if (verbose > 12) { - cout<<endl<<"iteration " << itsNrIter << endl; - } - for (size_t bl=0; bl<itsNrBaselines; ++bl) { - const size_t p = baselines->first; - const size_t q = baselines->second; - // Only compute if no autocorr and if stations need to be solved. - if (p != q && ((itsSolveStation[p] || itsSolveStation[q]) && - (!solveBoth || - (itsSolveStation[p] && itsSolveStation[q])))) { - // Create partial derivative index for current baseline. - size_t nPartial = fillDerivIndex (srcSet.size(), unknownsIndex, - *baselines); - if (verbose > 13) { - cout<<"derinx="<<itsDerivIndex<<endl; - } - // Generate equations for each channel. - for (size_t ch=0; ch<itsNrChannels; ++ch) { - for (size_t dr=0; dr<nDirection; ++dr) { - uint drOrig = srcSet[dr]; - // Jones matrix for station P. - const double *Jp = &(itsSolution[(drOrig*itsNrStations + p)*8]); - const dcomplex Jp_00(Jp[0], Jp[1]); - const dcomplex Jp_01(Jp[2], Jp[3]); - const dcomplex Jp_10(Jp[4], Jp[5]); - const dcomplex Jp_11(Jp[6], Jp[7]); - - // Jones matrix for station Q, conjugated. - const double *Jq = &(itsSolution[(drOrig*itsNrStations + q)*8]); - const dcomplex Jq_00(Jq[0], -Jq[1]); - const dcomplex Jq_01(Jq[2], -Jq[3]); - - const dcomplex Jq_10(Jq[4], -Jq[5]); - const dcomplex Jq_11(Jq[6], -Jq[7]); - - // Fetch model visibilities for the current direction. - const dcomplex xx = model[dr][0]; - const dcomplex xy = model[dr][1]; - const dcomplex yx = model[dr][2]; - const dcomplex yy = model[dr][3]; - - // Precompute terms involving conj(Jq) and the model - // visibilities. - const dcomplex Jq_00xx_01xy = Jq_00 * xx + Jq_01 * xy; - const dcomplex Jq_00yx_01yy = Jq_00 * yx + Jq_01 * yy; - const dcomplex Jq_10xx_11xy = Jq_10 * xx + Jq_11 * xy; - const dcomplex Jq_10yx_11yy = Jq_10 * yx + Jq_11 * yy; - - // Precompute (Jp x conj(Jq)) * vec(data), where 'x' - // denotes the Kronecker product. This is the model - // visibility for the current direction, with the - // current Jones matrix estimates applied. This is - // stored in M. - // Also, precompute the partial derivatives of M with - // respect to all 16 parameters (i.e. 2 Jones matrices - // Jp and Jq, 4 complex scalars per Jones matrix, 2 real - // scalars per complex scalar, 2 * 4 * 2 = 16). These - // partial derivatives are stored in dM. - // Note that conj(Jq) is used and that q01 and q10 are swapped. - - itsM[dr * 4] = Jp_00 * Jq_00xx_01xy + Jp_01 * Jq_00yx_01yy; - // Derivatives of M00 wrt p00, p01, q00, q01 - itsdM[dr * 16] = Jq_00xx_01xy; - itsdM[dr * 16 + 1] = Jq_00yx_01yy; - itsdM[dr * 16 + 2] = Jp_00 * xx + Jp_01 * yx; - itsdM[dr * 16 + 3] = Jp_00 * xy + Jp_01 * yy; - - itsM[dr * 4 + 1] = Jp_00 * Jq_10xx_11xy + Jp_01 * Jq_10yx_11yy; - // Derivatives of M01 wrt p00, p01, q10, q11 - itsdM[dr * 16 + 4] = Jq_10xx_11xy; - itsdM[dr * 16 + 5] = Jq_10yx_11yy; - itsdM[dr * 16 + 6] = itsdM[dr * 16 + 2]; - itsdM[dr * 16 + 7] = itsdM[dr * 16 + 3]; - - itsM[dr * 4 + 2] = Jp_10 * Jq_00xx_01xy + Jp_11 * Jq_00yx_01yy; - // Derivatives of M10 wrt p10, p11, q00, q01 - itsdM[dr * 16 + 8] = itsdM[dr * 16]; - itsdM[dr * 16 + 9] = itsdM[dr * 16 + 1]; - itsdM[dr * 16 + 10] = Jp_10 * xx + Jp_11 * yx; - itsdM[dr * 16 + 11] = Jp_10 * xy + Jp_11 * yy; - - itsM[dr * 4 + 3] = Jp_10 * Jq_10xx_11xy + Jp_11 * Jq_10yx_11yy; - // Derivatives of M11 wrt p10, p11, q10, q11 - itsdM[dr * 16 + 12] = itsdM[dr * 16 + 4]; - itsdM[dr * 16 + 13] = itsdM[dr * 16 + 5]; - itsdM[dr * 16 + 14] = itsdM[dr * 16 + 10]; - itsdM[dr * 16 + 15] = itsdM[dr * 16 + 11]; - } - if (verbose > 14) { - cout<<"M="<<itsM<<endl; - cout<<"dM="<<itsdM<<endl; - } - - // Now compute the equations (per pol) for D*M=A where - // D is the NxN demixing weight matrix - // M is the model visibilities vector for the N directions - // A is the shifted observed visibilities vector for N directions - // Note that each element in the vectors is a 2x2 matrix - // (xx,xy,yx,yy) of complex values. - // A complex multiplication of (a,b) and (c,d) gives (ac-bd,ad+bc) - // Thus real partial derivatives wrt a,b,c,d are c,-d,a,-b. - // Imaginary partial derivatives wrt a,b,c,d are d,c,b,a - for (size_t cr=0; cr<4; ++cr) { - // Only use visibility if not flagged. - if (!flag[cr]) { - // For each direction a set of equations is generated. - for (size_t tg=0; tg<nDirection; ++tg) { - dcomplex visibility(0.0, 0.0); - // Each direction is dependent on all directions. - size_t off = 0; - for (size_t dr=0; dr<nDirection; ++dr) { - bool do1 = unknownsIndex[dr][p] >= 0; - bool do2 = unknownsIndex[dr][q] >= 0; - // Only generate equations if a station has to be solved - // for this direction. - if ((do1 && do2) || (!solveBoth && (do1 || do2))) { - // Look-up mixing weight. - const dcomplex mix_weight = *mix; - // Sum weighted model visibilities. - visibility += mix_weight * itsM[dr * 4 + cr]; - - // Compute weighted partial derivatives. - if (do1) { - dcomplex der(mix_weight * itsdM[dr * 16 + cr * 4]); - itsdR[off] = real(der); - itsdI[off] = imag(der); - itsdR[off + 1] = -imag(der); - itsdI[off + 1] = real(der); - off += 2; - } - if (do2) { - dcomplex der(mix_weight * itsdM[dr * 16 + cr * 4 + 1]); - itsdR[off] = real(der); - itsdI[off] = imag(der); - itsdR[off + 1] = -imag(der); - itsdI[off + 1] = real(der); - off += 2; - } - if (do1) { - dcomplex der(mix_weight * itsdM[dr * 16 + cr * 4 + 2]); - itsdR[off] = real(der); - itsdI[off] = imag(der); - itsdR[off + 1] = imag(der); // conjugate - itsdI[off + 1] = -real(der); - off += 2; - } - if (do2) { - dcomplex der(mix_weight * itsdM[dr * 16 + cr * 4 + 3]); - itsdR[off] = real(der); - itsdI[off] = imag(der); - itsdR[off + 1] = imag(der); - itsdI[off + 1] = -real(der); - off += 2; - } - } - // Move to next source direction. - mix.forward(1); - } // Source directions. - - // Compute the residual. - dcomplex residual(data[tg][cr]); - residual -= visibility; - - // Update the normal equations. - solver.makeNorm(nPartial, - &(itsDerivIndex[cr * nPartial]), &(itsdR[0]), - static_cast<double>(weight[cr]), - real(residual)); - solver.makeNorm(nPartial, - &(itsDerivIndex[cr * nPartial]), &(itsdI[0]), - static_cast<double>(weight[cr]), - imag(residual)); - if (verbose > 14) { - cout<<"makeres "<<real(residual)<<' '<<weight[cr] - <<' '<<nPartial; - for (uint i=0; i<nPartial; ++i) { - cout << ' '<<itsDerivIndex[cr*nPartial+i]<<' '<<itsdR[i]; - } - cout<<endl; - } - - // Move to next target direction. - mix.backward(1, nDirection); - mix.forward(0); - } // Target directions. - - // Reset cursor to the start of the correlation. - mix.backward(0, nDirection); - } - - // Move to the next correlation. - mix.forward(2); - } // Correlations. - - // Move to the next channel. - mix.backward(2, 4); - mix.forward(3); - - for (size_t dr=0; dr<nDirection; ++dr) { - model[dr].forward(1); - data[dr].forward(1); - } - flag.forward(1); - weight.forward(1); - } // Channels. - - // Reset cursors to the start of the baseline. - for (size_t dr=0; dr<nDirection; ++dr) { - model[dr].backward(1, itsNrChannels); - data[dr].backward(1, itsNrChannels); - } - flag.backward(1, itsNrChannels); - weight.backward(1, itsNrChannels); - mix.backward(3, itsNrChannels); - } - - // Move cursors to the next baseline. - for (size_t dr=0; dr<nDirection; ++dr) { - model[dr].forward(2); - data[dr].forward(2); - } - flag.forward(2); - weight.forward(2); - mix.forward(4); - ++baselines; - } // Baselines. - - // Reset all cursors for the next iteration. - for (size_t dr=0; dr<nDirection; ++dr) { - model[dr].backward(2, itsNrBaselines); - data[dr].backward(2, itsNrBaselines); - } - flag.backward(2, itsNrBaselines); - weight.backward(2, itsNrBaselines); - mix.backward(4, itsNrBaselines); - baselines -= itsNrBaselines; - - // Perform LSQ iteration. - casacore::uInt rank; - bool status = solver.solveLoop(rank, &(itsUnknowns[0]), true); - ASSERT(status); - // Copy the unknowns to the full solution. - fillSolution (unknownsIndex, srcSet); - if (verbose > 13) { - cout<<"unknowns="<<nUnknowns<<' '<<itsUnknowns<<endl; - cout<<"solution="<<itsSolution<<endl; - } - // Update iteration count. - itsNrIter++; - } - bool converged = (solver.isReady() == casacore::LSQFit::SOLINCREMENT || - solver.isReady() == casacore::LSQFit::DERIVLEVEL); - /// clearNonSolvable (unknownsIndex, srcSet); - return converged; - } - - } //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/Filter.cc b/CEP/DP3/DPPP/src/Filter.cc deleted file mode 100644 index dc4f46cf68d..00000000000 --- a/CEP/DP3/DPPP/src/Filter.cc +++ /dev/null @@ -1,342 +0,0 @@ -//# Filter.cc: DPPP step to filter out baselines and channels -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Filter.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPLogger.h> -#include <Common/ParameterSet.h> - -#include <casacore/tables/Tables/ScalarColumn.h> -#include <casacore/tables/Tables/TableRecord.h> -#include <casacore/tables/TaQL/ExprNode.h> -#include <casacore/tables/TaQL/RecordGram.h> -#include <casacore/casa/Containers/Record.h> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - Filter::Filter (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsStartChanStr (parset.getString(prefix+"startchan", "0")), - itsNrChanStr (parset.getString(prefix+"nchan", "0")), - itsRemoveAnt (parset.getBool (prefix+"remove", false)), - itsBaselines (parset, prefix), - itsDoSelect (false) - {} - - Filter::Filter (DPInput* input, const BaselineSelection& baselines) - : itsInput (input), - itsStartChanStr ("0"), - itsNrChanStr ("0"), - itsRemoveAnt (false), - itsBaselines (baselines), - itsDoSelect (false) - {} - - Filter::~Filter() - {} - - void Filter::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - info().setWriteFlags(); - if (itsRemoveAnt) { - info().setMetaChanged(); - } - // Parse the chan expressions. - // Nr of channels can be used as 'nchan' in the expressions. - Record rec; - rec.define ("nchan", infoIn.nchan()); - TableExprNode node1 (RecordGram::parse(rec, itsStartChanStr)); - TableExprNode node2 (RecordGram::parse(rec, itsNrChanStr)); - // nchan=0 means until the last channel. - double result; - node1.get (rec, result); - itsStartChan = uint(result+0.001); - node2.get (rec, result); - uint nrChan = uint(result+0.0001); - uint nAllChan = getInfo().nchan(); - ASSERTSTR (itsStartChan < nAllChan, - "startchan " << itsStartChan - << " exceeds nr of available channels (" << nAllChan << ')'); - uint maxNrChan = nAllChan - itsStartChan; - if (nrChan == 0) { - nrChan = maxNrChan; - } else { - nrChan = std::min (nrChan, maxNrChan); - } - itsDoSelect = itsStartChan>0 || nrChan<maxNrChan; - // Handle possible baseline selection. - if (itsBaselines.hasSelection()) { - Matrix<bool> selbl(itsBaselines.apply (infoIn)); - const Vector<Int>& ant1 = getInfo().getAnt1(); - const Vector<Int>& ant2 = getInfo().getAnt2(); - itsSelBL.reserve (ant1.size()); - for (uint i=0; i<ant1.size(); ++i) { - if (selbl(ant1[i], ant2[i])) { - itsSelBL.push_back (i); - } - } - if (itsSelBL.size() < ant1.size()) { - itsDoSelect = true; - } - } - if (itsDoSelect || itsRemoveAnt) { - // Update the DPInfo object. - info().update (itsStartChan, nrChan, itsSelBL, itsRemoveAnt); - if (itsDoSelect) { - // Shape the arrays in the buffer. - IPosition shape (3, infoIn.ncorr(), nrChan, getInfo().nbaselines()); - itsBuf.getData().resize (shape); - itsBuf.getFlags().resize (shape); - itsBuf.getWeights().resize (shape); - if (! itsSelBL.empty()) { - itsBuf.getUVW().resize (IPosition(2, 3, shape[2])); - } - } - } - } - - void Filter::show (std::ostream& os) const - { - os << "Filter " << itsName << std::endl; - os << " startchan: " << itsStartChan << " (" << itsStartChanStr - << ')' << std::endl; - os << " nchan: " << getInfo().nchan() << " (" << itsNrChanStr - << ')' << std::endl; - itsBaselines.show (os); - os << " remove: " << itsRemoveAnt << std::endl; - } - - void Filter::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " Filter " << itsName << endl; - } - - bool Filter::process (const DPBuffer& buf) - { - itsTimer.start(); - if (!itsDoSelect) { - itsBuf.referenceFilled (buf); - itsTimer.stop(); - getNextStep()->process (buf); - return true; - } - // Get the various data arrays. - itsBufTmp.referenceFilled (buf); - const Array<Complex>& data = buf.getData(); - const Array<Bool>& flags = buf.getFlags(); - const Array<Float>& weights = - itsInput->fetchWeights (buf, itsBufTmp, itsTimer); - const Array<Double>& uvws = - itsInput->fetchUVW (buf, itsBufTmp, itsTimer); - const Array<Bool>& frFlags = - itsInput->fetchFullResFlags (buf, itsBufTmp, itsTimer); - // Size fullResFlags if not done yet. - int frfAvg = frFlags.shape()[0] / data.shape()[1]; - if (itsBuf.getFullResFlags().empty()) { - IPosition frfShp = frFlags.shape(); - frfShp[0] = getInfo().nchan() * frfAvg; - frfShp[2] = getInfo().nbaselines(); - itsBuf.getFullResFlags().resize (frfShp); - } - // Form the blc and trc for the channel selection. - IPosition first(3, 0); - IPosition last (data.shape() - 1); - first[1] = itsStartChan; - last[1] = itsStartChan + getInfo().nchan() - 1; - IPosition frfFirst(3,0); - IPosition frfLast (frFlags.shape() - 1); - frfFirst[0] = first[1] * frfAvg; - frfLast[0] = (last[1] + 1) * frfAvg - 1; - // Copy the data into the output buffer. - if (itsSelBL.empty()) { - // No baseline selection; copy all data for given channels to - // make them contiguous. - // UVW can be referenced, because not dependent on channel. - itsBuf.getData().assign (data(first, last)); - itsBuf.getFlags().assign (flags(first, last)); - itsBuf.getWeights().assign (weights(first, last)); - itsBuf.getFullResFlags().assign (frFlags(frfFirst, frfLast)); - itsBuf.setUVW (buf.getUVW()); - itsBuf.setRowNrs (buf.getRowNrs()); - } else { - Vector<uint> rowNrs; - if (! buf.getRowNrs().empty()) { - rowNrs.resize(getInfo().nbaselines()); - } - // Copy the data of the selected baselines and channels. - Complex* toData = itsBuf.getData().data(); - Bool* toFlag = itsBuf.getFlags().data(); - Float* toWeight = itsBuf.getWeights().data(); - Double* toUVW = itsBuf.getUVW().data(); - Bool* toFrf = itsBuf.getFullResFlags().data(); - uint off = data.shape()[0] * first[1]; // offset of first channel - const Complex* frData = data.data() + off; - const Bool* frFlag = flags.data() + off; - const Float* frWeight = weights.data() + off; - const Double* frUVW = uvws.data(); - int ndfr = data.shape()[0] * data.shape()[1]; - int ndto = itsBuf.getData().shape()[0] * itsBuf.getData().shape()[1]; - int nffr = frFlags.shape()[0]; - int nfto = itsBuf.getFullResFlags().shape()[0]; - for (uint i=0; i<itsSelBL.size(); ++i) { - if (!buf.getRowNrs().empty()) { - rowNrs[i] = buf.getRowNrs()[itsSelBL[i]]; - } - objcopy (toData , frData + itsSelBL[i]*ndfr, ndto); - toData += ndto; - objcopy (toFlag , frFlag + itsSelBL[i]*ndfr, ndto); - toFlag += ndto; - objcopy (toWeight, frWeight + itsSelBL[i]*ndfr, ndto); - toWeight += ndto; - objcopy (toUVW , frUVW + itsSelBL[i]*3 , 3); - toUVW += 3; - // Copy FullResFlags for all times. - const Bool* frFrf = (frFlags.data() + frfFirst[0] + - itsSelBL[i]*nffr * frFlags.shape()[1]); - for (int j=0; j<=frfLast[1]; ++j) { - objcopy (toFrf, frFrf, nfto); - toFrf += nfto; - frFrf += nffr; - } - } - itsBuf.setRowNrs(rowNrs); - } - itsBuf.setTime (buf.getTime()); - itsBuf.setExposure (buf.getExposure()); - itsTimer.stop(); - getNextStep()->process (itsBuf); - return true; - } - - void Filter::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - - void Filter::addToMS (const string& msName) - { - getPrevStep()->addToMS(msName); - if (! itsRemoveAnt) { - return; - } - // See if and which stations have been removed. - Table antTab (msName + "/ANTENNA", Table::Update); - Table selTab = antTab(! antTab.col("NAME").in (info().antennaNames())); - if (selTab.nrow() == 0) { - return; - } - // Remove these rows from the ANTENNA table. - // Note that stations of baselines that have been filtered out before, - // will also be removed. - Vector<uInt> removedAnt = selTab.rowNumbers(); - Vector<Int> antMap = createIdMap (antTab.nrow(), removedAnt); - antTab.removeRow (removedAnt); - // Remove and renumber the stations in other subtables. - Table ms(msName); - uInt nr; - renumberSubTable (ms, "FEED", "ANTENNA_ID", removedAnt, antMap, nr); - renumberSubTable (ms, "POINTING", "ANTENNA_ID", removedAnt, antMap, nr); - renumberSubTable (ms, "SYSCAL", "ANTENNA_ID", removedAnt, antMap, nr); - renumberSubTable (ms, "QUALITY_BASELINE_STATISTIC", "ANTENNA1", - removedAnt, antMap, nr); - renumberSubTable (ms, "QUALITY_BASELINE_STATISTIC", "ANTENNA2", - removedAnt, antMap, nr); - // Finally remove and renumber in the beam tables. - uInt nrAntFldId; - Vector<uInt> remAntFldId = renumberSubTable (ms, "LOFAR_ANTENNA_FIELD", - "ANTENNA_ID", - removedAnt, antMap, - nrAntFldId); - if (! remAntFldId.empty()) { - Vector<Int> antFldIdMap = createIdMap (nrAntFldId, remAntFldId); - renumberSubTable (ms, "LOFAR_ELEMENT_FAILURE", "ANTENNA_FIELD_ID", - remAntFldId, antFldIdMap, nr); - } - } - - Vector<Int> Filter::createIdMap (uInt nrId, - const Vector<uInt>& removedIds) const - { - // Create the mapping from old to new id. - Vector<Int> idMap (nrId); - indgen (idMap); // fill with 0,1,2,... - int nrrem = 0; - for (uInt i=0; i<removedIds.size(); ++i) { - idMap[removedIds[i]] = -1; - nrrem++; - if (i < removedIds.size() - 1) { - for (uInt j=removedIds[i]+1; j<removedIds[i+1]; ++j) { - idMap[j] -= nrrem; - } - } - } - for (uInt j=removedIds[removedIds.size()-1]+1; j<idMap.size(); ++j) { - idMap[j] -= nrrem; - } - return idMap; - } - - Vector<uInt> Filter::renumberSubTable (const Table& ms, - const String& name, - const String& colName, - const Vector<uInt>& removedAnt, - const Vector<Int>& antMap, - uInt& nrId) const - { - // Exit if no such subtable. - if (! ms.keywordSet().isDefined(name)) { - return Vector<uInt>(); - } - // Remove the rows of the removed stations. - Table subTab (ms.tableName() + '/' + name, Table::Update); - nrId = subTab.nrow(); - Table selTab = subTab(subTab.col(colName).in (removedAnt)); - subTab.removeRow (selTab.rowNumbers()); - // Renumber the rest. - ScalarColumn<Int> antCol(subTab, colName); - Vector<Int> antIds = antCol.getColumn(); - for (uint i=0; i<antIds.size(); ++i) { - Int newId = antMap[antIds[i]]; - ASSERT (newId >= 0); - antIds[i] = newId; - } - antCol.putColumn (antIds); - return selTab.rowNumbers(); - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/FlagCounter.cc b/CEP/DP3/DPPP/src/FlagCounter.cc deleted file mode 100644 index ecbf2cd0b40..00000000000 --- a/CEP/DP3/DPPP/src/FlagCounter.cc +++ /dev/null @@ -1,377 +0,0 @@ -//# FlagCounter.cc: Class to keep counts of nr of flagged visibilities -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/FlagCounter.h> -#include <DPPP/DPInput.h> -#include <Common/ParameterSet.h> -#include <Common/StreamUtil.h> -#include <Common/LofarLogger.h> -#include <casacore/tables/Tables/Table.h> -#include <casacore/tables/Tables/TableDesc.h> -#include <casacore/tables/Tables/SetupNewTab.h> -#include <casacore/tables/Tables/ScaColDesc.h> -#include <casacore/tables/Tables/ScalarColumn.h> -#include <casacore/casa/Arrays/Matrix.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <vector> -#include <map> -#include <iomanip> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - FlagCounter::FlagCounter() - : itsInfo (0), - itsShowFF (false) - {} - - FlagCounter::FlagCounter (const string& msName, - const ParameterSet& parset, - const string& prefix) - { - itsWarnPerc = parset.getDouble (prefix+"warnperc", 0); - itsShowFF = parset.getBool (prefix+"showfullyflagged", false); - bool save = parset.getBool (prefix+"save", false); - if (save) { - // Percentages have to be saved, so form the table name to use. - string path = parset.getString (prefix+"path", ""); - // Use the step name (without dot) as a name suffix. - string suffix = prefix; - string::size_type pos = suffix.find ('.'); - if (pos != string::npos) { - suffix = suffix.substr(0, pos); - } - // Use the MS name as the name. - // If no path is given, use the path of the MS (use . if no path). - string name = msName; - pos = name.rfind ('/'); - if (path.empty()) { - if (pos == string::npos) { - path = '.'; - } else { - path = name.substr(0, pos); - } - } - name = name.substr(pos+1); - pos = name.find ('.'); - if (pos != string::npos) { - name = name.substr(0, pos); - } - itsSaveName = path + '/' + name + '_' + suffix + ".flag"; - } - } - - void FlagCounter::init (const DPInfo& info) - { - itsInfo = &info; - itsBLCounts.resize (info.nbaselines()); - itsChanCounts.resize (info.nchan()); - itsCorrCounts.resize (info.ncorr()); - std::fill (itsBLCounts.begin(), itsBLCounts.end(), 0); - std::fill (itsChanCounts.begin(),itsChanCounts.end(), 0); - std::fill (itsCorrCounts.begin(),itsCorrCounts.end(), 0); - } - - void FlagCounter::add (const FlagCounter& that) - { - // Add that to this after checking for equal sizes. - ASSERT (itsBLCounts.size() == that.itsBLCounts.size()); - ASSERT (itsChanCounts.size() == that.itsChanCounts.size()); - ASSERT (itsCorrCounts.size() == that.itsCorrCounts.size()); - std::transform (itsBLCounts.begin(), itsBLCounts.end(), - that.itsBLCounts.begin(), itsBLCounts.begin(), - std::plus<int64>()); - std::transform (itsChanCounts.begin(), itsChanCounts.end(), - that.itsChanCounts.begin(), itsChanCounts.begin(), - std::plus<int64>()); - std::transform (itsCorrCounts.begin(), itsCorrCounts.end(), - that.itsCorrCounts.begin(), itsCorrCounts.begin(), - std::plus<int64>()); - } - - void FlagCounter::showBaseline (ostream& os, int64 ntimes) const - { - const Vector<Int>& ant1 = itsInfo->getAnt1(); - const Vector<Int>& ant2 = itsInfo->getAnt2(); - const Vector<String>& antNames = itsInfo->antennaNames(); - // Keep track of fully flagged baselines. - std::vector<std::pair<int,int> > fullyFlagged; - int64 npoints = ntimes * itsChanCounts.size(); - os << endl << "Percentage of visibilities flagged per baseline" - " (antenna pair):"; - uint nrant = 1 + std::max(max(ant1), max(ant2)); - // Collect counts per baseline and antenna. - Vector<int64> nusedAnt(nrant, 0); - Vector<int64> countAnt(nrant, 0); - Matrix<int64> nusedBL (nrant, nrant, 0); - Matrix<int64> countBL (nrant, nrant, 0); - for (uint i=0; i<itsBLCounts.size(); ++i) { - countBL(ant1[i], ant2[i]) += itsBLCounts[i]; - nusedBL(ant1[i], ant2[i])++; - countAnt[ant1[i]] += itsBLCounts[i]; - nusedAnt[ant1[i]]++; - if (ant1[i] != ant2[i]) { - countBL(ant2[i], ant1[i]) += itsBLCounts[i]; - nusedBL(ant2[i], ant1[i])++; - countAnt[ant2[i]] += itsBLCounts[i]; - nusedAnt[ant2[i]]++; - } - } - // Determine nr of antennae used. - int nrused = 0; - for (uint i=0; i<nrant; ++i) { - if (nusedAnt[i] > 0) { - nrused++; - } - } - // Print 15 antennae per line. - const int nantpl = 15; - int nrl = (nrused + nantpl - 1) / nantpl; - int ant = 0; - // Loop over nr of lines needed for the antennae. - for (int i=0; i<nrl; ++i) { - int oldant = ant; - // Determine nrant per line - int nra = std::min(nantpl, nrused - i*nantpl); - // Print the header for the antennae being used. - // It also updates ant for the next iteration. - os << endl << " ant"; - for (int j=0; j<nra;) { - if (nusedAnt[ant] > 0) { - os << std::setw(5) << ant; - j++; - } - ant++; - } - os << endl; - // Print the percentages per antenna pair. - for (uint k=0; k<nrant; ++k) { - if (nusedAnt[k] > 0) { - os << std::setw(4) << k << " "; - int ia = oldant; - for (int j=0; j<nra;) { - if (nusedAnt[ia] > 0) { - if (nusedBL(k,ia) > 0) { - os << std::setw(4) - << int((100. * countBL(k,ia)) / - (nusedBL(k,ia) * npoints) + 0.5) - << '%'; - // Determine if baseline is fully flagged. - // Do it only for ANT1<=ANT2 - if (int(k) <= ia) { - if (countBL(k,ia) == nusedBL(k,ia) * npoints) { - fullyFlagged.push_back (std::pair<int,int>(k,ia)); - } - } - } else { - os << " "; - } - j++; - } - ia++; - } - os << endl; - } - } - // Print the percentages per antenna. - os << "TOTAL"; - int ia = oldant; - for (int j=0; j<nra;) { - if (nusedAnt[ia] > 0) { - double perc = 100. * countAnt[ia] / (nusedAnt[ia] * npoints); - os << std::setw(4) << int(perc + 0.5) << '%'; - j++; - } - ia++; - } - os << endl; - } - if (itsWarnPerc > 0) { - for (uint i=0; i<nrant; ++i) { - if (nusedAnt[i] > 0) { - double perc = (100. * countAnt[i]) / (nusedAnt[i] * npoints); - if (perc >= itsWarnPerc) { - os << "** NOTE: "; - showPerc1 (os, perc, 100); - os << " of data are flagged for station " << i - << " (" << antNames[i] << ')' << endl; - } - } - } - } - if (itsShowFF) { - os << "Fully flagged baselines: "; - for (uint i=0; i<fullyFlagged.size(); ++i) { - if (i>0) os << "; "; - os << fullyFlagged[i].first << '&' << fullyFlagged[i].second; - } - os << endl; - } - if (! itsSaveName.empty()) { - saveStation (npoints, nusedAnt, countAnt); - } - } - - void FlagCounter::showChannel (ostream& os, int64 ntimes) const - { - int64 npoints = ntimes * itsBLCounts.size(); - int64 nflagged = 0; - os << endl << "Percentage of visibilities flagged per channel:" << endl; - if (npoints == 0) { - return; - } - // Print 10 channels per line. - const int nchpl = 10; - os << " channels "; - for (int i=0; i<std::min(nchpl, int(itsChanCounts.size())); ++i) { - os << std::setw(5) << i; - } - os << endl; - int nrl = (itsChanCounts.size() + nchpl - 1) / nchpl; - int ch = 0; - for (int i=0; i<nrl; ++i) { - int nrc = std::min(nchpl, int(itsChanCounts.size() - i*nchpl)); - os << std::setw(4) << ch << '-' << std::setw(4) << ch+nrc-1 << ": "; - for (int j=0; j<nrc; ++j) { - nflagged += itsChanCounts[ch]; - os << std::setw(4) << int((100. * itsChanCounts[ch]) / npoints + 0.5) - << '%'; - ch++; - } - os << endl; - } - int64 totalnpoints = npoints * itsChanCounts.size(); - // Prevent division by zero - if (totalnpoints == 0) { - totalnpoints = 1; - } - os << "Total flagged: "; - showPerc3 (os, nflagged, totalnpoints); - os << " (" << nflagged << " out of " << totalnpoints - << " visibilities)" << endl; - if (itsWarnPerc > 0) { - for (uint i=0; i<itsChanCounts.size(); ++i) { - double perc = (100. * itsChanCounts[i]) / npoints; - if (perc >= itsWarnPerc) { - os << "** NOTE: "; - showPerc1 (os, perc, 100); - os << " of data are flagged for channel " << i << endl; - } - } - } - if (! itsSaveName.empty()) { - saveChannel (npoints, itsChanCounts); - } - } - - void FlagCounter::showCorrelation (ostream& os, int64 ntimes) const - { - int64 ntotal = ntimes * itsBLCounts.size() * itsChanCounts.size(); - // Prevent division by zero - if (ntotal == 0) { - ntotal = 1; - } - os << endl - << "Percentage of flagged visibilities detected per correlation:" - << endl; - os << " " << itsCorrCounts << " out of " << ntotal - << " visibilities ["; - for (uint i=0; i<itsCorrCounts.size(); ++i) { - if (i > 0) { - os << ", "; - } - os << int(100. * itsCorrCounts[i] / ntotal + 0.5) << '%'; - } - os << ']' << endl; - } - - void FlagCounter::showPerc1 (ostream& os, double value, double total) - { - int perc = (total==0 ? 0 : int(1000. * value / total + 0.5)); - os << std::setw(3) << perc/10 << '.' << perc%10 << '%'; - } - - void FlagCounter::showPerc3 (ostream& os, double value, double total) - { - int perc = (total==0 ? 0 : int(100000. * value / total + 0.5)); - os << std::setw(5) << perc/1000 << '.'; - // It looks as if std::setfill keeps the fill character, so use - // ios.fill to be able to reset it. - char prev = os.fill ('0'); - os << std::setw(3) << perc%1000 << '%'; - os.fill (prev); - } - - void FlagCounter::saveStation (int64 npoints, const Vector<int64>& nused, - const Vector<int64>& count) const - { - // Create the table. - TableDesc td; - td.addColumn (ScalarColumnDesc<Int> ("Station")); - td.addColumn (ScalarColumnDesc<String>("Name")); - td.addColumn (ScalarColumnDesc<float> ("Percentage")); - SetupNewTable newtab(itsSaveName+"stat", td, Table::New); - Table tab(newtab); - ScalarColumn<Int> statCol(tab, "Station"); - ScalarColumn<String> nameCol(tab, "Name"); - ScalarColumn<float> percCol(tab, "Percentage"); - const Vector<String>& antNames = itsInfo->antennaNames(); - // Write if an antenna is used. - for (uint i=0; i<nused.size(); ++i) { - if (nused[i] > 0) { - int rownr = tab.nrow(); - tab.addRow(); - statCol.put (rownr, i); - nameCol.put (rownr, antNames[i]); - percCol.put (rownr, (100. * count[i]) / (nused[i] * npoints)); - } - } - } - - void FlagCounter::saveChannel (int64 npoints, - const Vector<int64>& count) const - { - // Create the table. - TableDesc td; - td.addColumn (ScalarColumnDesc<double>("Frequency")); - td.addColumn (ScalarColumnDesc<float> ("Percentage")); - SetupNewTable newtab(itsSaveName+"freq", td, Table::New); - Table tab(newtab); - ScalarColumn<double> freqCol(tab, "Frequency"); - ScalarColumn<float> percCol(tab, "Percentage"); - // Get the channel frequencies. - const Vector<double>& chanFreqs = itsInfo->chanFreqs(); - for (uint i=0; i<count.size(); ++i) { - int rownr = tab.nrow(); - tab.addRow(); - freqCol.put (rownr, chanFreqs[i]); - percCol.put (rownr, (100. * count[i]) / npoints); - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/GainCal.cc b/CEP/DP3/DPPP/src/GainCal.cc deleted file mode 100644 index fa382903f81..00000000000 --- a/CEP/DP3/DPPP/src/GainCal.cc +++ /dev/null @@ -1,1313 +0,0 @@ -//# GainCal.cc: DPPP step class to do a gain calibration -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/Package__Version.h> -#include <DPPP/GainCal.h> -#include <DPPP/Simulate.h> -#include <DPPP/ApplyCal.h> -#include <DPPP/PhaseFitter.h> -#include <DPPP/CursorUtilCasa.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/SourceDBUtil.h> -#include <DPPP/MSReader.h> -#include <DPPP/DPLogger.h> -#include <ParmDB/ParmDB.h> -#include <ParmDB/ParmValue.h> -#include <ParmDB/SourceDB.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <Common/LofarLogger.h> -#include <Common/OpenMP.h> - -#include <fstream> -#include <ctime> - -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/MatrixMath.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/casa/OS/File.h> - -#include <vector> -#include <algorithm> - -#include <limits> -#include <iostream> -#include <iomanip> - -using namespace casacore; -using namespace LOFAR::BBS; - -namespace LOFAR { - namespace DPPP { - - GainCal::GainCal (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsUseModelColumn(parset.getBool (prefix + "usemodelcolumn", false)), - itsParmDBName (parset.getString (prefix + "parmdb", "")), - itsUseH5Parm (itsParmDBName.find(".h5") != string::npos), - itsDebugLevel (parset.getInt (prefix + "debuglevel", 0)), - itsDetectStalling (parset.getBool (prefix + "detectstalling", true)), - itsApplySolution (parset.getBool (prefix + "applysolution", false)), - itsUVWFlagStep (input, parset, prefix), - itsBaselineSelection (parset, prefix), - itsMaxIter (parset.getInt (prefix + "maxiter", 50)), - itsTolerance (parset.getDouble (prefix + "tolerance", 1.e-5)), - itsPropagateSolutions - (parset.getBool(prefix + "propagatesolutions", true)), - itsSolInt (parset.getInt(prefix + "solint", 1)), - itsNFreqCells (0), - itsConverged (0), - itsNonconverged (0), - itsFailed (0), - itsStalled (0), - itsStepInParmUpdate (0), - itsChunkStartTime(0), - itsStepInSolInt (0), - itsAllSolutions () - { - stringstream ss; - ss << parset; - itsParsetString = ss.str(); - - if (itsParmDBName=="") { - itsParmDBName=parset.getString("msin")+"/instrument"; - } - - if (!itsUseH5Parm) { - itsTimeSlotsPerParmUpdate = parset.getInt(prefix + - "timeslotsperparmupdate", - 500); - } else { - itsTimeSlotsPerParmUpdate = 0; - } - - itsDataResultStep = ResultStep::ShPtr(new ResultStep()); - itsUVWFlagStep.setNextStep(itsDataResultStep); - - if (!itsUseModelColumn) { - itsPredictStep=Predict(input, parset, prefix); - itsResultStep = ResultStep::ShPtr(new ResultStep()); - itsPredictStep.setNextStep(itsResultStep); - } else { - itsApplyBeamToModelColumn=parset.getBool(prefix + - "applybeamtomodelcolumn", false); - if (itsApplyBeamToModelColumn) { - itsApplyBeamStep=ApplyBeam(input, parset, prefix, true); - ASSERT(!itsApplyBeamStep.invert()); - itsResultStep = ResultStep::ShPtr(new ResultStep()); - itsApplyBeamStep.setNextStep(itsResultStep); - } - } - - itsNIter.resize(4,0); - - if (itsApplySolution) { - itsBuf.resize(itsSolInt); - } else { - itsBuf.resize(1); - } - - string modestr = parset.getString (prefix + "caltype"); - itsMode = stringToCalType(modestr); - uint defaultNChan = 0; - if (itsMode == TECANDPHASE || itsMode == TEC) { - defaultNChan = 1; - } - itsNChan = parset.getInt(prefix + "nchan", defaultNChan); - ASSERT(itsMode!=TECSCREEN); - } - - GainCal::~GainCal() - {} - - GainCal::CalType GainCal::stringToCalType(const string &modestr) { - if (modestr=="diagonal"||modestr=="complexgain") return COMPLEXGAIN; - else if (modestr=="scalarcomplexgain") return SCALARCOMPLEXGAIN; - else if (modestr=="fulljones") return FULLJONES; - else if (modestr=="phaseonly") return PHASEONLY; - else if (modestr=="scalarphase") return SCALARPHASE; - else if (modestr=="amplitudeonly") return AMPLITUDEONLY; - else if (modestr=="scalaramplitude") return SCALARAMPLITUDE; - else if (modestr=="tecandphase") return TECANDPHASE; - else if (modestr=="tec") return TEC; - else if (modestr=="tecscreen") return TECSCREEN; - else if (modestr=="rotation+diagonal") return ROTATIONANDDIAGONAL; - else if (modestr=="rotation") return ROTATION; - THROW(Exception, "Unknown mode: "<<modestr); - } - - string GainCal::calTypeToString(GainCal::CalType caltype) { - switch(caltype) - { - case COMPLEXGAIN: return "complexgain"; - case SCALARCOMPLEXGAIN: return "scalarcomplexgain"; - case FULLJONES: return "fulljones"; - case PHASEONLY: return "phaseonly"; - case SCALARPHASE: return "scalarphase"; - case AMPLITUDEONLY: return "amplitudeonly"; - case SCALARAMPLITUDE: return "scalaramplitude"; - case TECANDPHASE: return "tecandphase"; - case TEC: return "tec"; - case TECSCREEN: return "tecscreen"; - case ROTATION: return "rotation"; - case ROTATIONANDDIAGONAL: return "rotation+diagonal"; - default: THROW(Exception, "Unknown caltype: "<< caltype); - } - } - - void GainCal::setAntennaUsed() { - Matrix<bool> selbl(itsBaselineSelection.apply (info())); - uint nBl=info().getAnt1().size(); - itsAntennaUsed.resize(info().antennaNames().size()); - itsAntennaUsed=false; - for (uint bl=0; bl<nBl; ++bl) { - if (selbl(info().getAnt1()[bl], info().getAnt2()[bl])) { - itsAntennaUsed[info().getAnt1()[bl]] = true; - itsAntennaUsed[info().getAnt2()[bl]] = true; - } - } - } - - void GainCal::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - - itsUVWFlagStep.updateInfo(infoIn); - - if (itsUseModelColumn) { - if (itsApplyBeamToModelColumn) { - itsApplyBeamStep.updateInfo(infoIn); - } - } else { - itsPredictStep.updateInfo(infoIn); - } - if (itsApplySolution) { - info().setWriteData(); - info().setWriteFlags(); - } - - if (itsSolInt==0) { - itsSolInt=info().ntime(); - } - if (itsTimeSlotsPerParmUpdate==0) { - itsTimeSlotsPerParmUpdate = info().ntime(); - } - - if (itsNChan==0) { - itsNChan = info().nchan(); - } - if (itsNChan>info().nchan()) { - itsNChan=info().nchan(); - } - itsNFreqCells = info().nchan() / itsNChan; - if (itsNChan*itsNFreqCells<info().nchan()) { // If last freq cell is smaller - itsNFreqCells++; - } - - itsSols.reserve(itsTimeSlotsPerParmUpdate); - - itsSelectedBL = itsBaselineSelection.applyVec(info()); - setAntennaUsed(); - - // Compute average frequency for every freqcell - itsFreqData.resize(itsNFreqCells); - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - double meanfreq=0; - uint chmin=itsNChan*freqCell; - uint chmax=min(info().nchan(), chmin+itsNChan); - - meanfreq = std::accumulate(info().chanFreqs().data()+chmin, - info().chanFreqs().data()+chmax, 0.0); - - itsFreqData[freqCell] = meanfreq / (chmax-chmin); - } - - // Initialize phase fitters, set their frequency data - if (itsMode==TECANDPHASE || itsMode==TEC) { - itsTECSols.reserve(itsTimeSlotsPerParmUpdate); - - itsPhaseFitters.reserve(itsNFreqCells); // TODO: could be numthreads instead - - uint nSt=info().antennaUsed().size(); - for (uint st=0; st<nSt; ++st) { - itsPhaseFitters.push_back(CountedPtr<PhaseFitter>(new PhaseFitter(itsNFreqCells))); - double* nu = itsPhaseFitters[st]->FrequencyData(); - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - nu[freqCell] = itsFreqData[freqCell]; - } - } - } - - iS.reserve(itsNFreqCells); - uint chMax = itsNChan; - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - if ((freqCell+1)*itsNChan>info().nchan()) { // Last cell can be smaller - chMax-=((freqCell+1)*itsNChan)%info().nchan(); - } - - StefCal::StefCalMode smode; - switch (itsMode) - { - case COMPLEXGAIN: smode = StefCal::DEFAULT; break; - case FULLJONES: smode = StefCal::FULLJONES; break; - case SCALARPHASE: - case PHASEONLY: - case TEC: - case TECANDPHASE: smode = StefCal::PHASEONLY; break; - case AMPLITUDEONLY: - case SCALARAMPLITUDE: smode = StefCal::AMPLITUDEONLY; break; - default: THROW(Exception, "Unhandled mode"); - } - - iS.push_back(StefCal(itsSolInt, chMax, smode, scalarMode(itsMode), - itsTolerance, info().antennaUsed().size(), - itsDetectStalling, itsDebugLevel)); - } - - itsFlagCounter.init(getInfo()); - - itsChunkStartTime = info().startTime(); - - if (itsDebugLevel>0) { - ASSERT(OpenMP::maxThreads()==1); - ASSERT(itsTimeSlotsPerParmUpdate >= info().ntime()); - itsAllSolutions.resize(IPosition(6, - iS[0].numCorrelations(), - info().antennaUsed().size(), - (itsMode==TEC||itsMode==TECANDPHASE?2:1), - itsNFreqCells, - itsMaxIter, - info().ntime() - )); - } - } - - void GainCal::show (std::ostream& os) const - { - os << "GainCal " << itsName << endl; - if (itsUseH5Parm) { - os << " H5Parm: " << itsParmDBName; - } else { - os << " parmdb: " << itsParmDBName; - if (Table::isReadable(itsParmDBName)) { - os << " (existing)"; - } else { - os << " (will be created)"; - } - } - os << endl; - os << " solint: " << itsSolInt <<endl; - os << " nchan: " << itsNChan <<endl; - os << " max iter: " << itsMaxIter << endl; - os << " tolerance: " << itsTolerance << endl; - os << " caltype: " << calTypeToString(itsMode) << endl; - os << " apply solution: " << boolalpha << itsApplySolution << endl; - os << " propagate solutions: " << boolalpha << itsPropagateSolutions << endl; - if (!itsUseH5Parm) { - os << " timeslotsperparmupdate: " << itsTimeSlotsPerParmUpdate << endl; - } - os << " detect stalling: " << boolalpha << itsDetectStalling << endl; - os << " use model column: " << boolalpha << itsUseModelColumn << endl; - itsBaselineSelection.show (os); - if (!itsUseModelColumn) { - itsPredictStep.show(os); - } else if (itsApplyBeamToModelColumn) { - itsApplyBeamStep.show(os); - } - itsUVWFlagStep.show(os); - } - - void GainCal::showTimings (std::ostream& os, double duration) const - { - double totaltime=itsTimer.getElapsed(); - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " GainCal " << itsName << endl; - - os << " "; - FlagCounter::showPerc1 (os, itsTimerPredict.getElapsed(), totaltime); - os << " of it spent in predict" << endl; - - os << " "; - FlagCounter::showPerc1 (os, itsTimerFill.getElapsed(), totaltime); - os << " of it spent in reordering visibility data" << endl; - - os << " "; - FlagCounter::showPerc1 (os, itsTimerSolve.getElapsed(), totaltime); - os << " of it spent in estimating gains and computing residuals" << endl; - - if (itsMode == TEC || itsMode == TECANDPHASE) { - os << " "; - FlagCounter::showPerc1 (os, itsTimerPhaseFit.getElapsed(), totaltime); - os << " of it spent in fitting phases" << endl; - } - - os << " "; - FlagCounter::showPerc1 (os, itsTimerWrite.getElapsed(), totaltime); - os << " of it spent in writing gain solutions to disk" << endl; - - os << " "; - os <<"Converged: "<<itsConverged<<", stalled: "<<itsStalled<<", non converged: "<<itsNonconverged<<", failed: "<<itsFailed<<endl; - os << " "; - os <<"Iters converged: " << (itsConverged==0?0:itsNIter[0]/itsConverged); - os << ", stalled: "<< (itsStalled ==0?0:itsNIter[1]/itsStalled); - os << ", non converged: "<<(itsNonconverged==0?0:itsNIter[2]/itsNonconverged); - os << ", failed: "<<(itsFailed==0?0:itsNIter[3]/itsFailed)<<endl; - } - - bool GainCal::process (const DPBuffer& bufin) - { - itsTimer.start(); - - uint bufIndex=0; - - if (itsApplySolution) { - // Need to keep a copy of all solint buffers in this step - bufIndex=itsStepInSolInt; - itsBuf[bufIndex].copy(bufin); - } else { - // We'll read the necessary info from the buffer and pass it on - itsBuf[bufIndex].referenceFilled (bufin); - } - itsInput->fetchUVW(bufin, itsBuf[bufIndex], itsTimer); - itsInput->fetchWeights(bufin, itsBuf[bufIndex], itsTimer); - itsInput->fetchFullResFlags(bufin, itsBuf[bufIndex], itsTimer); - - // UVW flagging happens on a copy of the buffer, so these flags are not written - itsUVWFlagStep.process(itsBuf[bufIndex]); - - Cube<Complex> dataCube=itsBuf[bufIndex].getData(); - Complex* data=dataCube.data(); - float* weight = itsBuf[bufIndex].getWeights().data(); - const Bool* flag=itsBuf[bufIndex].getFlags().data(); - - // Simulate. - // - // Model visibilities for each direction of interest will be computed - // and stored. - - itsTimerPredict.start(); - - if (itsUseModelColumn) { - itsInput->getModelData (itsBuf[bufIndex].getRowNrs(), itsModelData); - if (itsApplyBeamToModelColumn) { // TODO: double check this - // Temporarily put model data in data column for applybeam step - // ApplyBeam step will copy the buffer so no harm is done - itsBuf[bufIndex].getData()=itsModelData; - itsApplyBeamStep.process(itsBuf[bufIndex]); - //Put original data back in data column - itsBuf[bufIndex].getData()=dataCube; - } - } else { // Predict - itsPredictStep.process(itsBuf[bufIndex]); - } - - itsTimerPredict.stop(); - - itsTimerFill.start(); - - if (itsStepInSolInt==0) { - // Start new solution interval - - for (uint freqCell=0; freqCell<itsNFreqCells; freqCell++) { - iS[freqCell].clearStationFlagged(); - iS[freqCell].resetVis(); - } - } - - // Store data in the stefcal object - if (itsUseModelColumn && !itsApplyBeamToModelColumn) { - fillMatrices(itsModelData.data(),data,weight,flag); - } else { - fillMatrices(itsResultStep->get().getData().data(),data,weight,flag); - } - itsTimerFill.stop(); - - if (itsStepInSolInt==itsSolInt-1) { - // Solve past solution interval - stefcal(); - itsStepInParmUpdate++; - - if (itsApplySolution) { - Cube<DComplex> invsol = invertSol(itsSols.back()); - for (uint stepInSolInt=0; stepInSolInt<itsSolInt; stepInSolInt++) { - applySolution(itsBuf[stepInSolInt], invsol); - getNextStep()->process(itsBuf[stepInSolInt]); - } - } - - itsStepInSolInt=0; - } else { - itsStepInSolInt++; - } - - itsTimer.stop(); - - if (!itsUseH5Parm && (itsStepInParmUpdate == itsTimeSlotsPerParmUpdate)) { - writeSolutionsParmDB(itsChunkStartTime); - itsChunkStartTime += itsSolInt * itsTimeSlotsPerParmUpdate * info().timeInterval(); - itsSols.clear(); - itsTECSols.clear(); - itsStepInParmUpdate = 0; - } - - if (!itsApplySolution) { - getNextStep()->process(itsBuf[bufIndex]); - } - return false; - } - - Cube<DComplex> GainCal::invertSol(const Cube<DComplex>& sol) { - Cube<DComplex> invsol = sol.copy(); - uint nCr = invsol.shape()[0]; - - // Invert copy of solutions - uint nSt = invsol.shape()[1]; - for (uint st=0; st<nSt; ++st) { - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - if (nCr==4) { - ApplyCal::invert(&invsol(0,st,freqCell)); - } else { - for (uint cr=0; cr<nCr; ++cr) { - invsol(cr, st, freqCell) = 1./invsol(cr, st, freqCell); - } - } - } - } - - return invsol; - } - - void GainCal::applySolution(DPBuffer& buf, const Cube<DComplex>& invsol) { - uint nbl = buf.getData().shape()[2]; - Complex* data = buf.getData().data(); - float* weight = buf.getWeights().data(); // Not initialized yet - bool* flag = buf.getFlags().data(); - uint nchan = buf.getData().shape()[1]; - - uint nCr = invsol.shape()[0]; - - for (size_t bl=0; bl<nbl; ++bl) { - for (size_t chan=0;chan<nchan;chan++) { - uint antA = info().antennaMap()[info().getAnt1()[bl]]; - uint antB = info().antennaMap()[info().getAnt2()[bl]]; - uint freqCell = chan / itsNChan; - if (nCr>2) { - ApplyCal::applyFull( &invsol(0, antA, freqCell), - &invsol(0, antB, freqCell), - &data[bl * 4 * nchan + chan * 4 ], - &weight[bl * 4 * nchan + chan * 4 ], // Not passing weights, any pointer should do - &flag[ bl * 4 * nchan + chan * 4 ], - bl, chan, false, itsFlagCounter); // Update weights is disabled here - } - else if (scalarMode(itsMode)) { - ApplyCal::applyScalar( &invsol(0, antA, freqCell), - &invsol(0, antB, freqCell), - &data[bl * 4 * nchan + chan * 4 ], - &weight[bl * 4 * nchan + chan * 4 ], // Not passing weights, any pointer should do - &flag[ bl * 4 * nchan + chan * 4 ], - bl, chan, false, itsFlagCounter); // Update weights is disabled here - } else { - ApplyCal::applyDiag( &invsol(0, antA, freqCell), - &invsol(0, antB, freqCell), - &data[bl * 4 * nchan + chan * 4 ], - &weight[bl * 4 * nchan + chan * 4 ], // Not passing weights, any pointer should do - &flag[ bl * 4 * nchan + chan * 4 ], - bl, chan, false, itsFlagCounter); // Update weights is disabled here - } - } - } - } - - // Fills itsVis and itsMVis as matrices with all 00 polarizations in the - // top left, all 11 polarizations in the bottom right, etc. - // For TEC fitting, it also sets weights for the frequency cells - void GainCal::fillMatrices (casacore::Complex* model, casacore::Complex* data, float* weight, - const casacore::Bool* flag) { - const size_t nBl = info().nbaselines(); - const size_t nCh = info().nchan(); - const size_t nCr = info().ncorr(); - ASSERT(nCr==4 || nCr==2 || nCr==1); - - for (uint ch=0;ch<nCh;++ch) { - for (uint bl=0;bl<nBl;++bl) { - if (itsSelectedBL[bl]) { - int ant1=info().antennaMap()[info().getAnt1()[bl]]; - int ant2=info().antennaMap()[info().getAnt2()[bl]]; - DBGASSERT(ant1>=0 && ant2>=0); - if (ant1==ant2 || - iS[ch/itsNChan].getStationFlagged()[ant1] || - iS[ch/itsNChan].getStationFlagged()[ant2] || - flag[bl*nCr*nCh+ch*nCr]) { // Only check flag of cr==0 - continue; - } - - if (itsMode==TEC || itsMode==TECANDPHASE) { - iS[ch/itsNChan].incrementWeight(weight[bl*nCr*nCh+ch*nCr]); - } - - for (uint cr=0;cr<nCr;++cr) { - // The nCrDiv is there such that for nCr==2 the visibilities end up at (0,0) for cr==0, (1,1) for cr==1 - uint nCrDiv = (nCr==4?2:1); - iS[ch/itsNChan].getVis() (IPosition(6,ant1,cr/nCrDiv,itsStepInSolInt,ch%itsNChan,cr%2,ant2)) = - DComplex(data [bl*nCr*nCh+ch*nCr+cr]) * - DComplex(sqrt(weight[bl*nCr*nCh+ch*nCr+cr])); - iS[ch/itsNChan].getMVis()(IPosition(6,ant1,cr/nCrDiv,itsStepInSolInt,ch%itsNChan,cr%2,ant2)) = - DComplex(model[bl*nCr*nCh+ch*nCr+cr]) * - DComplex(sqrt(weight[bl*nCr*nCh+ch*nCr+cr])); - - // conjugate transpose - iS[ch/itsNChan].getVis() (IPosition(6,ant2,cr%2,itsStepInSolInt,ch%itsNChan,cr/nCrDiv,ant1)) = - DComplex(conj(data [bl*nCr*nCh+ch*nCr+cr])) * - DComplex(sqrt(weight[bl*nCr*nCh+ch*nCr+cr])); - iS[ch/itsNChan].getMVis()(IPosition(6,ant2,cr%2,itsStepInSolInt,ch%itsNChan,cr/nCrDiv,ant1)) = - DComplex(conj(model[bl*nCr*nCh+ch*nCr+cr] )) * - DComplex(sqrt(weight[bl*nCr*nCh+ch*nCr+cr])); - } - } - } - } - } - - bool GainCal::scalarMode(CalType caltype) { - return (caltype==TECANDPHASE || caltype==TEC || caltype==SCALARPHASE || - caltype==SCALARAMPLITUDE); - } - - bool GainCal::diagonalMode(CalType caltype) { - return (caltype==COMPLEXGAIN || caltype==PHASEONLY || - caltype==AMPLITUDEONLY); - } - - void GainCal::stefcal () { - itsTimerSolve.start(); - - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - if (itsPropagateSolutions) { - iS[freqCell].init(false); - } else { - iS[freqCell].init(true); - } - } - - uint iter=0; - - casacore::Matrix<double> tecsol(itsMode==TECANDPHASE?2:1, - info().antennaUsed().size(), 0); - - vector<StefCal::Status> converged(itsNFreqCells,StefCal::NOTCONVERGED); - for (;iter<itsMaxIter;++iter) { - bool allConverged=true; -#pragma omp parallel for - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - // Do another step when stalled and not all converged - if (converged[freqCell]==StefCal::CONVERGED) { - continue; - } - converged[freqCell] = iS[freqCell].doStep(iter); - // Only continue if there are steps worth continuing - // (so not converged, failed or stalled) - if (converged[freqCell]==StefCal::NOTCONVERGED) { - allConverged = false; - } - } - - if (itsDebugLevel>0) { - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - Matrix<DComplex> fullSolution = iS[freqCell].getSolution(false); - std::copy(fullSolution.begin(), - fullSolution.end(), - &(itsAllSolutions(IPosition(6, 0, - 0, - 0, - freqCell, - iter, - itsStepInParmUpdate - )))); - } - } - - if (itsMode==TEC || itsMode==TECANDPHASE) { - itsTimerSolve.stop(); - itsTimerPhaseFit.start(); - casacore::Matrix<casacore::DComplex> sols_f(itsNFreqCells, info().antennaUsed().size()); - - uint nSt = info().antennaUsed().size(); - - // TODO: set phase reference so something smarter that station 0 - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - casacore::Matrix<casacore::DComplex> sol = iS[freqCell].getSolution(false); - if (iS[freqCell].getStationFlagged()[0]) { - // If reference station flagged, flag whole channel - for (uint st=0; st<info().antennaUsed().size(); ++st) { - iS[freqCell].getStationFlagged()[st] = true; - } - } else { - for (uint st=0; st<info().antennaUsed().size(); ++st) { - sols_f(freqCell, st) = sol(st, 0)/sol(0, 0); - ASSERT(isFinite(sols_f(freqCell, st))); - } - } - } - -#pragma omp parallel for - for (uint st=0; st<nSt; ++st) { - uint numpoints=0; - double* phases = itsPhaseFitters[st]->PhaseData(); - double* weights = itsPhaseFitters[st]->WeightData(); - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - if (iS[freqCell].getStationFlagged()[st%nSt] || - converged[freqCell]==StefCal::FAILED) { - phases[freqCell] = 0; - weights[freqCell] = 0; - } else { - phases[freqCell] = arg(sols_f(freqCell, st)); - if (!isFinite(phases[freqCell])) { - cout<<"Yuk, phases[freqCell]="<<phases[freqCell]<<", sols_f(freqCell, st)="<<sols_f(freqCell, st)<<endl; - ASSERT(isFinite(phases[freqCell])); - } - ASSERT(iS[freqCell].getWeight()>0); - weights[freqCell] = iS[freqCell].getWeight(); - numpoints++; - } - } - - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - ASSERT(isFinite(phases[freqCell])); - } - - if (numpoints>1) { // TODO: limit should be higher - //cout<<"tecsol(0,"<<st<<")="<<tecsol(0,st)<<", tecsol(1,"<<st<<")="<<tecsol(1,st)<<endl; - if (itsMode==TECANDPHASE) { - itsPhaseFitters[st]->FitDataToTEC2Model(tecsol(0, st), tecsol(1,st)); - } else { // itsMode==TEC - itsPhaseFitters[st]->FitDataToTEC1Model(tecsol(0, st)); - } - // Update solution in stefcal - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - ASSERT(isFinite(phases[freqCell])); - iS[freqCell].getSolution(false)(st, 0) = polar(1., phases[freqCell]); - } - } else { - tecsol(0, st) = 0; //std::numeric_limits<double>::quiet_NaN(); - if (itsMode==TECANDPHASE) { - tecsol(1, st) = 0; //std::numeric_limits<double>::quiet_NaN(); - } - } - - if (itsDebugLevel>0) { - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - Matrix<DComplex> fullSolution = iS[freqCell].getSolution(false); - std::copy(fullSolution.begin(), - fullSolution.end(), - &(itsAllSolutions(IPosition(6, 0, - 0, - 1, - freqCell, - iter, - itsStepInParmUpdate - )))); - } - } - } - itsTimerPhaseFit.stop(); - itsTimerSolve.start(); - } - - if (allConverged) { - break; - } - - } // End niter - - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - switch (converged[freqCell]) { - case StefCal::CONVERGED: {itsConverged++; itsNIter[0]+=iter; break;} - case StefCal::STALLED: {itsStalled++; itsNIter[1]+=iter; break;} - case StefCal::NOTCONVERGED: {itsNonconverged++; itsNIter[2]+=iter; break;} - case StefCal::FAILED: {itsFailed++; itsNIter[3]+=iter; break;} - default: - THROW(Exception, "Unknown converged status"); - } - } - - // Stefcal terminated (either by maxiter or by converging) - - Cube<DComplex> sol(iS[0].numCorrelations(), info().antennaUsed().size(), itsNFreqCells); - - uint transpose[2][4] = { { 0, 1, 0, 0 }, { 0, 2, 1, 3 } }; - - uint nSt = info().antennaUsed().size(); - - for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { - casacore::Matrix<casacore::DComplex> tmpsol = iS[freqCell].getSolution(true); - - for (uint st=0; st<nSt; st++) { - for (uint cr=0; cr<iS[0].nCr(); ++cr) { - uint crt=transpose[iS[0].numCorrelations()/4][cr]; // Conjugate transpose ! (only for numCorrelations = 4) - sol(crt, st, freqCell) = conj(tmpsol(st, cr)); // Conjugate transpose - if (itsMode==COMPLEXGAIN || itsMode==PHASEONLY || itsMode==AMPLITUDEONLY) { - sol(crt+1, st, freqCell) = conj(tmpsol(st+nSt,cr)); // Conjugate transpose - } - } - } - } - itsSols.push_back(sol); - if (itsMode==TEC || itsMode==TECANDPHASE) { - itsTECSols.push_back(tecsol); - } - - itsTimerSolve.stop(); - } // End stefcal() - - - void GainCal::initParmDB() { - itsParmDB = boost::shared_ptr<BBS::ParmDB> - (new BBS::ParmDB(BBS::ParmDBMeta("casa", itsParmDBName), - false)); - itsParmDB->lock(); - // Store the (freq, time) resolution of the solutions. - - double freqWidth = getInfo().chanWidths()[0]; - if (getInfo().chanFreqs().size()>1) { // Handle data with evenly spaced gaps between channels - freqWidth = info().chanFreqs()[1]-info().chanFreqs()[0]; - } - - vector<double> resolution(2); - resolution[0] = freqWidth * itsNChan; - resolution[1] = info().timeInterval() * itsSolInt; - itsParmDB->setDefaultSteps(resolution); - - string parmname=parmName()+"*"; - - if (!itsParmDB->getNames(parmname).empty()) { - DPLOG_WARN_STR ("Solutions for "<<parmname<<" already in "<<itsParmDBName - <<", these are removed"); - // Specify entire domain of this MS; only to specify that the existing - // values should be deleted for this domain - BBS::Axis::ShPtr tdomAxis( - new BBS::RegularAxis( - info().startTime(), - info().ntime() * info().timeInterval(), - 1)); - BBS::Axis::ShPtr fdomAxis( - new BBS::RegularAxis( - info().chanFreqs()[0] - freqWidth * 0.5, - freqWidth * getInfo().chanFreqs().size(), 1)); - - itsParmDB->deleteValues(parmname, BBS::Box( - fdomAxis->start(), tdomAxis->start(), - fdomAxis->end(), tdomAxis->end(), true)); - } - - // Write out default values, if they don't exist yet - ParmMap parmset; - - // Write out default amplitudes - if (itsMode==PHASEONLY || itsMode==SCALARPHASE) { - itsParmDB->getDefValues(parmset, "Gain:0:0:Ampl"); - if (parmset.empty()) { - ParmValueSet pvset(ParmValue(1.0)); - itsParmDB->putDefValue("Gain:0:0:Ampl",pvset); - itsParmDB->putDefValue("Gain:1:1:Ampl",pvset); - } - } - - // Write out default phases - if (itsMode==AMPLITUDEONLY || itsMode==SCALARAMPLITUDE) { - itsParmDB->getDefValues(parmset, "Gain:0:0:Phase"); - if (parmset.empty()) { - ParmValueSet pvset(ParmValue(0.0)); - itsParmDB->putDefValue("Gain:0:0:Phase",pvset); - itsParmDB->putDefValue("Gain:1:1:Phase",pvset); - } - } - - // Write out default gains - if (itsMode==COMPLEXGAIN || itsMode==FULLJONES) { - itsParmDB->getDefValues(parmset, "Gain:0:0:Real"); - if (parmset.empty()) { - ParmValueSet pvset(ParmValue(1.0)); - itsParmDB->putDefValue("Gain:0:0:Real",pvset); - itsParmDB->putDefValue("Gain:1:1:Real",pvset); - } - } - } - - string GainCal::parmName() { - string name; - if (itsMode==SCALARPHASE) { - name=string("CommonScalarPhase:"); - } else if (itsMode==SCALARAMPLITUDE) { - name=string("CommonScalarAmplitude:"); - } else if (itsMode==TEC || itsMode==TECANDPHASE) { - name=string("TEC:"); - } - else { - name=string("Gain:"); - } - - return name; - } - - void GainCal::writeSolutionsH5Parm(double) { - itsTimer.start(); - itsTimerWrite.start(); - - H5Parm h5parm(itsParmDBName, true); - - // Fill antenna info in H5Parm, need to convert from casa types to std types - std::vector<std::string> allAntennaNames(info().antennaNames().size()); - std::vector<std::vector<double> > antennaPos(info().antennaPos().size()); - for (uint i=0; i<info().antennaNames().size(); ++i) { - allAntennaNames[i]=info().antennaNames()[i]; - casacore::Quantum<casacore::Vector<double> > pos = info().antennaPos()[i].get("m"); - antennaPos[i].resize(3); - antennaPos[i][0] = pos.getValue()[0]; - antennaPos[i][1] = pos.getValue()[1]; - antennaPos[i][2] = pos.getValue()[2]; - } - - h5parm.addAntennas(allAntennaNames, antennaPos); - - vector<pair<double, double> > pointingPosition(1); - MDirection phasecenter = info().phaseCenter(); - pointingPosition[0].first = phasecenter.getValue().get()[0]; - pointingPosition[0].second = phasecenter.getValue().get()[1]; - vector<string> pointingName(1, "POINTING"); - - h5parm.addSources(pointingName, pointingPosition); - - uint nPol; - vector<string> polarizations; - if (scalarMode(itsMode)) { - nPol = 1; - } else if (diagonalMode(itsMode)) { - nPol = 2; - polarizations.push_back("XX"); - polarizations.push_back("YY"); - } else { - ASSERT(itsMode==FULLJONES); - polarizations.push_back("XX"); - polarizations.push_back("XY"); - polarizations.push_back("YX"); - polarizations.push_back("YY"); - nPol = 4; - } - - // Construct time axis - uint nSolTimes = (info().ntime()+itsSolInt-1)/itsSolInt; - vector<double> solTimes(nSolTimes); - ASSERT(nSolTimes==itsSols.size()); - double starttime=info().startTime(); - for (uint t=0; t<nSolTimes; ++t) { - solTimes[t] = starttime+(t+0.5)*info().timeInterval()*itsSolInt; - } - - // Construct frequency axis - uint nSolFreqs; - if (itsMode==TEC || itsMode==TECANDPHASE) { - nSolFreqs = 1; - } else { - nSolFreqs = itsNFreqCells; - } - - vector<H5Parm::AxisInfo> axes; - axes.push_back(H5Parm::AxisInfo("time", itsSols.size())); - axes.push_back(H5Parm::AxisInfo("freq", nSolFreqs)); - axes.push_back(H5Parm::AxisInfo("ant", info().antennaUsed().size())); - if (nPol>1) { - axes.push_back(H5Parm::AxisInfo("pol", nPol)); - } - - vector<H5Parm::SolTab> soltabs = makeSolTab(h5parm, itsMode, axes); - - std::vector<std::string> antennaUsedNames; - for (uint st = 0; st<info().antennaUsed().size(); ++st) { - antennaUsedNames.push_back(info().antennaNames()[info().antennaUsed()[st]]); - } - - vector<H5Parm::SolTab>::iterator soltabiter = soltabs.begin(); - for (; soltabiter != soltabs.end(); ++soltabiter) { - (*soltabiter).setAntennas(antennaUsedNames); - if (nPol>1) { - (*soltabiter).setPolarizations(polarizations); - } - if (itsMode==TEC || itsMode==TECANDPHASE) { - // Set channel to frequency of middle channel - // TODO: fix this for nchan - vector<double> oneFreq(1); - oneFreq[0] = info().chanFreqs()[info().nchan()/2]; - (*soltabiter).setFreqs(oneFreq); - } else { - (*soltabiter).setFreqs(itsFreqData); - } - (*soltabiter).setTimes(solTimes); - } - - // Put solutions in a contiguous piece of memory - string historyString = "CREATE by DPPP\n" + - Version::getInfo<DPPPVersion>("DPPP", "top") + "\n" + - "step " + itsName + " in parset: \n" + itsParsetString; - - if (itsMode==TEC || itsMode==TECANDPHASE) { - vector<double> tecsols(nSolFreqs*antennaUsedNames.size()*nSolTimes*nPol); - vector<double> weights(nSolFreqs*antennaUsedNames.size()*nSolTimes*nPol, 1.); - vector<double> phasesols; - if (itsMode==TECANDPHASE) { - phasesols.resize(nSolFreqs*antennaUsedNames.size()*nSolTimes*nPol); - } - size_t i=0; - for (uint time=0; time<nSolTimes; ++time) { - for (uint freqCell=0; freqCell<nSolFreqs; ++freqCell) { - for (uint ant=0; ant<info().antennaUsed().size(); ++ant) { - for (uint pol=0; pol<nPol; ++pol) { - ASSERT(!itsTECSols[time].empty()); - tecsols[i] = itsTECSols[time](0, ant) / 8.44797245e9; - if (!std::isfinite(tecsols[i])) { - weights[i] = 0.; - } - if (itsMode==TECANDPHASE) { - phasesols[i] = -itsTECSols[time](0, ant); - } - ++i; - } - } - } - } - soltabs[0].setValues(tecsols, weights, historyString); - if (itsMode==TECANDPHASE) { - soltabs[1].setValues(phasesols, weights, historyString); - } - } else { - vector<DComplex> sols(nSolFreqs*antennaUsedNames.size()*nSolTimes*nPol); - vector<double> weights(nSolFreqs*antennaUsedNames.size()*nSolTimes*nPol, 1.); - size_t i=0; - for (uint time=0; time<nSolTimes; ++time) { - for (uint freqCell=0; freqCell<nSolFreqs; ++freqCell) { - for (uint ant=0; ant<info().antennaUsed().size(); ++ant) { - for (uint pol=0; pol<nPol; ++pol) { - ASSERT(!itsSols[time].empty()); - sols[i] = itsSols[time](pol, ant, freqCell); - if (!std::isfinite(sols[i].real())) { - weights[i] = 0.; - } - ++i; - } - } - } - } - - if (itsMode!=AMPLITUDEONLY) { - soltabs[0].setComplexValues(sols, weights, false, historyString); - } else { - soltabs[0].setComplexValues(sols, weights, true, historyString); - } - if (soltabs.size()>1) { - // Also write amplitudes - soltabs[1].setComplexValues(sols, weights, true, historyString); - } - } - - itsTimerWrite.stop(); - itsTimer.stop(); - } - - vector<H5Parm::SolTab> GainCal::makeSolTab(H5Parm& h5parm, CalType caltype, - vector<H5Parm::AxisInfo>& axes) { - uint numsols = 1; - // For [scalar]complexgain, store two soltabs: phase and amplitude - if (caltype == GainCal::COMPLEXGAIN || - caltype == GainCal::SCALARCOMPLEXGAIN || - caltype == GainCal::TECANDPHASE || - caltype == GainCal::FULLJONES) { - numsols = 2; - } - vector<H5Parm::SolTab> soltabs; - for (uint solnum=0; solnum<numsols; ++solnum) { - string solTabName; - H5Parm::SolTab soltab; - switch (caltype) { - case GainCal::SCALARPHASE: - case GainCal::PHASEONLY: - solTabName = "phase000"; - soltab = h5parm.createSolTab(solTabName, "phase", axes); - break; - case GainCal::SCALARCOMPLEXGAIN: - case GainCal::COMPLEXGAIN: - case GainCal::FULLJONES: - if (solnum==0) { - solTabName = "phase000"; - soltab = h5parm.createSolTab(solTabName, "phase", axes); - } else { - solTabName = "amplitude000"; - soltab = h5parm.createSolTab(solTabName, "amplitude", axes); - } - break; - case GainCal::SCALARAMPLITUDE: - case GainCal::AMPLITUDEONLY: - solTabName = "amplitude000"; - soltab = h5parm.createSolTab(solTabName, "amplitude", axes); - break; - case GainCal::TEC: - case GainCal::TECANDPHASE: - if (solnum==0) { - solTabName = "tec000"; - soltab = h5parm.createSolTab(solTabName, "tec", axes); - } else { - solTabName = "phase000"; - soltab = h5parm.createSolTab(solTabName, "phase", axes); - } - break; - default: - THROW(Exception, "Unhandled mode in writing H5Parm output: "<<calTypeToString(caltype)); - } - soltabs.push_back(soltab); - } - return soltabs; - } - - void GainCal::writeSolutionsParmDB(double startTime) { - itsTimer.start(); - itsTimerWrite.start(); - - // Open the ParmDB at the first write. - // In that way the instrumentmodel ParmDB can be in the MS directory. - if (!itsParmDB) { - initParmDB(); - } // End initialization of parmdb - - uint ntime=itsSols.size(); - uint nchan, nfreqs; - if (itsMode==TEC || itsMode==TECANDPHASE) { - nfreqs = 1; - nchan = info().nchan(); - } else { - nfreqs = itsNFreqCells; - nchan = itsNChan; - } - - // Construct solution grid for the current chunk - double freqWidth = getInfo().chanWidths()[0]; - if (getInfo().chanFreqs().size()>1) { // Handle data with evenly spaced gaps between channels - freqWidth = info().chanFreqs()[1]-info().chanFreqs()[0]; - } - - // Get end time of the current chunk. For the last chunk, this - // is chopped off at the end of the MS (only if solint > 1) - double endTime = min(startTime + ntime * info().timeInterval() * itsSolInt, - info().startTime() + info().ntime() * info().timeInterval()); - - // Make time axis (can be non regular for last chunk if solint > 1) - vector<double> lowtimes(ntime), hightimes(ntime); - for (uint t=0; t<ntime; ++t) { - lowtimes[t] = startTime + info().timeInterval() * itsSolInt * t; - hightimes[t] = min(startTime + info().timeInterval() * itsSolInt * (t+1), - endTime); - } - BBS::Axis::ShPtr timeAxis = Axis::makeAxis(lowtimes, hightimes); - - BBS::Axis::ShPtr freqAxis( - new BBS::RegularAxis( - getInfo().chanFreqs()[0] - freqWidth * 0.5, - freqWidth*nchan, - nfreqs)); - BBS::Grid solGrid(freqAxis, timeAxis); - - // Construct domain grid for the current chunk - BBS::Axis::ShPtr tdomAxis( - new BBS::RegularAxis( - startTime, - endTime - startTime, - 1)); - BBS::Axis::ShPtr fdomAxis( - new BBS::RegularAxis( - info().chanFreqs()[0] - freqWidth * 0.5, - freqWidth * getInfo().chanFreqs().size(), 1)); - BBS::Grid domainGrid(fdomAxis, tdomAxis); - - // Write the solutions per parameter. - const char* str0101[] = {"0:0:","0:1:","1:0:","1:1:"}; - const char* strri[] = {"Real:","Imag:"}; - Matrix<double> values(nfreqs, ntime); - - DComplex sol; - - uint nSt=info().antennaUsed().size(); - - for (size_t st=0; st<nSt; ++st) { - // Do not write NaN solutions for stations that were not used - if (!itsAntennaUsed[info().antennaUsed()[st]]) { - // itsAntennaUsed is indexed with real antenna numbers, so antennaUsed() is needed - continue; - } - for (int pol=0; pol<4; ++pol) { // For 0101 - if (scalarMode(itsMode) && pol>0) { - continue; - } else if (diagonalMode(itsMode) && (pol==1||pol==2)) { - continue; - } - int realimmax; // For tecandphase, this functions as dummy between tec and commonscalarphase - if (itsMode==PHASEONLY || itsMode==SCALARPHASE || - itsMode==AMPLITUDEONLY || itsMode==SCALARAMPLITUDE || itsMode==TEC) { - realimmax=1; - } else { - realimmax=2; - } - for (int realim=0; realim<realimmax; ++realim) { // For real and imaginary - string name = parmName(); - - if (itsMode!=SCALARPHASE && itsMode!=SCALARAMPLITUDE) { - name+=str0101[pol]; - if (itsMode==PHASEONLY) { - name=name+"Phase:"; - } else if (itsMode==AMPLITUDEONLY) { - name=name+"Ampl:"; - } else { - name=name+strri[realim]; - } - } - if (itsMode==TECANDPHASE || itsMode==TEC) { - if (realim==0) { - name="TEC:"; - } else { - name="CommonScalarPhase:"; - } - } - - name+=info().antennaNames()[info().antennaUsed()[st]]; - - // Collect its solutions for all times and frequency cells in a single array. - for (uint ts=0; ts<ntime; ++ts) { - for (uint freqCell=0; freqCell<nfreqs; ++freqCell) { - if (itsMode==FULLJONES) { - if (realim==0) { - values(freqCell, ts) = real(itsSols[ts](pol,st,freqCell)); - } else { - values(freqCell, ts) = imag(itsSols[ts](pol,st,freqCell)); - } - } else if (itsMode==COMPLEXGAIN) { - if (realim==0) { - values(freqCell, ts) = real(itsSols[ts](pol/3,st,freqCell)); - } else { - values(freqCell, ts) = imag(itsSols[ts](pol/3,st,freqCell)); - } - } else if (itsMode==SCALARPHASE || itsMode==PHASEONLY) { - values(freqCell, ts) = arg(itsSols[ts](pol/3,st,freqCell)); - } else if (itsMode==SCALARAMPLITUDE || itsMode==AMPLITUDEONLY) { - values(freqCell, ts) = abs(itsSols[ts](pol/3,st,freqCell)); - } else if (itsMode==TEC || itsMode==TECANDPHASE) { - if (realim==0) { - values(freqCell, ts) = itsTECSols[ts](realim,st) / 8.44797245e9; - } else { - values(freqCell, ts) = -itsTECSols[ts](realim,st); // TODO: why is there a minus here? - } - } - else { - THROW (Exception, "Unhandled mode"); - } - } - } - BBS::ParmValue::ShPtr pv(new BBS::ParmValue()); - pv->setScalars (solGrid, values); - - BBS::ParmValueSet pvs(domainGrid, - vector<BBS::ParmValue::ShPtr>(1, pv)); - map<string,int>::const_iterator pit = itsParmIdMap.find(name); - - if (pit == itsParmIdMap.end()) { - // First time, so a new nameId will be set. - // Check if the name was defined in the parmdb previously - int nameId = itsParmDB->getNameId(name); - itsParmDB->putValues (name, nameId, pvs); - itsParmIdMap[name] = nameId; - } else { - // Parm has been put before. - int nameId = pit->second; - itsParmDB->putValues (name, nameId, pvs); - } - } - } - } - - itsTimerWrite.stop(); - itsTimer.stop(); - } - - void GainCal::finish() - { - itsTimer.start(); - - //Solve remaining time slots if any - if (itsStepInSolInt!=0) { - stefcal(); - - if (itsApplySolution) { - Cube<DComplex> invsol = invertSol(itsSols.back()); - for (uint stepInSolInt=0; stepInSolInt<itsStepInSolInt; stepInSolInt++) { - applySolution(itsBuf[stepInSolInt], invsol); - getNextStep()->process(itsBuf[stepInSolInt]); - } - } - } - - itsTimer.stop(); - - if (!itsSols.empty()) { - if (itsUseH5Parm) { - writeSolutionsH5Parm(itsChunkStartTime); - } else { - writeSolutionsParmDB(itsChunkStartTime); - } - if (itsDebugLevel>0) { - H5::H5File hdf5file = H5::H5File("debug.h5", H5F_ACC_TRUNC); - vector<hsize_t> dims(6); - for (uint i=0; i<6; ++i) { - dims[i] = itsAllSolutions.shape()[5-i]; - } - H5::DataSpace dataspace(dims.size(), &(dims[0]), NULL); - H5::CompType complex_data_type(sizeof(DComplex)); - complex_data_type.insertMember( "r", 0, H5::PredType::IEEE_F64LE); - complex_data_type.insertMember( "i", sizeof(double), H5::PredType::IEEE_F64LE); - H5::DataSet dataset = hdf5file.createDataSet("val", - complex_data_type, - dataspace); - dataset.write(itsAllSolutions.data(), complex_data_type); - hdf5file.close(); - } - } - - // Let the next steps finish. - getNextStep()->finish(); - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/GaussianSource.cc b/CEP/DP3/DPPP/src/GaussianSource.cc deleted file mode 100644 index ff0e0411d0a..00000000000 --- a/CEP/DP3/DPPP/src/GaussianSource.cc +++ /dev/null @@ -1,69 +0,0 @@ -//# GaussianSource.cc: Gaussian source model component. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/GaussianSource.h> -#include <DPPP/ModelComponentVisitor.h> - -namespace LOFAR -{ -namespace DPPP -{ - -GaussianSource::GaussianSource(const Position &position) - : PointSource(position), - itsPositionAngle(0.0), - itsMajorAxis(0.0), - itsMinorAxis(0.0) -{ -} - -GaussianSource::GaussianSource(const Position &position, const Stokes &stokes) - : PointSource(position, stokes), - itsPositionAngle(0.0), - itsMajorAxis(0.0), - itsMinorAxis(0.0) -{ -} - -void GaussianSource::setPositionAngle(double angle) -{ - itsPositionAngle = angle; -} - -void GaussianSource::setMajorAxis(double fwhm) -{ - itsMajorAxis = fwhm; -} - -void GaussianSource::setMinorAxis(double fwhm) -{ - itsMinorAxis = fwhm; -} - -void GaussianSource::accept(ModelComponentVisitor &visitor) const -{ - visitor.visit(*this); -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/GridInterpolate.cc b/CEP/DP3/DPPP/src/GridInterpolate.cc deleted file mode 100644 index 158451aad65..00000000000 --- a/CEP/DP3/DPPP/src/GridInterpolate.cc +++ /dev/null @@ -1,102 +0,0 @@ -//# GridInterpolate.cc: Interpolate data from regular 2d grid to another -//# Copyright (C) 2018 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GridInterpolate.cc 37169 2017-04-19 12:41:21Z dijkema $ -//# - -#include <DPPP/GridInterpolate.h> - -#include <iostream> -#include <vector> -#include <cassert> -#include <stdexcept> - -using namespace std; - -namespace LOFAR { - void getAxisIndices(const vector<double>& ax_src, - const vector<double>& ax_tgt, - vector<size_t>& indices, - bool nearest) { - indices.resize(ax_tgt.size()); - if (ax_tgt.empty()) { - return; - } - assert(!ax_src.empty()); - - double lowmatch, highmatch; - - vector<double>::const_iterator src_val = ax_src.begin(); - vector<double>::const_iterator tgt_val = ax_tgt.begin(); - vector<size_t>::iterator index_val = indices.begin(); - - while (tgt_val != ax_tgt.end()) { - while (*src_val < *tgt_val && src_val != ax_src.end()) { - src_val++; - } - if (src_val == ax_src.begin()) { - *index_val = src_val - ax_src.begin(); - } else if (src_val == ax_src.end()) { - *index_val = src_val - ax_src.begin() - 1; - } else { - if (nearest) { - lowmatch = *(src_val-1); - highmatch = *src_val; - - if (highmatch - *tgt_val < *tgt_val - lowmatch) { - *index_val = src_val - ax_src.begin(); - } else { - *index_val = src_val - ax_src.begin() - 1; - } - } else { - *index_val = src_val - ax_src.begin() - 1; - } - } - tgt_val++; index_val++; - } - } - - void gridNearestNeighbor(const vector<double>& x_src, - const vector<double>& y_src, - const vector<double>& x_tgt, - const vector<double>& y_tgt, - const double* vals_src, - double* vals_tgt, - bool nearest) { - vector<size_t> x_indices; - vector<size_t> y_indices; - getAxisIndices(x_src, x_tgt, x_indices, nearest); - getAxisIndices(y_src, y_tgt, y_indices, nearest); - - size_t nx = x_tgt.size(); - size_t ny = y_tgt.size(); - size_t ny_src = y_src.size(); - // y varies fastest - - if (nearest) { - for (size_t i=0; i<nx; ++i) { - for (size_t j=0; j<ny; ++j) { - vals_tgt[i*ny+j] = vals_src[x_indices[i]*ny_src + y_indices[j]]; - } - } - } else { - throw std::logic_error("Not implemented"); - } - } -} diff --git a/CEP/DP3/DPPP/src/H5Parm.cc b/CEP/DP3/DPPP/src/H5Parm.cc deleted file mode 100644 index afa6d4fd663..00000000000 --- a/CEP/DP3/DPPP/src/H5Parm.cc +++ /dev/null @@ -1,180 +0,0 @@ -#include <lofar_config.h> -#include <DPPP/H5Parm.h> -#include <Common/Exception.h> -#include <Common/StringUtil.h> -#include <Common/LofarLogger.h> -#include <cstring> -#include <complex> -#include <sstream> -#include <iomanip> -#include <sys/stat.h> - -#include <hdf5.h> - -using namespace std; - -namespace LOFAR { - H5Parm::H5Parm(const std::string& filename, bool forceNew, - bool forceNewSolSet, const std::string& solSetName): - H5::H5File(filename, - !forceNew&&access(filename.c_str(),F_OK)!=-1?H5F_ACC_RDWR:H5F_ACC_TRUNC - ) - { - if (forceNewSolSet || getNumObjs()==0) { // Create a new solSet - if (solSetName=="") { - // Get the name of first non-existing solset - stringstream newSolSetName; - H5::Group tryGroup; - for (uint solSetNum=0; solSetNum<100; ++solSetNum) { - try { - H5::Exception::dontPrint(); - newSolSetName<<"sol"<<setfill('0')<<setw(3)<<solSetNum; - tryGroup = openGroup(newSolSetName.str()); - newSolSetName.str(""); - } - catch (H5::FileIException& not_found_error ) { - // solSetName does not exist yet - break; - } - tryGroup.close(); - } - _solSet = createGroup("/"+newSolSetName.str(), H5P_DEFAULT); - } else { - // Create solset with the given name - _solSet = createGroup("/"+solSetName, H5P_DEFAULT); - } - addVersionStamp(_solSet); - } else { - string solSetNameToOpen=solSetName; - if (solSetNameToOpen=="") { - if (this->getNumObjs()==1) { - solSetNameToOpen=this->getObjnameByIdx(0); - } else { - THROW(Exception, "H5Parm "<<filename<<" contains more than one SolSet, "<< - "please specify which one to use."); - } - } - - _solSet = openGroup(solSetNameToOpen); - - vector<string> solTabNames; - for (uint i=0; i<_solSet.getNumObjs();++i) { - if (_solSet.getObjTypeByIdx(i)==H5G_GROUP) { - solTabNames.push_back(_solSet.getObjnameByIdx(i)); - } - } - - for (vector<string>::iterator solTabName=solTabNames.begin(); - solTabName!=solTabNames.end(); ++solTabName) { - H5::Group group = _solSet.openGroup(*solTabName); - _solTabs.insert( - std::map<std::string, SolTab>::value_type (*solTabName, SolTab(group))); - } - } - } - - - H5Parm::H5Parm() { - } - - H5Parm::~H5Parm() { - // Throw an error if the antenna or source table is not present - //_solSet.openDataSet("antenna"); - //_solSet.openDataSet("source"); - _solSet.close(); - } - - string H5Parm::getSolSetName() const { - char buffer[100]; - hsize_t namelen = H5Iget_name(_solSet.getId(),buffer,100); - buffer[namelen+1]=0; - // Strip leading '/' - return buffer+1; - } - - void H5Parm::addVersionStamp(H5::Group &node) { - // Write an attribute with the h5parm version - H5::Attribute attr = node.createAttribute("h5parm_version", - H5::StrType(H5::PredType::C_S1, 3), - H5::DataSpace()); - attr.write(H5::StrType(H5::PredType::C_S1, 3), "1.0"); - } - - void H5Parm::addSources (const std::vector<std::string>& names, - const std::vector<std::pair<double, double> >& dirs) { - hsize_t dims[1]; - - // Create data type - dims[0]=2; // For ra, dec in directions - H5::CompType sourceType(sizeof(source_t)); - sourceType.insertMember("name", HOFFSET(antenna_t, name), H5::StrType(H5::PredType::C_S1, 128)); - sourceType.insertMember("dir", HOFFSET(source_t, dir), H5::ArrayType(H5::PredType::NATIVE_FLOAT, 1, dims)); - - // Create dataset - dims[0] = names.size(); - H5::DataSpace dataspace(1, dims, NULL); - H5::DataSet dataset = _solSet.createDataSet("source", sourceType, dataspace); - - // Prepare data - vector<source_t> sources(names.size()); - for (uint src=0; src<sources.size(); ++src) { - std::strncpy(sources[src].name, names[src].c_str(), 128); - sources[src].dir[0] = dirs[src].first; - sources[src].dir[1] = dirs[src].second; - } - - // Write data - dataset.write(&(sources[0]), sourceType); - } - - void H5Parm::addAntennas (const std::vector<std::string>& names, - const std::vector<std::vector<double> >& positions) { - hsize_t dims[1]; - - // Create data type - dims[0]=3; // For x,y,z in positions - H5::CompType antennaType(sizeof(antenna_t)); - antennaType.insertMember("name", HOFFSET(antenna_t, name), H5::StrType(H5::PredType::C_S1, 16)); - antennaType.insertMember("position", HOFFSET(antenna_t, position), H5::ArrayType(H5::PredType::NATIVE_FLOAT, 1, dims)); - - // Create dataset - dims[0] = names.size(); - H5::DataSpace dataspace(1, dims, NULL); - H5::DataSet dataset = _solSet.createDataSet("antenna", antennaType, dataspace); - - // Prepare data - vector<antenna_t> ants(names.size()); - for (uint ant=0; ant<ants.size(); ++ant) { - std::strncpy(ants[ant].name, names[ant].c_str(), 16); - const std::vector<double>& pos = positions[ant]; - ants[ant].position[0] = pos[0]; - ants[ant].position[1] = pos[1]; - ants[ant].position[2] = pos[2]; - } - - dataset.write(&(ants[0]), antennaType); - } - - H5Parm::SolTab& H5Parm::getSolTab(const std::string& name) { - std::map<std::string, SolTab>::iterator item = - _solTabs.find(name); - if (item == _solTabs.end()) { - THROW(Exception, "SolTab "<<name<<" does not exist in solset "<< - getSolSetName()); - } - return item->second; - } - - bool H5Parm::hasSolTab(const string& solTabName) const { - return _solTabs.find(solTabName) != _solTabs.end(); - } - - H5Parm::SolTab& H5Parm::createSolTab(const std::string& name, - const std::string& type, - const std::vector<H5Parm::AxisInfo> axes) { - H5::Group newgroup = _solSet.createGroup(name); - std::map<std::string, SolTab>::iterator newItem = - _solTabs.insert(std::make_pair(name, SolTab(newgroup, type, axes))).first; - return newItem->second; - } -} diff --git a/CEP/DP3/DPPP/src/H5ParmPredict.cc b/CEP/DP3/DPPP/src/H5ParmPredict.cc deleted file mode 100644 index 215b95bf367..00000000000 --- a/CEP/DP3/DPPP/src/H5ParmPredict.cc +++ /dev/null @@ -1,157 +0,0 @@ -//# GainCal.cc: DPPP step class to H5ParmPredict visibilities -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/H5ParmPredict.h> - -#include <iostream> -#include <Common/ParameterSet.h> -#include <Common/Timer.h> - -#include <stddef.h> -#include <string> -#include <sstream> -#include <utility> -#include <vector> - -#include <Common/StreamUtil.h> -#include <Common/StringUtil.h> - -using namespace casacore; -using namespace LOFAR::BBS; - -namespace LOFAR { - namespace DPPP { - - H5ParmPredict::H5ParmPredict (DPInput* input, - const ParameterSet& parset, - const string& prefix): - itsInput(input), - itsH5ParmName(parset.getString(prefix+"applycal.parmdb")), - itsDirections(parset.getStringVector( - prefix+"directions", vector<string> ())) - { - H5Parm h5parm = H5Parm(itsH5ParmName, false); - H5Parm::SolTab soltab = h5parm.getSolTab(parset.getString(prefix+"applycal.correction")); - - vector<string> h5directions = soltab.getStringAxis("dir"); - - string operation = parset.getString(prefix+"operation", "replace"); - - if (itsDirections.empty()) { - itsDirections = h5directions; - } else { - for (vector<string>::iterator it = itsDirections.begin(); - // Check that all specified directions are in the h5parm - it != itsDirections.end(); ++it) { - if (find(h5directions.begin(), h5directions.end(), *it) == - h5directions.end()) { - THROW(Exception, "Direction "<<*it<<" not found in "<<itsH5ParmName); - } - } - } - - ASSERT(!itsDirections.empty()); - - for (uint i=0; i<itsDirections.size(); ++i) { - string directionStr = itsDirections[i]; - vector<string> directionVec; // each direction should be like '[patch1,patch2]' - ASSERT(directionStr.size()>2 && directionStr[0]=='[' && - directionStr[directionStr.size()-1]==']'); - directionVec = StringUtil::tokenize(directionStr.substr(1, directionStr.size()-2), ","); - Predict* predictStep = new Predict(input, parset, prefix, directionVec); - - if (operation=="replace" && i>0) { - predictStep->setOperation("add"); - } else { - predictStep->setOperation(operation); - } - - itsPredictSteps.push_back(Predict::ShPtr(predictStep)); - if (i>0) { - itsPredictSteps[i-1]->setNextStep(itsPredictSteps[i]); - } - } - - itsResultStep=new ResultStep(); - itsPredictSteps[itsPredictSteps.size()-1]->setNextStep(DPStep::ShPtr(itsResultStep)); - } - - H5ParmPredict::~H5ParmPredict() - {} - - void H5ParmPredict::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - - vector<Predict::ShPtr>::iterator predictstep; - for (predictstep=itsPredictSteps.begin(); - predictstep!=itsPredictSteps.end(); - predictstep++) { - (*predictstep)->updateInfo(infoIn); - } - } - - void H5ParmPredict::show (std::ostream& os) const - { - os << "H5ParmPredict " << itsName << endl; - os << " H5Parm: " << itsH5ParmName << endl; - os << " directions: " << itsDirections << endl; - for (uint dir=0; dir<itsPredictSteps.size(); ++dir) { - itsPredictSteps[dir]->show(os); - } - } - - void H5ParmPredict::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " H5ParmPredict " << itsName << endl; - } - - bool H5ParmPredict::process (const DPBuffer& bufin) - { - itsTimer.start(); - itsBuffer.copy (bufin); - itsInput->fetchUVW(bufin, itsBuffer, itsTimer); - itsInput->fetchWeights(bufin, itsBuffer, itsTimer); - - itsPredictSteps[0]->process(itsBuffer); - itsBuffer = itsResultStep->get(); - - itsTimer.stop(); - getNextStep()->process(itsBuffer); - return false; - } - - - void H5ParmPredict::finish() - { - // Let the next steps finish. - itsPredictSteps[0]->finish(); - getNextStep()->finish(); - } - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/MSReader.cc b/CEP/DP3/DPPP/src/MSReader.cc deleted file mode 100644 index fd9af907f31..00000000000 --- a/CEP/DP3/DPPP/src/MSReader.cc +++ /dev/null @@ -1,867 +0,0 @@ -//# MSReader.cc: DPPP step reading from an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/MSReader.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPLogger.h> -#include <StationResponse/LofarMetaDataUtil.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> - -#include <casacore/tables/Tables/TableRecord.h> -#include <casacore/tables/Tables/ScalarColumn.h> -#include <casacore/tables/Tables/ArrayColumn.h> -#include <casacore/tables/TaQL/ExprNode.h> -#include <casacore/tables/TaQL/RecordGram.h> -#include <casacore/measures/Measures/MeasTable.h> -#include <casacore/measures/TableMeasures/ScalarMeasColumn.h> -#include <casacore/measures/TableMeasures/ArrayMeasColumn.h> -#include <casacore/ms/MeasurementSets/MeasurementSet.h> -#if defined(HAVE_CASACORE) -#include <casacore/ms/MSSel/MSSelection.h> -#else -#include <casacore/ms/MSSel/MSSelection.h> -#endif -#include <casacore/casa/Containers/Record.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Quanta/MVTime.h> -#include <casacore/casa/OS/Conversion.h> -#include <iostream> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - MSReader::MSReader() - : itsReadVisData (False), - itsLastMSTime (0), - itsNrRead (0), - itsNrInserted (0) - {} - - MSReader::MSReader (const string& msName, - const ParameterSet& parset, - const string& prefix, - bool missingData) - : itsReadVisData (False), - itsMissingData (missingData), - itsLastMSTime (0), - itsNrRead (0), - itsNrInserted (0) - { - NSTimer::StartStop sstime(itsTimer); - // Get info from parset. - itsSpw = parset.getInt (prefix+"band", -1); - itsStartChanStr = parset.getString (prefix+"startchan", "0"); - itsNrChanStr = parset.getString (prefix+"nchan", "0"); - string startTimeStr = parset.getString (prefix+"starttime", ""); - string endTimeStr = parset.getString (prefix+"endtime", ""); - uint nTimes = parset.getInt (prefix+"ntimes", 0); - itsTimeTolerance = parset.getDouble (prefix+"timetolerance", 1e-2); - itsUseFlags = parset.getBool (prefix+"useflag", true); - itsDataColName = parset.getString (prefix+"datacolumn", "DATA"); - itsWeightColName = parset.getString (prefix+"weightcolumn", - "WEIGHT_SPECTRUM"); - itsModelColName = parset.getString (prefix+"modelcolumn", - "MODEL_DATA"); - itsAutoWeight = parset.getBool (prefix+"autoweight", false); - itsAutoWeightForce = parset.getBool (prefix+"forceautoweight", false); - itsNeedSort = parset.getBool (prefix+"sort", false); - itsSelBL = parset.getString (prefix+"baseline", string()); - // Try to open the MS and get its full name. - if (itsMissingData && !Table::isReadable (msName)) { - DPLOG_WARN_STR ("MeasurementSet " << msName - << " not found; dummy data used"); - return; - } - itsMS = MeasurementSet (msName, TableLock::AutoNoReadLocking); - itsSelMS = itsMS; - itsMSName = itsMS.tableName(); - // See if a selection on band needs to be done. - // We assume that DATA_DESC_ID and SPW_ID map 1-1. - if (itsSpw >= 0) { - DPLOG_INFO_STR (" MSReader selecting spectral window " << itsSpw << " ..."); - Table subset = itsSelMS (itsSelMS.col("DATA_DESC_ID") == itsSpw); - // If not all is selected, use the selection. - if (subset.nrow() < itsSelMS.nrow()) { - ASSERTSTR (subset.nrow() > 0, "Band " << itsSpw << " not found in " - << itsMSName); - itsSelMS = subset; - } - } else { - itsSpw = 0; - } - // See if a selection on baseline needs to be done. - if (! itsSelBL.empty()) { - DPLOG_INFO_STR (" MSReader selecting baselines ..."); - MSSelection select; - // Set given selection strings. - select.setAntennaExpr (itsSelBL); - // Create a table expression for an MS representing the selection. - MeasurementSet ms(itsSelMS); - TableExprNode node = select.toTableExprNode (&ms); - Table subset = itsSelMS(node); - // If not all is selected, use the selection. - if (subset.nrow() < itsSelMS.nrow()) { - ASSERTSTR (subset.nrow() > 0, "Baselines " << itsSelBL - << "not found in " << itsMSName); - itsSelMS = subset; - } - } - // Prepare the MS access and get time info. - double startTime=0., endTime=0.; - prepare (startTime, endTime, itsTimeInterval); - // Start and end time can be given in the parset in case leading - // or trailing time slots are missing. - // They can also be used to select part of the MS. - Quantity qtime; - itsFirstTime = startTime; - if (!startTimeStr.empty()) { - if (!MVTime::read (qtime, startTimeStr)) { - THROW (LOFAR::Exception, startTimeStr << " is an invalid date/time"); - } - itsFirstTime = qtime.getValue("s"); - ASSERT (itsFirstTime <= endTime); - } - itsLastTime = endTime; - if (!endTimeStr.empty()) { - if (!MVTime::read (qtime, endTimeStr)) { - THROW (LOFAR::Exception, endTimeStr << " is an invalid date/time"); - } - itsLastTime = qtime.getValue("s"); - } - ASSERT (itsLastTime >= itsFirstTime); - // If needed, skip the first times in the MS. - // It also sets itsFirstTime properly (round to time/interval in MS). - skipFirstTimes(); - if (nTimes > 0) { - itsLastTime = itsFirstTime + (nTimes-1) * itsTimeInterval; - } - itsNextTime = itsFirstTime; - itsStartTime = itsFirstTime - 0.5*itsTimeInterval; - // Parse the chan expressions. - // Nr of channels can be used as 'nchan' in the expressions. - Record rec; - rec.define ("nchan", itsNrChan); - TableExprNode node1 (RecordGram::parse(rec, itsStartChanStr)); - TableExprNode node2 (RecordGram::parse(rec, itsNrChanStr)); - // nchan=0 means until the last channel. - double result; - node1.get (rec, result); - itsStartChan = uint(result+0.001); - node2.get (rec, result); - uint nrChan = uint(result+0.0001); - uint nAllChan = itsNrChan; - ASSERTSTR (itsStartChan < nAllChan, - "startchan " << itsStartChan - << " exceeds nr of channels in MS (" << nAllChan << ')'); - uint maxNrChan = nAllChan - itsStartChan; - if (nrChan == 0) { - itsNrChan = maxNrChan; - } else { - itsNrChan = std::min (nrChan, maxNrChan); - } - // Are all channels used? - itsUseAllChan = itsStartChan==0 && itsNrChan==nAllChan; - // Do the rest of the preparation. - prepare2(); - // Take subset of channel frequencies if needed. - // Make sure to copy the subset to get a proper Vector. - // Form the slicer to get channels and correlations from column. - itsColSlicer = Slicer(IPosition(2, 0, itsStartChan), - IPosition(2, itsNrCorr, itsNrChan)); - // Form the slicer to get channels, corrs, and baselines from array. - itsArrSlicer = Slicer(IPosition(3, 0, itsStartChan, 0), - IPosition(3, itsNrCorr, itsNrChan, itsNrBl)); - // Initialize the flag counters. - itsFlagCounter.init (getInfo()); - } - - MSReader::~MSReader() - {} - - void MSReader::updateInfo (const DPInfo&) - {} - - casacore::String MSReader::msName() const - { - return itsMSName; - } - - void MSReader::setReadVisData (bool readVisData) - { - itsReadVisData = readVisData; - } - - bool MSReader::process (const DPBuffer&) - { - if (itsNrRead == 0) { - if (itsReadVisData) { - itsBuffer.getData().resize (itsNrCorr, itsNrChan, itsNrBl); - } - if (itsUseFlags) { - itsBuffer.getFlags().resize (itsNrCorr, itsNrChan, itsNrBl); - } - ///cout<<(void*)(itsBuffer.getData().data())<<" upd"<<endl; - } - { - NSTimer::StartStop sstime(itsTimer); - /// itsBuffer.clear(); - // Use time from the current time slot in the MS. - bool useIter = false; - while (!itsIter.pastEnd()) { - // Take time from row 0 in subset. - double mstime = ROScalarColumn<double>(itsIter.table(), "TIME")(0); - // Skip time slot and give warning if MS data is not in time order. - if (mstime < itsLastMSTime) { - LOG_WARN_STR ("Time at rownr " - << itsIter.table().rowNumbers(itsMS)[0] - << " of MS " << itsMSName - << " is less than previous time slot"); - } else { - // Use the time slot if near or < nexttime, but > starttime. - // In this way we cater for irregular times in some WSRT MSs. - if (nearAbs(mstime, itsNextTime, itsTimeTolerance)) { - useIter = true; - break; - } else if (mstime > itsFirstTime && mstime < itsNextTime) { - itsFirstTime -= itsNextTime-mstime; - itsNextTime = mstime; - useIter = true; - break; - } - if (mstime > itsNextTime) { - // A time slot seems to be missing; insert one. - break; - } - } - // Skip this time slot. - itsLastMSTime = mstime; - itsIter.next(); - } - // Stop if at the end, or if there is no data at all - if ((itsNextTime > itsLastTime && !near(itsNextTime, itsLastTime)) || - itsNextTime==0.) { - return false; - } - // Fill the buffer. - itsBuffer.setTime (itsNextTime); - ///cout << "read time " <<itsBuffer.getTime() - 4472025855.0<<endl; - if (!useIter) { - // Need to insert a fully flagged time slot. - itsBuffer.setRowNrs (Vector<uint>()); - itsBuffer.setExposure (itsTimeInterval); - itsBuffer.getFlags() = true; - if (itsReadVisData){ - itsBuffer.getData() = Complex(); - } - itsNrInserted++; - } else { - itsBuffer.setRowNrs (itsIter.table().rowNumbers(itsMS, True)); - if (itsMissingData) { - // Data column not present, so fill a fully flagged time slot. - itsBuffer.setExposure (itsTimeInterval); - itsBuffer.getFlags() = true; - if (itsReadVisData) { - itsBuffer.getData() = Complex(); - } - } else { - // Set exposure. - itsBuffer.setExposure (ROScalarColumn<double> - (itsIter.table(), "EXPOSURE")(0)); - // Get data and flags from the MS. - /// if (itsNrRead%50 < 4) { - /// cout<<(void*)(itsBuffer.getData().data())<<" rd1"<<endl; - ///} - if (itsReadVisData) { - ROArrayColumn<Complex> dataCol(itsIter.table(), itsDataColName); - if (itsUseAllChan) { - dataCol.getColumn (itsBuffer.getData()); - } else { - dataCol.getColumn (itsColSlicer, itsBuffer.getData()); - } - } - ///if (itsNrRead%50 < 4) { - ///cout<<(void*)(itsBuffer.getData().data())<<" rd2"<<endl; - ///} - if (itsUseFlags) { - ROArrayColumn<bool> flagCol(itsIter.table(), "FLAG"); - if (itsUseAllChan) { - flagCol.getColumn (itsBuffer.getFlags()); - } else { - flagCol.getColumn(itsColSlicer, itsBuffer.getFlags()); - } - // Set flags if FLAG_ROW is set. - ROScalarColumn<bool> flagrowCol(itsIter.table(), "FLAG_ROW"); - for (uint i=0; i<itsIter.table().nrow(); ++i) { - if (flagrowCol(i)) { - itsBuffer.getFlags() - (IPosition(3,0,0,i), - IPosition(3,itsNrCorr-1,itsNrChan-1,i)) = true; - } - } - } else { - // Do not use FLAG from the MS. - itsBuffer.getFlags().resize (itsNrCorr, itsNrChan, itsNrBl); - itsBuffer.getFlags() = false; - } - // Flag invalid data (NaN, infinite). - flagInfNaN(itsBuffer.getData(), itsBuffer.getFlags(), - itsFlagCounter); - } - itsLastMSTime = itsNextTime; - itsNrRead++; - itsIter.next(); - } - ASSERTSTR (itsBuffer.getFlags().shape()[2] == int(itsNrBl), - "#baselines is not the same for all time slots in the MS"); - } // end of scope stops the timer. - // Let the next step in the pipeline process this time slot. - getNextStep()->process (itsBuffer); - /// cout << "Reader: " << itsNextTime-4.75e9<<endl; - // Do not add to previous time, because it introduces round-off errors. - itsNextTime = itsFirstTime + (itsNrRead+itsNrInserted) * itsTimeInterval; - return true; - } - - void MSReader::flagInfNaN(const casacore::Cube<casacore::Complex>& dataCube, - casacore::Cube<bool>& flagsCube, - FlagCounter& flagCounter) { - int ncorr=dataCube.shape()[0]; - const Complex* dataPtr = dataCube.data(); - bool* flagPtr = flagsCube.data(); - for (uint i=0; i<dataCube.size();) { - for (uint j=i; j<i+ncorr; ++j) { - bool flag = (!isFinite(dataPtr[j].real()) || - !isFinite(dataPtr[j].imag())); - if (flag) { - flagCounter.incrCorrelation(j-i); - } - if (flag || flagPtr[j]) { - // Flag all correlations if a single one is flagged. - for (uint k=i; k<i+ncorr; ++k) { - flagPtr[k] = true; - } - break; - } - } - i += ncorr; - } - } - - void MSReader::finish() - { - getNextStep()->finish(); - } - - void MSReader::show (std::ostream& os) const - { - os << "MSReader" << std::endl; - os << " input MS: " << itsMSName << std::endl; - if (itsMS.isNull()) { - os << " *** MS does not exist ***" << std::endl; - } else { - if (! itsSelBL.empty()) { - os << " baseline: " << itsSelBL << std::endl; - } - os << " band " << itsSpw << std::endl; - os << " startchan: " << itsStartChan << " (" << itsStartChanStr - << ')' << std::endl; - os << " nchan: " << getInfo().nchan() << " (" << itsNrChanStr - << ')' << std::endl; - os << " ncorrelations: " << getInfo().ncorr() << std::endl; - uint nrbl = getInfo().nbaselines(); - os << " nbaselines: " << nrbl << std::endl; - os << " ntimes: " << (nrbl==0 ? 0 : itsSelMS.nrow() / nrbl) << std::endl; - os << " time interval: " << getInfo().timeInterval() << std::endl; - os << " DATA column: " << itsDataColName; - if (itsMissingData) { - os << " (not present)"; - } - os << std::endl; - os << " WEIGHT column: " << itsWeightColName << std::endl; - os << " autoweight: " << boolalpha << itsAutoWeight << std::endl; - } - } - - void MSReader::showCounts (std::ostream& os) const - { - os << endl << "NaN/infinite data flagged in reader"; - os << endl << "===================================" << endl; - int64 nrtim = itsNrRead; - itsFlagCounter.showCorrelation (os, nrtim); - os << itsNrInserted << " missing time slots were inserted" << endl; - } - - void MSReader::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " MSReader" << endl; - } - - void MSReader::prepare (double& firstTime, double& lastTime, - double& interval) - { - if (itsSelMS.nrow() == 0) { - DPLOG_WARN_STR ("The selected input does not contain any data."); - } - TableDesc tdesc = itsMS.tableDesc(); - - itsHasWeightSpectrum = false; - // if weightcolname is specified to "WEIGHT" then this is used, even - // if a weight_spectrum is present. - if (itsWeightColName!="WEIGHT") { - // Test if specified weight column or WEIGHT_SPECTRUM is present. - if (tdesc.isColumn(itsWeightColName)) { - // The column is there, but it might not contain values. Test row 0. - itsHasWeightSpectrum = - ROArrayColumn<float>(itsSelMS, itsWeightColName).isDefined(0); - if (!itsHasWeightSpectrum && itsWeightColName!="WEIGHT_SPECTRUM") { - LOG_WARN ("Specified weight column " + itsWeightColName + - "is not a valid column, using WEIGHT instead"); - } - } - } - - // Test if the data column is present. - if (tdesc.isColumn (itsDataColName)) { - itsMissingData = false; - } else { - if (itsMissingData) { - // Only give warning if a missing data column is allowed. - LOG_WARN ("Data column " + itsDataColName + - " is missing in " + itsMSName); - } else { - THROW (Exception, ("Data column " + itsDataColName + - " is missing in " + itsMSName)); - } - } - - // Test if the full resolution flags are present. - itsHasFullResFlags = tdesc.isColumn("LOFAR_FULL_RES_FLAG"); - if (itsHasFullResFlags) { - ROTableColumn fullResFlagCol(itsMS, "LOFAR_FULL_RES_FLAG"); - itsFullResNChanAvg = fullResFlagCol.keywordSet().asInt ("NCHAN_AVG"); - itsFullResNTimeAvg = fullResFlagCol.keywordSet().asInt ("NTIME_AVG"); - } else { - itsFullResNChanAvg = 1; - itsFullResNTimeAvg = 1; - } - // Get the main table in the correct order. - // Determine if the data are stored using LofarStMan. - // If so, we know it is in time order. - // (sorting on TIME with LofarStMan can be expensive). - bool needSort = itsNeedSort; - bool useRaw = false; - Record dminfo = itsMS.dataManagerInfo(); - for (unsigned i=0; i<dminfo.nfields(); ++i) { - Record subrec = dminfo.subRecord(i); - if (subrec.asString("TYPE") == "LofarStMan") { - needSort = false; - useRaw = true; - break; - } - } - // Give an error if autoweight is used for a non-raw MS. - if (itsAutoWeightForce) { - itsAutoWeight = true; - } else if (!useRaw && itsAutoWeight) { - THROW (Exception, "Using autoweight=true cannot be done on DPPP-ed MS"); - } - // If not in order, sort the table selection (also on baseline). - Table sortms(itsSelMS); - Block<String> sortCols(3); - sortCols[0] = "TIME"; - sortCols[1] = "ANTENNA1"; - sortCols[2] = "ANTENNA2"; - if (needSort) { - sortms = itsSelMS.sort(sortCols); - } - // Get first and last time and interval from MS. - if (itsSelMS.nrow() > 0) { - firstTime = ROScalarColumn<double>(sortms, "TIME")(0); - lastTime = ROScalarColumn<double>(sortms, "TIME")(sortms.nrow()-1); - interval = ROScalarColumn<double>(sortms, "INTERVAL")(0); - } - // Create iterator over time. Do not sort again. - itsIter = TableIterator (sortms, Block<String>(1, "TIME"), - TableIterator::Ascending, - TableIterator::NoSort); - // Find the nr of corr, chan, and baseline. - IPosition shp (ROArrayColumn<Complex>(itsSelMS, "DATA").shape(0)); - itsNrCorr = shp[0]; - itsNrChan = shp[1]; - itsNrBl = itsIter.table().nrow(); - // Ensure we have only one band by checking the nr of unique baselines. - Table sortab = itsIter.table().sort(sortCols, Sort::Ascending, - Sort::QuickSort + Sort::NoDuplicates); - ASSERTSTR (sortab.nrow() == itsNrBl, - "The MS appears to have multiple subbands"); - // Get the baseline columns. - ROScalarColumn<Int> ant1col(itsIter.table(), "ANTENNA1"); - ROScalarColumn<Int> ant2col(itsIter.table(), "ANTENNA2"); - // Keep the row numbers of the first part to be used for the meta info - // of possibly missing time slots. - itsBaseRowNrs = itsIter.table().rowNumbers(itsMS, True); - // Get the antenna names and positions. - Table anttab(itsMS.keywordSet().asTable("ANTENNA")); - ROScalarColumn<String> nameCol (anttab, "NAME"); - ROScalarColumn<Double> diamCol (anttab, "DISH_DIAMETER"); - uint nant = anttab.nrow(); - ROScalarMeasColumn<MPosition> antcol (anttab, "POSITION"); - vector<MPosition> antPos; - antPos.reserve (nant); - for (uint i=0; i<nant; ++i) { - antPos.push_back (antcol(i)); - } - // Set antenna/baseline info. - info().set (nameCol.getColumn(), diamCol.getColumn(), antPos, - ant1col.getColumn(), ant2col.getColumn()); - - if (itsAutoWeight) { - info().setNeedVisData(); - info().setWriteWeights(); - } - - // Read the phase reference position from the FIELD subtable. - // Only use the main value from the PHASE_DIR array. - // The same for DELAY_DIR and LOFAR_TILE_BEAM_DIR. - // If LOFAR_TILE_BEAM_DIR does not exist, use DELAY_DIR. - Table fldtab (itsMS.keywordSet().asTable ("FIELD")); - AlwaysAssert (fldtab.nrow() == 1, AipsError); - MDirection phaseCenter, delayCenter, tileBeamDir; - ROArrayMeasColumn<MDirection> fldcol1 (fldtab, "PHASE_DIR"); - ROArrayMeasColumn<MDirection> fldcol2 (fldtab, "DELAY_DIR"); - phaseCenter = *(fldcol1(0).data()); - delayCenter = *(fldcol2(0).data()); - - tileBeamDir = StationResponse::readTileBeamDirection(itsMS); - - // Get the array position using the telescope name from the OBSERVATION - // subtable. - Table obstab (itsMS.keywordSet().asTable ("OBSERVATION")); - ROScalarColumn<String> telCol(obstab, "TELESCOPE_NAME"); - MPosition arrayPos; - if (obstab.nrow() == 0 || - ! MeasTable::Observatory(arrayPos, telCol(0))) { - // If not found, use the position of the middle antenna. - arrayPos = antPos[antPos.size() / 2]; - } - info().set (arrayPos, phaseCenter, delayCenter, tileBeamDir); - // Create the UVW calculator. - itsUVWCalc = UVWCalculator (phaseCenter, arrayPos, antPos); - } - - void MSReader::prepare2() - { - // Set the info. - uint ntime = uint((itsLastTime - itsFirstTime)/itsTimeInterval + 1.5); - // Read the antenna set. - Table obstab(itsMS.keywordSet().asTable("OBSERVATION")); - string antennaSet; - if (obstab.nrow() > 0 && - obstab.tableDesc().isColumn ("LOFAR_ANTENNA_SET")) { - antennaSet = ROScalarColumn<String>(obstab, "LOFAR_ANTENNA_SET")(0); - } - info().init (itsNrCorr, itsNrChan, ntime, itsStartTime, - itsTimeInterval, itsMSName, antennaSet); - info().setDataColName(itsDataColName); - info().setWeightColName(itsWeightColName); - // Read the center frequencies of all channels. - Table spwtab(itsMS.keywordSet().asTable("SPECTRAL_WINDOW")); - ROArrayColumn<double> freqCol (spwtab, "CHAN_FREQ"); - ROArrayColumn<double> widthCol (spwtab, "CHAN_WIDTH"); - ROArrayColumn<double> resolCol (spwtab, "RESOLUTION"); - ROArrayColumn<double> effBWCol (spwtab, "EFFECTIVE_BW"); - ROScalarColumn<Double> refCol (spwtab, "REF_FREQUENCY"); - Vector<double> chanFreqs = freqCol(itsSpw); - Vector<double> chanWidths = widthCol(itsSpw); - Vector<double> resolutions = resolCol(itsSpw); - Vector<double> effectiveBW = effBWCol(itsSpw); - double refFreq = refCol(itsSpw); - if (itsUseAllChan) { - info().set (chanFreqs, chanWidths, resolutions, effectiveBW, - sum(effectiveBW), refFreq); - } else { - Vector<double> cwSlice(effectiveBW(Slice(itsStartChan, itsNrChan))); - info().set (chanFreqs (Slice(itsStartChan, itsNrChan)), - chanWidths (Slice(itsStartChan, itsNrChan)), - resolutions(Slice(itsStartChan, itsNrChan)), - cwSlice, - sum(cwSlice), refFreq); - } - } - - void MSReader::skipFirstTimes() - { - while (!itsIter.pastEnd()) { - // Take time from row 0 in subset. - double mstime = ROScalarColumn<double>(itsIter.table(), "TIME")(0); - // Skip time slot and give warning if MS data is not in time order. - if (mstime < itsLastMSTime) { - LOG_WARN_STR ("Time at rownr " - << itsIter.table().rowNumbers(itsMS)[0] - << " of MS " << itsMSName - << " is less than previous time slot"); - } else { - // Stop skipping if time equal to itsFirstTime. - if (near(mstime, itsFirstTime)) { - itsFirstTime = mstime; - break; - } - // Also stop if time > itsFirstTime. - // In that case determine the true first time, because itsFirstTime - // can be a time value that does not coincide with a true time. - // Note that a time stamp might be missing at this point, - // so do not simply assume that mstime can be used. - if (mstime > itsFirstTime) { - int nrt = int((mstime - itsFirstTime) / itsTimeInterval); - mstime -= (nrt+1) * itsTimeInterval; // Add 1 for rounding errors - if (near(mstime, itsFirstTime)) { - itsFirstTime = mstime; - } else { - itsFirstTime = mstime + itsTimeInterval; - } - break; - } - } - // Skip this time slot. - itsLastMSTime = mstime; - itsIter.next(); - } - } - - void MSReader::calcUVW (double time, DPBuffer& buf) - { - Matrix<double>& uvws = buf.getUVW(); - uvws.resize (3, itsNrBl); - const Vector<Int>& ant1 = getInfo().getAnt1(); - const Vector<Int>& ant2 = getInfo().getAnt2(); - for (uint i=0; i<itsNrBl; ++i) { - uvws.column(i) = itsUVWCalc.getUVW (ant1[i], ant2[i], time); - } - } - - void MSReader::getUVW (const RefRows& rowNrs, double time, DPBuffer& buf) - { - NSTimer::StartStop sstime(itsTimer); - // Calculate UVWs if empty rownrs (i.e., missing data). - if (rowNrs.rowVector().empty()) { - calcUVW (time, buf); - } else { - ROArrayColumn<double> dataCol(itsMS, "UVW"); - dataCol.getColumnCells (rowNrs, buf.getUVW()); - } - } - - void MSReader::getWeights (const RefRows& rowNrs, DPBuffer& buf) - { - NSTimer::StartStop sstime(itsTimer); - Cube<float>& weights = buf.getWeights(); - // Resize if needed (probably when called for first time). - if (weights.empty()) { - weights.resize (itsNrCorr, itsNrChan, itsNrBl); - } - if (rowNrs.rowVector().empty()) { - // rowNrs can be empty if a time slot was inserted. - weights = 0; - } else { - // Get weights for entire spectrum if present. - if (itsHasWeightSpectrum) { - ROArrayColumn<float> wsCol(itsMS, itsWeightColName); - // Using getColumnCells(rowNrs,itsColSlicer) fails for LofarStMan. - // Hence work around it. - if (itsUseAllChan) { - wsCol.getColumnCells (rowNrs, weights); - } else { - Cube<float> w = wsCol.getColumnCells (rowNrs); - weights = w(itsArrSlicer); - } - } else { - // No spectrum present; get global weights and assign to each channel. - ROArrayColumn<float> wCol(itsMS, "WEIGHT"); - Matrix<float> inArr = wCol.getColumnCells (rowNrs); - float* inPtr = inArr.data(); - float* outPtr = weights.data(); - for (uint i=0; i<itsNrBl; ++i) { - // Set global weights to 1 if zero. Some old MSs need that. - for (uint k=0; k<itsNrCorr; ++k) { - if (inPtr[k] == 0.) { - inPtr[k] = 1.; - } - } - for (uint j=0; j<itsNrChan; ++j) { - for (uint k=0; k<itsNrCorr; ++k) { - *outPtr++ = inPtr[k]; - } - } - inPtr += itsNrCorr; - } - } - if (itsAutoWeight) { - // Adapt weights using autocorrelations. - autoWeight (weights, buf); - } - } - } - - void MSReader::autoWeight (Cube<float>& weights, const DPBuffer& buf) - { - const double* chanWidths = getInfo().chanWidths().data(); - uint npol = weights.shape()[0]; - uint nchan = weights.shape()[1]; - uint nbl = weights.shape()[2]; - // Get the autocorrelations indices. - const vector<int>& autoInx = getInfo().getAutoCorrIndex(); - // Calculate the weight for each cross-correlation data point. - const Vector<Int>& ant1 = getInfo().getAnt1(); - const Vector<Int>& ant2 = getInfo().getAnt2(); - const Complex* data = buf.getData().data(); - float* weight = weights.data(); - for (uint i=0; i<nbl; ++i) { - // Can only be done if both autocorrelations are present. - if (ant1[i] != ant2[i] && - autoInx[ant1[i]] >= 0 && autoInx[ant2[i]] >= 0) { - // Get offset of both autocorrelations in data array. - const Complex* auto1 = data + autoInx[ant1[i]]*nchan*npol; - const Complex* auto2 = data + autoInx[ant2[i]]*nchan*npol; - for (uint j=0; j<nchan; ++j) { - if (auto1[0].real() != 0 && auto2[0].real() != 0) { - double w = chanWidths[j] * itsTimeInterval; - weight[0] *= w / (auto1[0].real() * auto2[0].real()); // XX - if (npol == 4) { - if (auto1[3].real() != 0 && auto2[3].real() != 0) { - weight[1] *= w / (auto1[0].real() * auto2[3].real()); // XY - weight[2] *= w / (auto1[3].real() * auto2[0].real()); // YX - weight[3] *= w / (auto1[3].real() * auto2[3].real()); // YY - } - } else if (npol == 2) { - if (auto1[1].real() != 0 && auto2[1].real() != 0) { - weight[1] *= w / (auto1[1].real() * auto2[1].real()); // YY - } - } - } - // Set pointers to next channel. - weight += npol; - auto1 += npol; - auto2 += npol; - } - } else { - // No autocorrelations for this baseline, so skip it. - weight += nchan*npol; - } - } - } - - bool MSReader::getFullResFlags (const RefRows& rowNrs, DPBuffer& buf) - { - NSTimer::StartStop sstime(itsTimer); - Cube<bool>& flags = buf.getFullResFlags(); - int norigchan = itsNrChan * itsFullResNChanAvg; - // Resize if needed (probably when called for first time). - if (flags.empty()) { - flags.resize (norigchan, itsFullResNTimeAvg, itsNrBl); - } - // Return false if no fullRes flags available. - if (!itsHasFullResFlags) { - flags = false; - return false; - } - // Flag everything if data rows are missing. - if (rowNrs.rowVector().empty()) { - flags = true; - return true; - } - ROArrayColumn<uChar> fullResFlagCol(itsMS, "LOFAR_FULL_RES_FLAG"); - int origstart = itsStartChan * itsFullResNChanAvg; - Array<uChar> chars = fullResFlagCol.getColumnCells (rowNrs); - // The original flags are kept per channel, not per corr. - // Per row the flags are stored as uchar[nchar,navgtime]. - // Each char contains a bit per channel, thus nchan/8 chars are needed. - // ntimeavg is the nr of times used when averaging. - // Return it as Cube<bool>[norigchan,ntimeavg,nrbl]. - IPosition chShape = chars.shape(); - ASSERT (chShape[1] == itsFullResNTimeAvg && chShape[2] == itsNrBl); - // Now expand the bits to bools. - // If all bits to convert are contiguous, do it all in one go. - // Otherwise we have to iterate. - if (norigchan == chShape[0]*8) { - Conversion::bitToBool (flags.data(), chars.data(), flags.size()); - } else { - ASSERT (norigchan < chShape[0]*8); - const uChar* charsPtr = chars.data(); - bool* flagsPtr = flags.data(); - for (int i=0; i<chShape[1]*chShape[2]; ++i) { - Conversion::bitToBool (flagsPtr, charsPtr, origstart, norigchan); - flagsPtr += norigchan; - charsPtr += chShape[0]; - } - } - return true; - } - - void MSReader::getModelData (const casacore::RefRows& rowNrs, - casacore::Cube<casacore::Complex>& arr) - { - NSTimer::StartStop sstime(itsTimer); - if (rowNrs.rowVector().empty()) { - arr.resize (itsNrCorr, itsNrChan, itsNrBl); - arr = Complex(); - } else { - ROArrayColumn<Complex> modelCol(itsMS, itsModelColName); - if (itsUseAllChan) { - modelCol.getColumnCells (rowNrs, arr); - } else { - modelCol.getColumnCells (rowNrs, itsColSlicer, arr); - } - } - } - - void MSReader::fillBeamInfo (vector<StationResponse::Station::Ptr>& vec, - const Vector<String>& antNames) - { - // Get the names of all stations in the MS. - const Vector<String>& allNames = getInfo().antennaNames(); - // Create a vector holding the beam info of all stations. - vector<StationResponse::Station::Ptr> beams (allNames.size()); - StationResponse::readStations (itsMS, beams.begin()); - // Copy only the ones for which the station name matches. - // Note: the order of the station names in both vectors match. - vec.resize (antNames.size()); - uint ant = 0; - for (uint i=0; i<allNames.size(); ++i) { - if (ant < antNames.size() && allNames[i] == antNames[ant]) { - vec[ant] = beams[i]; - ant++; - } - } - ASSERTSTR (ant == vec.size(), "MSReader::fillBeamInfo -" - " some stations miss the beam info"); - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/MSUpdater.cc b/CEP/DP3/DPPP/src/MSUpdater.cc deleted file mode 100644 index 5b4d321fbb5..00000000000 --- a/CEP/DP3/DPPP/src/MSUpdater.cc +++ /dev/null @@ -1,368 +0,0 @@ -//# MSUpdater.cc: DPPP step updating an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/MSUpdater.h> -#include <DPPP/MSReader.h> -#include <DPPP/MSWriter.h> -#include <DPPP/DPBuffer.h> -#include <Common/ParameterSet.h> -#include <casacore/tables/Tables/Table.h> -#include <casacore/tables/Tables/ArrayColumn.h> -#include <casacore/tables/Tables/ScalarColumn.h> -#include <casacore/tables/Tables/ArrColDesc.h> -#include <casacore/tables/Tables/ColumnDesc.h> -#include <casacore/tables/DataMan/StandardStMan.h> -#include <casacore/casa/Containers/Record.h> -#include <casacore/casa/Utilities/LinearSearch.h> -#include <casacore/ms/MeasurementSets/MeasurementSet.h> -#include <iostream> -#include <limits> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - MSUpdater::MSUpdater (MSReader* reader, String msName, - const ParameterSet& parset, - const string& prefix, bool writeHistory) - : itsReader (reader), - itsName (prefix), - itsMSName (msName), - itsParset (parset), - itsWriteData (false), - itsWriteWeights (false), - itsWriteFlags (false), - itsNrDone (0), - itsDataColAdded (false), - itsWeightColAdded (false), - itsWriteHistory (writeHistory) - { - itsDataColName = parset.getString (prefix+"datacolumn", ""); - itsWeightColName = parset.getString (prefix+"weightcolumn",""); - itsNrTimesFlush = parset.getUint (prefix+"flush", 0); - itsTileSize = parset.getUint (prefix+"tilesize", 1024); - itsStManKeys.Set(parset, prefix); - } - - MSUpdater::~MSUpdater() - {} - - bool MSUpdater::addColumn (const string& colName, const casacore::DataType - dataType, const ColumnDesc& cd) - { - if (itsMS.tableDesc().isColumn(colName)) { - const ColumnDesc& cd = itsMS.tableDesc().columnDesc(colName); - ASSERTSTR (cd.dataType() == dataType && cd.isArray(), - "Column " << itsDataColName - << " already exists, but is not of the right type"); - return false; - } - - if (itsStManKeys.stManName == "dysco" && itsStManKeys.dyscoDataBitRate != 0) { - casacore::Record dyscoSpec = itsStManKeys.GetDyscoSpec(); - DataManagerCtor dyscoConstructor = DataManager::getCtor("DyscoStMan"); - CountedPtr<DataManager> dyscoStMan(dyscoConstructor(colName + "_dm", dyscoSpec)); - ColumnDesc directColumnDesc(cd); - directColumnDesc.setOptions(casacore::ColumnDesc::Direct | casacore::ColumnDesc::FixedShape); - TableDesc td; - td.addColumn (directColumnDesc, colName); - itsMS.addColumn (td, *dyscoStMan); - } - else { - // When no specific storage manager is requested, use the same - // as for the DATA column. - // Get the data manager info and find the DATA column in it. - Record dminfo = itsMS.dataManagerInfo(); - Record colinfo; - for (uInt i=0; i<dminfo.nfields(); ++i) { - const Record& subrec = dminfo.subRecord(i); - if (linearSearch1 (Vector<String>(subrec.asArrayString("COLUMNS")), - "DATA") >= 0) { - colinfo = subrec; - break; - } - } - ASSERT(colinfo.nfields()>0); - // When the storage manager is compressed, do not implicitly (re)compress it. Use TiledStMan instead. - std::string dmType = colinfo.asString("TYPE"); - TableDesc td; - td.addColumn (cd, colName); - if(dmType == "DyscoStMan") - { - IPosition tileShape(3, info().ncorr(), info().nchan(), 1); - tileShape[2] = itsTileSize * 1024 / (8 * tileShape[0] * tileShape[1]); - if (tileShape[2] < 1) { - tileShape[2] = 1; - } - TiledColumnStMan tsm(colName + "_dm", tileShape); - itsMS.addColumn (td, tsm); - } - else { - colinfo.define ("NAME", colName + "_dm"); - itsMS.addColumn (td, colinfo); - } - } - return true; - } - - bool MSUpdater::process (const DPBuffer& buf) - { - NSTimer::StartStop sstime(itsTimer); - if (itsWriteFlags) { - putFlags (buf.getRowNrs(), buf.getFlags()); - } - if (itsWriteData) { - // If compressing, flagged values need to be set to NaN to decrease the dynamic range - if (itsStManKeys.stManName == "dysco") { - Cube<Complex> dataCopy = buf.getData().copy(); - Cube<Complex>::iterator dataIter = dataCopy.begin(); - for (Cube<bool>::const_iterator flagIter = buf.getFlags().begin(); - flagIter != buf.getFlags().end(); ++flagIter) { - if(*flagIter) { - *dataIter = Complex(std::numeric_limits<float>::quiet_NaN(), - std::numeric_limits<float>::quiet_NaN()); - } - ++dataIter; - } - putData (buf.getRowNrs(), dataCopy); - } - else { - putData (buf.getRowNrs(), buf.getData()); - } - } - if (itsWriteWeights) { - Cube<float> weights; - if (!buf.getWeights().empty()) { - // Use weights from buffer - weights = buf.getWeights(); - } else { - itsBuffer.referenceFilled (buf); - weights = itsReader->fetchWeights(buf, itsBuffer, itsTimer); - } - - // If compressing, set weights of flagged points to zero to decrease the - // dynamic range - if (itsStManKeys.stManName == "dysco") { - Cube<float> weightsCopy = weights.copy(); - Cube<float>::iterator weightsIter = weightsCopy.begin(); - for (Cube<bool>::const_iterator flagIter = buf.getFlags().begin(); - flagIter != buf.getFlags().end(); ++flagIter) { - if(*flagIter) { - *weightsIter = 0.; - } - ++weightsIter; - } - putWeights (buf.getRowNrs(), weightsCopy); - } else { - putWeights (buf.getRowNrs(), weights); - } - } - itsNrDone++; - if (itsNrTimesFlush > 0 && itsNrDone%itsNrTimesFlush == 0) { - itsMS.flush(); - } - getNextStep()->process(buf); - return true; - } - - void MSUpdater::finish() - {} - - void MSUpdater::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - itsWriteFlags = getInfo().writeFlags(); - - String origDataColName = getInfo().getDataColName(); - if (itsDataColName.empty()) { - itsDataColName = origDataColName; - } else if (itsDataColName != origDataColName) { - info().setNeedVisData(); - info().setWriteData(); - } - itsWriteData = getInfo().writeData(); - - String origWeightColName = getInfo().getWeightColName(); - if (itsWeightColName.empty()) { - if (origWeightColName == "WEIGHT") { - itsWeightColName = "WEIGHT_SPECTRUM"; - } else { - itsWeightColName = origWeightColName; - } - } - ASSERT(itsWeightColName != "WEIGHT"); - if (itsWeightColName != origWeightColName) { - info().setWriteWeights(); - } - itsWriteWeights = getInfo().writeWeights(); - - if (getInfo().metaChanged()) { - THROW(Exception, "Update step " + itsName + - " is not possible because meta data changes" - " (by averaging, adding/removing stations, etc.)"); - } - - if (itsWriteData || itsWriteFlags || itsWriteWeights) { - NSTimer::StartStop sstime(itsTimer); - itsMS = MeasurementSet (itsMSName, TableLock::AutoNoReadLocking, - Table::Update); - // Add the data + weight column if needed and if it does not exist yet. - if (itsWriteData) { - // use same layout as DATA column - ColumnDesc cd = itsMS.tableDesc().columnDesc("DATA"); - itsDataColAdded = addColumn(itsDataColName, TpComplex, cd); - } - if (itsWriteWeights) { - IPosition dataShape = - itsMS.tableDesc().columnDesc("DATA").shape(); - ArrayColumnDesc<float> cd("WEIGHT_SPECTRUM", "weight per corr/chan", - dataShape, ColumnDesc::FixedShape); - itsWeightColAdded = addColumn(itsWeightColName, TpFloat, cd); - } - } - // Subsequent steps have to set again if writes need to be done. - info().clearWrites(); - info().clearMetaChanged(); - // Tell the reader if visibility data needs to be read. - itsReader->setReadVisData (info().needVisData()); - } - - void MSUpdater::addToMS (const string&) - { - getPrevStep()->addToMS (itsMSName); - if (itsWriteHistory) { - MSWriter::writeHistory (itsMS, itsParset); - } - } - - void MSUpdater::show (std::ostream& os) const - { - os << "MSUpdater " << itsName << std::endl; - os << " MS: " << itsMSName << std::endl; - os << " datacolumn: " << itsDataColName; - if (itsDataColAdded) { - os << " (has been added to the MS)"; - } - os << std::endl; - os << " weightcolumn " << itsWeightColName; - if (itsWeightColAdded) { - os << " (has been added to the MS)"; - } - os << std::endl; - if (itsWriteData || itsWriteFlags || itsWriteWeights) { - os << " writing: "; - if (itsWriteData) os << " data"; - if (itsWriteFlags) os << " flags"; - if (itsWriteWeights) os << " weights"; - os << std::endl; - } - if(itsStManKeys.stManName == "dysco") { - os - << " Compressed: yes\n" - << " Data bitrate: " << itsStManKeys.dyscoDataBitRate << '\n' - << " Weight bitrate: " << itsStManKeys.dyscoWeightBitRate << '\n' - << " Dysco mode: " << itsStManKeys.dyscoNormalization << ' ' - << itsStManKeys.dyscoDistribution << '(' << itsStManKeys.dyscoDistTruncation << ")\n"; - } - else { - os << " Compressed: no\n"; - } - os << std::endl; - os << " flush: " << itsNrTimesFlush << std::endl; - } - - void MSUpdater::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " MSUpdater " << itsName << endl; - } - - void MSUpdater::putFlags (const RefRows& rowNrs, - const Cube<bool>& flags) - { - // Only put if rownrs are filled, thus if data were not inserted. - if (! rowNrs.rowVector().empty()) { - Slicer colSlicer(IPosition(2, 0, info().startchan()), - IPosition(2, info().ncorr(), info().nchan()) ); - ArrayColumn<bool> flagCol(itsMS, "FLAG"); - ScalarColumn<bool> flagRowCol(itsMS, "FLAG_ROW"); - // Loop over all rows of this subset. - // (it also avoids StandardStMan putCol with RefRows problem). - Vector<uint> rows = rowNrs.convert(); - ReadOnlyArrayIterator<bool> flagIter (flags, 2); - for (uint i=0; i<rows.size(); ++i) { - flagCol.putSlice (rows[i], colSlicer, flagIter.array()); - // If a new flag in a row is clear, the ROW_FLAG should not be set. - // If all new flags are set, we leave it because we might have a - // subset of the channels, so other flags might still be clear. - if (anyEQ (flagIter.array(), False)) { - flagRowCol.put (rows[i], False); - } - flagIter.next(); - } - } - } - - void MSUpdater::putWeights (const RefRows& rowNrs, - const Cube<float>& weights) - { - // Only put if rownrs are filled, thus if data were not inserted. - if (! rowNrs.rowVector().empty()) { - Slicer colSlicer(IPosition(2, 0, info().startchan()), - IPosition(2, info().ncorr(), info().nchan()) ); - ArrayColumn<float> weightCol(itsMS, itsWeightColName); - // Loop over all rows of this subset. - // (it also avoids StandardStMan putCol with RefRows problem). - Vector<uint> rows = rowNrs.convert(); - ReadOnlyArrayIterator<float> weightIter (weights, 2); - for (uint i=0; i<rows.size(); ++i) { - weightCol.putSlice (rows[i], colSlicer, weightIter.array()); - weightIter.next(); - } - } - } - - - void MSUpdater::putData (const RefRows& rowNrs, - const Cube<Complex>& data) - { - // Only put if rownrs are filled, thus if data were not inserted. - if (! rowNrs.rowVector().empty()) { - Slicer colSlicer(IPosition(2, 0, info().startchan()), - IPosition(2, info().ncorr(), info().nchan()) ); - ArrayColumn<Complex> dataCol(itsMS, itsDataColName); - // Loop over all rows of this subset. - // (it also avoids StandardStMan putCol with RefRows problem). - Vector<uint> rows = rowNrs.convert(); - ReadOnlyArrayIterator<Complex> dataIter (data, 2); - for (uint i=0; i<rows.size(); ++i) { - dataCol.putSlice (rows[i], colSlicer, dataIter.array()); - dataIter.next(); - } - } - } - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/MSWriter.cc b/CEP/DP3/DPPP/src/MSWriter.cc deleted file mode 100644 index 0c6106cb67e..00000000000 --- a/CEP/DP3/DPPP/src/MSWriter.cc +++ /dev/null @@ -1,699 +0,0 @@ -//# MSWriter.cc: DPPP step writing to an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Package__Version.h> -#include <DPPP/MSWriter.h> -#include <DPPP/MSUpdater.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPLogger.h> -#include <MS/VdsMaker.h> -#include <Common/ParameterSet.h> -#include <casacore/tables/Tables/TableCopy.h> -#if defined(HAVE_CASACORE) -#include <casacore/tables/DataMan/DataManInfo.h> -#else -#include <casacore/tables/DataMan/DataManInfo.h> -#endif -#include <casacore/tables/Tables/SetupNewTab.h> -#include <casacore/tables/Tables/ArrColDesc.h> -#include <casacore/tables/DataMan/StandardStMan.h> -#include <casacore/tables/DataMan/TiledStManAccessor.h> -#include <casacore/measures/TableMeasures/ArrayMeasColumn.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Containers/Record.h> -#include <casacore/casa/OS/Path.h> -#include <casacore/casa/version.h> -#include <iostream> -#include <limits> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - MSWriter::MSWriter (MSReader* reader, const string& outName, - const ParameterSet& parset, const string& prefix) - : itsReader (reader), - itsName (prefix), - itsOutName (outName), - itsParset (parset), - itsNrDone (0) - { - // Get tile size (default 1024 KBytes). - itsTileSize = parset.getUint (prefix+"tilesize", 1024); - itsTileNChan = parset.getUint (prefix+"tilenchan", 0); - itsOverwrite = parset.getBool (prefix+"overwrite", false); - itsNrTimesFlush = parset.getUint (prefix+"flush", 60); - itsCopyCorrData = parset.getBool (prefix+"copycorrecteddata", false); - itsCopyModelData = parset.getBool (prefix+"copymodeldata", false); - itsWriteFullResFlags = parset.getBool (prefix+"writefullresflag", true); - itsDataColName = parset.getString (prefix+"datacolumn", "DATA"); - itsWeightColName = parset.getString (prefix+"weightcolumn", - "WEIGHT_SPECTRUM"); - itsVdsDir = parset.getString (prefix+"vdsdir", string()); - itsClusterDesc = parset.getString (prefix+"clusterdesc", string()); - ASSERTSTR (itsDataColName == "DATA", "Currently only the DATA column" - " can be used as output when writing a new MS"); - ASSERTSTR (itsWeightColName == "WEIGHT_SPECTRUM", "Currently only the " - "WEIGHT_SPECTRUM column can be used as output when writing a new MS"); - - itsStManKeys.Set(parset, prefix); - } - - MSWriter::~MSWriter() - {} - - bool MSWriter::process (const DPBuffer& buf) - { - NSTimer::StartStop sstime(itsTimer); - // Form the vector of the output table containing new rows. - Vector<uint> rownrs(itsNrBl); - indgen (rownrs, itsMS.nrow()); - // Add the necessary rows to the table. - itsMS.addRow (itsNrBl); - // Form the subset of the tables containing the rows. - // It can happen that a missing slot was inserted. In that case - // the rownr vector is empty and we use the first itsNrBl input rows. - // Time related info can only be copied if not averaging and if the - // the time slot was not missing. - Table out(itsMS(rownrs)); - // Copy the input columns that do not change. - writeMeta (out, buf); - // Now write the data and flags. - writeData (out, buf); - // Flush if sufficient time slots are written. - itsNrDone++; - if (itsNrTimesFlush > 0 && itsNrDone%itsNrTimesFlush == 0) { - itsMS.flush(); - } - // Replace the rownrs in the buffer which is needed if in a later - // step the MS gets updated. - itsBuffer.setRowNrs (rownrs); - getNextStep()->process(itsBuffer); - return true; - } - - void MSWriter::finish() - { - NSTimer::StartStop sstime(itsTimer); - itsMS.flush(); - ///ROTiledStManAccessor acc1(itsMS, "TiledData"); - ///acc1.showCacheStatistics (cout); - ///ROTiledStManAccessor acc2(itsMS, "TiledFlag"); - ///acc2.showCacheStatistics (cout); - ///ROTiledStManAccessor acc3(itsMS, "TiledUVW"); - ///acc3.showCacheStatistics (cout); - ///ROTiledStManAccessor acc4(itsMS, "TiledFullResFlag"); - ///acc4.showCacheStatistics (cout); - // Create the VDS file. - if (! itsClusterDesc.empty()) { - string vdsName = itsMS.tableName() + ".vds"; - if (! itsVdsDir.empty()) { - if (itsVdsDir[itsVdsDir.size() - 1] != '/') { - itsVdsDir.append ("/"); - } - vdsName = itsVdsDir + string(casacore::Path(vdsName).baseName()); - } - // Create VDS file without detailed time info. - LOFAR::VdsMaker::create (itsMS.tableName(), vdsName, - itsClusterDesc, "", false); - } - } - - void MSWriter::addToMS (const string&) - { - getPrevStep()->addToMS(itsOutName); - } - - void MSWriter::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - itsInterval = info().timeInterval(); - itsNrCorr = info().ncorr(); - itsNrChan = info().nchan(); - itsNrBl = info().nbaselines(); - itsNrTimes = info().ntime(); - // Input can already be averaged, so take that into account. - itsNChanAvg = itsReader->nchanAvgFullRes() * info().nchanAvg(); - itsNTimeAvg = itsReader->ntimeAvgFullRes() * info().ntimeAvg(); - // Create the MS. - if (itsTileNChan <= 0 || itsTileNChan > getInfo().nchan()) { - itsTileNChan = getInfo().nchan(); - } - NSTimer::StartStop sstime(itsTimer); - createMS (itsOutName, info(), itsTileSize, itsTileNChan); - // Write the parset info into the history. - writeHistory (itsMS, itsParset); - itsMS.flush (true, true); - DPLOG_INFO ("Finished preparing output MS", false); - info().clearWrites(); - info().clearMetaChanged(); - } - - void MSWriter::show (std::ostream& os) const - { - os << "MSWriter " << itsName << std::endl; - os << " output MS: " << itsMS.tableName() << std::endl; - os << " nchan: " << itsNrChan << std::endl; - os << " ncorrelations: " << itsNrCorr << std::endl; - os << " nbaselines: " << itsNrBl << std::endl; - os << " ntimes: " << itsNrTimes << std::endl; - os << " time interval: " << itsInterval << std::endl; - os << " DATA column: " << itsDataColName << std::endl; - os << " WEIGHT column: " << itsWeightColName << std::endl; - if (itsStManKeys.stManName == "dysco") { - os - << " Compressed: yes\n" - << " Data bitrate: " << itsStManKeys.dyscoDataBitRate << '\n' - << " Weight bitrate: " << itsStManKeys.dyscoWeightBitRate << '\n' - << " Dysco mode: " << itsStManKeys.dyscoNormalization << ' ' - << itsStManKeys.dyscoDistribution << '(' - << itsStManKeys.dyscoDistTruncation << ")\n"; - } - else { - os << " Compressed: no\n"; - } - } - - void MSWriter::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " MSWriter " << itsName << endl; - } - - void MSWriter::makeArrayColumn (ColumnDesc desc, const IPosition& ipos, - DataManager* dm, Table& table, bool makeDirectColumn) - { - desc.setOptions(0); - desc.setShape(ipos); - if (makeDirectColumn) { - desc.setOptions(ColumnDesc::Direct | ColumnDesc::FixedShape); - } - else { - desc.setOptions(ColumnDesc::FixedShape); - } - if (table.tableDesc().isColumn(desc.name())) { - table.removeColumn(desc.name()); - } - // Use storage manager if given. - if (dm == 0) { - table.addColumn (desc); - } else { - table.addColumn (desc, *dm); - } - } - - void MSWriter::createMS (const string& outName, const DPInfo& info, - uint tileSize, uint tileNChan) - { - // Determine the data shape. - IPosition dataShape(2, itsNrCorr, itsNrChan); - // Obtain the MS description. - TableDesc tdesc (itsReader->table().tableDesc()); - // Create the output table without the columns depending - // on the nr of channels. - // FLAG_CATEGORY is taken, but ignored when writing. - Block<String> fixedColumns(20); - fixedColumns[0] = "UVW"; - fixedColumns[1] = "FLAG_CATEGORY"; - fixedColumns[2] = "WEIGHT"; - fixedColumns[3] = "SIGMA"; - fixedColumns[4] = "ANTENNA1"; - fixedColumns[5] = "ANTENNA2"; - fixedColumns[6] = "ARRAY_ID"; - fixedColumns[7] = "DATA_DESC_ID"; - fixedColumns[8] = "EXPOSURE"; - fixedColumns[9] = "FEED1"; - fixedColumns[10] = "FEED2"; - fixedColumns[11] = "FIELD_ID"; - fixedColumns[12] = "FLAG_ROW"; - fixedColumns[13] = "INTERVAL"; - fixedColumns[14] = "OBSERVATION_ID"; - fixedColumns[15] = "PROCESSOR_ID"; - fixedColumns[16] = "SCAN_NUMBER"; - fixedColumns[17] = "STATE_ID"; - fixedColumns[18] = "TIME"; - fixedColumns[19] = "TIME_CENTROID"; - Table temptable = itsReader->table().project(fixedColumns); - TableDesc newdesc = temptable.tableDesc(); - // Now quite some 'magic' is done to get the storage managers right. - // Most of the columns do not change much and should be stored with - // the IncrementalStMan. The ANTENNA columns change more often and - // can best be stored with StandardStMan. - // The new storage managers are only used for MSs stored with LofarStMan. - // For 'normal' MSs they won't change. - // - // If needed, make WEIGHT and SIGMA a fixed shape, direct column. - // In this way they are not written if the values are the same. - { - ColumnDesc& cdesc = newdesc.rwColumnDesc("WEIGHT"); - if (cdesc.shape().empty()) { - cdesc.setShape (IPosition(1,itsNrCorr), true); - } - } - { - ColumnDesc& cdesc = newdesc.rwColumnDesc("SIGMA"); - if (cdesc.shape().empty()) { - cdesc.setShape (IPosition(1,itsNrCorr), true); - } - } - // Remove possible hypercolumn definitions. -// Test for casacore version 3.1.1 or smaller -#if CASACORE_MAJOR_VERSION<3 || (CASACORE_MAJOR_VERSION==3 && (CASACORE_MINOR_VERSION==0 || (CASACORE_MINOR_VERSION==1 && CASACORE_PATCH_VERSION < 2))) - newdesc.adjustHypercolumns (SimpleOrderedMap<String,String>(String())); -#else - newdesc.adjustHypercolumns (std::map<String,String>()); -#endif - // Set data manager info. - Record dminfo = temptable.dataManagerInfo(); - // Determine the DATA tile shape. Use all corrs and the given #channels. - // The given tile size (in kbytes) determines the nr of rows in a tile . - IPosition tileShape(3, itsNrCorr, tileNChan, 1); - tileShape[2] = tileSize * 1024 / (8 * tileShape[0] * tileShape[1]); - if (tileShape[2] < 1) { - tileShape[2] = 1; - } - // Replace all non-writable storage managers (i.e. LofarStMan) by ISM. - dminfo = DataManInfo::adjustStMan (dminfo, "IncrementalStMan"); - // Remove ANTENNA1 and ANTENNA2 from the dminfo. - // Don't remove them if already stored with StandardStMan. - Vector<String> removeCols(2); - removeCols[0] = "ANTENNA1"; - removeCols[1] = "ANTENNA2"; - DataManInfo::removeDminfoColumns (dminfo, removeCols, "StandardStMan"); - // Use TiledStMan for UVW. - // Use as many rows as used for the DATA columns, but minimal 1024. - int tsmnrow = tileShape[2]; - if (tsmnrow < 1024) { - tsmnrow = 1024; - } - DataManInfo::setTiledStMan (dminfo, Vector<String>(1, "UVW"), - "TiledColumnStMan", "TiledUVW", - IPosition(2, 3, tsmnrow)); - // Test if SSMVar already exists. - bool hasSSMVar = false; - for (uint i=0; i<dminfo.nfields(); ++i) { - if (dminfo.subRecord(i).asString("NAME") == "SSMVar") { - hasSSMVar = true; - break; - } - } - // Setup table creation. Exception is thrown if it exists already. - Table::TableOption opt = itsOverwrite ? Table::New : Table::NewNoReplace; - SetupNewTable newtab(outName, newdesc, opt); - - // First bind all columns to SSM. - // For all columns defined in dminfo the bindings will be overwritten. - // In this way variable columns like ANTENNA1/2 are bound to SSM. - // Only do it if SSMVar does not exist (otherwise duplicate StMan name). - if (!hasSSMVar) { - StandardStMan ssm("SSMVar", 32768); - newtab.bindAll (ssm); - } - - // Bind all columns according to dminfo. - newtab.bindCreate (dminfo); - DataManagerCtor dyscoConstructor = 0; - Record dyscoSpec; - if (itsStManKeys.stManName == "dysco") { - dyscoSpec = itsStManKeys.GetDyscoSpec(); - dyscoConstructor = DataManager::getCtor("DyscoStMan"); - } - itsMS = Table(newtab); - - if (itsStManKeys.stManName == "dysco" && itsStManKeys.dyscoDataBitRate != 0) { - // Add DATA column using Dysco stman. - CountedPtr<DataManager> dyscoStMan(dyscoConstructor("DyscoData", dyscoSpec)); - makeArrayColumn (tdesc["DATA"], dataShape, dyscoStMan.get(), itsMS, true); - } - else { - // Add DATA column using tsm. - TiledColumnStMan tsm("TiledData", tileShape); - makeArrayColumn (tdesc["DATA"], dataShape, &tsm, itsMS); - } - - // Add FLAG column using tsm. - // Use larger tile shape because flags are stored as bits. - IPosition tileShapeF(tileShape); - tileShapeF[2] *= 8; - TiledColumnStMan tsmf("TiledFlag", tileShapeF); - makeArrayColumn(tdesc["FLAG"], dataShape, &tsmf, itsMS); - - if (itsWriteFullResFlags) { - // Add LOFAR_FULL_RES_FLAG column using tsm. - // The input can already be averaged and averaging can be done in - // this run, so the full resolution is the combination of both. - uint orignchan = itsNrChan * itsNChanAvg; - IPosition dataShapeF(2, (orignchan+7)/8, itsNTimeAvg); - IPosition tileShapeF(3, (orignchan+7)/8, 1024, tileShape[2]); - TiledColumnStMan tsmf("TiledFullResFlag", tileShapeF); - ArrayColumnDesc<uChar> padesc("LOFAR_FULL_RES_FLAG", - "flags in original full resolution", - dataShapeF, ColumnDesc::FixedShape); - makeArrayColumn(padesc, dataShapeF, &tsmf, itsMS); - } - if (itsStManKeys.stManName == "dysco" && itsStManKeys.dyscoWeightBitRate != 0) { - // Add WEIGHT_SPECTRUM column using Dysco stman. - CountedPtr<DataManager> dyscoStMan(dyscoConstructor( - "DyscoWeightSpectrum", dyscoSpec) - ); - ArrayColumnDesc<float> wsdesc("WEIGHT_SPECTRUM", "weight per corr/chan", - dataShape, - ColumnDesc::FixedShape | ColumnDesc::Direct); - makeArrayColumn (wsdesc, dataShape, dyscoStMan.get(), itsMS, true); - } - else { - // Add WEIGHT_SPECTRUM column using tsm. - TiledColumnStMan tsmw("TiledWeightSpectrum", tileShape); - ArrayColumnDesc<float> wsdesc("WEIGHT_SPECTRUM", "weight per corr/chan", - dataShape, ColumnDesc::FixedShape); - makeArrayColumn(wsdesc, dataShape, &tsmw, itsMS); - } - // If present handle the CORRECTED_DATA and MODEL_DATA column. - if (!tdesc.isColumn("CORRECTED_DATA")) { - itsCopyCorrData = false; - } - if (!tdesc.isColumn("MODEL_DATA")) { - itsCopyModelData = false; - } - if (itsCopyCorrData) { - TiledColumnStMan tsmc("CorrectedData", tileShape); - makeArrayColumn(tdesc["CORRECTED_DATA"], dataShape, &tsmc, - itsMS); - - IPosition iwShape(1, dataShape[1]); - IPosition iwShapeTile(2, tileShape[1], tileShape[2]); - TiledColumnStMan tsmw("TiledImagingWeight", iwShapeTile); - ColumnDesc iwdesc(ArrayColumnDesc<float>("IMAGING_WEIGHT")); - makeArrayColumn(iwdesc, iwShape, &tsmw, itsMS); - } - if (itsCopyModelData) { - ColumnDesc mdesc = tdesc.columnDesc("MODEL_DATA"); - TableRecord& keyset = mdesc.rwKeywordSet(); - // Redefine possible keywords used by the CASA VisSet classes. - if (keyset.isDefined("CHANNEL_SELECTION")) { - keyset.removeField("CHANNEL_SELECTION"); - } - Matrix<int> selection(2, 1); - selection(0, 0) = 0; - selection(1, 0) = itsNrChan; - keyset.define("CHANNEL_SELECTION", selection); - TiledColumnStMan tsmm("ModelData", tileShape); - makeArrayColumn(mdesc, dataShape, &tsmm, itsMS); - } - DPLOG_INFO (" copying info and subtables ...", false); - // Copy the info and subtables. - TableCopy::copyInfo(itsMS, temptable); - TableCopy::copySubTables(itsMS, temptable); - // Adjust the SPECTRAL_WINDOW and DATA_DESCRIPTION table as needed. - updateSpw (outName, info); - // Adjust the OBSERVATION table as needed. - updateObs (outName); - // Adjust the FIELD table as needed. - if (! info.phaseCenterIsOriginal()) { - updateField (outName, info); - } - } - - void MSWriter::updateSpw (const string& outName, const DPInfo& info) - { - // Fix the SPECTRAL_WINDOW values by updating the values in the subtable. - IPosition shape(1,itsNrChan); - Table inSPW = itsReader->table().keywordSet().asTable("SPECTRAL_WINDOW"); - Table outSPW = Table(outName + "/SPECTRAL_WINDOW", Table::Update); - Table outDD = Table(outName + "/DATA_DESCRIPTION", Table::Update); - ASSERT (outSPW.nrow() == outDD.nrow()); - uint spw = itsReader->spectralWindow(); - // Remove all rows before and after the selected band. - // Do it from the end, otherwise row numbers change. - for (uint i=outSPW.nrow(); i>0;) { - if (--i != spw) { - outSPW.removeRow (i); - outDD.removeRow (i); - } - } - ASSERT (outSPW.nrow() == 1); - // Set nr of channels. - ScalarColumn<Int> channum(outSPW, "NUM_CHAN"); - channum.fillColumn (itsNrChan); - // Change the column shapes. - TableDesc tdesc = inSPW.tableDesc(); - makeArrayColumn (tdesc["CHAN_FREQ"], shape, 0, outSPW); - makeArrayColumn (tdesc["CHAN_WIDTH"], shape, 0, outSPW); - makeArrayColumn (tdesc["EFFECTIVE_BW"], shape, 0, outSPW); - makeArrayColumn (tdesc["RESOLUTION"], shape, 0, outSPW); - // Create the required column objects. - ArrayColumn<Double> outFREQ(outSPW, "CHAN_FREQ"); - ArrayColumn<Double> outWIDTH(outSPW, "CHAN_WIDTH"); - ArrayColumn<Double> outBW(outSPW, "EFFECTIVE_BW"); - ArrayColumn<Double> outRESOLUTION(outSPW, "RESOLUTION"); - ScalarColumn<Double> outTOTALBW(outSPW, "TOTAL_BANDWIDTH"); - ScalarColumn<Double> outREFFREQ(outSPW, "REF_FREQUENCY"); - outFREQ.put (0, info.chanFreqs()); - outWIDTH.put (0, info.chanWidths()); - outBW.put (0, info.effectiveBW()); - outRESOLUTION.put(0, info.resolutions()); - outTOTALBW.put (0, info.totalBW()); - outREFFREQ.put (0, info.refFreq()); - // Adjust the spwid in the DATA_DESCRIPTION. - ScalarColumn<Int> spwCol(outDD, "SPECTRAL_WINDOW_ID"); - spwCol.put (0, 0); - } - - void MSWriter::updateObs (const string& outName) - { - Table outObs = Table(outName + "/OBSERVATION", Table::Update); - // Set nr of channels. - ArrayColumn<Double> timeRange(outObs, "TIME_RANGE"); - Vector<double> times(2); - times[0] = itsReader->firstTime() - 0.5 * itsReader->getInfo().timeInterval(); - times[1] = itsReader->lastTime() + 0.5 * itsReader->getInfo().timeInterval(); - // There should be one row, but loop in case of. - for (uint i=0; i<outObs.nrow(); ++i) { - timeRange.put (i, times); - } - } - - void MSWriter::updateField (const string& outName, const DPInfo& info) - { - Table outField = Table(outName + "/FIELD", Table::Update); - // Write new phase center. - ArrayMeasColumn<MDirection> phaseCol (outField, "PHASE_DIR"); - Vector<MDirection> dir(1, info.phaseCenter()); - phaseCol.put (0, dir); - } - - void MSWriter::writeHistory (Table& ms, const ParameterSet& parset) - { - Table histtab(ms.keywordSet().asTable("HISTORY")); - histtab.reopenRW(); - ScalarColumn<Double> time (histtab, "TIME"); - ScalarColumn<Int> obsId (histtab, "OBSERVATION_ID"); - ScalarColumn<String> message (histtab, "MESSAGE"); - ScalarColumn<String> application (histtab, "APPLICATION"); - ScalarColumn<String> priority (histtab, "PRIORITY"); - ScalarColumn<String> origin (histtab, "ORIGIN"); - ArrayColumn<String> parms (histtab, "APP_PARAMS"); - ArrayColumn<String> cli (histtab, "CLI_COMMAND"); - // Put all parset entries in a Vector<String>. - // Some WSRT MSs have a FixedShape APP_PARAMS and CLI_COMMAND column. - // For them, put all params in a single vector element (with newlines). - bool fixedShaped = - (parms.columnDesc().options() & ColumnDesc::FixedShape) != 0; - Vector<String> appvec; - Vector<String> clivec; - if (fixedShaped) { - appvec.resize(1); - clivec.resize(1); - ostringstream ostr; - parset.writeStream (ostr); - appvec[0] = ostr.str(); - } else { - appvec.resize (parset.size()); - Array<String>::contiter viter = appvec.cbegin(); - for (ParameterSet::const_iterator iter = parset.begin(); - iter != parset.end(); ++iter, ++viter) { - *viter = iter->first + '=' + iter->second.get(); - } - } - uint rownr = histtab.nrow(); - histtab.addRow(); - time.put (rownr, Time().modifiedJulianDay()*24.*3600.); - obsId.put (rownr, 0); - message.put (rownr, "parameters"); - application.put (rownr, "NDPPP"); - priority.put (rownr, "NORMAL"); - origin.put (rownr, Version::getInfo<DPPPVersion>("DPPP", "full")); - parms.put (rownr, appvec); - cli.put (rownr, clivec); - } - - void MSWriter::writeData (Table& out, const DPBuffer& buf) - { - ArrayColumn<Complex> dataCol(out, itsDataColName); - ArrayColumn<Bool> flagCol(out, "FLAG"); - ScalarColumn<Bool> flagRowCol(out, "FLAG_ROW"); - - if (buf.getData().empty()) { - return; - } - - // Write WEIGHT_SPECTRUM and DATA - ArrayColumn<Float> weightCol(out, "WEIGHT_SPECTRUM"); - itsBuffer.referenceFilled (buf); - const Array<Float>& weights = itsReader->fetchWeights (buf, itsBuffer, - itsTimer); - - // If compressing, flagged values need to be set to NaN, and flagged - // weights to zero, to decrease the dynamic range - if (itsStManKeys.stManName == "dysco") { - Cube<Complex> dataCopy = buf.getData().copy(); - Cube<Complex>::iterator dataIter = dataCopy.begin(); - Cube<float> weightsCopy = weights.copy(); - Cube<float>::iterator weightsIter = weightsCopy.begin(); - for (Cube<bool>::const_iterator flagIter = buf.getFlags().begin(); - flagIter != buf.getFlags().end(); ++flagIter) { - if (*flagIter) { - *dataIter = Complex(std::numeric_limits<float>::quiet_NaN(), - std::numeric_limits<float>::quiet_NaN()); - *weightsIter = 0.; - } - ++dataIter; - ++weightsIter; - } - dataCol.putColumn (dataCopy); - weightCol.putColumn (weightsCopy); - } - else { - dataCol.putColumn (buf.getData()); - weightCol.putColumn (weights); - } - - flagCol.putColumn (buf.getFlags()); - // A row is flagged if no flags in the row are False. - Vector<Bool> rowFlags (partialNFalse(buf.getFlags(), IPosition(2,0,1)) == 0u); - flagRowCol.putColumn (rowFlags); - if (itsWriteFullResFlags) { - writeFullResFlags (out, buf); - } - - // Write UVW - ArrayColumn<Double> uvwCol(out, "UVW"); - const Array<Double>& uvws = itsReader->fetchUVW (buf, itsBuffer, - itsTimer); - uvwCol.putColumn (uvws); - } - - void MSWriter::writeFullResFlags (Table& out, const DPBuffer& buf) - { - // Get the flags. - const Cube<bool>& flags = itsReader->fetchFullResFlags (buf, itsBuffer, - itsTimer); - const IPosition& ofShape = flags.shape(); - ASSERTSTR (uint(ofShape[0]) == itsNChanAvg * itsNrChan, - ofShape<<itsNChanAvg<<'*'<<itsNrChan); - ASSERTSTR (uint(ofShape[1]) == itsNTimeAvg, ofShape<<itsNTimeAvg); - // Convert the bools to uChar bits. - IPosition chShape(ofShape); - chShape[0] = (ofShape[0] + 7) / 8; - Cube<uChar> chars(chShape); - // If their sizes match, do it all in one go. - // Otherwise we have to iterate. - if (ofShape[0] == chShape[0]*8) { - Conversion::boolToBit (chars.data(), flags.data(), flags.size()); - } else { - ASSERT (ofShape[0] < chShape[0]*8); - const bool* flagsPtr = flags.data(); - uChar* charsPtr = chars.data(); - for (int i=0; i<ofShape[1]*ofShape[2]; ++i) { - Conversion::boolToBit (charsPtr, flagsPtr, ofShape[0]); - flagsPtr += ofShape[0]; - charsPtr += chShape[0]; - } - } - ArrayColumn<uChar> fullResCol(out, "LOFAR_FULL_RES_FLAG"); - if (! fullResCol.keywordSet().isDefined ("NCHAN_AVG")) { - fullResCol.rwKeywordSet().define ("NCHAN_AVG", int(itsNChanAvg)); - fullResCol.rwKeywordSet().define ("NTIME_AVG", int(itsNTimeAvg)); - } - fullResCol.putColumn (chars); - } - - void MSWriter::writeMeta (Table& out, const DPBuffer& buf) - { - // Fill ANTENNA1/2. - ScalarColumn<Int> ant1col(out, "ANTENNA1"); - ScalarColumn<Int> ant2col(out, "ANTENNA2"); - ant1col.putColumn (getInfo().getAnt1()); - ant2col.putColumn (getInfo().getAnt2()); - // Fill all rows that do not change. - fillSca<Double> (buf.getTime(), out, "TIME"); - fillSca<Double> (buf.getTime(), out, "TIME_CENTROID"); - fillSca<Double> (buf.getExposure(), out, "EXPOSURE"); - fillSca<Double> (itsInterval, out, "INTERVAL"); - fillSca<Int> (0, out, "FEED1"); - fillSca<Int> (0, out, "FEED2"); - fillSca<Int> (0, out, "DATA_DESC_ID"); - fillSca<Int> (0, out, "PROCESSOR_ID"); - fillSca<Int> (0, out, "FIELD_ID"); - fillSca<Int> (0, out, "SCAN_NUMBER"); - fillSca<Int> (0, out, "ARRAY_ID"); - fillSca<Int> (0, out, "OBSERVATION_ID"); - fillSca<Int> (0, out, "STATE_ID"); - Array<Float> arr(IPosition(1, itsNrCorr)); - arr = 1; - fillArr<Float> (arr, out, "SIGMA"); - fillArr<Float> (arr, out, "WEIGHT"); - } - - void MSWriter::copyMeta (const Table& in, Table& out, bool copyTimeInfo) - { - // Copy all rows that do not change. - copySca<int> (in, out, "ANTENNA1"); - copySca<int> (in, out, "ANTENNA2"); - copySca<int> (in, out, "FEED1"); - copySca<int> (in, out, "FEED2"); - copySca<int> (in, out, "PROCESSOR_ID"); - copySca<int> (in, out, "FIELD_ID"); - copySca<int> (in, out, "SCAN_NUMBER"); - copySca<int> (in, out, "ARRAY_ID"); - copySca<int> (in, out, "OBSERVATION_ID"); - copySca<int> (in, out, "STATE_ID"); - copyArr<float> (in, out, "SIGMA"); - copyArr<float> (in, out, "WEIGHT"); - if (copyTimeInfo) { - copySca<double>(in, out, "TIME"); - copySca<double>(in, out, "TIME_CENTROID"); - copySca<double>(in, out, "INTERVAL"); - copySca<double>(in, out, "EXPOSURE"); - copyArr<double>(in, out, "UVW"); - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/MedFlagger.cc b/CEP/DP3/DPPP/src/MedFlagger.cc deleted file mode 100644 index 5bcfb915efb..00000000000 --- a/CEP/DP3/DPPP/src/MedFlagger.cc +++ /dev/null @@ -1,527 +0,0 @@ -//# MedFlagger.cc: DPPP step class to flag data based on median filtering -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/MedFlagger.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StreamUtil.h> -#include <Common/LofarLogger.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Containers/Record.h> -#include <casacore/casa/Containers/RecordField.h> -#include <casacore/tables/TaQL/ExprNode.h> -#include <casacore/tables/TaQL/RecordGram.h> -#include <iostream> -#include <algorithm> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - MedFlagger::MedFlagger (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsThresholdStr (parset.getString (prefix+"threshold", "1")), - itsFreqWindowStr (parset.getString (prefix+"freqwindow", "1")), - itsTimeWindowStr (parset.getString (prefix+"timewindow", "1")), - itsNTimes (0), - itsNTimesDone (0), - itsFlagCounter (input->msName(), parset, prefix+"count."), - itsMoveTime (0), - itsMedianTime (0) - { - itsFlagCorr = parset.getUintVector (prefix+"correlations", - vector<uint>()); - itsApplyAutoCorr = parset.getBool (prefix+"applyautocorr", false); - itsMinBLength = parset.getDouble(prefix+"blmin", -1); - itsMaxBLength = parset.getDouble(prefix+"blmax", 1e30); - } - - MedFlagger::~MedFlagger() - {} - - void MedFlagger::show (std::ostream& os) const - { - os << "MADFlagger " << itsName << std::endl; - os << " freqwindow: " << itsFreqWindowStr - << " (max = " << itsFreqWindow << ')' << std::endl; - os << " timewindow: " << itsTimeWindowStr - << " (max = " << itsTimeWindow << ')' << std::endl; - os << " threshold: " << itsThresholdStr - << " (max = " << itsThreshold << ')' << std::endl; - os << " correlations: " << itsFlagCorr << std::endl; - os << " applyautocorr: " << itsApplyAutoCorr - << " (nautocorr = " << itsNrAutoCorr << ')' << std::endl; - os << " blmin: " << itsMinBLength << " m" << std::endl; - os << " blmax: " << itsMaxBLength << " m" << std::endl; - } - - void MedFlagger::showCounts (std::ostream& os) const - { - os << endl << "Flags set by MADFlagger " << itsName; - os << endl << "=======================" << endl; - itsFlagCounter.showBaseline (os, itsNTimes); - itsFlagCounter.showChannel (os, itsNTimes); - itsFlagCounter.showCorrelation (os, itsNTimes); - } - - void MedFlagger::showTimings (std::ostream& os, double duration) const - { - double flagDur = itsTimer.getElapsed(); - os << " "; - FlagCounter::showPerc1 (os, flagDur, duration); - os << " MADFlagger " << itsName << endl; - os << " "; - // move time and median time are sum of all threads. - // Scale them to a single elapsed time. - double factor = (itsComputeTimer.getElapsed() / - (itsMoveTime + itsMedianTime)); - FlagCounter::showPerc1 (os, itsMoveTime*factor, flagDur); - os << " of it spent in shuffling data" << endl; - os << " "; - FlagCounter::showPerc1 (os, itsMedianTime*factor, flagDur); - os << " of it spent in calculating medians" << endl; - } - - void MedFlagger::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteFlags(); - // Get baseline indices of autocorrelations. - itsAutoCorrIndex = info().getAutoCorrIndex(); - itsNrAutoCorr = 0; - for (uint i=0; i<itsAutoCorrIndex.size(); ++i) { - if (itsAutoCorrIndex[i] >= 0) { - itsNrAutoCorr++; - } - } - if (itsApplyAutoCorr) { - ASSERTSTR (itsNrAutoCorr > 0, "applyautocorr=True cannot be used if " - "the data does not contain autocorrelations"); - } - // Calculate the baseline lengths. - itsBLength = info().getBaselineLengths(); - // Evaluate the window size expressions. - getExprValues (infoIn.nchan(), infoIn.ntime()); - itsBuf.resize (itsTimeWindow); - itsAmpl.resize (itsTimeWindow); - for (size_t i=0; i<itsAmpl.size(); ++i) { - itsAmpl[i].resize (infoIn.ncorr(), infoIn.nchan(), - infoIn.nbaselines()); - } - // Set or check the correlations to flag on. - vector<uint> flagCorr; - uint ncorr = infoIn.ncorr(); - if (itsFlagCorr.empty()) { - // No correlations given means use them all. - for (uint i=0; i<ncorr; ++i) { - flagCorr.push_back (i); - } - } else { - for (uint i=0; i<itsFlagCorr.size(); ++i) { - // Only take valid corrrelations. - if (itsFlagCorr[i] < ncorr) { - flagCorr.push_back (itsFlagCorr[i]); - } - } - // If no valid left, use first one. - if (flagCorr.empty()) { - LOG_INFO_STR ("No valid correlations given in MedFlagger " - << itsName << "; first one will be used"); - flagCorr.push_back (0); - } - } - itsFlagCorr = flagCorr; - // Initialize the flag counters. - itsFlagCounter.init (getInfo()); - } - - bool MedFlagger::process (const DPBuffer& buf) - { - itsTimer.start(); - // Accumulate in the time window. - // The buffer is wrapped, thus oldest entries are overwritten. - uint index = itsNTimes % itsTimeWindow; - itsBuf[index].copy (buf); - DPBuffer& dbuf = itsBuf[index]; - // Calculate amplitudes if needed. - amplitude (itsAmpl[index], dbuf.getData()); - // Fill flags if needed. - if (dbuf.getFlags().empty()) { - dbuf.getFlags().resize (dbuf.getData().shape()); - dbuf.getFlags() = false; - } - itsNTimes++; - ///cout << "medproc: " << itsNTimes << endl; - // Flag if there are enough time entries in the buffer. - if (itsNTimes > itsTimeWindow/2) { - // Fill the vector telling which time entries to use for the medians. - // Arrange indices such that any width can be used; thus first center, - // then one left and right, second left and right, etc. - // If window not entirely full, use copies as needed. - // This is done as follows: - // Suppose timewindow=9 and we only have entries 0,1,2,3,4. - // The entries are mirrored, thus we get 4,3,2,1,0,1,2,3,4 - // to obtain sufficient time entries. - vector<uint> timeEntries; - timeEntries.reserve (itsTimeWindow); - ///uint rinx = itsNTimesDone % itsTimeWindow; - ///timeEntries.push_back (rinx); // center - ///uint linx = rinx; - ///for (uint i=1; i<=itsTimeWindow/2; ++i) { - ///if (linx == 0) linx = itsTimeWindow; - ///linx--; - ///rinx++; - ///if (rinx == itsTimeWindow) rinx = 0; - ///if (i >= itsNTimes) rinx = linx; - ///timeEntries.push_back (linx); - ///timeEntries.push_back (rinx); - timeEntries.push_back (itsNTimesDone % itsTimeWindow); // center - for (uint i=1; i<=itsTimeWindow/2; ++i) { - timeEntries.push_back - (std::abs(int(itsNTimesDone) - int(i)) % itsTimeWindow); - timeEntries.push_back ((itsNTimesDone + i) % itsTimeWindow); - } - flag (itsNTimesDone%itsTimeWindow, timeEntries); - itsNTimesDone++; - } - itsTimer.stop(); - return true; - } - - void MedFlagger::finish() - { - itsTimer.start(); - // Adjust window size if there are fewer time entries. - if (itsNTimes < itsTimeWindow) { - itsTimeWindow = 1 + ((itsNTimes-1)/2)*2; // make sure it is odd - } - uint halfWindow = itsTimeWindow/2; - vector<uint> timeEntries(itsTimeWindow); - // Process possible leading entries. - // This can happen if the window was larger than number of times. - while (itsNTimesDone < itsNTimes-halfWindow) { - // Process in the same way as in process. - uint inx = 0; - timeEntries[inx++] = itsNTimesDone % itsTimeWindow; // center - for (uint i=1; i<=halfWindow; ++i) { - timeEntries[inx++] = - std::abs(int(itsNTimesDone) - int(i)) % itsTimeWindow; - timeEntries[inx++] = (itsNTimesDone + i) % itsTimeWindow; - } - flag (itsNTimesDone, timeEntries); - itsNTimesDone++; - } - ASSERT (itsNTimes - itsNTimesDone == halfWindow); - // Process the remaining time entries. - while (itsNTimesDone < itsNTimes) { - uint inx = 0; - timeEntries[inx++] = itsNTimesDone % itsTimeWindow; // center - for (uint i=1; i<=halfWindow; ++i) { - timeEntries[inx++] = - std::abs(int(itsNTimesDone) - int(i)) % itsTimeWindow; - // Time entries might need to be mirrored at the end. - uint ri = itsNTimesDone + i; - if (ri >= itsNTimes) { - ri = 2*(itsNTimes-1) - ri; - } - timeEntries[inx++] = ri % itsTimeWindow; - } - flag (itsNTimesDone%itsTimeWindow, timeEntries); - itsNTimesDone++; - } - itsTimer.stop(); - // Let the next step finish its processing. - getNextStep()->finish(); - } - - void MedFlagger::flag (uint index, const vector<uint>& timeEntries) - { - ///cout << "flag: " <<itsNTimes<<' '<<itsNTimesDone<<' ' <<index << timeEntries << endl; - // Get antenna numbers in case applyautocorr is true. - const Vector<Int>& ant1 = getInfo().getAnt1(); - const Vector<Int>& ant2 = getInfo().getAnt2(); - // Result is 'copy' of the entry at the given time index. - DPBuffer buf (itsBuf[index]); - IPosition shp = buf.getData().shape(); - uint ncorr = shp[0]; - uint nchan = shp[1]; - uint blsize = ncorr*nchan; - int nrbl = shp[2]; // OpenMP 2.5 needs signed iteration variables - uint ntime = timeEntries.size(); - // Get pointers to data and flags. - const float* bufDataPtr = itsAmpl[index].data(); - bool* bufFlagPtr = buf.getFlags().data(); - float MAD = 1.4826; //# constant determined by Pandey - itsComputeTimer.start(); - // Now flag each baseline, channel and correlation for this time window. - // This can be done in parallel. -#pragma omp parallel - { - // Create a temporary buffer (per thread) to hold data for determining - // the medians. - // Also create thread-private counter and timer objects. - Block<float> tempBuf(itsFreqWindow*ntime); - FlagCounter counter; - counter.init (getInfo()); - NSTimer moveTimer; - NSTimer medianTimer; - float Z1, Z2; - // The for loop can be parallellized. This must be done dynamically, - // because the execution time of each iteration can vary a lot. -#pragma omp for schedule(dynamic) - // GCC-4.3 only supports OpenMP 2.5 that needs signed iteration - // variables. - for (int ib=0; ib<nrbl; ++ib) { - const float* dataPtr = bufDataPtr + ib*blsize; - bool* flagPtr = bufFlagPtr + ib*blsize; - double threshold = itsThresholdArr[ib]; - // Do only autocorrelations if told so. - // Otherwise do baseline only if length within min-max. - if ((!itsApplyAutoCorr && itsBLength[ib] >= itsMinBLength && - itsBLength[ib] <= itsMaxBLength) || - (itsApplyAutoCorr && ant1[ib] == ant2[ib])) { - for (uint ic=0; ic<nchan; ++ic) { - bool corrIsFlagged = false; - // Iterate over given correlations. - for (vector<uint>::const_iterator iter = itsFlagCorr.begin(); - iter != itsFlagCorr.end(); ++iter) { - uint ip = *iter; - // If one correlation is flagged, all of them will be flagged. - // So no need to check others. - if (flagPtr[ip]) { - corrIsFlagged = true; - break; - } - // Calculate values from the median. - computeFactors (timeEntries, ib, ic, ip, nchan, ncorr, - Z1, Z2, tempBuf.storage(), - moveTimer, medianTimer); - if (dataPtr[ip] > Z1 + threshold * Z2 * MAD) { - corrIsFlagged = true; - counter.incrBaseline(ib); - counter.incrChannel(ic); - counter.incrCorrelation(ip); - break; - } - } - if (corrIsFlagged) { - for (uint ip=0; ip<ncorr; ++ip) { - flagPtr[ip] = true; - } - } - dataPtr += ncorr; - flagPtr += ncorr; - } - } else { - dataPtr += nchan*ncorr; - flagPtr += nchan*ncorr; - } - } // end of OMP for -#pragma omp critical(medflagger_updatecounts) - { - // Add the counters to the overall object. - itsFlagCounter.add (counter); - // Add the timings. - itsMoveTime += moveTimer.getElapsed(); - itsMedianTime += medianTimer.getElapsed(); - } // end of OMP critical - } // end of OMP parallel - - itsComputeTimer.stop(); - // Apply autocorrelations flags if needed. - // Only to baselines with length within min-max. - if (itsApplyAutoCorr) { - for (int ib=0; ib<nrbl; ++ib) { - bool* flagPtr = bufFlagPtr + ib*blsize; - // Flag crosscorr if at least one autocorr is present. - // Only if baseline length within min-max. - if (ant1[ib] != ant2[ib] && itsBLength[ib] >= itsMinBLength && - itsBLength[ib] <= itsMaxBLength) { - int inx1 = itsAutoCorrIndex[ant1[ib]]; - int inx2 = itsAutoCorrIndex[ant2[ib]]; - if (inx1 >= 0 || inx2 >= 0) { - // Find flags of the autocorrelations of both antennae. - // Use other autocorr if one autocorr does not exist. - // In this way inx does not need to be tested in the inner loop. - if (inx1 < 0) { - inx1 = inx2; - } else if (inx2 < 0) { - inx2 = inx1; - } - bool* flagAnt1 = buf.getFlags().data() + inx1*nchan*ncorr; - bool* flagAnt2 = buf.getFlags().data() + inx2*nchan*ncorr; - // Flag if not flagged yet and if one of autocorr is flagged. - for (uint ic=0; ic<nchan; ++ic) { - if (!*flagPtr && (*flagAnt1 || *flagAnt2)) { - for (uint ip=0; ip<ncorr; ++ip) { - flagPtr[ip] = true; - } - itsFlagCounter.incrBaseline(ib); - itsFlagCounter.incrChannel(ic); - } - flagPtr += ncorr; - flagAnt1 += ncorr; - flagAnt2 += ncorr; - } - } - } else { - flagPtr += nchan*ncorr; - } - } - } - // Process the result in the next step. - itsTimer.stop(); - getNextStep()->process (buf); - itsTimer.start(); - } - - void MedFlagger::computeFactors (const vector<uint>& timeEntries, - uint bl, int chan, int corr, - int nchan, int ncorr, - float& Z1, float& Z2, - float* tempBuf, - NSTimer& moveTimer, NSTimer& medianTimer) - { - moveTimer.start(); - // Collect all non-flagged data points for given baseline, channel, - // and correlation in the window around the channel. - uint np = 0; - // At the beginning or end of the window the values are wrapped. - // So we might need to move in two parts. - // This little piece of code is tested in tMirror.cc. - int hw = itsFreqWindowArr[bl]/2; - int s1 = chan - hw; - int e1 = chan + hw + 1; - int s2 = 1; - int e2 = 1; - if (s1 < 0) { - e2 = -s1 + 1; - s1 = 0; - } else if (e1 > nchan) { - s2 = nchan + nchan - e1 - 1; // e1-nchan+1 too far, go back that amount - e2 = nchan-1; - e1 = nchan; - } - // Iterate over all time entries. - const uint* iter = &(timeEntries[0]); - const uint* endIter = iter + itsTimeWindowArr[bl]; - for (; iter!=endIter; ++iter) { - const DPBuffer& inbuf = itsBuf[*iter]; - const Cube<float>& ampl = itsAmpl[*iter]; - // Get pointers to given baseline and correlation. - uint offset = bl*nchan*ncorr + corr; - const float* dataPtr = ampl.data() + offset; - const bool* flagPtr = inbuf.getFlags().data() + offset; - // Now move data from the two channel parts. - for (int i=s1*ncorr; i<e1*ncorr; i+=ncorr) { - if (!flagPtr[i]) { - tempBuf[np++] = dataPtr[i]; - } - } - for (int i=s2*ncorr; i<e2*ncorr; i+=ncorr) { - if (!flagPtr[i]) { - tempBuf[np++] = dataPtr[i]; - } - } - } - moveTimer.stop(); - // If only flagged data, don't do anything. - if (np == 0) { - Z1 = -1.0; - Z2 = 0.0; - } else { - medianTimer.start(); - // Get median of data and get median of absolute difference. - ///std::nth_element (tempBuf, tempBuf+np/2, tempBuf+np); - ///Z1 = *(tempBuf+np/2); - Z1 = GenSort<float>::kthLargest (tempBuf, np, np/2); - for (uint i=0; i<np; ++i) { - tempBuf[i] = std::abs(tempBuf[i] - Z1); - } - ///std::nth_element (tempBuf, tempBuf+np/2, tempBuf+np); - ///Z2 = *(tempBuf+np/2); - Z2 = GenSort<float>::kthLargest (tempBuf, np, np/2); - medianTimer.stop(); - } - } - - void MedFlagger::getExprValues (int maxNChan, int maxNTime) - { - // Parse the expressions. - // Baseline length can be used as 'bl' in the expressions. - Record rec; - rec.define ("bl", double(0)); - TableExprNode node1 (RecordGram::parse(rec, itsFreqWindowStr)); - TableExprNode node2 (RecordGram::parse(rec, itsTimeWindowStr)); - TableExprNode node3 (RecordGram::parse(rec, itsThresholdStr)); - // Size the arrays. - uInt nrbl = itsBLength.size(); - itsThresholdArr.reserve (nrbl); - itsTimeWindowArr.reserve (nrbl); - itsFreqWindowArr.reserve (nrbl); - itsFreqWindow = 0; - itsTimeWindow = 0; - itsThreshold = -1e30; - // Evaluate the expression for each baseline. - double result; - RecordFieldPtr<double> blref(rec, "bl"); - for (uint i=0; i<nrbl; ++i) { - // Put the length of each baseline in the record used to evaluate. - *blref = itsBLength[i]; - // Evaluate freqwindow size and make it odd if needed. - node1.get (rec, result); - int freqWindow = std::min (std::max(1, int(result+0.5)), maxNChan); - if (freqWindow%2 == 0) { - freqWindow--; - } - itsFreqWindowArr.push_back (freqWindow); - itsFreqWindow = std::max(itsFreqWindow, uint(freqWindow)); - // Evaluate timewindow size and make it odd if needed. - node2.get (rec, result); - int timeWindow = std::max(1, int(result+0.5)); - if (maxNTime > 0 && timeWindow > maxNTime) { - timeWindow = maxNTime; - } - if (timeWindow%2 == 0) { - timeWindow--; - } - itsTimeWindowArr.push_back (timeWindow); - itsTimeWindow = std::max (itsTimeWindow, uint(timeWindow)); - // Evaluate threshold. - node3.get (rec, result); - itsThresholdArr.push_back (result); - if (result > itsThreshold) { - itsThreshold = result; - } - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/ModelComponent.cc b/CEP/DP3/DPPP/src/ModelComponent.cc deleted file mode 100644 index 1bd8b0ad458..00000000000 --- a/CEP/DP3/DPPP/src/ModelComponent.cc +++ /dev/null @@ -1,36 +0,0 @@ -//# ModelComponent.cc: Base class for model components. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/ModelComponent.h> - -namespace LOFAR -{ -namespace DPPP -{ - -ModelComponent::~ModelComponent() -{ -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/ModelComponentVisitor.cc b/CEP/DP3/DPPP/src/ModelComponentVisitor.cc deleted file mode 100644 index 3cd0eb8a51a..00000000000 --- a/CEP/DP3/DPPP/src/ModelComponentVisitor.cc +++ /dev/null @@ -1,37 +0,0 @@ -//# ModelComponentVisitor.cc: Base class for visitors that visit model component -//# hierarchies. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/ModelComponentVisitor.h> - -namespace LOFAR -{ -namespace DPPP -{ - -ModelComponentVisitor::~ModelComponentVisitor() -{ -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/MultiMSReader.cc b/CEP/DP3/DPPP/src/MultiMSReader.cc deleted file mode 100644 index f62cdf9becd..00000000000 --- a/CEP/DP3/DPPP/src/MultiMSReader.cc +++ /dev/null @@ -1,457 +0,0 @@ -//# MultiMSReader.cc: DPPP step reading from multiple MSs -//# Copyright (C) 2011 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: MSReader.cc 19257 2011-11-14 14:36:08Z diepen $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/MultiMSReader.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPLogger.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StreamUtil.h> -#include <Common/LofarLogger.h> -#include <casacore/tables/Tables/TableRecord.h> -#include <casacore/tables/Tables/ScalarColumn.h> -#include <casacore/tables/Tables/ArrayColumn.h> -#include <casacore/tables/TaQL/ExprNode.h> -#include <casacore/tables/TaQL/RecordGram.h> -#include <casacore/measures/Measures/MeasTable.h> -#include <casacore/measures/TableMeasures/ScalarMeasColumn.h> -#include <casacore/measures/TableMeasures/ArrayMeasColumn.h> -#include <casacore/casa/Containers/Record.h> -#include <casacore/casa/Quanta/MVTime.h> -#include <casacore/casa/Utilities/GenSort.h> -#include <casacore/casa/OS/Conversion.h> -#include <iostream> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - MultiMSReader::MultiMSReader (const vector<string>& msNames, - const ParameterSet& parset, - const string& prefix) - : itsFirst (-1), - itsNMissing (0), - itsMSNames (msNames), - itsRegularChannels (true) - { - ASSERTSTR (msNames.size() > 0, "No names of MeasurementSets given"); - itsMSName = itsMSNames[0]; - itsStartChanStr = parset.getString (prefix+"startchan", "0"); - itsNrChanStr = parset.getString (prefix+"nchan", "0"); - itsUseFlags = parset.getBool (prefix+"useflag", true); - itsDataColName = parset.getString (prefix+"datacolumn", "DATA"); - itsWeightColName = parset.getString (prefix+"weightcolumn", - "WEIGHT_SPECTRUM"), - itsMissingData = parset.getBool (prefix+"missingdata", false); - itsAutoWeight = parset.getBool (prefix+"autoweight", false); - itsNeedSort = parset.getBool (prefix+"sort", false); - itsOrderMS = parset.getBool (prefix+"orderms", true); - // Open all MSs. - DPStep::ShPtr nullStep (new NullStep()); - itsReaders.reserve (msNames.size()); - itsSteps.reserve (msNames.size()); - for (uint i=0; i<msNames.size(); ++i) { - itsReaders.push_back (new MSReader (msNames[i], parset, prefix, - itsMissingData)); - // itsSteps takes care of deletion of the MSReader object. - itsSteps.push_back (DPStep::ShPtr(itsReaders[i])); - // Add a null step for the reader. - itsSteps[i]->setNextStep (nullStep); - // Ignore if the MS is missing. - if (itsReaders[i]->table().isNull()) { - itsReaders[i] = 0; - itsNMissing++; - } else if (itsFirst < 0) { - itsFirst = i; - } - } - - // TODO: check if frequencies are regular, insert some empy readers - // if necessary - - ASSERTSTR (itsFirst>=0, "All input MeasurementSets do not exist"); - itsBuffers.resize (itsReaders.size()); - } - - MultiMSReader::~MultiMSReader() - {} - - void MultiMSReader::setReadVisData (bool readVisData) - { - itsReadVisData = readVisData; - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - itsReaders[i]->setReadVisData (readVisData); - } - } - } - - void MultiMSReader::handleBands() - { - if (itsNMissing > 0) { - fillBands(); - return; - } - if (itsOrderMS) { - sortBands(); - } - - // Collect the channel info of all MSs. - Vector<double> chanFreqs (itsNrChan); - Vector<double> chanWidths (itsNrChan); - Vector<double> resolutions(itsNrChan); - Vector<double> effectiveBW(itsNrChan); - uint inx = 0; - for (uint i=0; i<itsReaders.size(); ++i) { - uint nchan = itsReaders[i]->getInfo().nchan(); - objcopy (chanFreqs.data() + inx, - itsReaders[i]->getInfo().chanFreqs().data(), nchan); - objcopy (chanWidths.data() + inx, - itsReaders[i]->getInfo().chanWidths().data(), nchan); - objcopy (resolutions.data() + inx, - itsReaders[i]->getInfo().resolutions().data(), nchan); - objcopy (effectiveBW.data() + inx, - itsReaders[i]->getInfo().effectiveBW().data(), nchan); - inx += nchan; - } - info().set (chanFreqs, chanWidths, resolutions, effectiveBW, 0., 0.); - } - - void MultiMSReader::sortBands() - { - // Order the bands (MSs) in order of frequency. - int nband = itsReaders.size(); - Vector<double> freqs(nband); - for (int i=0; i<nband; ++i) { - freqs[i] = itsReaders[i]->getInfo().chanFreqs().data()[0]; - } - Vector<uInt> index; - GenSortIndirect<double>::sort (index, freqs); - vector<MSReader*> oldReaders (itsReaders); - for (int i=0; i<nband; ++i) { - itsReaders[i] = oldReaders[index[i]]; - } - } - - void MultiMSReader::fillBands() - { - ASSERTSTR (!itsOrderMS, "Cannot order the MSs if some are missing"); - // Get channel width (which should be the same for all bands). - double chanw = itsReaders[itsFirst]->getInfo().chanWidths().data()[0]; - // Get frequency for first subband. - double freq = itsReaders[itsFirst]->getInfo().chanFreqs().data()[0]; - freq -= itsFirst*itsFillNChan*chanw; - // Add missing channels to the total nr. - itsNrChan += itsNMissing*itsFillNChan; - // Collect the channel info of all MSs. - Vector<double> chanFreqs (itsNrChan); - Vector<double> chanWidths(itsNrChan); - uint inx = 0; - // Data for a missing MS can only be inserted if all other MSs have - // the same nr of channels and are in increasing order of freq. - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - ASSERTSTR (itsReaders[i]->getInfo().nchan() == itsFillNChan, - "An MS is missing; the others should have equal nchan"); - // Check if all channels have the same width and are consecutive. - const Vector<double>& freqs = itsReaders[i]->getInfo().chanFreqs(); - const Vector<double>& width = itsReaders[i]->getInfo().chanWidths(); - ASSERTSTR (freqs[0] > freq || near(freqs[0], freq, 1e-5), - "Subbands should be in increasing order of frequency; found " - << freqs[0] << ", expected " << freq << " (diff=" - << freqs[0]-freq << ')'); - freq = freqs[itsFillNChan-1] + width[itsFillNChan-1]; - objcopy (chanFreqs.data() + inx, freqs.data(), itsFillNChan); - objcopy (chanWidths.data() + inx, width.data(), itsFillNChan); - inx += itsFillNChan; - } else { - // Insert channel info for missing MSs. - for (uint j=0; j<itsFillNChan; ++j) { - chanFreqs[inx] = freq; - chanWidths[inx] = chanw; - freq += chanw; - inx++; - } - } - } - - info().set (chanFreqs, chanWidths); - } - - bool MultiMSReader::process (const DPBuffer& buf) - { - // Stop if at end. - if (! itsReaders[itsFirst]->process (buf)) { - return false; // end of input - } - const DPBuffer& buf1 = itsReaders[itsFirst]->getBuffer(); - itsBuffer.setTime (buf1.getTime()); - itsBuffer.setExposure (buf1.getExposure()); - itsBuffer.setRowNrs (buf1.getRowNrs()); - // Size the buffers. - if (itsBuffer.getFlags().empty()) { - if (itsReadVisData) { - itsBuffer.getData().resize (IPosition(3, itsNrCorr, - itsNrChan, itsNrBl)); - } - itsBuffer.getFlags().resize (IPosition(3, itsNrCorr, - itsNrChan, itsNrBl)); - } - // Loop through all readers and get data and flags. - IPosition s(3, 0, 0, 0); - IPosition e(3, itsNrCorr-1, 0, itsNrBl-1); - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - if (int(i) != itsFirst) { - itsReaders[i]->process (buf); - } - const DPBuffer& msBuf = itsReaders[i]->getBuffer(); - ASSERTSTR (! msBuf.getRowNrs().empty(), - "When using multiple MSs, the times in all MSs have to be " - "consecutive; this is not the case for MS " << i); - // Copy data and flags. - e[1] = s[1] + itsReaders[i]->getInfo().nchan() - 1; - if (itsReadVisData) { - itsBuffer.getData()(s,e) = msBuf.getData(); - } - itsBuffer.getFlags()(s,e) = msBuf.getFlags(); - } else { - e[1] = s[1] + itsFillNChan - 1; - if (itsReadVisData) { - itsBuffer.getData()(s,e) = Complex(); - } - itsBuffer.getFlags()(s,e) = true; - } - s[1] = e[1] + 1; - } - getNextStep()->process (itsBuffer); - return true; - } - - void MultiMSReader::finish() - { - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - itsReaders[i]->finish(); - } - } - getNextStep()->finish(); - } - - void MultiMSReader::updateInfo (const DPInfo& infoIn) - { - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - itsReaders[i]->updateInfo (infoIn); - } - } - info() = itsReaders[itsFirst]->getInfo(); - // Use the first valid MS as the standard MS (for meta data) - // Get meta data and check they are equal for all MSs. - itsMS = itsReaders[itsFirst]->table(); - itsStartTime = getInfo().startTime(); - itsFirstTime = itsReaders[itsFirst]->firstTime(); - itsLastTime = itsReaders[itsFirst]->lastTime(); - itsTimeInterval = getInfo().timeInterval(); - itsSelBL = itsReaders[itsFirst]->baselineSelection(); - itsSpw = itsReaders[itsFirst]->spectralWindow(); - itsNrCorr = getInfo().ncorr(); - itsNrBl = getInfo().nbaselines(); - itsNrChan = 0; - itsFillNChan = getInfo().nchan(); - itsStartChan = itsReaders[itsFirst]->startChan(); - itsFullResNChanAvg = itsReaders[itsFirst]->nchanAvgFullRes(); - itsFullResNTimeAvg = itsReaders[itsFirst]->ntimeAvgFullRes(); - itsHasFullResFlags = itsReaders[itsFirst]->hasFullResFlags(); - itsBaseRowNrs = itsReaders[itsFirst]->getBaseRowNrs(); - for (uint i=0; i<itsMSNames.size(); ++i) { - if (itsReaders[i]) { - const DPInfo& rdinfo = itsReaders[i]->getInfo(); - ASSERTSTR (near(itsStartTime, rdinfo.startTime()) && - near(itsLastTime, itsReaders[i]->lastTime()) && - near(itsTimeInterval, rdinfo.timeInterval()) && - itsNrCorr == rdinfo.ncorr() && - itsNrBl == rdinfo.nbaselines() && - itsFullResNChanAvg == itsReaders[i]->nchanAvgFullRes() && - itsFullResNTimeAvg == itsReaders[i]->ntimeAvgFullRes() && - getInfo().antennaSet() == rdinfo.antennaSet() && - allEQ (getInfo().getAnt1(), rdinfo.getAnt1()) && - allEQ (getInfo().getAnt2(), rdinfo.getAnt2()), - "Meta data of MS " << itsMSNames[i] - << " differs from " << itsMSNames[itsFirst]); - itsNrChan += rdinfo.nchan(); - itsHasFullResFlags = (itsHasFullResFlags && - itsReaders[i]->hasFullResFlags()); - } - } - // Handle the bands and take care of missing MSs. - // Sort them if needed. - handleBands(); - - // check that channels are regularly spaced, give warning otherwise - if (itsNrChan>1) { - Vector<Double> upFreq = info().chanFreqs()( - Slicer(IPosition(1,1), - IPosition(1,itsNrChan-1))); - Vector<Double> lowFreq = info().chanFreqs()( - Slicer(IPosition(1,0), - IPosition(1,itsNrChan-1))); - Double freqstep0=upFreq(0)-lowFreq(0); - // Compare up to 1kHz accuracy - itsRegularChannels=allNearAbs(upFreq-lowFreq, freqstep0, 1.e3) && - allNearAbs(info().chanWidths(), - info().chanWidths()(0), 1.e3); - } - - // Set correct nr of channels. - info().setNChan (itsNrChan); - // Initialize the flag counters. - itsFlagCounter.init (getInfo()); - } - - void MultiMSReader::show (std::ostream& os) const - { - os << "MultiMSReader" << std::endl; - os << " input MSs: " << itsMSNames[0] << std::endl; - for (uint i=1; i<itsMSNames.size(); ++i) { - os << " " << itsMSNames[i] << std::endl; - } - if (! itsSelBL.empty()) { - os << " baseline: " << itsSelBL << std::endl; - } - os << " band " << itsSpw << std::endl; - os << " startchan: " << itsStartChan << " (" << itsStartChanStr - << ')' << std::endl; - os << " nchan: " << itsNrChan << " (" << itsNrChanStr - << ')'; - if (itsRegularChannels) { - os <<" (regularly spaced)" << std::endl; - } else { - os <<" (NOT regularly spaced)" << std::endl; - } - os << " ncorrelations: " << itsNrCorr << std::endl; - os << " nbaselines: " << itsNrBl << std::endl; - os << " ntimes: " << itsMS.nrow() / itsNrBl << std::endl; - os << " time interval: " << itsTimeInterval << std::endl; - os << " DATA column: " << itsDataColName << std::endl; - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - if (itsReaders[i]->missingData()) { - os << " column missing in " << itsMSNames[i] << std::endl; - } - } else { - os << " MS missing " << itsMSNames[i] << std::endl; - } - } - os << " WEIGHT column: " << itsWeightColName << std::endl; - os << " autoweight: " << boolalpha << itsAutoWeight << std::endl; - } - - void MultiMSReader::showCounts (std::ostream& os) const - { - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - itsReaders[i]->showCounts (os); - } - } - } - - void MultiMSReader::showTimings (std::ostream& os, double duration) const - { - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - itsReaders[i]->showTimings (os, duration); - } - } - } - - void MultiMSReader::getUVW (const RefRows& rowNrs, - double time, DPBuffer& buf) - { - // All MSs have the same UVWs, so use first one. - itsReaders[itsFirst]->getUVW (rowNrs, time, buf); - } - - void MultiMSReader::getWeights (const RefRows& rowNrs, DPBuffer& buf) - { - Cube<float>& weights = buf.getWeights(); - // Resize if needed (probably when called for first time). - if (weights.empty()) { - weights.resize (itsNrCorr, itsNrChan, itsNrBl); - } - IPosition s(3, 0, 0, 0); - IPosition e(3, itsNrCorr-1, 0, itsNrBl-1); - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - uint nchan = itsReaders[i]->getInfo().nchan(); - e[1] = s[1] + nchan-1; - itsReaders[i]->getWeights (rowNrs, itsBuffers[i]); - weights(s,e) = itsBuffers[i].getWeights(); - } else { - e[1] = s[1] + itsFillNChan-1; - weights(s,e) = float(0); - } - s[1] = e[1] + 1; - } - } - - bool MultiMSReader::getFullResFlags (const RefRows& rowNrs, - DPBuffer& buf) - { - Cube<bool>& flags = buf.getFullResFlags(); - // Resize if needed (probably when called for first time). - if (flags.empty()) { - int norigchan = itsNrChan * itsFullResNChanAvg; - flags.resize (norigchan, itsFullResNTimeAvg, itsNrBl); - } - // Return false if no fullRes flags available. - if (!itsHasFullResFlags) { - flags = false; - return false; - } - // Flag everything if data rows are missing. - if (rowNrs.rowVector().empty()) { - flags = true; - return true; - } - // Get the flags from all MSs and combine them. - IPosition s(3, 0); - IPosition e(flags.shape() - 1); - for (uint i=0; i<itsReaders.size(); ++i) { - if (itsReaders[i]) { - itsReaders[i]->getFullResFlags (rowNrs, itsBuffers[i]); - e[0] = s[0] + itsBuffers[i].getFullResFlags().shape()[0] - 1; - flags(s,e) = itsBuffers[i].getFullResFlags(); - } else { - e[0] = s[0] + itsFillNChan - 1; - flags(s,e) = true; - } - s[0] = e[0] + 1; - } - return true; - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/NDPPP.cc b/CEP/DP3/DPPP/src/NDPPP.cc deleted file mode 100644 index 17a3ad8ba7f..00000000000 --- a/CEP/DP3/DPPP/src/NDPPP.cc +++ /dev/null @@ -1,106 +0,0 @@ -//# DPPP.cc: Program to execute steps like averaging and flagging on an MS -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DPRun.h> -#include <DPPP/Package__Version.h> -#include <Common/LofarLogger.h> -#include <Common/SystemUtil.h> -#include <Common/Exception.h> -#include <iostream> -#include <stdexcept> - -#include <casacore/casa/OS/File.h> - -using namespace LOFAR::DPPP; -using namespace LOFAR; - -// Define handler that tries to print a backtrace. -Exception::TerminateHandler t(Exception::terminate); - -void showUsage() { - std::cout<<"Usage: DPPP [-v] [parsetfile] [parsetkeys...]"<<std::endl; - std::cout<<" parsetfile: a file containing one parset key=value pair "<< - "per line"<<std::endl; - std::cout<<" parsetkeys: any number of parset key=value pairs, e.g. "<< - "msin=my.MS"<<std::endl<<std::endl; - std::cout<<"If both a file and command-line keys are specified, the "<< - "keys on the command line override those in the file."<<std::endl; - std::cout<<"If no arguments are specified, the program tries to read "<< - "\"NDPPP.parset\" or \"DPPP.parset\" as a default."<<std::endl; - std::cout<<"-v will show version info and exit."<<std::endl; - std::cout<<"Documentation is at http://www.lofar.org/wiki/doku.php?id="<< - "public:user_software:documentation:ndppp"<<std::endl; -} - -int main(int argc, char *argv[]) -{ - try - { - TEST_SHOW_VERSION (argc, argv, DPPP); - INIT_LOGGER("DPPP"); - // Get the name of the parset file. - if (argc>1 && ( - string(argv[1])=="--help" || - string(argv[1])=="-help" || string(argv[1])=="-h" || - string(argv[1])=="--usage" || string(argv[1])=="-usage")) { - showUsage(); - return 0; - } - - string parsetName; - if (argc > 1 && string(argv[1]).find('=') == string::npos) { - // First argument is parset name (except if it's a key-value pair) - parsetName = argv[1]; - } else if (argc==1) { - // No arguments given: try to load [N]DPPP.parset - if (casacore::File("NDPPP.parset").exists()) { - parsetName="NDPPP.parset"; - } else if (casacore::File("DPPP.parset").exists()) { - parsetName="DPPP.parset"; - } else { // No default file, show usage and exit - showUsage(); - return 0; - } - } - - // Execute the parset file. - DPRun::execute (parsetName, argc, argv); - } catch (LOFAR::APSException& err) { - // just send err.what() to the error stream - // this is just the error message, not a full backtrace - std::cerr << std::endl; - std::cerr << "ParameterSet Exception detected: "<< err.what() << std::endl; - return 1; - } catch (LOFAR::Exception& err) { - std::cerr << "LOFAR Exception detected: " << err << std::endl; - return 1; -#ifdef __clang__ - } catch (std::exception& err) { - std::cerr << std::endl; - std::cerr << "std exception detected: " << err.what() << std::endl; - return 1; -#endif - } - return 0; -} diff --git a/CEP/DP3/DPPP/src/OneApplyCal.cc b/CEP/DP3/DPPP/src/OneApplyCal.cc deleted file mode 100644 index 5c1a9d93e58..00000000000 --- a/CEP/DP3/DPPP/src/OneApplyCal.cc +++ /dev/null @@ -1,764 +0,0 @@ -//# OneApplyCal.cc: DPPP step class to apply a calibration correction to the data -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: OneApplyCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/OneApplyCal.h> -#include <DPPP/ApplyCal.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/MSReader.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <Common/LofarLogger.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/OS/File.h> -#include <iostream> -#include <limits> -#include <algorithm> -#include <iomanip> - -using namespace casacore; -using namespace LOFAR::BBS; - -/// Look at BBSKernel MeasurementExprLOFARUtil.cc and Apply.cc - -namespace LOFAR { - namespace DPPP { - - OneApplyCal::OneApplyCal (DPInput* input, - const ParameterSet& parset, - const string& prefix, - const string& defaultPrefix, - bool substep, - string predictDirection - ) - : itsInput (input), - itsName (prefix), - itsParmDBName ( - parset.isDefined(prefix+"parmdb") ? - parset.getString(prefix + "parmdb") : - parset.getString(defaultPrefix + "parmdb")), - itsUseH5Parm (itsParmDBName.find(".h5") != string::npos), - itsSolSetName ( - parset.isDefined(prefix + "solset") ? - parset.getString(prefix + "solset") : - parset.getString(defaultPrefix + "solset", "")), - itsSigmaMMSE ( - parset.isDefined(prefix + "MMSE.Sigma") ? - parset.getDouble(prefix + "MMSE.Sigma") : - parset.getDouble(defaultPrefix + "MMSE.Sigma", 0.)), - itsUpdateWeights ( - parset.isDefined(prefix + "updateweights") ? - parset.getBool (prefix + "updateweights") : - parset.getBool (defaultPrefix + "updateweights", false)), - itsCount (0), - itsTimeStep (0), - itsNCorr (0), - itsTimeInterval (-1), - itsLastTime (-1), - itsUseAP (false) - { - - ASSERT (!itsParmDBName.empty()); - - if (substep) { - itsInvert=false; - } else { - itsInvert = (parset.isDefined(prefix + "invert") ? - parset.getBool (prefix + "invert") : - parset.getBool (defaultPrefix + "invert", true)); - } - - if (itsUseH5Parm) { - itsTimeSlotsPerParmUpdate = 0; - string directionStr; - directionStr = (parset.isDefined(prefix + "direction") ? - parset.getString(prefix + "direction") : - parset.getString(defaultPrefix + "direction", - predictDirection)); - itsH5Parm = H5Parm(itsParmDBName, false, false, itsSolSetName); - - itsSolTabName = (parset.isDefined(prefix + "correction") ? - parset.getString(prefix + "correction") : - parset.getString(defaultPrefix + "correction")); - if(itsSolTabName == "fulljones") - { - itsSolTab = itsH5Parm.getSolTab("amplitude000"); - itsSolTab2 = itsH5Parm.getSolTab("phase000"); - itsSolTabName = "amplitude000, phase000"; // this is only so that show() shows these tables - itsCorrectType = FULLJONES; - } - else { - itsSolTab = itsH5Parm.getSolTab(itsSolTabName); - itsCorrectType = stringToCorrectType(itsSolTab.getType()); - } - if (itsCorrectType==PHASE && nPol("")==1) { - itsCorrectType = SCALARPHASE; - } - if (itsCorrectType==AMPLITUDE && nPol("")==1) { - itsCorrectType = SCALARAMPLITUDE; - } - itsDirection = 0; - if (directionStr=="") { - ASSERT(!itsSolTab.hasAxis("dir") || itsSolTab.getAxis("dir").size==1); - // If there is only one direction, silently assume it is the right one - } else if (itsSolTab.hasAxis("dir") && itsSolTab.getAxis("dir").size>1) { - itsDirection = itsSolTab.getDirIndex(directionStr); - } - } else { - itsTimeSlotsPerParmUpdate = - parset.isDefined(prefix + "timeslotsperparmupdate") ? - parset.getInt (prefix + "timeslotsperparmupdate") : - parset.getInt (defaultPrefix + "timeslotsperparmupdate", 500); - string correctTypeStr = toLower( - parset.isDefined(prefix + "correction") ? - parset.getString(prefix + "correction") : - parset.getString (defaultPrefix + "correction", "gain")); - itsCorrectType = stringToCorrectType(correctTypeStr); - } - - if (itsCorrectType==FULLJONES && itsUpdateWeights) { - ASSERTSTR (itsInvert, "Updating weights has not been implemented for invert=false and fulljones"); - } - } - - string OneApplyCal::correctTypeToString(CorrectType ct) { - if (ct==GAIN) return "gain"; - if (ct==FULLJONES) return "fulljones"; - if (ct==TEC) return "tec"; - if (ct==CLOCK) return "clock"; - if (ct==SCALARPHASE) return "scalarphase"; - if (ct==SCALARAMPLITUDE) return "scalaramplitude"; - if (ct==ROTATIONANGLE) return "rotationangle"; - if (ct==ROTATIONMEASURE) return "rotationmeasure"; - if (ct==PHASE) return "phase"; - if (ct==AMPLITUDE) return "amplitude"; - THROW(Exception, "Unknown correction type: "<<ct); - return ""; - } - - OneApplyCal::CorrectType OneApplyCal::stringToCorrectType(const string& ctStr) { - if (ctStr=="gain") return GAIN; - if (ctStr=="fulljones") return FULLJONES; - if (ctStr=="tec") return TEC; - if (ctStr=="clock") return CLOCK; - if (ctStr=="scalarphase" || ctStr=="commonscalarphase") return SCALARPHASE; - if (ctStr=="scalaramplitude" || ctStr=="commonscalaramplitude") return SCALARAMPLITUDE; - if (ctStr=="phase") return PHASE; - if (ctStr=="amplitude") return AMPLITUDE; - if (ctStr=="rotationangle" || ctStr=="commonrotationangle" || ctStr=="rotation") return ROTATIONANGLE; - if (ctStr=="rotationmeasure") return ROTATIONMEASURE; - THROW(Exception, "Unknown correction type: "<<ctStr); - return GAIN; - } - - OneApplyCal::~OneApplyCal() - {} - - void OneApplyCal::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - info().setWriteFlags(); - if (itsUpdateWeights) { - info().setWriteWeights(); - } - itsTimeInterval = infoIn.timeInterval(); - itsNCorr = infoIn.ncorr(); - - ASSERT(itsNCorr==4); - - if (itsUseH5Parm) { - itsTimeSlotsPerParmUpdate = info().ntime(); - } else { // Use ParmDB - itsParmDB.reset(new BBS::ParmFacade(itsParmDBName)); - } - - // Detect if full jones solutions are present - if (!itsUseH5Parm && - (itsCorrectType == GAIN || itsCorrectType==FULLJONES) && - (itsParmDB->getNames("Gain:0:1:*").size() + - itsParmDB->getDefNames("Gain:0:1:*").size() >0 )) { - itsCorrectType=FULLJONES; - } - - // Detect if solutions are saved as Real/Imag or Ampl/Phase - if (itsCorrectType == GAIN || itsCorrectType == FULLJONES ){ - if (itsUseH5Parm) { - // H5Parm uses amplitude / phase by definition - itsUseAP = true; - } else { - // Determine from values present in parmdb what to use - if (!itsParmDB->getNames("Gain:0:0:Real*").empty()) { - // Values with :Real present - itsUseAP = false; - } else if (!itsParmDB->getNames("Gain:0:0:Ampl*").empty() || - !itsParmDB->getNames("Phase:0:0:Ampl*").empty()) { - // Values with :Ampl present - itsUseAP = true; - } else if (!itsParmDB->getDefNames("Gain:0:0:Real*").empty()) { - // Defvalues with :Real present - itsUseAP = false; - } else if (!itsParmDB->getDefNames("Gain:0:0:Ampl*").empty() || - !itsParmDB->getDefNames("Gain:0:0:Phase*").empty()) { - // Defvalues with :Ampl present - itsUseAP = true; - } else { - THROW (Exception, "No gains found in parmdb "+itsParmDBName); - } - } - } - - if (itsCorrectType == GAIN) { - if (itsUseAP) { - itsParmExprs.push_back("Gain:0:0:Ampl"); - itsParmExprs.push_back("Gain:0:0:Phase"); - itsParmExprs.push_back("Gain:1:1:Ampl"); - itsParmExprs.push_back("Gain:1:1:Phase"); - } else { - itsParmExprs.push_back("Gain:0:0:Real"); - itsParmExprs.push_back("Gain:0:0:Imag"); - itsParmExprs.push_back("Gain:1:1:Real"); - itsParmExprs.push_back("Gain:1:1:Imag"); - } - } else if (itsCorrectType == FULLJONES) { - if (itsUseAP) { - itsParmExprs.push_back("Gain:0:0:Ampl"); - itsParmExprs.push_back("Gain:0:0:Phase"); - itsParmExprs.push_back("Gain:0:1:Ampl"); - itsParmExprs.push_back("Gain:0:1:Phase"); - itsParmExprs.push_back("Gain:1:0:Ampl"); - itsParmExprs.push_back("Gain:1:0:Phase"); - itsParmExprs.push_back("Gain:1:1:Ampl"); - itsParmExprs.push_back("Gain:1:1:Phase"); - } else { - itsParmExprs.push_back("Gain:0:0:Real"); - itsParmExprs.push_back("Gain:0:0:Imag"); - itsParmExprs.push_back("Gain:0:1:Real"); - itsParmExprs.push_back("Gain:0:1:Imag"); - itsParmExprs.push_back("Gain:1:0:Real"); - itsParmExprs.push_back("Gain:1:0:Imag"); - itsParmExprs.push_back("Gain:1:1:Real"); - itsParmExprs.push_back("Gain:1:1:Imag"); - } - } else if (itsCorrectType == TEC) { - if (nPol("TEC")==1) { - itsParmExprs.push_back("TEC"); - } - else { - itsParmExprs.push_back("TEC:0"); - itsParmExprs.push_back("TEC:1"); - } - } else if (itsCorrectType == CLOCK) { - if (nPol("Clock")==1) { - itsParmExprs.push_back("Clock"); - } - else { - itsParmExprs.push_back("Clock:0"); - itsParmExprs.push_back("Clock:1"); - } - } else if (itsCorrectType == ROTATIONANGLE) { - itsParmExprs.push_back("{Common,}RotationAngle"); - } else if (itsCorrectType == SCALARPHASE) { - itsParmExprs.push_back("{Common,}ScalarPhase"); - } else if (itsCorrectType == ROTATIONMEASURE) { - itsParmExprs.push_back("RotationMeasure"); - } else if (itsCorrectType == SCALARAMPLITUDE) { - itsParmExprs.push_back("{Common,}ScalarAmplitude"); - } else if (itsCorrectType == PHASE) { - ASSERT(itsUseH5Parm); - itsParmExprs.push_back("Phase:0"); - itsParmExprs.push_back("Phase:1"); - } else if (itsCorrectType == AMPLITUDE) { - ASSERT(itsUseH5Parm); - itsParmExprs.push_back("Amplitude:0"); - itsParmExprs.push_back("Amplitude:1"); - } else { - THROW (Exception, "Correction type "<< - correctTypeToString(itsCorrectType)<<" is unknown"); - } - - initDataArrays(); - itsFlagCounter.init(getInfo()); - - // Check that channels are evenly spaced - if (info().nchan()>1) { - Vector<Double> upFreq = info().chanFreqs()( - Slicer(IPosition(1,1), - IPosition(1,info().nchan()-1))); - Vector<Double> lowFreq = info().chanFreqs()( - Slicer(IPosition(1,0), - IPosition(1,info().nchan()-1))); - Double freqstep0=upFreq(0)-lowFreq(0); - // Compare up to 1kHz accuracy - bool regularChannels=allNearAbs(upFreq-lowFreq, freqstep0, 1.e3) && - allNearAbs(info().chanWidths(), - info().chanWidths()(0), 1.e3); - - if (!itsUseH5Parm) { - ASSERTSTR(regularChannels, - "ApplyCal with parmdb requires evenly spaced channels."); - } - } - } - - void OneApplyCal::show (std::ostream& os) const - { - os << "ApplyCal " << itsName << std::endl; - if (itsUseH5Parm) { - os << " H5Parm: " << itsParmDBName << endl; - os << " SolSet: " << itsH5Parm.getSolSetName() << endl; - os << " SolTab: " << itsSolTabName << endl; - } else { - os << " parmdb: " << itsParmDBName << endl; - } - os << " correction: " << correctTypeToString(itsCorrectType) << endl; - if (itsCorrectType==GAIN || itsCorrectType==FULLJONES) { - os << " Ampl/Phase: " << boolalpha << itsUseAP << endl; - } - os << " update weights: " << boolalpha << itsUpdateWeights << endl; - os << " invert: " << boolalpha << itsInvert <<endl; - if (itsInvert) { - os << " sigmaMMSE: " << itsSigmaMMSE << endl; - } - os << " timeSlotsPerParmUpdate: " << itsTimeSlotsPerParmUpdate <<endl; - } - - void OneApplyCal::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " OneApplyCal " << itsName << endl; - } - - bool OneApplyCal::process (const DPBuffer& bufin) - { - itsTimer.start(); - itsBuffer.copy (bufin); - - if (bufin.getTime() > itsLastTime) { - updateParms(bufin.getTime()); - itsTimeStep=0; - } - else { - itsTimeStep++; - } - - // Loop through all baselines in the buffer. - size_t nbl = itsBuffer.getData().shape()[2]; - - Complex* data = itsBuffer.getData().data(); - - itsInput->fetchWeights (bufin, itsBuffer, itsTimer); - float* weight = itsBuffer.getWeights().data(); - - bool* flag = itsBuffer.getFlags().data(); - - size_t nchan = itsBuffer.getData().shape()[1]; - -#pragma omp parallel for - for (size_t bl=0; bl<nbl; ++bl) { - for (size_t chan=0;chan<nchan;chan++) { - uint timeFreqOffset=(itsTimeStep*info().nchan())+chan; - uint antA = info().getAnt1()[bl]; - uint antB = info().getAnt2()[bl]; - if (itsParms.shape()[0]>2) { - ApplyCal::applyFull( &itsParms(0, antA, timeFreqOffset), - &itsParms(0, antB, timeFreqOffset), - &data[bl * itsNCorr * nchan + chan * itsNCorr ], - &weight[bl * itsNCorr * nchan + chan * itsNCorr ], - &flag[ bl * itsNCorr * nchan + chan * itsNCorr ], - bl, chan, itsUpdateWeights, itsFlagCounter); - } - else { - ApplyCal::applyDiag( &itsParms(0, antA, timeFreqOffset), - &itsParms(0, antB, timeFreqOffset), - &data[bl * itsNCorr * nchan + chan * itsNCorr ], - &weight[bl * itsNCorr * nchan + chan * itsNCorr ], - &flag[ bl * itsNCorr * nchan + chan * itsNCorr ], - bl, chan, itsUpdateWeights, itsFlagCounter); - } - } - } - - itsTimer.stop(); - getNextStep()->process(itsBuffer); - - itsCount++; - return true; - } - - void OneApplyCal::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - - void OneApplyCal::applyFlags(vector<double>& values, - const vector<double>& weights) { - ASSERT(values.size() == weights.size()); - vector<double>::iterator values_it = values.begin(); - vector<double>::const_iterator weights_it = weights.begin(); - - for (; values_it != values.end(); ++values_it) { - if (*weights_it == 0.) { - *values_it = std::numeric_limits<float>::quiet_NaN(); - } - weights_it++; - } - } - - void OneApplyCal::updateParms (const double bufStartTime) - { - uint numAnts = info().antennaNames().size(); - - // itsParms contains the parameters to a grid, first for all parameters - // (e.g. Gain:0:0 and Gain:1:1), next all antennas, next over freq * time - // as returned by ParmDB - vector<vector<vector<double> > > parmvalues; - parmvalues.resize(itsParmExprs.size()); - for (size_t i=0;i<parmvalues.size();++i) { - parmvalues[i].resize(numAnts); - } - - uint numFreqs (info().chanFreqs().size()); - double freqInterval (info().chanWidths()[0]); - if (numFreqs>1) { // Handle data with evenly spaced gaps between channels - freqInterval = info().chanFreqs()[1]-info().chanFreqs()[0]; - } - double minFreq (info().chanFreqs()[0]-0.5*freqInterval); - double maxFreq (info().chanFreqs()[numFreqs-1]+0.5*freqInterval); - itsLastTime = bufStartTime - 0.5*itsTimeInterval + - itsTimeSlotsPerParmUpdate * itsTimeInterval; - uint numTimes = itsTimeSlotsPerParmUpdate; - - double lastMSTime = info().startTime() + info().ntime() * itsTimeInterval; - if (itsLastTime > lastMSTime && !nearAbs(itsLastTime, lastMSTime, 1.e-3)) { - itsLastTime = lastMSTime; - numTimes = info().ntime() % itsTimeSlotsPerParmUpdate; - } - - map<string, vector<double> > parmMap; - map<string, vector<double> >::iterator parmIt; - - uint tfDomainSize=numTimes*numFreqs; - - // Fill parmvalues here, get raw data from H5Parm or ParmDB - if (itsUseH5Parm) { -#pragma omp critical(updateH5ParmValues) -{ - // TODO: understand polarization etc. - // ASSERT(itsParmExprs.size()==1 || itsParmExprs.size()==2); - - // Figure out whether time or frequency is first axis - bool freqvariesfastest = true; - if (itsSolTab.hasAxis("freq") && itsSolTab.hasAxis("time") && - itsSolTab.getAxisIndex("freq") < itsSolTab.getAxisIndex("time")) { - freqvariesfastest = false; - } - ASSERT(freqvariesfastest); - - vector<double> times(info().ntime()); - for (uint t=0; t<times.size(); ++t) { - // time centroids - times[t] = info().startTime() + (t+0.5) * info().timeInterval(); - } - vector<double> freqs(info().chanFreqs().size()); - for (uint ch=0; ch<info().chanFreqs().size(); ++ch) { - freqs[ch] = info().chanFreqs()[ch]; - } - - vector<double> weights; - for (uint ant = 0; ant < numAnts; ++ant) { - if(itsCorrectType == FULLJONES) - { - for (uint pol=0; pol<4; ++pol) { - // Place amplitude in even and phase in odd elements - parmvalues[pol*2][ant] = itsSolTab.getValuesOrWeights("val", - info().antennaNames()[ant], - times, freqs, - pol, itsDirection); - weights = itsSolTab.getValuesOrWeights("weight", - info().antennaNames()[ant], times, freqs, pol, itsDirection); - applyFlags(parmvalues[pol*2][ant], weights); - parmvalues[pol*2+1][ant] = itsSolTab2.getValuesOrWeights("val", - info().antennaNames()[ant], - times, freqs, - pol, itsDirection); - weights = itsSolTab2.getValuesOrWeights("weight", - info().antennaNames()[ant], times, freqs, pol, itsDirection); - applyFlags(parmvalues[pol*2+1][ant], weights); - } - } - else { - for (uint pol=0; pol<itsParmExprs.size(); ++pol) { - parmvalues[pol][ant] = itsSolTab.getValuesOrWeights("val", - info().antennaNames()[ant], - times, freqs, - pol, itsDirection); - weights = itsSolTab.getValuesOrWeights("weight", - info().antennaNames()[ant], times, freqs, pol, itsDirection); - applyFlags(parmvalues[pol][ant], weights); - } - } - } -} // End pragma omp critical - } else { // Use ParmDB - for (uint parmExprNum = 0; parmExprNum<itsParmExprs.size();++parmExprNum) { - // parmMap contains parameter values for all antennas - parmMap = itsParmDB->getValuesMap( itsParmExprs[parmExprNum] + "{:phase_center,}*", - minFreq, maxFreq, freqInterval, - bufStartTime-0.5*itsTimeInterval, itsLastTime, - itsTimeInterval, true); - - string parmExpr = itsParmExprs[parmExprNum]; - - // Resolve {Common,}Bla to CommonBla or Bla - if (!parmMap.empty() && - parmExpr.find("{Common,}") != string::npos) { - // Take the name of the first parm, e.g. Bla:CS001, and remove the antenna name - uint colonPos = (parmMap.begin()->first).find(":"); - parmExpr = (parmMap.begin()->first).substr(0, colonPos); - } - - string name_postfix = ""; - // Remove :phase_center postfix - if (!parmMap.empty()) { - // Take the name of the first parm, e.g. Bla:CS001, and remove the antenna name - // If necessary, append :phase_center - if ((parmMap.begin()->first).find(":phase_center") != string::npos) { - name_postfix = ":phase_center"; - } - } - - for (uint ant = 0; ant < numAnts; ++ant) { - parmIt = parmMap.find(parmExpr + ":" + string(info().antennaNames()[ant]) - + name_postfix); - - if (parmIt != parmMap.end()) { - parmvalues[parmExprNum][ant].swap(parmIt->second); - ASSERT(parmvalues[parmExprNum][ant].size()==tfDomainSize); - } else {// No value found, try default - Array<double> defValues; - double defValue; - - if (itsParmDB->getDefValues(parmExpr + ":" + - string(info().antennaNames()[ant]) + name_postfix).size()==1) { // Default for antenna - itsParmDB->getDefValues(string(itsParmExprs[parmExprNum]) + ":" + - string(info().antennaNames()[ant]) + name_postfix).get(0,defValues); - ASSERT(defValues.size()==1); - defValue=defValues.data()[0]; - } - else if (itsParmDB->getDefValues(parmExpr).size() == 1) { //Default value - itsParmDB->getDefValues(parmExpr).get(0,defValues); - ASSERT(defValues.size()==1); - defValue=defValues.data()[0]; - } else if (parmExpr.substr(0,5)=="Gain:") { - defValue=0.; - } - else { - THROW (Exception, "No parameter value found for "+ - parmExpr + ":" + string(info().antennaNames()[ant]) + name_postfix); - } - - parmvalues[parmExprNum][ant].resize(tfDomainSize); - for (uint tf=0; tf<tfDomainSize;++tf) { - parmvalues[parmExprNum][ant][tf]=defValue; - } - } - } - } - } - - ASSERT(parmvalues[0][0].size() <= tfDomainSize); // Catches multiple matches - - double freq; - - // Make parameters complex - for (uint tf=0;tf<tfDomainSize;++tf) { - for (uint ant=0;ant<numAnts;++ant) { - - freq=info().chanFreqs()[tf % numFreqs]; - - if (itsCorrectType==GAIN) { - if (itsUseAP) { // Data as Amplitude / Phase - itsParms(0, ant, tf) = polar(parmvalues[0][ant][tf], - parmvalues[1][ant][tf]); - itsParms(1, ant, tf) = polar(parmvalues[2][ant][tf], - parmvalues[3][ant][tf]); - } else { // Data as Real / Imaginary - itsParms(0, ant, tf) = DComplex(parmvalues[0][ant][tf], - parmvalues[1][ant][tf]); - itsParms(1, ant, tf) = DComplex(parmvalues[2][ant][tf], - parmvalues[3][ant][tf]); - } - } - else if (itsCorrectType==FULLJONES) { - if (itsUseAP) { // Data as Amplitude / Phase - itsParms(0, ant, tf) = polar(parmvalues[0][ant][tf], - parmvalues[1][ant][tf]); - itsParms(1, ant, tf) = polar(parmvalues[2][ant][tf], - parmvalues[3][ant][tf]); - itsParms(2, ant, tf) = polar(parmvalues[4][ant][tf], - parmvalues[5][ant][tf]); - itsParms(3, ant, tf) = polar(parmvalues[6][ant][tf], - parmvalues[7][ant][tf]); - } else { // Data as Real / Imaginary - itsParms(0, ant, tf) = DComplex(parmvalues[0][ant][tf], - parmvalues[1][ant][tf]); - itsParms(1, ant, tf) = DComplex(parmvalues[2][ant][tf], - parmvalues[3][ant][tf]); - itsParms(2, ant, tf) = DComplex(parmvalues[4][ant][tf], - parmvalues[5][ant][tf]); - itsParms(3, ant, tf) = DComplex(parmvalues[6][ant][tf], - parmvalues[7][ant][tf]); - } - } - else if (itsCorrectType==TEC) { - itsParms(0, ant, tf)=polar(1., - parmvalues[0][ant][tf] * -8.44797245e9 / freq); - if (itsParmExprs.size() == 1) { // No TEC:0, only TEC: - itsParms(1, ant, tf)=polar(1., - parmvalues[0][ant][tf] * -8.44797245e9 / freq); - } - else { // TEC:0 and TEC:1 - itsParms(1, ant, tf)=polar(1., - parmvalues[1][ant][tf] * -8.44797245e9 / freq); - } - } - else if (itsCorrectType==CLOCK) { - itsParms(0, ant, tf)=polar(1., - parmvalues[0][ant][tf] * freq * casacore::C::_2pi); - if (itsParmExprs.size() == 1) { // No Clock:0, only Clock: - itsParms(1, ant, tf)=polar(1., - parmvalues[0][ant][tf] * freq * casacore::C::_2pi); - } - else { // Clock:0 and Clock:1 - itsParms(1, ant, tf)=polar(1., - parmvalues[1][ant][tf] * freq * casacore::C::_2pi); - } - } - else if (itsCorrectType==ROTATIONANGLE) { - double phi=parmvalues[0][ant][tf]; - if (itsInvert) { - phi = -phi; - } - double sinv=sin(phi); - double cosv=cos(phi); - itsParms(0, ant, tf) = cosv; - itsParms(1, ant, tf) = -sinv; - itsParms(2, ant, tf) = sinv; - itsParms(3, ant, tf) = cosv; - } - else if (itsCorrectType==ROTATIONMEASURE) { - double lambda2 = casacore::C::c / freq; - lambda2 *= lambda2; - double chi = parmvalues[0][ant][tf] * lambda2; - if (itsInvert) { - chi = -chi; - } - double sinv = sin(chi); - double cosv = cos(chi); - itsParms(0, ant, tf) = cosv; - itsParms(1, ant, tf) = -sinv; - itsParms(2, ant, tf) = sinv; - itsParms(3, ant, tf) = cosv; - } - else if (itsCorrectType==PHASE || itsCorrectType==SCALARPHASE) { - itsParms(0, ant, tf) = polar(1., parmvalues[0][ant][tf]); - if (itsCorrectType==SCALARPHASE) { // Same value for x and y - itsParms(1, ant, tf) = polar(1., parmvalues[0][ant][tf]); - } else { // Different value for x and y - itsParms(1, ant, tf) = polar(1., parmvalues[1][ant][tf]); - } - } - else if (itsCorrectType==AMPLITUDE || itsCorrectType==SCALARAMPLITUDE) { - itsParms(0, ant, tf) = parmvalues[0][ant][tf]; - if (itsCorrectType==SCALARAMPLITUDE) { // Same value for x and y - itsParms(1, ant, tf) = parmvalues[0][ant][tf]; - } else { // Different value for x and y - itsParms(1, ant, tf) = parmvalues[1][ant][tf]; - } - } - - // Invert - if (itsInvert) { - if (itsParms.shape()[0]==2) { - itsParms(0, ant, tf) = 1./itsParms(0, ant, tf); - itsParms(1, ant, tf) = 1./itsParms(1, ant, tf); - } else if (itsCorrectType==FULLJONES) { - ApplyCal::invert(&itsParms(0, ant, tf),itsSigmaMMSE); - } else { - ASSERT (itsCorrectType==ROTATIONMEASURE || itsCorrectType==ROTATIONANGLE); - // rotationmeasure and commonrotationangle are already inverted above - } - } - } - } - } - - uint OneApplyCal::nPol(const string& parmName) { - if (itsUseH5Parm) { - if (!itsSolTab.hasAxis("pol")) { - return 1; - } else { - return itsSolTab.getAxis("pol").size; - } - } else { // Use ParmDB - if (itsParmDB->getNames(parmName+":0:*").empty() && - itsParmDB->getDefNames(parmName+":0:*").empty() ) { - return 1; - } else { - return 2; - } - } - } - - void OneApplyCal::initDataArrays() { - uint numAnts=info().antennaNames().size(); - uint tfDomainSize=itsTimeSlotsPerParmUpdate*info().chanFreqs().size(); - - uint numParms; - if (itsCorrectType==FULLJONES || - itsCorrectType==ROTATIONANGLE || - itsCorrectType==ROTATIONMEASURE) { - numParms = 4; - } - else { - numParms = 2; - } - - itsParms.resize(numParms, numAnts, tfDomainSize); - } - - void OneApplyCal::showCounts (std::ostream& os) const - { - os << endl << "Flags set by OneApplyCal " << itsName; - os << endl << "=======================" << endl; - itsFlagCounter.showBaseline (os, itsCount); - itsFlagCounter.showChannel (os, itsCount); - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/Patch.cc b/CEP/DP3/DPPP/src/Patch.cc deleted file mode 100644 index 82bb727be48..00000000000 --- a/CEP/DP3/DPPP/src/Patch.cc +++ /dev/null @@ -1,59 +0,0 @@ -//# Patch.cc: A set of sources for which direction dependent effects are assumed to be equal. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/Patch.h> -#include <DPPP/ModelComponentVisitor.h> -#include <Common/lofar_math.h> - -namespace LOFAR -{ -namespace DPPP -{ - -void Patch::computePosition() -{ - itsPosition = Position(); - - if(!itsComponents.empty()) - { - double x = 0.0, y = 0.0, z = 0.0; - for(const_iterator it = begin(), it_end = end(); it != it_end; ++it) - { - const Position &position = (*it)->position(); - double cosDec = cos(position[1]); - x += cos(position[0]) * cosDec; - y += sin(position[0]) * cosDec; - z += sin(position[1]); - } - - x /= itsComponents.size(); - y /= itsComponents.size(); - z /= itsComponents.size(); - - itsPosition[0] = atan2(y, x); - itsPosition[1] = asin(z); - } -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/PhaseFitter.cc b/CEP/DP3/DPPP/src/PhaseFitter.cc deleted file mode 100644 index c883ec004a6..00000000000 --- a/CEP/DP3/DPPP/src/PhaseFitter.cc +++ /dev/null @@ -1,232 +0,0 @@ -//# phasefitter.cc: Class to perform phase fitting (TEC), allowing phase wraps -//# Copyright (C) 2016 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: phasefitter.cc 21598 2012-07-16 08:07:34Z offringa $ -//# -//# @author Andre Offringa - -#ifdef AOPROJECT -#include "PhaseFitter.h" -#else -#include <lofar_config.h> -#include <DPPP/PhaseFitter.h> -#endif - -#include <limits> - -double PhaseFitter::TEC2ModelCost(double alpha, double beta) const -{ - double costVal = 0.0, weightSum = 0.0; - for(size_t i=0; i!=Size(); ++i) { - double estphase = TEC2ModelFuncWrapped(_frequencies[i], alpha, beta); - double dCost = fmod(std::fabs(estphase - _phases[i]), 2.0*M_PI); - if(dCost > M_PI) - dCost = 2.0*M_PI - dCost; - dCost *= _weights[i]; - costVal += dCost; - weightSum += _weights[i]; - } - if(weightSum == 0.0) - return 0.0; - else - return costVal / weightSum; -} - -double PhaseFitter::fitTEC2ModelBeta(double alpha, double betaEstimate) const { - double weightSum = 0.0; - for(size_t iter=0; iter!=3; ++iter) { - double sum = 0.0; - for(size_t i=0; i!=Size(); ++i) { - double p = _phases[i], e = TEC2ModelFunc(_frequencies[i], alpha, betaEstimate); - double dist = fmod(p - e, 2.0*M_PI); - if(dist < -M_PI) - dist += 2.0*M_PI; - else if(dist > M_PI) - dist -= 2.0*M_PI; - sum += dist * _weights[i]; - weightSum += _weights[i]; - } - if(weightSum != 0.0) - betaEstimate = betaEstimate + sum / weightSum; - } - return fmod(betaEstimate, 2.0*M_PI); -} - -void PhaseFitter::bruteForceSearchTEC2Model(double& lowerAlpha, double& upperAlpha, double& beta) const -{ - double minCost = std::numeric_limits<double>::max(); - double alphaOversampling = 256; - //size_t betaOversampling = 16; - double dAlpha = upperAlpha - lowerAlpha; - int alphaIndex = 0; - for(int i=0; i!=alphaOversampling; ++i) { - // make r between [0, 1] - double r = double(i)/alphaOversampling; - double alpha = lowerAlpha + r*dAlpha; - double curBeta = fitTEC2ModelBeta(alpha, beta); - double costVal = TEC2ModelCost(alpha, curBeta); - if(costVal < minCost) { - beta = curBeta; - minCost = costVal; - alphaIndex = i; - } - } - double newLowerAlpha = double(alphaIndex-1)/alphaOversampling*dAlpha + lowerAlpha; - upperAlpha = double(alphaIndex+1)/alphaOversampling*dAlpha + lowerAlpha; - lowerAlpha = newLowerAlpha; -} - -double PhaseFitter::ternarySearchTEC2ModelAlpha(double startAlpha, double endAlpha, double& beta) const -{ - size_t iter = 0; - double dCost, lAlpha, rAlpha; - do { - lAlpha = startAlpha + (endAlpha - startAlpha) * (1.0/3.0); - rAlpha = startAlpha + (endAlpha - startAlpha) * (2.0/3.0); - double lBeta = fitTEC2ModelBeta(lAlpha, beta); - double rBeta = fitTEC2ModelBeta(rAlpha, beta); - double lCost = TEC2ModelCost(lAlpha, lBeta); - double rCost = TEC2ModelCost(rAlpha, rBeta); - if(lCost < rCost) { - endAlpha = rAlpha; - beta = lBeta; - } else { - startAlpha = lAlpha; - beta = rBeta; - } - dCost = std::fabs(lCost - rCost); - ++iter; - } while(dCost > _fittingAccuracy && iter < 100); - double finalAlpha = (lAlpha + rAlpha) * 0.5; - beta = fitTEC2ModelBeta(finalAlpha, beta); - return finalAlpha; -} - -void PhaseFitter::fillDataWithTEC2Model(double alpha, double beta) -{ - for(size_t ch=0; ch!=Size(); ++ch) - _phases[ch] = TEC2ModelFunc(_frequencies[ch], alpha, beta); -} - -void PhaseFitter::fillDataWithTEC1Model(double alpha) -{ - for(size_t ch=0; ch!=Size(); ++ch) - _phases[ch] = TEC1ModelFuncWrapped(_frequencies[ch], alpha); -} - -void PhaseFitter::FitTEC2ModelParameters(double& alpha, double& beta) const -{ - double lowerAlpha = -40000.0e6, upperAlpha = 40000.0e6; - bruteForceSearchTEC2Model(lowerAlpha, upperAlpha, beta); - alpha = (lowerAlpha + upperAlpha) * 0.5; - //beta = fitBeta(alpha, beta); - alpha = ternarySearchTEC2ModelAlpha(lowerAlpha, upperAlpha, beta); -} - -double PhaseFitter::FitDataToTEC2Model(double& alpha, double& beta) -{ - FitTEC2ModelParameters(alpha, beta); - double cost = TEC2ModelCost(alpha, beta); - fillDataWithTEC2Model(alpha, beta); - return cost; -} - -double PhaseFitter::FitDataToTEC1Model(double& alpha) -{ - FitTEC1ModelParameters(alpha); - double cost = TEC1ModelCost(alpha); - fillDataWithTEC1Model(alpha); - return cost; -} - -void PhaseFitter::FitTEC1ModelParameters(double& alpha) const -{ - double lowerAlpha = -40000.0e6, upperAlpha = 40000.0e6; - bruteForceSearchTEC1Model(lowerAlpha, upperAlpha); - alpha = ternarySearchTEC1ModelAlpha(lowerAlpha, upperAlpha); -} - -#include <iostream> -void PhaseFitter::bruteForceSearchTEC1Model(double& lowerAlpha, double& upperAlpha) const -{ - double minCost = std::numeric_limits<double>::max(); - double alphaOversampling = 256; - double dAlpha = upperAlpha - lowerAlpha; - int alphaIndex = 0; - for(int i=0; i!=alphaOversampling; ++i) { - // make r between [0, 1] - double r = double(i)/alphaOversampling; - double alpha = lowerAlpha + r*dAlpha; - // We have to have some freedom in the fit to make sure - // we do rule out an area with an unwripping that is correct - // Hence we use the two-parameter model and allow beta to be fitted. - // The ternary search will fix alpha to accomodate a zero beta. - double curBeta = fitTEC2ModelBeta(alpha, 0.0); - double costVal = TEC2ModelCost(alpha, curBeta); - if(costVal < minCost) { - minCost = costVal; - alphaIndex = i; - } - } - double newLowerAlpha = double(alphaIndex-1)/alphaOversampling*dAlpha + lowerAlpha; - upperAlpha = double(alphaIndex+1)/alphaOversampling*dAlpha + lowerAlpha; - lowerAlpha = newLowerAlpha; - //std::cout << "alpha in " << lowerAlpha << "-" << upperAlpha << '\n'; -} - -double PhaseFitter::TEC1ModelCost(double alpha) const -{ - double costVal = 0.0, weightSum = 0.0; - for(size_t i=0; i!=Size(); ++i) { - double estphase = TEC1ModelFuncWrapped(_frequencies[i], alpha); - double dCost = fmod(std::fabs(estphase - _phases[i]), 2.0*M_PI); - if(dCost > M_PI) - dCost = 2.0*M_PI - dCost; - dCost *= _weights[i]; - costVal += dCost; - weightSum += _weights[i]; - } - if(weightSum == 0.0) - return 0.0; - else - return costVal / weightSum; -} - -double PhaseFitter::ternarySearchTEC1ModelAlpha(double startAlpha, double endAlpha) const -{ - size_t iter = 0; - double dCost, lAlpha, rAlpha; - do { - lAlpha = startAlpha + (endAlpha - startAlpha) * (1.0/3.0); - rAlpha = startAlpha + (endAlpha - startAlpha) * (2.0/3.0); - double lCost = TEC1ModelCost(lAlpha); - double rCost = TEC1ModelCost(rAlpha); - if(lCost < rCost) { - endAlpha = rAlpha; - } else { - startAlpha = lAlpha; - } - dCost = std::fabs(lCost - rCost); - ++iter; - //std::cout << iter << '\t' << startAlpha << '\t' << endAlpha << '\n'; - } while(dCost > _fittingAccuracy && iter < 100); - double finalAlpha = (lAlpha + rAlpha) * 0.5; - return finalAlpha; -} - diff --git a/CEP/DP3/DPPP/src/PhaseShift.cc b/CEP/DP3/DPPP/src/PhaseShift.cc deleted file mode 100644 index c465a33bc65..00000000000 --- a/CEP/DP3/DPPP/src/PhaseShift.cc +++ /dev/null @@ -1,233 +0,0 @@ -//# PhaseShift.cc: DPPP step class to shift the data to another phase center -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/PhaseShift.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <Common/StreamUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/MatrixMath.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/casa/Quanta/MVAngle.h> -#include <casacore/casa/BasicSL/Constants.h> -#include <iostream> -#include <iomanip> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - PhaseShift::PhaseShift (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsCenter (parset.getStringVector(prefix+"phasecenter")) - {} - - PhaseShift::PhaseShift (DPInput* input, - const ParameterSet& parset, - const string& prefix, - const vector<string>& defVal) - : itsInput (input), - itsName (prefix), - itsCenter (parset.getStringVector(prefix+"phasecenter", defVal)) - {} - - PhaseShift::~PhaseShift() - {} - - void PhaseShift::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - info().setMetaChanged(); - // Default phase center is the original one. - MDirection newDir(itsInput->getInfo().phaseCenter()); - //// bool original = true; - bool original = false; - if (! itsCenter.empty()) { - newDir = handleCenter(); - original = false; - } - double newRa = newDir.getValue().get()[0]; - double newDec = newDir.getValue().get()[1]; - double oldRa = infoIn.phaseCenter().getValue().get()[0]; - double oldDec = infoIn.phaseCenter().getValue().get()[1]; - Matrix<double> oldUVW(3,3); - Matrix<double> newUVW(3,3); - fillTransMatrix (oldUVW, oldRa, oldDec); - fillTransMatrix (newUVW, newRa, newDec); - - itsMat1.reference (product(transpose(newUVW), oldUVW)); - Matrix<double> wold(oldUVW(IPosition(2,0,2),IPosition(2,2,2))); - Matrix<double> wnew(newUVW(IPosition(2,0,2),IPosition(2,2,2))); - Matrix<double> tt= product(transpose(Matrix<double>(wold-wnew)), oldUVW); - itsXYZ[0] = tt(0,0); - itsXYZ[1] = tt(0,1); - itsXYZ[2] = tt(0,2); - /// cout << itsXYZ[0]<<' '<<itsXYZ[1]<<' '<<itsXYZ[2]<<" ps"<<endl; - - info().setPhaseCenter (newDir, original); - // Calculate 2*pi*freq/C to get correct phase term (in wavelengths). - const Vector<double>& freq = infoIn.chanFreqs(); - itsFreqC.reserve (freq.size()); - for (uint i=0; i<freq.size(); ++i) { - itsFreqC.push_back (2. * C::pi * freq[i] / C::c); - } - itsPhasors.resize (infoIn.nchan(), infoIn.nbaselines()); - } - - void PhaseShift::show (std::ostream& os) const - { - os << "PhaseShift " << itsName << std::endl; - os << " phasecenter: " << itsCenter << std::endl; - } - - void PhaseShift::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " PhaseShift " << itsName << endl; - } - - bool PhaseShift::process (const DPBuffer& buf) - { - itsTimer.start(); - ///itsBuf.referenceFilled (buf); - itsBuf.copy (buf); - itsInput->fetchUVW (buf, itsBuf, itsTimer); - int ncorr = itsBuf.getData().shape()[0]; - int nchan = itsBuf.getData().shape()[1]; - int nbl = itsBuf.getData().shape()[2]; - DBGASSERT (itsPhasors.nrow() == uint(nchan) && - itsPhasors.ncolumn() == uint(nbl)); - const double* mat1 = itsMat1.data(); - //# If ever in the future a time dependent phase center is used, - //# the machine must be reset for each new time, thus each new call - //# to process. -#pragma omp parallel for - for (int i=0; i<nbl; ++i) { - Complex* __restrict__ data = itsBuf.getData().data() + i*nchan*ncorr; - double* __restrict__ uvw = itsBuf.getUVW().data() + i*3; - DComplex* __restrict__ phasors = itsPhasors.data() + i*nchan; - double u = uvw[0]*mat1[0] + uvw[1]*mat1[3] + uvw[2]*mat1[6]; - double v = uvw[0]*mat1[1] + uvw[1]*mat1[4] + uvw[2]*mat1[7]; - double w = uvw[0]*mat1[2] + uvw[1]*mat1[5] + uvw[2]*mat1[8]; - double phase = itsXYZ[0]*uvw[0] + itsXYZ[1]*uvw[1] + itsXYZ[2]*uvw[2]; - for (int j=0; j<nchan; ++j) { - // Shift the phase of the data of this baseline. - // Converting the phase term to wavelengths (and applying 2*pi) - // u_wvl = u_m / wvl = u_m * freq / c - // has been done once in the beginning (in updateInfo). - double phasewvl = phase * itsFreqC[j]; - DComplex phasor(cos(phasewvl), sin(phasewvl)); - *phasors++ = phasor; - for (int k=0; k<ncorr; ++k) { - *data = DComplex(*data) * phasor; - data++; - } - } - uvw[0] = u; - uvw[1] = v; - uvw[2] = w; - uvw += 3; - } //# end omp parallel for - itsTimer.stop(); - getNextStep()->process (itsBuf); - return true; - } - - void PhaseShift::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - - MDirection PhaseShift::handleCenter() - { - // A case-insensitive name can be given for a moving source (e.g. SUN) - // or a known source (e.g. CygA). - if (itsCenter.size() == 1) { - return MDirection::makeMDirection (itsCenter[0]); - } - // The phase center must be given in J2000 as two values (ra,dec). - // In the future time dependent frames can be done as in UVWFlagger. - ASSERTSTR (itsCenter.size() == 2, - "2 values must be given in PhaseShift phasecenter"); - ///ASSERTSTR (itsCenter.size() < 4, - ///"Up to 3 values can be given in PhaseShift phasecenter"); - MDirection phaseCenter; - if (itsCenter.size() == 1) { - string str = toUpper(itsCenter[0]); - MDirection::Types tp; - ASSERTSTR (MDirection::getType(tp, str), - str << " is an invalid source type" - " in PhaseShift phasecenter"); - return MDirection(tp); - } - Quantity q0, q1; - ASSERTSTR (MVAngle::read (q0, itsCenter[0]), - itsCenter[0] << " is an invalid RA or longitude" - " in PhaseShift phasecenter"); - ASSERTSTR (MVAngle::read (q1, itsCenter[1]), - itsCenter[1] << " is an invalid DEC or latitude" - " in PhaseShift phasecenter"); - MDirection::Types type = MDirection::J2000; - if (itsCenter.size() > 2) { - string str = toUpper(itsCenter[2]); - MDirection::Types tp; - ASSERTSTR (MDirection::getType(tp, str), - str << " is an invalid direction type" - " in PhaseShift phasecenter"); - } - return MDirection(q0, q1, type); - } - - void PhaseShift::fillTransMatrix (Matrix<double>& mat, - double ra, double dec) - { - DBGASSERT (mat.nrow()==3 && mat.ncolumn()==3); - double sinra = sin(ra); - double cosra = cos(ra); - double sindec = sin(dec); - double cosdec = cos(dec); - mat(0,0) = cosra; - mat(1,0) = -sinra; - mat(2,0) = 0; - mat(0,1) = -sinra*sindec; - mat(1,1) = -cosra*sindec; - mat(2,1) = cosdec; - mat(0,2) = sinra*cosdec; - mat(1,2) = cosra*cosdec; - mat(2,2) = sindec; - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/PointSource.cc b/CEP/DP3/DPPP/src/PointSource.cc deleted file mode 100644 index 4d86f34698c..00000000000 --- a/CEP/DP3/DPPP/src/PointSource.cc +++ /dev/null @@ -1,147 +0,0 @@ -//# PointSource.cc: Point source model component with optional spectral index -//# and rotation measure. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/PointSource.h> -#include <DPPP/ModelComponentVisitor.h> -#include <Common/lofar_math.h> -#include <casacore/casa/BasicSL/Constants.h> - -namespace LOFAR -{ -namespace DPPP -{ - -PointSource::PointSource(const Position &position) - : itsPosition(position), - itsRefFreq(0.0), - itsPolarizedFraction(0.0), - itsPolarizationAngle(0.0), - itsRotationMeasure(0.0), - itsHasRotationMeasure(false), - itsHasLogarithmicSI(true) -{ -} - -PointSource::PointSource(const Position &position, const Stokes &stokes) - : itsPosition(position), - itsStokes(stokes), - itsRefFreq(0.0), - itsPolarizedFraction(0.0), - itsPolarizationAngle(0.0), - itsRotationMeasure(0.0), - itsHasRotationMeasure(false), - itsHasLogarithmicSI(true) -{ -} - -void PointSource::setPosition(const Position &position) -{ - itsPosition = position; -} - -void PointSource::setStokes(const Stokes &stokes) -{ - itsStokes = stokes; -} - -void PointSource::setRotationMeasure(double fraction, double angle, double rm) -{ - itsPolarizedFraction = fraction; - itsPolarizationAngle = angle; - itsRotationMeasure = rm; - itsHasRotationMeasure = true; -} - -Stokes PointSource::stokes(double freq) const -{ - Stokes stokes(itsStokes); - - if(hasSpectralTerms()) - { - if(itsHasLogarithmicSI) - { - // Compute spectral index as: - // (v / v0) ^ (c0 + c1 * log10(v / v0) + c2 * log10(v / v0)^2 + ...) - // Where v is the frequency and v0 is the reference frequency. - - // Compute log10(v / v0). - double base = log10(freq) - log10(itsRefFreq); - - // Compute c0 + log10(v / v0) * c1 + log10(v / v0)^2 * c2 + ... - // using Horner's rule. - double exponent = 0.0; - typedef vector<double>::const_reverse_iterator iterator_type; - for(iterator_type it = itsSpectralTerms.rbegin(), - end = itsSpectralTerms.rend(); it != end; ++it) - { - exponent = exponent * base + *it; - } - - // Compute I * (v / v0) ^ exponent, where I is the value of Stokes - // I at the reference frequency. - stokes.I *= pow(10., base * exponent); - } - else { - double x = freq / itsRefFreq - 1.0; - typedef vector<double>::const_reverse_iterator iterator_type; - double val = 0.0; - for(iterator_type it = itsSpectralTerms.rbegin(), - end = itsSpectralTerms.rend(); it != end; ++it) - { - val = val * x + *it; - } - stokes.I += val * x; - } - } - - if(hasRotationMeasure()) - { - double lambda = casacore::C::c / freq; - double chi = 2.0 * (itsPolarizationAngle + itsRotationMeasure - * lambda * lambda); - double stokesQU = stokes.I * itsPolarizedFraction; - stokes.Q = stokesQU * cos(chi); - stokes.U = stokesQU * sin(chi); - } - - return stokes; -} - -void PointSource::accept(ModelComponentVisitor &visitor) const -{ - visitor.visit(*this); -} - -bool PointSource::hasSpectralTerms() const -{ - return !itsSpectralTerms.empty(); -} - -bool PointSource::hasRotationMeasure() const -{ - return itsHasRotationMeasure; -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/Position.cc b/CEP/DP3/DPPP/src/Position.cc deleted file mode 100644 index 4104695b14e..00000000000 --- a/CEP/DP3/DPPP/src/Position.cc +++ /dev/null @@ -1,44 +0,0 @@ -//# Position.cc: A position on the celestial sphere. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/Position.h> - -namespace LOFAR -{ -namespace DPPP -{ - -Position::Position() -{ - itsPosition[0] = 0.0; - itsPosition[1] = 0.0; -} - -Position::Position(double alpha, double delta) -{ - itsPosition[0] = alpha; - itsPosition[1] = delta; -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/PreFlagger.cc b/CEP/DP3/DPPP/src/PreFlagger.cc deleted file mode 100644 index 77b51bd7e58..00000000000 --- a/CEP/DP3/DPPP/src/PreFlagger.cc +++ /dev/null @@ -1,1194 +0,0 @@ -//# PreFlagger.cc: DPPP step class to (un)flag data on channel, baseline, time -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/PreFlagger.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPLogger.h> -#include <Common/ParameterSet.h> -#include <Common/StreamUtil.h> -#include <Common/LofarLogger.h> - -#include <casacore/tables/TaQL/ExprNode.h> -#include <casacore/tables/TaQL/RecordGram.h> -#include <casacore/casa/Containers/Record.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/casa/Quanta/MVTime.h> -#include <casacore/casa/Quanta/MVAngle.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/measures/Measures/MeasFrame.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/measures/Measures/MCEpoch.h> -#include <iostream> -#include <stack> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - PreFlagger::PreFlagger (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsName (prefix), - itsInput (input), - itsMode (SetFlag), - itsPSet (input, parset, prefix), - itsCount (0), - itsFlagCounter (input->msName(), parset, prefix+"count.") - { - string mode = toLower(parset.getString(prefix+"mode", "set")); - if (mode == "clear") { - itsMode = ClearFlag; - } else if (mode == "setcomplement" || mode == "setother") { - itsMode = SetComp; - } else if (mode == "clearcomplement" || mode == "clearother") { - itsMode = ClearComp; - } else { - ASSERTSTR (mode=="set", - "invalid preflagger mode: " - "only set, clear, and set/clearcomplement/other are valid"); - } - } - - PreFlagger::~PreFlagger() - {} - - void PreFlagger::show (std::ostream& os) const - { - os << "PreFlagger " << itsName << std::endl; - os << " mode: "; - switch (itsMode) { - case SetFlag: - os << "set"; - break; - case ClearFlag: - os << "clear"; - break; - case SetComp: - os << "setcomplement"; - break; - case ClearComp: - os << "clearcomplement"; - break; - } - os << endl; - itsPSet.show (os, false); - } - - void PreFlagger::showCounts (std::ostream& os) const - { - os << endl << "Flags set by PreFlagger " << itsName; - os << endl << "=======================" << endl; - itsFlagCounter.showBaseline (os, itsCount); - itsFlagCounter.showChannel (os, itsCount); - } - - void PreFlagger::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " PreFlagger " << itsName << endl; - } - - void PreFlagger::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteFlags(); - itsPSet.updateInfo (getInfo()); - // Initialize the flag counters. - itsFlagCounter.init (getInfo()); - } - - bool PreFlagger::process (const DPBuffer& buf) - { - itsTimer.start(); - // Because no buffers are kept, we can reference the filled arrays - // in the input buffer instead of copying them. - itsBuffer.referenceFilled (buf); - // Do the PSet steps and combine the result with the current flags. - // Only count if the flag changes. - Cube<bool>* flags = itsPSet.process (buf, itsBuffer, itsCount, - Block<bool>(), itsTimer); - const IPosition& shape = flags->shape(); - uint nrcorr = shape[0]; - uint nrchan = shape[1]; - uint nrbl = shape[2]; - const bool* inPtr = flags->data(); - bool* outPtr = itsBuffer.getFlags().data(); - switch (itsMode) { - case SetFlag: - setFlags (inPtr, outPtr, nrcorr, nrchan, nrbl, true); - break; - case ClearFlag: - clearFlags (inPtr, outPtr, nrcorr, nrchan, nrbl, true, buf); - break; - case SetComp: - setFlags (inPtr, outPtr, nrcorr, nrchan, nrbl, false); - break; - case ClearComp: - clearFlags (inPtr, outPtr, nrcorr, nrchan, nrbl, false, buf); - break; - } - itsTimer.stop(); - // Let the next step do its processing. - getNextStep()->process (itsBuffer); - itsCount++; - return true; - } - - void PreFlagger::setFlags (const bool* inPtr, bool* outPtr, - uint nrcorr, uint nrchan, uint nrbl, - bool mode) - { - for (uint i=0; i<nrbl; ++i) { - for (uint j=0; j<nrchan; ++j) { - if (*inPtr == mode && !*outPtr) { - // Only 1st corr is counted. - itsFlagCounter.incrBaseline(i); - itsFlagCounter.incrChannel(j); - for (uint k=0; k<nrcorr; ++k) { - outPtr[k] = true; - } - } - inPtr += nrcorr; - outPtr += nrcorr; - } - } - } - - void PreFlagger::clearFlags (const bool* inPtr, bool* outPtr, - uint nrcorr, uint nrchan, uint nrbl, - bool mode, const DPBuffer& buf) - { - const Complex* dataPtr = buf.getData().data(); - Cube<float> weights = itsInput->fetchWeights (buf, itsBuffer, - itsTimer); - const float* weightPtr = weights.data(); - for (uint i=0; i<nrbl; ++i) { - for (uint j=0; j<nrchan; ++j) { - if (*inPtr == mode) { - bool flag = false; - // Flags for invalid data are not cleared. - for (uint k=0; k<nrcorr; ++k) { - if (!isFinite(dataPtr[k].real()) || - !isFinite(dataPtr[k].imag()) || - weightPtr[k] == 0) { - flag = true; - break; - } - } - if (*outPtr != flag) { - itsFlagCounter.incrBaseline(i); - itsFlagCounter.incrChannel(j); - for (uint k=0; k<nrcorr; ++k) { - outPtr[k] = flag; - } - } - } - inPtr += nrcorr; - outPtr += nrcorr; - dataPtr += nrcorr; - weightPtr += nrcorr; - } - } - } - - void PreFlagger::finish() - { - // Let the next step finish its processing. - getNextStep()->finish(); - } - - - PreFlagger::PSet::PSet (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsFlagOnUV (false), - itsFlagOnBL (false), - itsFlagOnAmpl (false), - itsFlagOnPhase (false), - itsFlagOnReal (false), - itsFlagOnImag (false), - itsFlagOnAzEl (false), - itsSelBL (parset, prefix, true) - { - // Read all possible parameters. - itsStrTime = parset.getStringVector (prefix+"timeofday", - vector<string>()); - itsStrLST = parset.getStringVector (prefix+"lst", - vector<string>()); - itsStrATime = parset.getStringVector (prefix+"abstime", - vector<string>()); - itsStrRTime = parset.getStringVector (prefix+"reltime", - vector<string>()); - itsTimeSlot = parset.getUintVector (prefix+"timeslot", - vector<uint>(), true); // expand .. - itsStrAzim = parset.getStringVector (prefix+"azimuth", - vector<string>()); - itsStrElev = parset.getStringVector (prefix+"elevation", - vector<string>()); - itsMinUV = parset.getDouble (prefix+"uvmmin", -1); - itsMaxUV = parset.getDouble (prefix+"uvmmax", -1); - itsStrFreq = parset.getStringVector (prefix+"freqrange", - vector<string>()); - itsStrChan = parset.getStringVector (prefix+"chan", vector<string>()); - itsAmplMin = fillValuePerCorr - (ParameterValue (parset.getString (prefix+"amplmin", string())),-1e30, - itsFlagOnAmpl); - itsAmplMax = fillValuePerCorr - (ParameterValue (parset.getString (prefix+"amplmax", string())), 1e30, - itsFlagOnAmpl); - itsPhaseMin = fillValuePerCorr - (ParameterValue (parset.getString (prefix+"phasemin", string())),-1e30, - itsFlagOnPhase); - itsPhaseMax = fillValuePerCorr - (ParameterValue (parset.getString (prefix+"phasemax", string())), 1e30, - itsFlagOnPhase); - itsRealMin = fillValuePerCorr - (ParameterValue (parset.getString (prefix+"realmin", string())),-1e30, - itsFlagOnReal); - itsRealMax = fillValuePerCorr - (ParameterValue (parset.getString (prefix+"realmax", string())), 1e30, - itsFlagOnReal); - itsImagMin = fillValuePerCorr - (ParameterValue (parset.getString (prefix+"imagmin", string())),-1e30, - itsFlagOnImag); - itsImagMax = fillValuePerCorr - (ParameterValue (parset.getString (prefix+"imagmax", string())), 1e30, - itsFlagOnImag); - itsStrExpr = parset.getString (prefix+"expr", string()); - // Parse the possible pset expression and convert to RPN form. - if (! itsStrExpr.empty()) { - vector<string> names = exprToRpn (itsStrExpr); - // Create PSet objects for all operands. - itsPSets.reserve (names.size()); - for (uint i=0; i<names.size(); ++i) { - itsPSets.push_back - (PSet::ShPtr(new PSet(itsInput, parset, prefix+names[i]+'.'))); - } - } - } - - void PreFlagger::PSet::updateInfo (const DPInfo& info) - { - itsInfo = &info; - // Fill the matrix with the baselines to flag. - fillBLMatrix(); - // Handle the possible date/time parameters. - itsTimes = fillTimes (itsStrTime, true, true); - itsLST = fillTimes (itsStrLST, true, true); - itsATimes = fillTimes (itsStrATime, false, false); - itsRTimes = fillTimes (itsStrRTime, true, false); - itsFlagOnTime = !(itsTimeSlot.empty() && itsTimes.empty() && - itsLST.empty() && itsATimes.empty() && - itsRTimes.empty()); - // Handle possible azimuth/elevation ranges. - itsAzimuth = fillTimes (itsStrAzim, true, true); - itsElevation = fillTimes (itsStrElev, true, true); - itsFlagOnAzEl = !(itsAzimuth.empty() && itsElevation.empty()); - // Determine if to flag on UV distance. - // If so, square the distances to avoid having to take the sqrt in flagUV. - if (itsMinUV >= 0) { - itsFlagOnUV = true; - itsMinUV *= itsMinUV; - } - if (itsMaxUV > 0) { - itsFlagOnUV = true; - itsMaxUV *= itsMaxUV; - } else { - // Make it a very high number. - itsMaxUV = 1e30; - } - ASSERTSTR (itsMinUV<itsMaxUV, "PreFlagger uvmmin should be < uvmmax"); - // Determine if only flagging on time info is done. - itsFlagOnTimeOnly = ( !(itsFlagOnUV || itsFlagOnBL || itsFlagOnAzEl || - itsFlagOnAmpl || itsFlagOnPhase || - itsFlagOnReal || itsFlagOnImag) && - itsPSets.empty()); - // Size the object's buffers (used in process) correctly. - uint nrcorr = info.ncorr(); - uint nrchan = info.nchan(); - itsFlags.resize (nrcorr, nrchan, info.nbaselines()); - itsMatchBL.resize (info.nbaselines()); - // Determine the channels to be flagged. - if (!(itsStrChan.empty() && itsStrFreq.empty())) { - fillChannels (info); - if (! itsChannels.empty()) { - itsFlagOnTimeOnly = false; - } - } - // Do the same for the child steps. - for (uint i=0; i<itsPSets.size(); ++i) { - itsPSets[i]->updateInfo (info); - } - } - - void PreFlagger::PSet::fillChannels (const DPInfo& info) - { - uint nrcorr = info.ncorr(); - uint nrchan = info.nchan(); - Vector<bool> selChan(nrchan); - if (itsStrChan.empty()) { - selChan = true; - } else { - // Set selChan for channels not exceeding nr of channels. - selChan = false; - Record rec; - rec.define ("nchan", nrchan); - double result; - for (uint i=0; i<itsStrChan.size(); ++i) { - // Evaluate possible expressions. - // Split the value if start..end is given. - uint startch, endch; - string::size_type pos = itsStrChan[i].find (".."); - if (pos == string::npos) { - TableExprNode node (RecordGram::parse(rec, itsStrChan[i])); - node.get (rec, result); - startch = uint(result+0.001); - endch = startch; - } else { - ASSERTSTR (pos != 0 && pos < itsStrChan[i].size() - 2, - "No start or end given in PreFlagger channel range " - << itsStrChan[i]); - TableExprNode node1 - (RecordGram::parse(rec, itsStrChan[i].substr(0,pos))); - node1.get (rec, result); - startch = uint(result+0.001); - TableExprNode node2 - (RecordGram::parse(rec, itsStrChan[i].substr(pos+2))); - node2.get (rec, result); - endch = uint(result+0.001); - ASSERTSTR (startch <= endch, - "Start " << startch << " must be <= end " << endch - << " in PreFlagger channel range " << itsStrChan[i]); - } - if (startch < nrchan) { - for (uint ch=startch; ch<std::min(endch+1, nrchan); ++ch) { - selChan[ch] = true; - } - } - } - } - // Now determine which channels to use from given frequency ranges. - // AND it with the channel selection given above. - if (! itsStrFreq.empty()) { - selChan = selChan && handleFreqRanges (itsInfo->chanFreqs()); - } - // Turn the channels into a mask. - itsChannels.clear(); - itsChanFlags.resize (nrcorr, nrchan); - itsChanFlags = false; - for (uint i=0; i<nrchan; ++i) { - if (selChan[i]) { - itsChannels.push_back (i); - for (uint j=0; j<nrcorr; ++j) { - itsChanFlags(j,i) = true; - } - } - } - } - - void PreFlagger::PSet::show (std::ostream& os, bool showName) const - { - if (showName) { - os << " pset " << itsName << endl; - } - if (! itsStrExpr.empty()) { - os << " expr: " << itsStrExpr << std::endl; - } - if (! itsStrLST.empty()) { - os << " lst: " << itsStrLST << std::endl; - } - if (! itsStrTime.empty()) { - os << " timeofday: " << itsStrTime << std::endl; - } - if (! itsStrATime.empty()) { - os << " abstime: " << itsStrATime << std::endl; - } - if (! itsStrRTime.empty()) { - os << " reltime: " << itsStrRTime << std::endl; - } - if (! itsTimeSlot.empty()) { - os << " timeslot: " << itsTimeSlot << std::endl; - } - if (itsFlagOnBL) { - itsSelBL.show (os); - } - if (itsFlagOnUV) { - if (itsMinUV >= 0) { - os << " uvmmin: " << sqrt(itsMinUV) << std::endl; - } else { - os << " uvmmin: " << itsMinUV << std::endl; - } - os << " uvmmax: " << sqrt(itsMaxUV) << std::endl; - } - if (itsFlagOnAzEl) { - os << " azimuth: " << itsStrAzim << std::endl; - os << " elevation: " << itsStrElev << std::endl; - } - if (! itsChannels.empty()) { - os << " channel: " << itsStrChan << std::endl; - os << " freqrange: " << itsStrFreq << std::endl; - os << " chan to flag: " << itsChannels << std::endl; - } - if (itsFlagOnAmpl) { - os << " amplmin: " << itsAmplMin << std::endl; - os << " amplmax: " << itsAmplMax << std::endl; - } - if (itsFlagOnPhase) { - os << " phasemin: " << itsPhaseMin << std::endl; - os << " phasemax: " << itsPhaseMax << std::endl; - } - if (itsFlagOnReal) { - os << " realmin: " << itsRealMin << std::endl; - os << " realmax: " << itsRealMax << std::endl; - } - if (itsFlagOnImag) { - os << " imagmin: " << itsImagMin << std::endl; - os << " imagmax: " << itsImagMax << std::endl; - } - // Do it for the child steps. - for (uint i=0; i<itsPSets.size(); ++i) { - itsPSets[i]->show (os, true); - } - } - - Cube<bool>* PreFlagger::PSet::process (const DPBuffer& in, - DPBuffer& out, - uint timeSlot, - const Block<bool>& matchBL, - NSTimer& timer) - { - // No need to process it if the time mismatches or if only time selection. - if (itsFlagOnTime) { - if (! matchTime (out.getTime(), timeSlot)) { - itsFlags = false; - return &itsFlags; - } - } - if (itsFlagOnTimeOnly) { - itsFlags = itsFlagOnTime; - return &itsFlags; - } - // Initialize the flags. - itsFlags = false; - const IPosition& shape = out.getFlags().shape(); - uint nr = shape[0] * shape[1]; - // Take over the baseline info from the parent. Default is all. - if (matchBL.empty()) { - itsMatchBL = true; - } else { - itsMatchBL = matchBL; - } - // The PSet tree is a combination of ORs and ANDs. - // Depth is AND, breadth is OR. - // In a PSet flagging is done in two stages. - // First it is determined which baselines are not flagged. It is kept - // in the itsMatchBL block. - // This is passed to the children who do their flagging. In this way - // a child can minimize the amount of work to do. - // The resulting flags of the children are handled according to the - // operators in the RPN list. - - // First flag on baseline if necessary. Stop if no matches. - if (itsFlagOnBL && !flagBL()) { - return &itsFlags; - } - // Flag on UV distance if necessary. - if (itsFlagOnUV && !flagUV (itsInput->fetchUVW (in, out, - timer))) { - return &itsFlags; - } - // Flag on AzEl is necessary. - if (itsFlagOnAzEl && !flagAzEl (out.getTime())) { - return &itsFlags; - } - // Convert each baseline flag to a flag per correlation/channel. - bool* flagPtr = itsFlags.data(); - for (uint i=0; i<itsMatchBL.size(); ++i) { - if (itsMatchBL[i]) { - std::fill (flagPtr, flagPtr+nr, itsMatchBL[i]); - } - flagPtr += nr; - } - // Flag on channel if necessary. - if (! itsChannels.empty()) { - flagChannels(); - } - // Flag on amplitude, phase or real/imaginary if necessary. - if (itsFlagOnAmpl) { - flagAmpl (amplitude(out.getData())); - } - if (itsFlagOnReal) { - flagReal (out.getData()); - } - if (itsFlagOnImag) { - flagImag (out.getData()); - } - if (itsFlagOnPhase) { - flagPhase (out.getData()); - } - // Evaluate the PSet expression. - // The expression is in RPN notation. A stack of array pointers is used - // to keep track of intermediate results. The arrays (in the PSet objects) - // are reused to AND or OR subexpressions. This can be done harmlessly - // and saves the creation of too many arrays. - if (! itsPSets.empty()) { - std::stack<Cube<bool>*> results; - for (vector<int>::const_iterator oper = itsRpn.begin(); - oper != itsRpn.end(); ++oper) { - if (*oper >= 0) { - results.push (itsPSets[*oper]->process (in, out, timeSlot, - itsMatchBL, timer)); - } else if (*oper == OpNot) { - Cube<bool>* left = results.top(); - // No ||= operator exists, so use the transform function. - transformInPlace (left->cbegin(), left->cend(), - std::logical_not<bool>()); - } else { - ASSERT (*oper==OpOr || *oper==OpAnd); - Cube<bool>* right = results.top(); - results.pop(); - Cube<bool>* left = results.top(); - // No ||= operator exists, so use the transform function. - if (*oper == OpOr) { - transformInPlace (left->cbegin(), left->cend(), - right->cbegin(), std::logical_or<bool>()); - } else { - transformInPlace (left->cbegin(), left->cend(), - right->cbegin(), std::logical_and<bool>()); - } - } - } - // Finally AND the children's flags with the flags of this pset. - ASSERT (results.size() == 1); - Cube<bool>* mflags = results.top(); - transformInPlace (itsFlags.cbegin(), itsFlags.cend(), - mflags->cbegin(), std::logical_and<bool>()); - } - return &itsFlags; - } - - bool PreFlagger::PSet::matchTime (double time, uint timeSlot) const - { - if (!itsATimes.empty() && - !matchRange (time, itsATimes)) { - return false; - } - if (!itsRTimes.empty() && - !matchRange (time-itsInfo->startTime(), itsRTimes)) { - return false; - } - if (!itsTimes.empty()) { - MVTime mvtime(time/86400); // needs time in days - double timeofday = time - int(mvtime.day()) * 86400.; - if (!matchRange (timeofday, itsTimes)) { - return false; - } - } - if (!itsTimeSlot.empty()) { - if (std::find (itsTimeSlot.begin(), itsTimeSlot.end(), timeSlot) == - itsTimeSlot.end()) { - return false; - } - } - if (!itsLST.empty()) { - // Convert time from UTC to Local Apparent Sidereal Time. - MeasFrame frame; - frame.set (itsInfo->arrayPos()); - Quantity qtime(time, "s"); - MEpoch lst = MEpoch::Convert (MEpoch(MVEpoch(qtime), MEpoch::UTC), - MEpoch::Ref(MEpoch::LAST, frame))(); - double lstSec = lst.getValue().get(); // in days - lstSec -= int(lstSec); // time of day - if (!matchRange (lstSec*86400, itsLST)) { // use seconds - return false; - } - } - return true; - } - - bool PreFlagger::PSet::matchRange (double v, - const vector<double>& ranges) const - { - for (uint i=0; i<ranges.size(); i+=2) { - if (v > ranges[i] && v < ranges[i+1]) { - return true; - } - } - return false; - } - - bool PreFlagger::PSet::flagUV (const Matrix<double>& uvw) - { - bool match = false; - uint nrbl = itsMatchBL.size(); - const double* uvwPtr = uvw.data(); - for (uint i=0; i<nrbl; ++i) { - if (itsMatchBL[i]) { - // UV-distance is sqrt(u^2 + v^2). - // The sqrt is not needed because minuv and maxuv are squared. - double uvdist = uvwPtr[0] * uvwPtr[0] + uvwPtr[1] * uvwPtr[1]; - if (uvdist >= itsMinUV && uvdist <= itsMaxUV) { - // UV-dist mismatches, so do not flag baseline. - itsMatchBL[i] = false; - } else { - match = true; - } - } - uvwPtr += 3; - } - return match; - } - - bool PreFlagger::PSet::flagBL() - { - bool match = false; - uint nrbl = itsMatchBL.size(); - const Int* ant1Ptr = itsInfo->getAnt1().data(); - const Int* ant2Ptr = itsInfo->getAnt2().data(); - for (uint i=0; i<nrbl; ++i) { - if (itsMatchBL[i]) { - if (! itsFlagBL(ant1Ptr[i], ant2Ptr[i])) { - // do not flag this baseline - itsMatchBL[i] = false; - } else { - match = true; - } - } - } - return match; - } - - bool PreFlagger::PSet::flagAzEl (double time) - { - bool match = false; - uint nrbl = itsMatchBL.size(); - const Int* ant1Ptr = itsInfo->getAnt1().data(); - const Int* ant2Ptr = itsInfo->getAnt2().data(); - // Calculate AzEl for each flagged antenna for this time slot. - MeasFrame frame; - Quantity qtime(time, "s"); - MEpoch epoch(MVEpoch(qtime), MEpoch::UTC); - frame.set (epoch); - MDirection::Convert converter (itsInfo->phaseCenter(), - MDirection::Ref(MDirection::AZEL, frame)); - uint nrant = itsInfo->antennaNames().size(); - Block<bool> done(nrant, false); - for (uint i=0; i<nrbl; ++i) { - if (itsMatchBL[i]) { - // If needed, check if ant1 matches AzEl criterium. - // If not matching, itsMatchBL is cleared for this baseline and all - // subsequent baselines with this antenna. - int a1 = ant1Ptr[i]; - int a2 = ant2Ptr[i]; - if (!done[a1]) { - frame.set (itsInfo->antennaPos()[a1]); - testAzEl (converter, i, a1, ant1Ptr, ant2Ptr); - done[a1]= true; - } - // If needed, check if ant2 matches AzEl criterium. - if (itsMatchBL[i] && !done[a2]) { - frame.set (itsInfo->antennaPos()[a2]); - testAzEl (converter, i, a2, ant1Ptr, ant2Ptr); - done[a2] = true; - } - if (itsMatchBL[i]) { - match = true; - } - } - } - return match; - } - - void PreFlagger::PSet::testAzEl (MDirection::Convert& converter, - uint blnr, int ant, - const int* ant1, const int* ant2) - { - // Calculate AzEl (n seconds because ranges are in seconds too). - MVDirection mvAzel (converter().getValue()); - Vector<double> azel = mvAzel.getAngle("s").getValue(); - double az = azel[0]; - double el = azel[1]; - if (az < 0) az += 86400; - if (el < 0) el += 86400; - // If outside the ranges, there is no match. - // Set no match for all baselines containing this antenna. - // It needs to be done from this baseline on, because the earlier - // baselines have already been handled. - bool res = ((itsAzimuth.empty() || matchRange(az, itsAzimuth)) && - (itsElevation.empty() || matchRange(el, itsElevation))); - if (!res) { - for (uint i=blnr; i<itsMatchBL.size(); ++i) { - if (ant1[i] == ant || ant2[i] == ant) { - itsMatchBL[i] = false; - } - } - } - } - - void PreFlagger::PSet::flagAmpl (const Cube<float>& values) - { - const IPosition& shape = values.shape(); - uint nrcorr = shape[0]; - uint nr = shape[1] * shape[2]; - const float* valPtr = values.data(); - bool* flagPtr = itsFlags.data(); - for (uint i=0; i<nr; ++i) { - bool flag = false; - for (uint j=0; j<nrcorr; ++j) { - if (valPtr[j] < itsAmplMin[j] || valPtr[j] > itsAmplMax[j]) { - flag = true; - break; - } - } - if (!flag) { - for (uint j=0; j<nrcorr; ++j) { - flagPtr[j] = false; - } - } - valPtr += nrcorr; - flagPtr += nrcorr; - } - } - - void PreFlagger::PSet::flagPhase (const Cube<Complex>& values) - { - const IPosition& shape = values.shape(); - uint nrcorr = shape[0]; - uint nr = shape[1] * shape[2]; - const Complex* valPtr = values.data(); - bool* flagPtr = itsFlags.data(); - for (uint i=0; i<nr; ++i) { - bool flag = false; - for (uint j=0; j<nrcorr; ++j) { - float phase = arg(valPtr[j]); - if (phase < itsPhaseMin[j] || phase > itsPhaseMax[j]) { - flag = true; - break; - } - } - if (!flag) { - for (uint j=0; j<nrcorr; ++j) { - flagPtr[j] = false; - } - } - valPtr += nrcorr; - flagPtr += nrcorr; - } - } - - void PreFlagger::PSet::flagReal (const Cube<Complex>& values) - { - const IPosition& shape = values.shape(); - uint nrcorr = shape[0]; - uint nr = shape[1] * shape[2]; - const Complex* valPtr = values.data(); - bool* flagPtr = itsFlags.data(); - for (uint i=0; i<nr; ++i) { - bool flag = false; - for (uint j=0; j<nrcorr; ++j) { - if (valPtr[j].real() < itsRealMin[j] || - valPtr[j].real() > itsRealMax[j]) { - flag = true; - break; - } - } - if (!flag) { - for (uint j=0; j<nrcorr; ++j) { - flagPtr[j] = false; - } - } - valPtr += nrcorr; - flagPtr += nrcorr; - } - } - - void PreFlagger::PSet::flagImag (const Cube<Complex>& values) - { - const IPosition& shape = values.shape(); - uint nrcorr = shape[0]; - uint nr = shape[1] * shape[2]; - const Complex* valPtr = values.data(); - bool* flagPtr = itsFlags.data(); - for (uint i=0; i<nr; ++i) { - bool flag = false; - for (uint j=0; j<nrcorr; ++j) { - if (valPtr[j].imag() < itsImagMin[j] || - valPtr[j].imag() > itsImagMax[j]) { - flag = true; - break; - } - } - if (!flag) { - for (uint j=0; j<nrcorr; ++j) { - flagPtr[j] = false; - } - } - valPtr += nrcorr; - flagPtr += nrcorr; - } - } - - void PreFlagger::PSet::flagChannels() - { - const IPosition& shape = itsFlags.shape(); - uint nr = shape[0] * shape[1]; - uint nrbl = shape[2]; - bool* flagPtr = itsFlags.data(); - for (uint i=0; i<nrbl; ++i) { - transformInPlace (flagPtr, flagPtr+nr, - itsChanFlags.cbegin(), std::logical_and<bool>()); - flagPtr += nr; - } - } - - // See http://montcs.bloomu.edu/~bobmon/Information/RPN/infix2rpn.shtml - // for the algorithm used here. - // Some code was added to check if no two subsequent operators or names - // are given. - vector<string> PreFlagger::PSet::exprToRpn (const string& origExpr) - { - // Operators & (or &&) | (or ||) and , are used as well as parentheses. - // The operators must have a value in order of precedence, thus && - // has a higher precedence than || (as in C). - string expr = toUpper(origExpr); - std::stack<int> tokens; - vector<string> names; - uint i=0; - bool hadName = false; // the last token was a name. - while (i < expr.size()) { - int oper = 0; - // skip whitespace. - // Look for parenthesis or operator. - if (expr[i] == ' ' || expr[i] == '\t') { - i++; - } else if (expr[i] == '(') { - ASSERTSTR (!hadName, "no operator before opening parenthesis at pos. " - << i << " in expression: " << origExpr); - oper = OpParen; - tokens.push (oper); - i++; - } else if (expr[i] == '|') { - oper = OpOr; - i++; - if (i < expr.size() && expr[i] == '|') i++; - } else if (expr[i] == ',') { - oper = OpOr; - i++; - } else if (expr[i] == '&') { - oper = OpAnd; - i++; - if (i < expr.size() && expr[i] == '&') i++; - } else if (expr[i] == '!') { - oper = OpNot; - i++; - } else if (expr.size()-i >= 3 && (expr.substr(i,3) == "OR " || - expr.substr(i,3) == "OR\t" || - expr.substr(i,3) == "OR!" || - expr.substr(i,3) == "OR(")) { - oper = OpOr; - i+=2; - } else if (expr.size()-i == 2 && (expr.substr(i,2) == "OR")) { - oper = OpOr; - i+=2; - } else if (expr.size()-i >= 4 && (expr.substr(i,4) == "AND " || - expr.substr(i,4) == "AND\t" || - expr.substr(i,4) == "AND!" || - expr.substr(i,4) == "AND(")) { - oper = OpAnd; - i+=3; - } else if (expr.size()-i == 3 && (expr.substr(i,3) == "AND")) { - oper = OpAnd; - i+=3; - } else if (expr.size()-i >= 4 && (expr.substr(i,4) == "NOT " || - expr.substr(i,4) == "NOT\t" || - expr.substr(i,4) == "NOT(")) { - oper = OpNot; - i+=3; - } else if (expr.size()-i == 3 && (expr.substr(i,3) == "NOT")) { - oper = OpNot; - i+=3; - } else if (expr[i] == ')') { - // Closing parenthesis. Push till opening parenthesis found. - ASSERTSTR (hadName, "no set name before closing parenthesis at pos. " - << i << " in expression: " << origExpr); - while (true) { - ASSERTSTR (!tokens.empty(), "mismatched parentheses at pos. " - << i << " in expression: " << origExpr); - if (tokens.top() == OpParen) { - tokens.pop(); - break; - } - itsRpn.push_back (tokens.top()); - tokens.pop(); - } - i++; - } else { - // No operator, thus it must be an operand (a set name). - int st=i; - ASSERTSTR (!hadName, "No operator between set names at pos. " - << i << " in expression: " << origExpr); - while (i < expr.size() && - expr[i] != ' ' && expr[i] != '\t' && - expr[i] != '(' && expr[i] != ')' && expr[i] != '!' && - expr[i] != ',' && expr[i] != '&' && expr[i] != '|') { - i++; - } - hadName = true; - itsRpn.push_back (names.size()); - String setName (origExpr.substr(st, i-st)); - // Check the name is valid (no special characters). - ASSERTSTR (setName.matches (RXidentifier), - "Invalid set name " << setName - << " used in set expression " << origExpr); - names.push_back (setName); - } - if (oper < OpParen) { - // Check if an operator was preceeded correctly. - if (oper == OpNot) { - ASSERTSTR (!hadName, "No set name before operator ! at pos. " - << i << " in expression: " << origExpr); - } else { - ASSERTSTR (hadName, "No set name before operator at pos. " - << i << " in expression: " << origExpr); - } - hadName = false; - // Push till lower precedence found. - while (!tokens.empty() && tokens.top() < oper) { - itsRpn.push_back (tokens.top()); - tokens.pop(); - } - tokens.push (oper); - } - } - ASSERTSTR (hadName, "no set name after last operator in expression: " - << origExpr); - while (!tokens.empty()) { - ASSERTSTR (tokens.top()<OpParen, - "mismatched parentheses in expression: " << origExpr); - itsRpn.push_back (tokens.top()); - tokens.pop(); - } - return names; - } - - vector<double> PreFlagger::PSet::fillTimes (const vector<string>& vec, - bool asTime, - bool canEndBeforeStart) - { - vector<double> result; - result.reserve (2*vec.size()); - // A time range can be given as time..time or time+-value. - for (vector<string>::const_iterator str = vec.begin(); - str != vec.end(); ++str) { - // Find the .. or +- token. - bool usepm = false; - string::size_type pos = str->find (".."); - if (pos == string::npos) { - usepm = true; - pos = str->find ("+-"); - ASSERTSTR (pos != string::npos, "PreFlagger time range '" << *str - << "' should be range using .. or +-"); - } - // Get the time or datetime in seconds. The values must be positive. - double v1 = getSeconds (str->substr(0, pos), asTime, false); - double v2 = getSeconds (str->substr(pos+2), asTime, usepm); - ASSERTSTR (v1>=0 && v2>=0, "PreFlagger time range " << *str - << " must have positive values"); - if (usepm) { - double pm = v2; - v2 = v1 + pm; - v1 -= pm; - } - // If time is used, values around midnight can be given. - // Note there are 86400 seconds in a day. - // They are split in 2 ranges. - if (!canEndBeforeStart) { - ASSERTSTR (v1<v2, "PreFlagger time range " << *str << " is invalid"); - } else { - if (v1 < 0) { - v1 += 86400; - } - if (v2 > 86400) { - v2 -= 86400; - } - } - if (v1 < v2) { - result.push_back (v1); - result.push_back (v2); - } else { - result.push_back (-1); - result.push_back (v2); - result.push_back (v1); - result.push_back (86401); - } - } - return result; - } - - double PreFlagger::PSet::getSeconds (const string& str, bool asTime, - bool usepm) - { - Quantity q; - if (asTime || usepm) { - ASSERTSTR (MVAngle::read(q, str, true), - "PreFlagger time " << str << " is invalid"); - } else { - // It should be a proper date/time, so MVAngle::read should fail. - ASSERTSTR (!MVAngle::read(q, str, true), - "PreFlagger datetime " << str - << " is not a proper date/time"); - ASSERTSTR (MVTime::read(q, str, true), - "PreFlagger datetime " << str << " is invalid" - << " is not a proper date/time"); - } - double v = q.getValue ("s"); - if (usepm) { - ASSERTSTR (v>0, "Preflagger time plusminus value " << str - << " must be positive"); - } - return v; - } - - vector<float> PreFlagger::PSet::fillValuePerCorr - (const ParameterValue& value, float defVal, bool& doFlag) - { - // Initialize with the default value per correlation. - vector<float> result(4); - std::fill (result.begin(), result.end(), defVal); - if (! value.get().empty()) { - if (value.isVector()) { - // Defined as a vector, take the values given. - vector<string> valstr = value.getStringVector(); - uint sz = std::min(valstr.size(), result.size()); - if (sz > 0) { - // It contains a value, so set that flagging is done. - doFlag = true; - for (uint i=0; i<sz; ++i) { - if (! valstr[i].empty()) { - result[i] = strToFloat(valstr[i]); - } - } - } - } else { - // A single value means use it for all correlations. - doFlag = true; - std::fill (result.begin(), result.end(), value.getFloat()); - } - } - return result; - } - - void PreFlagger::PSet::fillBLMatrix() - { - itsFlagOnBL = itsSelBL.hasSelection(); - if (itsFlagOnBL) { - itsFlagBL.reference (itsSelBL.apply (*itsInfo)); - } - } - - Vector<bool> PreFlagger::PSet::handleFreqRanges - (const Vector<double>& chanFreqs) - { - uint nrchan = chanFreqs.size(); - Vector<bool> selChan(nrchan, false); - // A frequency range can be given as value..value or value+-value. - // Units can be given for each value; if one is given it applies to both. - // Default unit is MHz. - for (vector<string>::const_iterator str = itsStrFreq.begin(); - str != itsStrFreq.end(); ++str) { - // Find the .. or +- token. - bool usepm = false; - string::size_type pos = str->find (".."); - if (pos == string::npos) { - usepm = true; - pos = str->find ("+-"); - ASSERTSTR (pos != string::npos, "PreFlagger freqrange '" << *str - << "' should be range using .. or +-"); - } - string str1 = str->substr (0, pos); - string str2 = str->substr (pos+2); - String u1, u2; - double v1, v2; - getValue (str1, v1, u1); - // Default unit for 2nd value is that of 1st value. - u2 = u1; - getValue (str2, v2, u2); - // If no unit, use MHz. - if (u2.empty()) { - u2 = "MHz"; - } - // Default unit of 1st value is that of 2nd value. - if (u1.empty()) { - u1 = u2; - } - v1 = getFreqHz (v1, u1); - v2 = getFreqHz (v2, u2); - if (usepm) { - double pm = v2; - v2 = v1 + pm; - v1 -= pm; - } - // Add any channel inside this range. - for (uint i=0; i<chanFreqs.size(); ++i) { - if (chanFreqs[i] > v1 && chanFreqs[i] < v2) { - selChan[i] = true; - } - } - } - return selChan; - } - - void PreFlagger::PSet::getValue (const string& str, double& value, - String& unit) - { - // See if a unit is given at the end. - String v(str); - // Remove possible trailing blanks. - rtrim(v); - Regex regex("[a-zA-Z]+$"); - string::size_type pos = v.index (regex); - if (pos != String::npos) { - unit = v.from (pos); - v = v.before (pos); - } - // Set value and unit. - value = strToDouble(v); - } - - double PreFlagger::PSet::getFreqHz (double value, const String& unit) - { - Quantity q(value, unit); - return q.getValue ("Hz"); - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/Predict.cc b/CEP/DP3/DPPP/src/Predict.cc deleted file mode 100644 index d74170976bd..00000000000 --- a/CEP/DP3/DPPP/src/Predict.cc +++ /dev/null @@ -1,429 +0,0 @@ -//# GainCal.cc: DPPP step class to predict visibilities -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/Predict.h> - -#include <iostream> -//#include <iomanip> -#include <Common/ParameterSet.h> -#include <Common/Timer.h> -#include <Common/OpenMP.h> -#include <Common/StreamUtil.h> -#include <ParmDB/ParmDBMeta.h> -#include <ParmDB/PatchInfo.h> -#include <DPPP/DPInfo.h> -#include <DPPP/FlagCounter.h> -#include <DPPP/Position.h> -#include <DPPP/ApplyBeam.h> -#include <DPPP/Simulator.h> - -#include <DPPP/Stokes.h> -#include <DPPP/PointSource.h> -#include <DPPP/GaussianSource.h> -#include <ParmDB/SourceDB.h> - -#include <casacore/casa/Arrays/Array.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/OS/File.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/tables/Tables/RefRows.h> - -#include <stddef.h> -#include <string> -#include <sstream> -#include <utility> -#include <vector> - -using namespace casacore; -using namespace LOFAR::BBS; - -namespace LOFAR { - namespace DPPP { - - Predict::Predict (DPInput* input, - const ParameterSet& parset, - const string& prefix) - { - init(input, parset, prefix, parset.getStringVector(prefix + "sources", - vector<string>())); - } - - Predict::Predict (DPInput* input, - const ParameterSet& parset, - const string& prefix, - const vector<string>& sourcePatterns) - { - init(input, parset, prefix, sourcePatterns); - } - - void Predict::init(DPInput* input, - const ParameterSet& parset, - const string& prefix, const vector<string>& sourcePatterns) { - itsInput = input; - itsName = prefix; - itsSourceDBName = parset.getString (prefix + "sourcedb"); - setOperation(parset.getString (prefix + "operation", "replace")); - itsApplyBeam = parset.getBool (prefix + "usebeammodel", false); - itsDebugLevel = parset.getInt (prefix + "debuglevel", 0); - itsPatchList = vector<Patch::ConstPtr> (); - - ASSERT(File(itsSourceDBName).exists()); - BBS::SourceDB sourceDB(BBS::ParmDBMeta("", itsSourceDBName), false); - - // Save directions specifications to pass to applycal - stringstream ss; - ss << sourcePatterns; - itsDirectionsStr = ss.str(); - - vector<string> patchNames=makePatchList(sourceDB, sourcePatterns); - itsPatchList = makePatches (sourceDB, patchNames, patchNames.size()); - - if (itsApplyBeam) { - itsUseChannelFreq=parset.getBool (prefix + "usechannelfreq", true); - itsOneBeamPerPatch=parset.getBool (prefix + "onebeamperpatch", true); - - string mode=toLower(parset.getString(prefix + "beammode","default")); - ASSERT (mode=="default" || mode=="array_factor" || mode=="element"); - if (mode=="default") { - itsBeamMode=ApplyBeam::DEFAULT; - } else if (mode=="array_factor") { - itsBeamMode=ApplyBeam::ARRAY_FACTOR; - } else if (mode=="element") { - itsBeamMode=ApplyBeam::ELEMENT; - } else { - THROW(Exception, "Beammode should be DEFAULT, ARRAY_FACTOR or ELEMENT"); - } - - // Rework patch list to contain a patch for every source - if (!itsOneBeamPerPatch) { - itsPatchList = makeOnePatchPerComponent(itsPatchList); - } - } - - // If called from h5parmpredict, applycal gets set by that step, - // so must not be read from parset - if (parset.isDefined(prefix + "applycal.parmdb") || - parset.isDefined(prefix + "applycal.steps")) { - setApplyCal(input, parset, prefix + "applycal."); - } else { - itsDoApplyCal=false; - } - - itsSourceList = makeSourceList(itsPatchList); - - // Determine whether any sources are polarized. If not, enable Stokes-I- - // only mode (note that this mode cannot be used with itsApplyBeam) - if (itsApplyBeam) { - itsStokesIOnly = false; - } else { - itsStokesIOnly = !checkPolarized(sourceDB, patchNames, patchNames.size()); - } - } - - void Predict::setApplyCal(DPInput* input, - const ParameterSet& parset, - const string& prefix) { - itsDoApplyCal=true; - itsApplyCalStep=ApplyCal(input, parset, prefix, true, - itsDirectionsStr); - ASSERT(!(itsOperation!="replace" && - parset.getBool(prefix + "applycal.updateweights", false))); - itsResultStep=new ResultStep(); - itsApplyCalStep.setNextStep(DPStep::ShPtr(itsResultStep)); - } - - Predict::Predict() - {} - - Predict::~Predict() - {} - - void Predict::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - - uint nBl=info().nbaselines(); - for (uint i=0; i<nBl; ++i) { - itsBaselines.push_back (Baseline(info().getAnt1()[i], - info().getAnt2()[i])); - } - - MDirection dirJ2000(MDirection::Convert(infoIn.phaseCenter(), - MDirection::J2000)()); - Quantum<Vector<Double> > angles = dirJ2000.getAngle(); - itsPhaseRef = Position(angles.getBaseValue()[0], - angles.getBaseValue()[1]); - - //const size_t nDr = itsPatchList.size(); - const size_t nSt = info().nantenna(); - const size_t nCh = info().nchan(); - const size_t nCr = info().ncorr(); - - itsUVW.resize(3,nSt); - itsUVWSplitIndex = nsetupSplitUVW (info().nantenna(), info().getAnt1(), - info().getAnt2()); - - itsModelVis.resize(OpenMP::maxThreads()); - itsModelVisPatch.resize(OpenMP::maxThreads()); - itsBeamValues.resize(OpenMP::maxThreads()); - - // Create the Measure ITRF conversion info given the array position. - // The time and direction are filled in later. - itsMeasConverters.resize(OpenMP::maxThreads()); - itsMeasFrames.resize(OpenMP::maxThreads()); - itsAntBeamInfo.resize(OpenMP::maxThreads()); - - for (uint thread=0;thread<OpenMP::maxThreads();++thread) { - if (itsStokesIOnly) { - itsModelVis[thread].resize(1,nCh,nBl); - } else { - itsModelVis[thread].resize(nCr,nCh,nBl); - } - if (itsApplyBeam) { - itsModelVisPatch[thread].resize(nCr,nCh,nBl); - itsBeamValues[thread].resize(nSt*nCh); - itsMeasFrames[thread].set (info().arrayPosCopy()); - itsMeasFrames[thread].set (MEpoch(MVEpoch(info().startTime()/86400), - MEpoch::UTC)); - itsMeasConverters[thread].set (MDirection::J2000, - MDirection::Ref(MDirection::ITRF, itsMeasFrames[thread])); - itsInput->fillBeamInfo (itsAntBeamInfo[thread], info().antennaNames()); - } - } - - if (itsDoApplyCal) { - info()=itsApplyCalStep.setInfo(info()); - } - } - - std::pair<double, double> Predict::getFirstDirection() const { - std::pair<double, double> res; - res.first = itsPatchList[0]->position()[0]; - res.second = itsPatchList[0]->position()[1]; - return res; - } - - void Predict::setOperation(const std::string& operation) { - itsOperation=operation; - ASSERT(itsOperation=="replace" || itsOperation=="add" || - itsOperation=="subtract"); - } - - - void Predict::show (std::ostream& os) const - { - os << "Predict " << itsName << endl; - os << " sourcedb: " << itsSourceDBName << endl; - os << " number of patches: " << itsPatchList.size() << endl; - os << " number of sources: " << itsSourceList.size() << endl; - os << " all unpolarized: " << boolalpha << itsStokesIOnly << endl; - os << " apply beam: " << boolalpha << itsApplyBeam << endl; - if (itsApplyBeam) { - os << " mode: "; - if (itsBeamMode==ApplyBeam::DEFAULT) - os<<"default"; - else if (itsBeamMode==ApplyBeam::ARRAY_FACTOR) - os<<"array_factor"; - else os<<"element"; - os << endl; - os << " use channelfreq: " << boolalpha << itsUseChannelFreq << endl; - os << " one beam per patch:" << boolalpha << itsOneBeamPerPatch << endl; - } - os << " operation: "<<itsOperation << endl; - os << " threads: "<<OpenMP::maxThreads()<<endl; - if (itsDoApplyCal) { - itsApplyCalStep.show(os); - } - } - - void Predict::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " Predict " << itsName << endl; - } - - bool Predict::process (const DPBuffer& bufin) - { - itsTimer.start(); - itsTempBuffer.copy (bufin); - itsInput->fetchUVW(bufin, itsTempBuffer, itsTimer); - itsInput->fetchWeights(bufin, itsTempBuffer, itsTimer); - - // Determine the various sizes. - //const size_t nDr = itsPatchList.size(); - const size_t nSt = info().nantenna(); - const size_t nBl = info().nbaselines(); - const size_t nCh = info().nchan(); - const size_t nCr = info().ncorr(); - const size_t nSamples = nBl * nCh * nCr; - - double time = itsTempBuffer.getTime(); - - itsTimerPredict.start(); - - nsplitUVW(itsUVWSplitIndex, itsBaselines, itsTempBuffer.getUVW(), itsUVW); - - //Set up directions for beam evaluation - StationResponse::vector3r_t refdir, tiledir; - - if (itsApplyBeam) { - for (uint thread=0;thread<OpenMP::maxThreads();++thread) { -#pragma omp critical(initialmeasuresconversion) - { - itsMeasFrames[thread].resetEpoch (MEpoch(MVEpoch(time/86400), - MEpoch::UTC)); - //Do a conversion on all threads, because converters are not - //thread safe and apparently need to be used at least once - refdir = dir2Itrf(info().delayCenter(),itsMeasConverters[thread]); - tiledir = dir2Itrf(info().tileBeamDir(),itsMeasConverters[thread]); - } - } - } - -#pragma omp parallel -{ - uint thread=OpenMP::threadNum(); - itsModelVis[thread]=dcomplex(); - itsModelVisPatch[thread]=dcomplex(); - - //When applying beam, simulate into patch vector, - Cube<dcomplex>& simulatedest=(itsApplyBeam?itsModelVisPatch[thread] - :itsModelVis[thread]); - - Simulator simulator(itsPhaseRef, nSt, nBl, nCh, itsBaselines, - info().chanFreqs(), itsUVW, simulatedest, - itsStokesIOnly); - - Patch::ConstPtr curPatch; -#pragma omp for - for (uint i=0;i<itsSourceList.size();++i) { - // Keep on predicting, only apply beam when an entire patch is done - if (itsApplyBeam && curPatch!=itsSourceList[i].second && curPatch!=0) { - addBeamToData (curPatch, time, refdir, tiledir, thread, nSamples, - itsModelVisPatch[thread].data()); - } - simulator.simulate(itsSourceList[i].first); - curPatch=itsSourceList[i].second; - } - - // Apply beam to the last patch - if (itsApplyBeam && curPatch!=0) { - addBeamToData (curPatch, time, refdir, tiledir, thread, nSamples, - itsModelVisPatch[thread].data()); - } -} - - // Add all thread model data to one buffer - itsTempBuffer.getData()=Complex(); - Complex* tdata=itsTempBuffer.getData().data(); - for (uint thread=0;thread<OpenMP::maxThreads();++thread) { - if (itsStokesIOnly) { - for (uint i=0,j=0;i<nSamples;i+=nCr,j++) { - tdata[i] += itsModelVis[thread].data()[j]; - tdata[i+nCr-1] += itsModelVis[thread].data()[j]; - } - } else { - std::transform(tdata, tdata+nSamples, itsModelVis[thread].data(), - tdata, std::plus<dcomplex>()); - } - } - - // Call ApplyCal step - if (itsDoApplyCal) { - itsApplyCalStep.process(itsTempBuffer); - itsTempBuffer=itsResultStep->get(); - tdata=itsTempBuffer.getData().data(); - } - - // Put predict result from temp buffer into the 'real' buffer - if (itsOperation=="replace") { - itsBuffer=itsTempBuffer; - } else { - itsBuffer.copy(bufin); - Complex* data=itsBuffer.getData().data(); - if (itsOperation=="add") { - std::transform(data, data+nSamples, tdata, - data, std::plus<dcomplex>()); - } else if (itsOperation=="subtract") { - std::transform(data, data+nSamples, tdata, - data, std::minus<dcomplex>()); - } - } - - itsTimerPredict.stop(); - - itsTimer.stop(); - getNextStep()->process(itsBuffer); - return false; - } - - StationResponse::vector3r_t Predict::dir2Itrf (const MDirection& dir, - MDirection::Convert& measConverter) { - const MDirection& itrfDir = measConverter(dir); - const Vector<Double>& itrf = itrfDir.getValue().getValue(); - StationResponse::vector3r_t vec; - vec[0] = itrf[0]; - vec[1] = itrf[1]; - vec[2] = itrf[2]; - return vec; - } - - void Predict::addBeamToData (Patch::ConstPtr patch, double time, - const StationResponse::vector3r_t& refdir, - const StationResponse::vector3r_t& tiledir, - uint thread, uint nSamples, dcomplex* data0) { - //Apply beam for a patch, add result to itsModelVis - MDirection dir (MVDirection(patch->position()[0], - patch->position()[1]), - MDirection::J2000); - StationResponse::vector3r_t srcdir = dir2Itrf(dir,itsMeasConverters[thread]); - - float* dummyweight = 0; - - ApplyBeam::applyBeam(info(), time, data0, dummyweight, srcdir, refdir, - tiledir, itsAntBeamInfo[thread], - itsBeamValues[thread], itsUseChannelFreq, false, - itsBeamMode, false); - - //Add temporary buffer to itsModelVis - std::transform(itsModelVis[thread].data(), - itsModelVis[thread].data()+nSamples, - data0, - itsModelVis[thread].data(), std::plus<dcomplex>()); - //threadoutput<<"thread "<<thread<<" has "<<itsModelVis[thread]<<endl; - itsModelVisPatch[thread]=dcomplex(); - } - - void Predict::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/ProgressMeter.cc b/CEP/DP3/DPPP/src/ProgressMeter.cc deleted file mode 100644 index cd8de38170d..00000000000 --- a/CEP/DP3/DPPP/src/ProgressMeter.cc +++ /dev/null @@ -1,140 +0,0 @@ -//# ProgressMeter.cc: Visual indication of a task's progress. -//# Copyright (C) 1997,2000,2001,2002 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <DPPP/ProgressMeter.h> -#include <Common/lofar_iostream.h> -#include <Common/lofar_vector.h> - -namespace LOFAR { - -// First implement a simple stderr based progress meter that just prints out -// 0%....10....20....30....40....50....60....70....80....90....100% -// cerr is better than cout because it isn't buffered usually, so the above -// will come out right away. Also, one often wants to direct "real" output -// to a file, but see informative messages on the screen. - -// If we have lots and lots of progress meters we should figure out -// a way to reclaim the following storage. -static vector<double> stderr_min, stderr_max, stderr_last; -static int stderr_creation_function(double min, double max, - const string&, const string&, - const string&, const string&, - bool) -{ - stderr_min.push_back (min); - stderr_max.push_back (max); - stderr_last.push_back (min); - cerr << "\n0%"; - return stderr_min.size(); -} - -static void stderr_update_function(int id, double value) -{ - if (id < 0 || id > int(stderr_min.size())) { - cerr << __FILE__ << " illegal id " << id << endl; - return; - } - id--; // 0-relative - int percent = int((value - stderr_min[id]) / - (stderr_max[id] - stderr_min[id]) * 100.0); - int lastpercent = int((stderr_last[id] - stderr_min[id]) / - (stderr_max[id] - stderr_min[id]) * 100.0); - if (percent > lastpercent) { - stderr_last[id] = value; - // Probably we could do this more efficiently. We need to get all the - // "missing" ..'s etc if we have jumped a lot since our last updated. - for (int i=lastpercent+1; i<=percent; i++) { - if (i%2 == 0 && i%10 != 0) { - cerr << "."; - } else if (i %10 == 0) { - cerr << i; - if (i >= 100) { - cerr << "%\n"; - } - } - } - } - -} - -int (*ProgressMeter::creation_function_p)(double, double, - const string&, const string&, - const string&, const string&, - bool) = stderr_creation_function; -void (*ProgressMeter::update_function_p)(int, double) = stderr_update_function; - -ProgressMeter::ProgressMeter() - : id_p(-1), min_p(0.0), max_p(1.0), update_every_p(1), update_count_p(0) -{ -} - -ProgressMeter::ProgressMeter(double min, double max, - const string& title, const string& subtitle, - const string& minlabel, const string& maxlabel, - bool estimateTime, int updateEvery) - : id_p(-1), min_p(min), max_p(max), update_every_p(updateEvery), - update_count_p(0) -{ - // Correct silently - if (update_every_p <= 0) { - update_every_p = 1; - } - if (creation_function_p) { - id_p = creation_function_p(min, max, title, subtitle, minlabel, maxlabel, - estimateTime); - } -} - -ProgressMeter::~ProgressMeter() -{ - update_count_p++; - update(max_p, true); -} - -void ProgressMeter::update(double value, bool force) -{ - update_count_p++; - // Always force the first one through - if (update_count_p == 1) { - force = true; - } - if((value >= min_p) && (value <= max_p)){ - if(update_count_p == 1 || force || ((update_count_p%update_every_p)== 0)) - { - // Do the update if we have a "sink" and a valid id - if (id_p > 0 && update_function_p) { - update_function_p(id_p, value); - } else { - // If we have more than one progress meter active at once - // this might look pretty confusing. We can decide what to - // do if that ever actually happens. - - } - } - } - else{ - - //cerr << "WARNING: progress meter trying to update beyond range" << endl;//The user does not need to know that the programmer does not know how to add. - - } -} - -} //# NAMESPACE LOFAR - END diff --git a/CEP/DP3/DPPP/src/ScaleData.cc b/CEP/DP3/DPPP/src/ScaleData.cc deleted file mode 100644 index 962165b421c..00000000000 --- a/CEP/DP3/DPPP/src/ScaleData.cc +++ /dev/null @@ -1,251 +0,0 @@ -//# ScaleData.cc: DPPP step class for freq-dependent scaling of the data -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: ScaleData.cc 23223 2012-12-07 14:09:42Z schoenmakers $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/ScaleData.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/ParameterValue.h> -#include <Common/StreamUtil.h> -#include <Common/LofarLogger.h> - -#include <casacore/tables/Tables/Table.h> -#include <casacore/tables/Tables/TableRecord.h> -#include <casacore/tables/Tables/ScalarColumn.h> -#include <casacore/tables/Tables/ArrayColumn.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Utilities/Regex.h> - -#include <iostream> - - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - ScaleData::ScaleData (DPInput*, - const ParameterSet& parset, - const string& prefix) - : itsName (prefix), - itsScaleSizeGiven (False), - itsScaleSize (False), - itsStationExp (parset.getStringVector(prefix+"stations", - vector<string>())), - itsCoeffStr (parset.getStringVector(prefix+"coeffs", - vector<string>())) - { - ASSERTSTR (itsStationExp.size() == itsCoeffStr.size(), - "ScaleData parameters stations and coeffs differ in size"); - // Determine if scaling for size is explicitly given. - if (parset.isDefined (prefix+"scalesize")) { - itsScaleSizeGiven = True; - itsScaleSize = parset.getBool (prefix+"scalesize"); - } - } - - ScaleData::~ScaleData() - {} - - void ScaleData::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - // Find out if the observation has LBA or HBA data. - // Add the default factors to itsCoeffStr as being valid for all stations. - // In that way they will be used if a station matches no others. - string antennaSet (infoIn.antennaSet()); - itsStationExp.push_back ("*"); - vector<double> defCoeff(5); - uint nNominal = 0; - if (antennaSet.substr(0,3) == "LBA") { - nNominal = 48; - itsCoeffStr.push_back ("[1.02306755e+06, -7.31426342e+04," - " 2.05537660e+03, -2.61310245e+01," - " 1.26031118e-01]"); - } else { - nNominal = 24; - itsCoeffStr.push_back ("[2.35166277e+05, -6.20793100e+03," - " 6.22685124e+01, -2.78418826e-01," - " 4.67920578e-04]"); - } - // Get the frequencies. - const Vector<double>& freqs = infoIn.chanFreqs(); - // Convert the coefficients to scale factors per freq per station regex. - vector<vector<double> > scaleVec(itsStationExp.size()); - vector<Regex> stationRegex(itsStationExp.size()); - for (uint i=0; i<scaleVec.size(); ++i) { - // Convert the station string to a proper Regex object. - stationRegex[i] = Regex(Regex::fromPattern(itsStationExp[i])); - // Convert coefficients from string to double. - ParameterValue coeffPar(itsCoeffStr[i]); - vector<double> coeff (coeffPar.getDoubleVector()); - ASSERTSTR (coeff.size() > 0, "A ScaleData coeffs vector is empty"); - vector<double>& scales = scaleVec[i]; - scales.reserve (freqs.size()); - // Evaluate the polynomial for each frequency giving the scale factors. - for (uint j=0; j<freqs.size(); ++j) { - double fact = coeff[coeff.size() -1]; - for (uint k=coeff.size()-1; k>0; --k) { - fact *= freqs[j] / 1e6; // use freq in MHz - fact += coeff[k-1]; - } - scales.push_back (fact); - } - } - // If needed, find the nr of tiles/dipoles used for each station and - // fill the size scale factors. - uint nant = infoIn.antennaNames().size(); - vector<double> extraFactors(nant, 1.); - if (itsScaleSize || !itsScaleSizeGiven) { - fillSizeScaleFactors (nNominal, extraFactors); - ASSERTSTR (extraFactors.size() == nant, - "Maybe stations have been added before doing the scaling; " - "that should not be done"); - } - // Find the scale factors for each station. - // The first matching regex is used. - // The nr of tiles in use gives an extra scale factor. - itsStationFactors.reserve (nant); - for (uint i=0; i<nant; ++i) { - for (uint j=0; j<stationRegex.size(); ++j) { - if (infoIn.antennaNames()[i].matches (stationRegex[j])) { - itsStationFactors.push_back (scaleVec[j]); - // If needed, scale with the nr of dipoles/tiles actually used. - // Do that if explicitly told so or if default coeffs are used. - if (itsScaleSize || - (!itsScaleSizeGiven && j == stationRegex.size()-1)) { - for (uint k=0; k<itsStationFactors[i].size(); ++k) { - itsStationFactors[i][k] *= extraFactors[i]; - } - } - break; - } - } - } - ASSERT (itsStationFactors.size() == nant); - // Now calculate the factors per baseline,freq,pol. - uint nb = infoIn.nbaselines(); - uint nf = freqs.size(); - uint nc = infoIn.ncorr(); - itsFactors.resize (nc, nf, nb); - double* factPtr = itsFactors.data(); - for (uint i=0; i<nb; ++i) { - const vector<double>& f1 = itsStationFactors[infoIn.getAnt1()[i]]; - const vector<double>& f2 = itsStationFactors[infoIn.getAnt2()[i]]; - for (uint j=0; j<nf; ++j) { - double fact = sqrt(f1[j] * f2[j]); - for (uint k=0; k<nc; ++k) { - *factPtr++ = fact; - } - } - } - } - - void ScaleData::show (std::ostream& os) const - { - os << "ScaleData " << itsName << std::endl; - os << " stations: " << itsStationExp << std::endl; - os << " coeffs: " << itsCoeffStr << std::endl; - os << " scalesize "; - if (itsScaleSizeGiven) { - os << itsScaleSize; - } else if (itsCoeffStr.size() == 1) { - os << True; - } else { - os << True << " for stations using default coeffs, otherwise " - << False; - } - os << endl; - os << " Scale factors per station/frequency:" << endl; - for (uint i=0; i<itsStationFactors.size(); ++i) { - os << " " << getInfo().antennaNames()[i] << ' ' - << itsStationFactors[i] << endl; - } - } - - void ScaleData::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " ScaleData " << itsName << endl; - } - - bool ScaleData::process (const DPBuffer& buf) - { - itsTimer.start(); - // Apply the scale factors. - DPBuffer bufNew(buf); - const IPosition shp = itsFactors.shape(); - ASSERT (buf.getData().shape() == shp); - // Multiply the data and factors giving a new data array. - Array<Complex> data(shp); - arrayContTransform (static_cast<const Array<Complex>&>(buf.getData()), - static_cast<const Array<double>&>(itsFactors), - data, - casacore::Multiplies<Complex,double,Complex>()); - bufNew.setData (data); - itsTimer.stop(); - getNextStep()->process (bufNew); - return true; - } - - void ScaleData::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - - void ScaleData::fillSizeScaleFactors (uint nNominal, vector<double>& fact) - { - Table ms(getInfo().msName()); - ASSERTSTR (ms.keywordSet().isDefined ("LOFAR_ANTENNA_FIELD"), - "ScaleData: subtable LOFAR_ANTENNA_FIELD is missing, but " - "is needed unless scalesize=false is given"); - Table tab(ms.keywordSet().asTable ("LOFAR_ANTENNA_FIELD")); - // Get nr of antennae from the table to be sure it matches the - // contents of LOFAR_ANTENNA_FIELD. Later it is checked if it matches - // the actual nr of antennae. - uint nant = ms.keywordSet().asTable("ANTENNA").nrow(); - fact.resize (nant); - for (uint i=0; i<nant; ++i) { - fact[i] = 0; - } - // Count the nr of used tiles (for which ELEMENT_FLAG is false). - // A station can have multiple fields (e.g. both ears for HBA_JOINED). - ROScalarColumn<Int> antId (tab, "ANTENNA_ID"); - ROArrayColumn<Bool> elemFlag (tab, "ELEMENT_FLAG"); - for (uint i=0; i<tab.nrow(); ++i) { - fact[antId(i)] += 0.5*nfalse(elemFlag(i)); // X and Y are separate - } - // Determine the scale factor. - for (uint i=0; i<nant; ++i) { - fact[i] = nNominal / fact[i]; - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/Simulate.cc b/CEP/DP3/DPPP/src/Simulate.cc deleted file mode 100644 index c6346a359ea..00000000000 --- a/CEP/DP3/DPPP/src/Simulate.cc +++ /dev/null @@ -1,165 +0,0 @@ -//# Simulate.cc: Simulate visibilities for a patch of sources. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/Simulate.h> -#include <Common/LofarLogger.h> - -// Only required for rotateUVW(). -#include <DPPP/PhaseShift.h> -#include <casacore/casa/Arrays/Vector.h> -#include <casacore/casa/Arrays/Matrix.h> -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/Arrays/MatrixMath.h> - -using namespace casacore; - -namespace LOFAR -{ -namespace DPPP -{ - -vector<int> nsetupSplitUVW (uint nant, const Vector<int>& ant1, - const Vector<int>& ant2) -{ - // Get the indices of the baselines needed to split the baseline UVWs into - // station UVWs. They are in such an order that the UVW of a station is known - // before used in another baseline to derive the UVW of the other station. - // It can handle cases where baselines occur in disjoint station groups - // like 0-1, 0-2, 1-2 and 3-4, 4-5, 5-6. - // Note that the first station of a group gets UVW=0. All other station UVWs - // are relative to it using the baseline UVWs. - // Also note that nr of groups can be derived from the size of the returned - // vector (because it contains no entry for the first antenna in a group). - vector<int> uvwbl; - uvwbl.reserve (nant); - Block<bool> known(nant, false); - uint nset = 0; - // Loop until all stations are set. - while (nset < nant) { - // Disjoint groups might exist, so keep a vector containing related antennae - // which are members of the same group. - vector<uint> members(1); - // Set first unset station as the reference station (which gets UVW=0). - for (uint i=0; i<nant; ++i) { - if (!known[i]) { - members[0] = i; - known[i] = true; - ++nset; - break; - } - } - // Loop through all members in the group. - // Note that new members can be appended in this loop. - for (uint j=0; j<members.size(); ++j) { - int refst = members[j]; - // Find all stations having a baseline with the reference station. - for (uint i=0; i<ant1.size(); ++i) { - int a1 = ant1[i]; - int a2 = ant2[i]; - // Only take baselines into account for which one station is known, - // so the other can be derived from it. - // The unknown station becomes member of the group. - if (known[a1] != known[a2]) { - if (a1 == refst) { - uvwbl.push_back (i); - members.push_back (a2); - known[a2] = true; - ++nset; - } else if (a2 == refst) { - uvwbl.push_back (-(i+1)); - members.push_back (a1); - known[a1] = true; - ++nset; - } - } - } - } - } - return uvwbl; -} - -void nsplitUVW (const vector<int>& blindex, - const vector<Baseline>& baselines, - const Matrix<double>& uvwbl, - Matrix<double>& uvwant) -{ - uvwant = 0.; - double* uvwl; - double* uvwr; - const double* uvwb; - for (uint i=0; i<blindex.size(); ++i) { - int inx = blindex[i]; - if (inx < 0) { - // Ant2 is known. - inx = -inx - 1; - //ASSERT(uint(uvwant.shape()[1])>baselines[inx].first); - //ASSERT(uint(uvwant.shape()[1])>baselines[inx].second); - uvwl = uvwant.data() + 3 * baselines[inx].first; - uvwr = uvwant.data() + 3 * baselines[inx].second; - uvwb = uvwbl.data() + 3*inx; - for (int j=0; j<3; ++j) { - uvwl[j] = uvwr[j] - uvwb[j]; - } - } else { - //ASSERT(uint(uvwant.shape()[1])>baselines[inx].first); - //ASSERT(uint(uvwant.shape()[1])>baselines[inx].second); - // Ant1 is known. - uvwl = uvwant.data() + 3 * baselines[inx].first; - uvwr = uvwant.data() + 3 * baselines[inx].second; - uvwb = uvwbl.data() + 3*inx; - for (int j=0; j<3; ++j) { - uvwr[j] = uvwl[j] + uvwb[j]; - } - } - } -} - - -void rotateUVW(const Position &from, const Position &to, size_t nUVW, - double *uvw) -{ - casacore::Matrix<double> oldUVW(3,3); - casacore::Matrix<double> newUVW(3,3); - PhaseShift::fillTransMatrix(oldUVW, from[0], from[1]); - PhaseShift::fillTransMatrix(newUVW, to[0], to[1]); - - casacore::Matrix<double> tmp(casacore::product(casacore::transpose(newUVW), oldUVW)); - const double *R = tmp.data(); - - for(size_t i = 0; i < 3*nUVW; i+=3) - { - // Compute rotated UVW. - double u = uvw[i+0] * R[0] + uvw[i+1] * R[3] + uvw[i+2] * R[6]; - double v = uvw[i+0] * R[1] + uvw[i+1] * R[4] + uvw[i+2] * R[7]; - double w = uvw[i+0] * R[2] + uvw[i+1] * R[5] + uvw[i+2] * R[8]; - - uvw[i+0] = u; - uvw[i+1] = v; - uvw[i+2] = w; - - // Move to next station. - } // Stations. -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/Simulator.cc b/CEP/DP3/DPPP/src/Simulator.cc deleted file mode 100644 index 9a431294b35..00000000000 --- a/CEP/DP3/DPPP/src/Simulator.cc +++ /dev/null @@ -1,312 +0,0 @@ -//# Simulator.cc: Compute visibilities for different model components types -//# (implementation of ModelComponentVisitor). -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/Simulator.h> -#include <DPPP/GaussianSource.h> -#include <DPPP/PointSource.h> -#include <casacore/casa/BasicSL/Constants.h> -#include <Common/StreamUtil.h> /// - -namespace LOFAR -{ -namespace DPPP -{ - -namespace -{ -// Compute LMN coordinates of \p position relative to \p reference. -// -// \param[in] reference -// Reference position on the celestial sphere. -// \param[in] position -// Position of interest on the celestial sphere. -// \param[in] lmn -// Pointer to a buffer of (at least) length three into which the computed LMN -// coordinates will be written. -void radec2lmn(const Position &reference, const Position &position, - double* lmn); - -void phases(size_t nStation, size_t nChannel, const double* lmn, - const casacore::Matrix<double>& uvw, const casacore::Vector<double>& freq, - Simulator::Matrix<dcomplex>& shift); - -void spectrum(const PointSource &component, size_t nChannel, - const casacore::Vector<double>& freq, - Simulator::Matrix<dcomplex>& spectrum, bool stokesIOnly); -} // Unnamed namespace. - -Simulator::Simulator(const Position &reference, size_t nStation, - size_t nBaseline, size_t nChannel, const casacore::Vector<Baseline>& baselines, - const casacore::Vector<double>& freq, const casacore::Matrix<double>& uvw, - casacore::Cube<dcomplex>& buffer, bool stokesIOnly) - : itsReference(reference), - itsNStation(nStation), - itsNBaseline(nBaseline), - itsNChannel(nChannel), - itsStokesIOnly(stokesIOnly), - itsBaselines(baselines), - itsFreq(freq), - itsUVW(uvw), - itsBuffer(buffer), - itsShiftBuffer(), - itsSpectrumBuffer() -{ - itsShiftBuffer.resize(nChannel,nStation); - if (stokesIOnly) { - itsSpectrumBuffer.resize(1,nChannel); - } else { - itsSpectrumBuffer.resize(4,nChannel); - } -} - -void Simulator::simulate(const ModelComponent::ConstPtr &component) -{ - component->accept(*this); -} - - -void Simulator::visit(const PointSource &component) { - // Compute LMN coordinates. - double lmn[3]; - radec2lmn(itsReference, component.position(), lmn); - - // Compute station phase shifts. - phases(itsNStation, itsNChannel, lmn, itsUVW, itsFreq, itsShiftBuffer); - - // Compute component spectrum. - spectrum(component, itsNChannel, itsFreq, itsSpectrumBuffer, itsStokesIOnly); - - // Set number of correlations - int nCorr = 4; - if (itsStokesIOnly) { - nCorr = 1; - } - - // Compute visibilities. -#pragma omp parallel for - for(size_t bl = 0; bl < itsNBaseline; ++bl) { - dcomplex* buffer=&itsBuffer(0,0,bl); - const size_t p = itsBaselines[bl].first; - const size_t q = itsBaselines[bl].second; - - if(p == q) { - buffer+=itsNChannel*nCorr; - } else { - const dcomplex *shiftP = &(itsShiftBuffer(0,p)); - const dcomplex *shiftQ = &(itsShiftBuffer(0,q)); - const dcomplex *spectrum = itsSpectrumBuffer.data(); - - if (itsStokesIOnly) { - for (size_t ch = 0; ch < itsNChannel; ++ch) - { - // Compute baseline phase shift. - // Compute visibilities. - *buffer++ += (*shiftQ) * conj(*shiftP) * (*spectrum++); - ++shiftP; - ++shiftQ; - } // Channels. - } else { - for(size_t ch = 0; ch < itsNChannel; ++ch) - { - // Compute baseline phase shift. - const dcomplex blShift = (*shiftQ) * conj(*shiftP); - ++shiftP; - ++shiftQ; - - // Compute visibilities. - *buffer++ += blShift * (*spectrum++); - *buffer++ += blShift * (*spectrum++); - *buffer++ += blShift * (*spectrum++); - *buffer++ += blShift * (*spectrum++); - } // Channels. - } - } - } // Baselines. -} - -void Simulator::visit(const GaussianSource &component) -{ - // Compute LMN coordinates. - double lmn[3]; - radec2lmn(itsReference, component.position(), lmn); - - // Compute station phase shifts. - phases(itsNStation, itsNChannel, lmn, itsUVW, itsFreq, itsShiftBuffer); - - // Compute component spectrum. - spectrum(component, itsNChannel, itsFreq, itsSpectrumBuffer, itsStokesIOnly); - - // Convert position angle from North over East to the angle used to - // rotate the right-handed UV-plane. - // TODO: Can probably optimize by changing the rotation matrix instead. - const double phi = casacore::C::pi_2 + component.positionAngle() + casacore::C::pi; - const double cosPhi = cos(phi); - const double sinPhi = sin(phi); - - // Take care of the conversion of axis lengths from FWHM in radians to - // sigma. - // TODO: Shouldn't the projection from the celestial sphere to the - // UV-plane be taken into account here? - const double fwhm2sigma = 1.0 / (2.0 * std::sqrt(2.0 * std::log(2.0))); - const double uScale = component.majorAxis() * fwhm2sigma; - const double vScale = component.minorAxis() * fwhm2sigma; - - // Set number of correlations - int nCorr = 4; - if (itsStokesIOnly) { - nCorr = 1; - } - - for(size_t bl = 0; bl < itsNBaseline; ++bl) - { - dcomplex* buffer=&itsBuffer(0,0,bl); - const size_t p = itsBaselines[bl].first; - const size_t q = itsBaselines[bl].second; - - if(p == q) { - buffer+=itsNChannel*nCorr; - } else { - double u = itsUVW(0,q); - double v = itsUVW(1,q); - - u -= itsUVW(0,p); - v -= itsUVW(1,p); - - // Rotate (u, v) by the position angle and scale with the major - // and minor axis lengths (FWHM in rad). - const double uPrime = uScale * (u * cosPhi - v * sinPhi); - const double vPrime = vScale * (u * sinPhi + v * cosPhi); - - // Compute uPrime^2 + vPrime^2 and pre-multiply with -2.0 * PI^2 - // / C^2. - const double uvPrime = (-2.0 * casacore::C::pi * casacore::C::pi) - * (uPrime * uPrime + vPrime * vPrime); - - const dcomplex *shiftP = &(itsShiftBuffer(0,p)); - const dcomplex *shiftQ = &(itsShiftBuffer(0,q)); - const dcomplex *spectrum = itsSpectrumBuffer.data(); - - if (itsStokesIOnly) { - for (size_t ch = 0; ch < itsNChannel; ++ch) - { - // Compute baseline phase shift. - dcomplex blShift = (*shiftQ) * conj(*shiftP); - ++shiftP; - ++shiftQ; - - const double ampl = exp((itsFreq[ch] * itsFreq[ch]) - / (casacore::C::c * casacore::C::c) * uvPrime); - - blShift *= ampl; - - // Compute visibilities. - *buffer++ += blShift * (*spectrum++); - } // Channels. - } else { - for(size_t ch = 0; ch < itsNChannel; ++ch) - { - // Compute baseline phase shift. - dcomplex blShift = (*shiftQ) * conj(*shiftP); - ++shiftP; - ++shiftQ; - - const double ampl = exp((itsFreq[ch] * itsFreq[ch]) - / (casacore::C::c * casacore::C::c) * uvPrime); - - blShift *= ampl; - - // Compute visibilities. - *buffer++ += blShift * (*spectrum++); - *buffer++ += blShift * (*spectrum++); - *buffer++ += blShift * (*spectrum++); - *buffer++ += blShift * (*spectrum++); - } // Channels. - } - } - } // Baselines. -} - -namespace -{ -inline void radec2lmn(const Position &reference, const Position &position, - double* lmn) -{ - const double dRA = position[0] - reference[0]; - const double pDEC = position[1]; - const double rDEC = reference[1]; - const double cDEC = cos(pDEC); - - const double l = cDEC * sin(dRA); - const double m = sin(pDEC) * cos(rDEC) - cDEC * sin(rDEC) * cos(dRA); - - lmn[0] = l; - lmn[1] = m; - lmn[2] = sqrt(1.0 - l * l - m * m); -} - -// Compute station phase shifts. -inline void phases(size_t nStation, size_t nChannel, const double* lmn, - const casacore::Matrix<double>& uvw, - const casacore::Vector<double>& freq, - Simulator::Matrix<dcomplex>& shift) -{ - dcomplex* shiftdata=shift.data(); - for(size_t st = 0; st < nStation; ++st) - { - const double phase = casacore::C::_2pi * (uvw(0,st) * lmn[0] - + uvw(1,st) * lmn[1] + uvw(2,st) * (lmn[2] - 1.0)); - - for(size_t ch = 0; ch < nChannel; ++ch) - { - const double chPhase = phase * freq[ch] / casacore::C::c; - *shiftdata = dcomplex(cos(chPhase), sin(chPhase)); - ++shiftdata; - } // Channels. - } // Stations. -} - - -// Compute component spectrum. -inline void spectrum(const PointSource &component, size_t nChannel, - const casacore::Vector<double>& freq, - Simulator::Matrix<dcomplex>& spectrum, bool stokesIOnly=false) -{ - for(size_t ch = 0; ch < nChannel; ++ch) - { - Stokes stokes = component.stokes(freq[ch]); - - if (stokesIOnly) { - spectrum(0,ch) = dcomplex(stokes.I, 0.0); - } else { - spectrum(0,ch) = dcomplex(stokes.I + stokes.Q, 0.0); - spectrum(1,ch) = dcomplex(stokes.U, stokes.V); - spectrum(2,ch) = dcomplex(stokes.U, -stokes.V); - spectrum(3,ch) = dcomplex(stokes.I - stokes.Q, 0.0); - } - } -} -} // Unnamed namespace. - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/SolTab.cc b/CEP/DP3/DPPP/src/SolTab.cc deleted file mode 100644 index b96b4361fb8..00000000000 --- a/CEP/DP3/DPPP/src/SolTab.cc +++ /dev/null @@ -1,560 +0,0 @@ -#include <lofar_config.h> -#include <DPPP/H5Parm.h> -#include <DPPP/GridInterpolate.h> -#include <Common/Exception.h> -#include <Common/StringUtil.h> -#include <Common/LofarLogger.h> -#include <stdlib.h> -#include <cstring> -#include <iostream> -#include <ctime> -#include <iomanip> - -#include <hdf5.h> - -using namespace std; - -namespace LOFAR { - H5Parm::SolTab::SolTab(H5::Group group, - const string& type, - const vector<AxisInfo> axes): - H5::Group(group), - _type(type), - _axes(axes) - { - H5::Attribute attr = createAttribute("TITLE", - H5::StrType(H5::PredType::C_S1, _type.size()), - H5::DataSpace()); - attr.write(H5::StrType(H5::PredType::C_S1, _type.size()), _type); - addVersionStamp(*this); - } - - H5Parm::SolTab::SolTab(H5::Group& group): - H5::Group(group) - { - // Read the type from the "TITLE" attribute - H5::Attribute typeattr = openAttribute("TITLE"); - hsize_t typenamelen = typeattr.getDataType().getSize(); - char typecstr[typenamelen+1]; - typecstr[typenamelen]='\0'; - typeattr.read(typeattr.getDataType(), &typecstr); - _type = typecstr; - - readAxes(); - } - - H5Parm::SolTab::~SolTab() { - } - - H5Parm::AxisInfo H5Parm::SolTab::getAxis(uint i) const { - return _axes[i]; - } - - H5Parm::AxisInfo H5Parm::SolTab::getAxis(const string& axisName) const { - for (uint i=0; i<_axes.size(); ++i) { - if (_axes[i].name == axisName) { - return _axes[i]; - } - } - THROW(Exception, "Axis "<<axisName<<" does not exist in "<<getName()); - } - - bool H5Parm::SolTab::hasAxis(const string& axisName) { - for (size_t i=0; i<_axes.size(); ++i) { - if (_axes[i].name==axisName) - return true; - } - return false; - } - - size_t H5Parm::SolTab::getAxisIndex(const string& axisName) { - for (uint i=0; i<_axes.size(); ++i) { - if (_axes[i].name == axisName) { - return i; - } - } - THROW(Exception, "Axis "<<axisName<<" does not exist in "<<getName()); - } - - void H5Parm::SolTab::setValues(const vector<double>& vals, - const vector<double>& weights, - const string& history) { - // Convert axes to comma separated string, fill dims - size_t expectedsize = 1; - string axesstr = _axes[0].name; - vector<hsize_t> dims(_axes.size()); - for (uint i=0; i<_axes.size(); ++i) { - dims[i] = _axes[i].size; - expectedsize *= dims[i]; - if (i>0) { - axesstr += ","+_axes[i].name; - } - } - - ASSERTSTR(expectedsize == vals.size(), "Values for H5Parm do not have the expected size: they have size "<<vals.size()<<", expected is "<<expectedsize); - - H5::DataSpace dataspace(dims.size(), &(dims[0]), NULL); - H5::DataSet dataset = createDataSet("val", H5::PredType::IEEE_F64LE, - dataspace); - - dataset.write(&(vals[0]), H5::PredType::IEEE_F64LE); - - H5::Attribute attr = dataset.createAttribute("AXES", - H5::StrType(H5::PredType::C_S1, axesstr.size()), - H5::DataSpace()); - attr.write(H5::StrType(H5::PredType::C_S1, axesstr.size()), axesstr); - - // Write history if given - if (history.size()>0) { - time_t rawtime; - struct tm* timeinfo; - char timebuffer[80]; - - time(&rawtime); - timeinfo = localtime(&rawtime); - - strftime(timebuffer, sizeof(timebuffer), "%d-%m-%Y %H:%M:%S", timeinfo); - - string historyline = string(timebuffer) + ": " + history; - - H5::StrType historytype = H5::StrType(H5::PredType::C_S1, - historyline.size()); - H5::Attribute attr = dataset.createAttribute("HISTORY000", - historytype, - H5::DataSpace()); - attr.write(historytype, historyline); - } - - // Add weights - // Do not use half float data type because typical weights range can be 1.e-14 - /* - hid_t halffloat = H5Tcopy(H5T_IEEE_F32BE); - H5Tset_fields(halffloat, 15, 10, 5, 0, 10); - H5Tset_size(halffloat, 2); - H5Tset_ebias(halffloat, 15); - H5Tlock(halffloat); - */ - H5::DataSet weightset = createDataSet("weight", H5::PredType::IEEE_F32LE, - dataspace); - - // If weights are empty, write ones everywhere - if (weights.empty()) { - vector<double> fullweights(vals.size(), 1); - weightset.write(&(fullweights[0]), H5::PredType::IEEE_F64LE); - } else { - weightset.write(&(weights[0]), H5::PredType::IEEE_F64LE); - } - - attr = weightset.createAttribute("AXES", - H5::StrType(H5::PredType::C_S1, axesstr.size()), - H5::DataSpace()); - attr.write(H5::StrType(H5::PredType::C_S1, axesstr.size()), axesstr); - } - - void H5Parm::SolTab::setComplexValues(const vector<complex<double> >& vals, - const vector<double>& weights, - bool toAmplitudes, const string& history) { - // Convert values to real numbers by taking amplitude or argument - vector<double> realvals(vals.size()); - - if (toAmplitudes) { - transform(vals.begin(), vals.end(), realvals.begin(), takeAbs); - } else { // Phase only - transform(vals.begin(), vals.end(), realvals.begin(), takeArg); - } - - setValues(realvals, weights, history); - } - - void H5Parm::SolTab::readAxes() { - H5::DataSet val; - try { - val = openDataSet("val"); - } catch (H5::GroupIException& e) { - THROW(Exception, "SolTab "<<getName()<<" has no values"); - } - - H5::Attribute axesattr; - try { - axesattr = val.openAttribute("AXES"); - } catch (H5::AttributeIException& e) { - THROW(Exception, "Values of SolTab "<<getName()<<" has no AXIS attribute"); - } - - hsize_t axesstrlen = axesattr.getDataType().getSize(); - char axescstr[axesstrlen+1]; - axescstr[axesstrlen]='\0'; - axesattr.read(axesattr.getDataType(), &axescstr); - vector<string> axesnames = StringUtil::tokenize(axescstr,","); - - uint ndims = axesnames.size(); - - // Get number of dimensions and size of all dimensions - H5::DataSpace ds = val.getSpace(); - ASSERT (ds.getSimpleExtentNdims() == int(ndims)); - hsize_t dims_out[ndims]; - ds.getSimpleExtentDims(dims_out); - - for (uint i=0; i<axesnames.size(); ++i) { - AxisInfo a(axesnames[i], dims_out[i]); - _axes.push_back(a); - } - } - - string H5Parm::SolTab::getName() const { - size_t len = H5Iget_name(getId(),NULL,0); - char buffer[len]; - H5Iget_name(getId(),buffer,len+1); - // Strip leading / - return buffer+1; - } - - vector<double> H5Parm::SolTab::getValuesOrWeights( - const string& valOrWeight, - const string& antName, - const vector<double>& times, - const vector<double>& freqs, - uint pol, uint dir) { - vector<double> res(times.size()*freqs.size()); - - uint startTimeSlot = 0; - uint ntimeH5 = 1; - - ASSERT(!freqs.empty()); - uint startFreq = 0; - uint nfreqH5 = 1; - - vector<double> interpolated(times.size()*freqs.size()); - - vector<double> freqAxisH5(1, 0.); - vector<double> timeAxisH5(1, 0.); - if (hasAxis("time")) { - timeAxisH5 = getRealAxis("time"); - ntimeH5 = timeAxisH5.size(); - } - if (hasAxis("freq")) { - vector<double> fullFreqAxisH5 = getRealAxis("freq"); - startFreq = getFreqIndex(freqs[0]); - nfreqH5 = getFreqIndex(freqs[freqs.size()-1])-startFreq+1; - freqAxisH5 = vector<double>(fullFreqAxisH5.begin()+startFreq, fullFreqAxisH5.begin()+startFreq+nfreqH5); - } - - vector<double> h5values = getValuesOrWeights(valOrWeight, - antName, - startTimeSlot, ntimeH5, 1, - startFreq, nfreqH5, 1, - pol, dir); - - gridNearestNeighbor(timeAxisH5, freqAxisH5, - times, freqs, - &(h5values[0]), - &(interpolated[0])); - - return interpolated; - } - - vector<double> H5Parm::SolTab::getValuesOrWeights( - const string& valOrWeight, - const string& antName, - uint starttimeslot, uint ntime, uint timestep, - uint startfreq, uint nfreq, uint freqstep, - uint pol, uint dir) { - vector<double> res(ntime*nfreq); - H5::DataSet val = openDataSet(valOrWeight); - - // Set offsets and strides - hsize_t memdims[_axes.size()]; - hsize_t offset[_axes.size()]; - hsize_t count[_axes.size()]; - hsize_t stride[_axes.size()]; - - for (uint i=0; i<_axes.size(); ++i) { - stride[i] = 1; - count[i] = 1; - memdims[i] = 1; - if (_axes[i].name=="time") { - offset[i] = starttimeslot; - stride[i] = timestep; - count[i] = ntime; - memdims[i] = ntime; - } else if (_axes[i].name=="freq") { - offset[i] = startfreq; - stride[i] = freqstep; - count[i] = nfreq; - memdims[i] = nfreq; - } else if (_axes[i].name=="ant") { - offset[i] = getAntIndex(antName); - } else if (_axes[i].name=="dir") { - offset[i] = dir; - } else if (_axes[i].name=="pol") { - offset[i] = pol; - } else { - ASSERT(_axes[i].size == 1); - offset[i] = 0; - } - } - - H5::DataSpace dataspace = val.getSpace(); - - dataspace.selectHyperslab(H5S_SELECT_SET, count, offset, stride); - - // Setup memory dataspace - H5::DataSpace memspace(_axes.size(), memdims); - try { - val.read(&(res[0]), H5::PredType::NATIVE_DOUBLE, memspace, dataspace); - } catch (H5::DataSetIException& e) { - e.printError(); - THROW(Exception, "Could not read data"); - } - return res; - } - - void H5Parm::SolTab::setAntennas(const vector<string>& solAntennas) { - // TODO: assert that antenna is present in antenna table in solset - hsize_t dims[1]; - dims[0]=solAntennas.size(); - - // Create dataset - H5::DataSpace dataspace(1, dims, NULL); - H5::DataSet dataset = createDataSet("ant", H5::StrType(H5::PredType::C_S1, 16), dataspace); - - // Prepare data - char antArray[solAntennas.size()][16]; - for (uint i=0; i<solAntennas.size(); ++i) { - strncpy(antArray[i], solAntennas[i].c_str(), 16); - } - - dataset.write(antArray, H5::StrType(H5::PredType::C_S1, 16)); - } - - void H5Parm::SolTab::setAxisMeta(const string& metaName, - size_t nChar, - const vector<string>& metaVals) { - hsize_t dims[1]; // Only a name - dims[0]=metaVals.size(); - - // Create dataset - H5::DataSpace dataspace(1, dims, NULL); - H5::DataSet dataset = createDataSet(metaName, - H5::StrType(H5::PredType::C_S1, nChar), - dataspace); - - if (metaVals.size()>0) { - // Prepare data - char srcArray[metaVals.size()][nChar]; - for (uint i=0; i<metaVals.size(); ++i) { - strncpy(srcArray[i], metaVals[i].c_str(), nChar); - } - - dataset.write(srcArray, H5::StrType(H5::PredType::C_S1, nChar)); - } - } - - void H5Parm::SolTab::setSources(const vector<string>& solSources) { - setAxisMeta("dir", 128, solSources); - } - - void H5Parm::SolTab::setPolarizations(const vector<string>& polarizations) { - setAxisMeta("pol", 2, polarizations); - } - - void H5Parm::SolTab::setFreqs(const vector<double>& freqs) { - setAxisMeta("freq", freqs); - } - - void H5Parm::SolTab::setTimes(const vector<double>& times) { - setAxisMeta("time", times); - } - - - void H5Parm::SolTab::setAxisMeta(const string& metaName, - const vector<double>& metaVals) { - hsize_t dims[1]; - dims[0]=metaVals.size(); - - // Create dataset - H5::DataSpace dataspace(1, dims, NULL); - H5::DataSet dataset = createDataSet(metaName, - H5::PredType::IEEE_F64LE, dataspace); - - if (metaVals.size() > 0) { - dataset.write(&(metaVals[0]), H5::PredType::IEEE_F64LE); - } - } - - hsize_t H5Parm::SolTab::getAntIndex(const string& antName) { - return getNamedIndex(_antMap, "ant", antName); - } - - void H5Parm::SolTab::fillCache(map<string, hsize_t>& cache, - const string& tableName) { - H5::DataSet dataset; - H5::DataSpace dataspace; - try { - dataset = openDataSet(tableName); - dataspace = dataset.getSpace(); - } catch (H5::GroupIException& e) { - THROW(Exception, "SolTab has no table "<<tableName); - } - ASSERT(dataspace.getSimpleExtentNdims()==1); - hsize_t dims[1]; - dataspace.getSimpleExtentDims(dims); - - // TODO: assert that DataType is String - hsize_t strLen = dataset.getDataType().getSize(); - - char elNames[strLen*dims[0]]; - dataset.read(elNames, H5::StrType(H5::PredType::C_S1, strLen)); - - for (hsize_t elNum=0; elNum<dims[0];++elNum) { - char elNamecstr[strLen+1]; - copy(elNames+elNum*strLen,elNames+(elNum+1)*strLen, elNamecstr); - elNamecstr[strLen]='\0'; - cache[elNamecstr]=elNum; - } - } - - hsize_t H5Parm::SolTab::getNamedIndex(map<string, hsize_t>& cache, - const string& tableName, - const string& elementName) { - // Initialize _antMap on first use - if (cache.empty()) { - fillCache(cache, tableName); - } - map<string, hsize_t>::iterator it = cache.find(elementName); - if (it == cache.end()) { - THROW(Exception, "SolTab has no element "<<elementName << - " in "<<tableName); - } - return cache.find(elementName)->second; - } - - hsize_t H5Parm::SolTab::getFreqIndex(double freq) const { - if (getAxis("freq").size == 1) { - return 0; - } - vector<double> freqs = getRealAxis("freq"); - - double freqInterval = getFreqInterval(0); - - // Half a cell width before the first frequency - if (abs(freqs[0]-freq)<0.501*freqInterval) { - return 0; - } - // No assumptions on regular spacing here - for (size_t i = 0; i<freqs.size()-1; ++i) { - if (freqs[i]-0.001<=freq && freq<freqs[i+1]) { // Some tolerance - // Nearest neighbor: i or i+1 - if (freq-freqs[i] < freqs[i+1]-freq) { - return i; - } else { - return i+1; - } - } - } - - // Half a cell width after the last frequency - freqInterval = getFreqInterval(freqs.size()-2); - if (abs(freqs[freqs.size()-1]-freq)<0.501*freqInterval) { - return freqs.size()-1; - } - - THROW(Exception,"Frequency "<<fixed<<freq<<" not found in "<<getName()); - return 0; - } - - vector<double> H5Parm::SolTab::getRealAxis(const string& axisname) const { - H5::DataSet dataset; - H5::DataSpace dataspace; - try { - dataset = openDataSet(axisname); - dataspace = dataset.getSpace(); - } catch (H5::GroupIException& e) { - THROW(Exception, "SolTab "<<getName()<<" has no axis '"<<axisname<<"'"); - } - ASSERT(dataspace.getSimpleExtentNdims()==1); - - hsize_t dims[1]; - dataspace.getSimpleExtentDims(dims); - - vector<double> data(dims[0]); - dataset.read(&(data[0]), H5::PredType::NATIVE_DOUBLE); - - return data; - } - - vector<string> H5Parm::SolTab::getStringAxis(const string& axisName) { - map<string, hsize_t> cachemap; - - if (axisName=="dir") { - if (_dirMap.empty()) { - fillCache(_dirMap, "dir"); - } - cachemap = _dirMap; - } else if (axisName=="ant") { - if (_antMap.empty()) { - fillCache(_antMap, "ant"); - } - cachemap = _antMap; - } else { - THROW(Exception, "Only string axes 'ant' and 'dir' supported for now."); - } - - // Get the keys of the cache map and put them in a vector - vector<string> res; - for(map<string,hsize_t>::iterator it = cachemap.begin(); - it != cachemap.end(); ++it) { - res.push_back(it->first); - } - return res; - } - - - hsize_t H5Parm::SolTab::getTimeIndex(double time) const { - if (getAxis("time").size == 1) { - return 0; - } - vector<double> times = getRealAxis("time"); - - double timeInterval = getTimeInterval(); - - for (size_t i = 0; i<times.size(); ++i) { - if (abs(times[i]-time)<timeInterval*0.501) // 0.5 with some tolerance - return i; - } - THROW(Exception,"Time "<<fixed<<time<<" not found in "<<getName()); - return 0; - } - - hsize_t H5Parm::SolTab::getDirIndex(const string& dirName) { - return getNamedIndex(_dirMap, "dir", dirName); - } - - double H5Parm::SolTab::getInterval(const string& axisName, size_t start) const { - H5::DataSet dataset; - H5::DataSpace dataspace; - try { - dataset = openDataSet(axisName); - dataspace = dataset.getSpace(); - } catch (H5::GroupIException& e) { - THROW(Exception, "SolTab "<<getName()<<" has no axis table for "<<axisName); - } - ASSERT(dataspace.getSimpleExtentNdims()==1); - - hsize_t dims[1]; - dataspace.getSimpleExtentDims(dims); - ASSERTSTR(dims[0]>start+1, "For reading the " + axisName + " interval, more than one value is required."); - - hsize_t count[1], offset[1], memoffset[1]; - count[0]=2; offset[0]=start; memoffset[0]=0; - dataspace.selectHyperslab(H5S_SELECT_SET, count, offset); - - H5::DataSpace memspace(1, count); - memspace.selectHyperslab(H5S_SELECT_SET, count, memoffset); - - // Get only two values - vector<double> values(2); - dataset.read(&(values[0]), H5::PredType::NATIVE_DOUBLE, memspace, dataspace); - return values[1]-values[0]; - } -} diff --git a/CEP/DP3/DPPP/src/SourceDBUtil.cc b/CEP/DP3/DPPP/src/SourceDBUtil.cc deleted file mode 100644 index 5bca4865d83..00000000000 --- a/CEP/DP3/DPPP/src/SourceDBUtil.cc +++ /dev/null @@ -1,270 +0,0 @@ -//# SourceDBUtil.cc: Helper functions to extract patch and source information -//# from a SourceDB. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/SourceDBUtil.h> -#include <DPPP/PointSource.h> -#include <DPPP/GaussianSource.h> -#include <ParmDB/SourceDB.h> -#include <Common/LofarLogger.h> -#include <Common/lofar_vector.h> -#include <sstream> -#include <set> - -namespace LOFAR -{ -namespace DPPP -{ -using BBS::SourceDB; -using BBS::SourceData; -using BBS::SourceInfo; - - -vector<Patch::ConstPtr> makePatches(SourceDB &sourceDB, - const vector<string> &patchNames, - uint nModel) -{ - // Create a component list for each patch name. - vector<vector<ModelComponent::Ptr> > componentsList(nModel); - - // Loop over all sources. - sourceDB.lock(); - sourceDB.rewind(); - SourceData src; - while (! sourceDB.atEnd()) { - sourceDB.getNextSource (src); - // Use the source if its patch matches a patch name. - for (uint i=0; i<nModel; ++i) { - if (src.getPatchName() == patchNames[i]) { - // Fetch position. - ASSERT (src.getInfo().getRefType() == "J2000"); - Position position; - position[0] = src.getRa(); - position[1] = src.getDec(); - - // Fetch stokes vector. - Stokes stokes; - stokes.I = src.getI(); - stokes.V = src.getV(); - if(!src.getInfo().getUseRotationMeasure()) - { - stokes.Q = src.getQ(); - stokes.U = src.getU(); - } - - PointSource::Ptr source; - switch(src.getInfo().getType()) - { - case SourceInfo::POINT: - { - source = PointSource::Ptr(new PointSource(position, stokes)); - } - break; - - case SourceInfo::GAUSSIAN: - { - GaussianSource::Ptr gauss(new GaussianSource(position, stokes)); - - const double deg2rad = (casacore::C::pi / 180.0); - gauss->setPositionAngle(src.getOrientation() * deg2rad); - - const double arcsec2rad = (casacore::C::pi / 3600.0) / 180.0; - gauss->setMajorAxis(src.getMajorAxis() * arcsec2rad); - gauss->setMinorAxis(src.getMinorAxis() * arcsec2rad); - source = gauss; - } - break; - - default: - { - ASSERTSTR(false, "Only point sources and Gaussian sources are" - " supported at this time."); - } - } - - // Fetch spectral index attributes (if applicable). - bool isLogarithmic = src.getInfo().getHasLogarithmicSI(); - if (src.getSpectralTerms().size() > 0) { - source->setSpectralTerms(src.getInfo().getSpectralTermsRefFreq(), - isLogarithmic, - src.getSpectralTerms().begin(), - src.getSpectralTerms().end()); - } - - // Fetch rotation measure attributes (if applicable). - if(src.getInfo().getUseRotationMeasure()) - { - source->setRotationMeasure(src.getPolarizedFraction(), - src.getPolarizationAngle(), src.getRotationMeasure()); - } - - componentsList[i].push_back(source); - break; - } - } - } - sourceDB.unlock(); - - vector<Patch::ConstPtr> patchList; - patchList.reserve (componentsList.size()); - for (uint i=0; i<componentsList.size(); ++i) { - ASSERTSTR (!componentsList[i].empty(), "No sources found for patch " - << patchNames[i]); - Patch::Ptr ppatch(new Patch(patchNames[i], - componentsList[i].begin(), - componentsList[i].end())); - vector<BBS::PatchInfo> patchInfo(sourceDB.getPatchInfo(-1, patchNames[i])); - ASSERT (patchInfo.size() == 1); - // Set the position and apparent flux of the patch. - Position patchPosition; - patchPosition[0] = patchInfo[0].getRa(); - patchPosition[1] = patchInfo[0].getDec(); - ppatch->setPosition (patchPosition); - ppatch->setBrightness (patchInfo[0].apparentBrightness()); - /// ppatch->computePosition(); - patchList.push_back (ppatch); - } - return patchList; -} - -vector<pair<ModelComponent::ConstPtr,Patch::ConstPtr> > -makeSourceList (const vector<Patch::ConstPtr>& patchList) { - vector<Patch::ConstPtr>::const_iterator pIter=patchList.begin(); - vector<Patch::ConstPtr>::const_iterator pEnd =patchList.end(); - - uint nSources=0; - for (; pIter!=pEnd; ++pIter) { - nSources+=(*pIter)->nComponents(); - } - - vector<pair<ModelComponent::ConstPtr,Patch::ConstPtr> > sourceList; - sourceList.reserve(nSources); - - pIter=patchList.begin(); - - for (; pIter!=pEnd; ++pIter) { - Patch::const_iterator sIter=(*pIter)->begin(); - Patch::const_iterator sEnd =(*pIter)->end(); - for (; sIter!=sEnd; ++sIter) { - sourceList.push_back(make_pair(*sIter,*pIter)); - } - } - - return sourceList; -} - - -vector<Patch::ConstPtr> makeOnePatchPerComponent( - const vector<Patch::ConstPtr>& patchList) { - size_t numComponents=0; - vector<Patch::ConstPtr>::const_iterator patchIt; - - for (patchIt=patchList.begin();patchIt!=patchList.end();++patchIt) { - numComponents+=(*patchIt)->nComponents(); - } - - vector<Patch::ConstPtr> largePatchList; - largePatchList.reserve(numComponents); - - for (patchIt=patchList.begin();patchIt!=patchList.end();++patchIt) { - Patch::const_iterator compIt; - - size_t compNum=0; - for (compIt=(*patchIt)->begin();compIt!=(*patchIt)->end();++compIt) { - // convert compNum to string (blegh) - stringstream ss; - ss<<compNum; - - Patch::Ptr ppatch(new Patch((*patchIt)->name()+"_"+ss.str(), - compIt, - compIt+1)); - ppatch->setPosition((*compIt)->position()); - largePatchList.push_back(ppatch); - compNum++; - } - } - - return largePatchList; -} - - -vector<string> makePatchList(SourceDB &sourceDB, vector<string> patterns) -{ - if(patterns.empty()) - { - patterns.push_back("*"); - } - - std::set<string> patches; - vector<string>::iterator it = patterns.begin(); - while(it != patterns.end()) - { - if(!it->empty() && (*it)[0] == '@') - { - patches.insert(*it); - it = patterns.erase(it); - } - else - { - vector<string> match(sourceDB.getPatches(-1, *it)); - patches.insert(match.begin(), match.end()); - ++it; - } - } - - return vector<string>(patches.begin(), patches.end()); -} - - -bool checkPolarized(SourceDB &sourceDB, - const vector<string> &patchNames, - uint nModel) -{ - bool polarized = false; - - // Loop over all sources. - sourceDB.lock(); - sourceDB.rewind(); - SourceData src; - while (! sourceDB.atEnd()) { - sourceDB.getNextSource (src); - // Use the source if its patch matches a patch name. - for (uint i=0; i<nModel; ++i) { - if (src.getPatchName() == patchNames[i]) { - // Determine whether source is unpolarized. - if (src.getV() > 0.0 || src.getQ() > 0.0 || src.getU() > 0.0) { - polarized = true; - break; - } - } - } - if (polarized) { - break; - } - } - sourceDB.unlock(); - return polarized; -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/Split.cc b/CEP/DP3/DPPP/src/Split.cc deleted file mode 100644 index 4f114295394..00000000000 --- a/CEP/DP3/DPPP/src/Split.cc +++ /dev/null @@ -1,140 +0,0 @@ -//# Split.cc: DPPP step class to Split visibilities -//# Copyright (C) 2018 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/Split.h> -#include <DPPP/DPRun.h> - -#include <iostream> -#include <Common/ParameterSet.h> -#include <Common/Timer.h> - -#include <stddef.h> -#include <string> -#include <sstream> -#include <utility> -#include <vector> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - Split::Split (DPInput* input, - const ParameterSet& parset, - const string& prefix) - { - itsReplaceParms = parset.getStringVector(prefix + "replaceparms"); - vector<vector<string> > replaceParmValues; // For each of the parameters, the values for each substep - replaceParmValues.resize(itsReplaceParms.size()); - - vector<vector<string> >::iterator replaceParmValueIt = replaceParmValues.begin(); - vector<string>::iterator replaceParmIt; - uint numSteps = 0; - for (replaceParmIt = itsReplaceParms.begin(); - replaceParmIt != itsReplaceParms.end(); ++replaceParmIt) { - vector<string> parmValues = parset.getStringVector(*replaceParmIt); - *(replaceParmValueIt++) = parmValues; - if (numSteps > 0) { - ASSERTSTR(parmValues.size() == numSteps, "Each parameter in replaceparms should have the same number of items (expected "<< - numSteps <<", got "<<parmValues.size() <<" for step "<<(*replaceParmIt)); - } else { - numSteps = parmValues.size(); - } - } - - // Make a shallow copy to work around constness of parset - ParameterSet parsetCopy(parset); - - // Create the substeps - uint numParameters = itsReplaceParms.size(); - for (uint i = 0; i<numSteps; ++i) { - for (uint j = 0; j<numParameters; ++j) { - parsetCopy.replace(itsReplaceParms[j], replaceParmValues[j][i]); - } - DPStep::ShPtr firstStep = DPRun::makeSteps (parsetCopy, prefix, input); - firstStep->setPrevStep(this); - itsSubsteps.push_back(firstStep); - } - ASSERT(itsSubsteps.size()>0); - } - - Split::~Split() - {} - - void Split::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - - vector<DPStep::ShPtr>::iterator it; - for (it=itsSubsteps.begin(); it!=itsSubsteps.end(); ++it) { - (*it)->setInfo(infoIn); - } - } - - void Split::show (std::ostream& os) const - { - os << "Split " << itsName << endl; - os << " replace parameters:" << itsReplaceParms << endl; - // Show the steps. - for (uint i=0; i<itsSubsteps.size(); ++i) { - os << "Split substep "<<(i+1)<<" of "<<itsSubsteps.size()<<endl; - DPStep::ShPtr step = itsSubsteps[0]; - DPStep::ShPtr lastStep; - while (step) { - step->show (os); - lastStep = step; - step = step->getNextStep(); - } - } - } - - void Split::showTimings (std::ostream& os, double duration) const - { - for (uint i=0; i<itsSubsteps.size(); ++i) { - DPStep::ShPtr step = itsSubsteps[i]; - while (step) { - step->showTimings(os, duration); - step = step->getNextStep(); - } - } - } - - bool Split::process (const DPBuffer& bufin) - { - for (uint i=0; i<itsSubsteps.size(); ++i) { - itsSubsteps[i]->process(bufin); - } - return false; - } - - - void Split::finish() - { - // Let the next steps finish. - for (uint i=0; i<itsSubsteps.size(); ++i) { - itsSubsteps[i]->finish(); - } - } - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/StationAdder.cc b/CEP/DP3/DPPP/src/StationAdder.cc deleted file mode 100644 index 5cb92fd69fd..00000000000 --- a/CEP/DP3/DPPP/src/StationAdder.cc +++ /dev/null @@ -1,634 +0,0 @@ -//# StationAdder.cc: DPPP step class to add stations as a superstation -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/StationAdder.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPLogger.h> -#include <Common/ParameterSet.h> -#include <Common/ParameterRecord.h> - -#include <casacore/measures/Measures/MPosition.h> -#include <casacore/measures/Measures/MCPosition.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/TableMeasures/ScalarMeasColumn.h> -#include <casacore/tables/Tables/ScalarColumn.h> -#include <casacore/tables/Tables/ArrayColumn.h> -#include <casacore/tables/Tables/TableRecord.h> -#include <casacore/tables/Tables/TableRow.h> -#include <casacore/casa/Utilities/LinearSearch.h> -#include <casacore/casa/Utilities/Regex.h> -#include <iostream> -#include <iomanip> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - StationAdder::StationAdder (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsStatRec (parset.getRecord(prefix+"stations")), - itsMinNPoint (parset.getUint (prefix+"minpoints", 1)), - itsMakeAutoCorr (parset.getBool (prefix+"autocorr", false)), - itsSumAutoCorr (parset.getBool (prefix+"sumauto", true)), - itsDoAverage (parset.getBool (prefix+"average", true)), - itsUseWeight (parset.getBool (prefix+"useweights", true)) - { - } - - StationAdder::~StationAdder() - {} - - vector<int> StationAdder::getMatchingStations - (const Vector<String>& antennaNames, const vector<string>& patterns) - { - Vector<bool> used(antennaNames.size(), false); - for (vector<string>::const_iterator iter=patterns.begin(); - iter!=patterns.end(); ++iter) { - int n=0; - if (iter->size() > 1 && ((*iter)[0] == '!' || (*iter)[0] == '^')) { - Regex regex(Regex::fromPattern(iter->substr(1))); - for (uint i=0; i<antennaNames.size(); ++i) { - if (antennaNames[i].matches (regex)) { - used[i] = false; - n++; - } - } - } else { - Regex regex(Regex::fromPattern(*iter)); - for (uint i=0; i<antennaNames.size(); ++i) { - if (antennaNames[i].matches (regex)) { - used[i] = true; - n++; - } - } - } - if (n == 0) { - DPLOG_WARN_STR - ("StationAdder: no matching stations found for pattern " << *iter); - } - } - vector<int> parts; - parts.reserve (12); // Usually up to 12 stations are used - for (uint i=0; i<used.size(); ++i) { - if (used[i]) { - parts.push_back (i); - } - } - return parts; - } - - void StationAdder::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - info().setMetaChanged(); - // Check the superstation definition(s). - // They are specified as a ParameterRecord like: - // stations = {new1:[s1,s2,s3], new2:[s4,s5,s6]} - // where s1, etc. can be glob patterns. - Vector<String> antennaNames (infoIn.antennaNames()); - Vector<Double> antennaDiam (infoIn.antennaDiam()); - vector<MPosition> antennaPos(info().antennaPos()); - // For each existing station, give id of new superstation it is used in. - vector<int> newStations (antennaNames.size()); - std::fill (newStations.begin(), newStations.end(), -1); - vector<string> newNames; // Names of new superstations - vector<double> newDiam; - vector<MPosition> newPoss; - for (ParameterRecord::const_iterator iter = itsStatRec.begin(); - iter != itsStatRec.end(); ++iter) { - if (std::find(antennaNames.begin(), antennaNames.end(), - String(iter->first)) != antennaNames.end() || - std::find(newNames.begin(), - newNames.end(), iter->first) != newNames.end()) { - THROW (Exception, "StationAdder: new station name " + iter->first + - " already exists"); - } - // Get the ids of the stations forming the new superstation. - // Expand possible .. in the parameter value. - vector<int> parts = getMatchingStations - (antennaNames, iter->second.expand().getStringVector()); - if (parts.empty()) { - continue; - } - MVPosition newPosition; - // Check if the stations exist and not used for other superstations. - // Add their ITRF positions. - for (uint i=0; i<parts.size(); ++i) { - int inx = parts[i]; - ASSERTSTR (newStations[inx] < 0, "Station " + antennaNames[inx] + - " is used in multiple superstations"); - newStations[inx] = newNames.size(); - newPosition += MPosition::Convert (antennaPos[inx], - MPosition::ITRF)().getValue(); - } - // The superstation position is the average of its parts. - newNames.push_back (iter->first); - newPosition *= 1./parts.size(); - newPoss.push_back (MPosition(newPosition, MPosition::ITRF)); - itsParts.push_back (Vector<int>(parts)); - // Set the diameter of the new station by determining the - // maximum distance to the center. - double maxdist = 0; - for (uint i=0; i<parts.size(); ++i) { - int inx = parts[i]; - MVPosition mvdiff = newPosition - - MPosition::Convert (antennaPos[inx], MPosition::ITRF)().getValue(); - const Vector<Double>& diff = mvdiff.getValue(); - double dist = sqrt(std::accumulate(diff.cbegin(), diff.cend(), 0., - casacore::SumSqr<Double>())); - // Add the radius of the station used. - maxdist = max (maxdist, dist + 0.5*antennaDiam[inx]); - } - newDiam.push_back (2*maxdist); - } - // Add the new stations to the info's vectors. - Vector<Int> ant1 (info().getAnt1()); - Vector<Int> ant2 (info().getAnt2()); - uint nrold = antennaNames.size(); - uint nrnew = nrold + newNames.size(); - antennaNames.resize (nrnew, True); - antennaDiam.resize (nrnew, True); - antennaPos.reserve (nrnew); - for (uint i=0; i<newNames.size(); ++i) { - antennaNames[nrold+i] = newNames[i]; - antennaDiam[nrold+i] = newDiam[i]; - antennaPos.push_back (newPoss[i]); - } - // Now determine the new baselines. - // A new baseline is formed if ANTENNA1 or ANTENNA2 is in the list - // of stations, but not both. - // However, for auto-correlations they can be the same. - vector<int> newbl(nrnew); - // Loop over the superstations. - // Note that by making this the outer loop, the baselines between - // superstations are also formed. - // At the end the new baselines are added to itsAnt1 and itsAnt2. - // itsBufRows contains for each new baseline the rownrs in the DPBuffer - // to be added for the new baseline. If rownr<0, the conjugate has to be - // added (1 is added to rownr, otherwise 0 is ambiguous). - // Note that a rownr can be the rownr of a new baseline. - for (uint j=0; j<itsParts.size(); ++j) { - std::fill (newbl.begin(), newbl.end(), -1); - vector<int> newAnt1; - vector<int> newAnt2; - // Loop through all baselines and find out if a baseline should - // be used for a superstation. - for (uint i=0; i<ant1.size(); ++i) { - bool havea1 = linearSearch1 (itsParts[j], ant1[i]) >= 0; - bool havea2 = linearSearch1 (itsParts[j], ant2[i]) >= 0; - int ant = nrold+j; - int take = 0; - if (havea1) { - // If both stations are in same superstation, only use them - // if autocorrelations have to be made. - // Taking auto or cross depends on summing mode. - if (havea2) { - take = itsMakeAutoCorr && itsSumAutoCorr == (ant1[i]==ant2[i]); - } else { - ant = ant2[i]; - take = -1; // conjugate has to be added - } - } else if (havea2) { - ant = ant1[i]; - take = 1; - } - if (take != 0) { - // We have a baseline for the superstation. - // Get its index; create it if not used before. - int blinx = newbl[ant]; - if (blinx < 0) { - blinx = newbl[ant] = itsBufRows.size(); - itsBufRows.push_back (vector<int>()); - newAnt1.push_back (ant); - newAnt2.push_back (nrold+j); - } - itsBufRows[blinx].push_back (take*int(i+1)); - } - } - // Copy the new baselines for this superstation to the baseline list. - // Give a warning if nothing found. - if (newAnt1.empty()) { - DPLOG_WARN_STR ("StationAdder: no baseline found for superstation"); - } else { - uint oldsz = ant1.size(); - ant1.resize (oldsz + newAnt1.size(), True); - ant2.resize (oldsz + newAnt1.size(), True); - for (uint i=0; i<newAnt1.size(); ++i) { - ant1[oldsz+i] = newAnt1[i]; - ant2[oldsz+i] = newAnt2[i]; - } - } - } - // Set the new info. - info().set (antennaNames, antennaDiam, antennaPos, ant1, ant2); - // Setup the UVW calculator (for new baselines). - itsUVWCalc = UVWCalculator (infoIn.phaseCenter(), infoIn.arrayPos(), - antennaPos); - // Size the buffer to cater for the new baselines. - IPosition dataShp (3, getInfo().ncorr(), getInfo().nchan(), - getInfo().nbaselines()); - IPosition uvwShp (2, 3, getInfo().nbaselines()); - itsBuf.getData().resize (dataShp); - itsBuf.getFlags().resize (dataShp); - itsBuf.getWeights().resize (dataShp); - itsBuf.getUVW().resize (uvwShp); - } - - void StationAdder::show (std::ostream& os) const - { - os << "StationAdder " << itsName << std::endl; - os << " stations: " << itsStatRec << std::endl; - // Show the stations used for the new stations. - uint nold = getInfo().antennaNames().size() - itsParts.size(); - for (uint i=0; i<itsParts.size(); ++i) { - os << " " << getInfo().antennaNames()[nold+i] << ": ["; - for (uint j=0; j<itsParts[i].size(); ++j) { - if (j > 0) os << ", "; - os << getInfo().antennaNames()[itsParts[i][j]]; - } - os << ']' << endl; - } - os << " minpoints: " << itsMinNPoint << std::endl; - os << " autocorr: " << boolalpha << itsMakeAutoCorr << std::endl; - os << " sumauto: " << boolalpha << itsSumAutoCorr << std::endl; - os << " average: " << boolalpha << itsDoAverage << std::endl; - os << " useweights: " << boolalpha << itsUseWeight << std::endl; - } - - void StationAdder::showTimings (std::ostream& os, double duration) const - { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " StationAdder " << itsName << endl; - } - - bool StationAdder::process (const DPBuffer& buf) - { - itsTimer.start(); - // Get the various data arrays. - itsBufTmp.referenceFilled (buf); - const Array<Complex>& data = buf.getData(); - const Array<Bool>& flags = buf.getFlags(); - const Array<Float>& weights = - itsInput->fetchWeights (buf, itsBufTmp, itsTimer); - const Array<Double>& uvws = - itsInput->fetchUVW (buf, itsBufTmp, itsTimer); - const Array<Bool>& frFlags = - itsInput->fetchFullResFlags (buf, itsBufTmp, itsTimer); - // Size fullResFlags if not done yet. - if (itsBuf.getFullResFlags().empty()) { - IPosition frfShp = frFlags.shape(); - frfShp[2] = getInfo().nbaselines(); - itsBuf.getFullResFlags().resize (frfShp); - } - // Copy the data; only the first baselines will be filled. - std::copy (data.data(), data.data() + data.size(), - itsBuf.getData().data()); - std::copy (flags.data(), flags.data() + flags.size(), - itsBuf.getFlags().data()); - std::copy (weights.data(), weights.data() + weights.size(), - itsBuf.getWeights().data()); - std::copy (uvws.data(), uvws.data() + uvws.size(), - itsBuf.getUVW().data()); - std::copy (frFlags.data(), frFlags.data() + frFlags.size(), - itsBuf.getFullResFlags().data()); - // Now calculate the data pointers of the new baselines. - uint nrOldBL = data.shape()[2]; - uint nrcc = data.shape()[0] * data.shape()[1]; - uint nrfr = frFlags.shape()[0] * frFlags.shape()[1]; - Complex* dataPtr = itsBuf.getData().data() + data.size(); - Bool* flagPtr = itsBuf.getFlags().data() + data.size(); - Float* wghtPtr = itsBuf.getWeights().data() + data.size(); - Double* uvwPtr = itsBuf.getUVW().data() + uvws.size(); - Bool* frfPtr = itsBuf.getFullResFlags().data() + frFlags.size(); - vector<uint> npoints(nrcc); - vector<Complex> dataFlg(nrcc); - vector<Float> wghtFlg(nrcc); - // Loop over all new baselines. - for (uint i=0; i<itsBufRows.size(); ++i) { - // Clear the data for the new baseline. - for (uint k=0; k<nrcc; ++k) { - dataPtr[k] = Complex(); - wghtPtr[k] = 0.; - npoints[k] = 0; - dataFlg[k] = Complex(); - wghtFlg[k] = 0.; - } - for (uint k=0; k<nrfr; ++k) { - frfPtr[k] = true; - } - - for (uint k=0; k<3; ++k) { - uvwPtr[k] = 0.; - } - double uvwWghtSum = 0.; - - // Sum the baselines forming the new baselines. - for (uint j=0; j<itsBufRows[i].size(); ++j) { - // Get the baseline number to use. - // A negative one means using the conjugate. - int blnr = itsBufRows[i][j]; - bool useConj = false; - if (blnr < 0) { - blnr = -blnr; - useConj = true; - } - blnr--; // decrement because blnr+1 is stored in itsBufRows - // Get pointers to the input baseline data. - const Complex* inDataPtr = (itsBuf.getData().data() + - blnr*nrcc); - const Bool* inFlagPtr = (itsBuf.getFlags().data() + - blnr*nrcc); - const Float* inWghtPtr = (itsBuf.getWeights().data() + - blnr*nrcc); - const Bool* inFrfPtr = (itsBuf.getFullResFlags().data() + - blnr*nrfr); - const Double* inUvwPtr = (itsBuf.getUVW().data() + - blnr*3); - // Add the data, uvw, and weights if not flagged. - // Write 4 loops to avoid having to test inside the loop. - // Count the flagged points separately, so it can be used - // if too many points are flagged. - if (useConj) { - if (itsUseWeight) { - for (uint k=0; k<nrcc; ++k) { - if (inFlagPtr[k]) { - dataFlg[k] += conj(inDataPtr[k]) * inWghtPtr[k]; - wghtFlg[k] += inWghtPtr[k]; - } else { - npoints[k]++; - dataPtr[k] += conj(inDataPtr[k]) * inWghtPtr[k]; - wghtPtr[k] += inWghtPtr[k]; - for (int ui=0; ui<3; ++ui) { - uvwPtr[ui] -= inUvwPtr[ui] * inWghtPtr[k]; - } - uvwWghtSum += inWghtPtr[k]; - } - } - } else { - for (uint k=0; k<nrcc; ++k) { - if (inFlagPtr[k]) { - dataFlg[k] += conj(inDataPtr[k]); - wghtFlg[k] += 1.; - } else { - npoints[k]++; - dataPtr[k] += conj(inDataPtr[k]); - wghtPtr[k] += 1.; - for (int ui=0; ui<3; ++ui) { - uvwPtr[ui] -= inUvwPtr[ui]; - } - uvwWghtSum += 1; - } - } - } - } else { - if (itsUseWeight) { - for (uint k=0; k<nrcc; ++k) { - if (inFlagPtr[k]) { - dataFlg[k] += inDataPtr[k] * inWghtPtr[k]; - wghtFlg[k] += inWghtPtr[k]; - } else { - npoints[k]++; - dataPtr[k] += inDataPtr[k] * inWghtPtr[k]; - wghtPtr[k] += inWghtPtr[k]; - for (int ui=0; ui<3; ++ui) { - uvwPtr[ui] += inUvwPtr[ui] * inWghtPtr[k]; - } - uvwWghtSum += inWghtPtr[k]; - } - } - } else { - for (uint k=0; k<nrcc; ++k) { - if (inFlagPtr[k]) { - dataFlg[k] += inDataPtr[k]; - wghtFlg[k] += 1.; - } else { - npoints[k]++; - dataPtr[k] += inDataPtr[k]; - wghtPtr[k] += 1.; - for (int ui=0; ui<3; ++ui) { - uvwPtr[ui] += inUvwPtr[ui]; - } - uvwWghtSum += 1; - } - } - } - } - // It is a bit hard to say what to do with FULL_RES_FLAGS. - // Set it to true (=flagged) if the flag of all baselines is true. - for (uint k=0; k<nrfr; ++k) { - frfPtr[k] = frfPtr[k] && inFrfPtr[k]; - } - } - // Set the resulting flags. Average if needed. - // Set flag if too few unflagged data points; use flagged data too. - for (uint k=0; k<nrcc; ++k) { - if (wghtPtr[k] == 0 || npoints[k] < itsMinNPoint) { - flagPtr[k] = true; - dataPtr[k] += dataFlg[k]; - wghtPtr[k] += wghtFlg[k]; - } else { - flagPtr[k] = false; - } - if (itsDoAverage) { - dataPtr[k] /= wghtPtr[k]; - } - } - - // Average or calculate the UVW coordinate of the new station. - if (itsDoAverage && uvwWghtSum != 0) { - for (int ui=0; ui<3; ++ui) { - uvwPtr[ui] /= uvwWghtSum; - } - } else { - uint blnr = nrOldBL + i; - Vector<Double> uvws = itsUVWCalc.getUVW (getInfo().getAnt1()[blnr], - getInfo().getAnt2()[blnr], - buf.getTime()); - uvwPtr[0] = uvws[0]; - uvwPtr[1] = uvws[1]; - uvwPtr[2] = uvws[2]; - } - - dataPtr += nrcc; - flagPtr += nrcc; - wghtPtr += nrcc; - uvwPtr += 3; - frfPtr += nrfr; - } - itsBuf.setTime (buf.getTime()); - itsBuf.setExposure (buf.getExposure()); - itsTimer.stop(); - getNextStep()->process (itsBuf); - return true; - } - - void StationAdder::finish() - { - // Let the next steps finish. - getNextStep()->finish(); - } - - void StationAdder::addToMS (const string& msName) - { - getPrevStep()->addToMS(msName); - // Add the new stations to the ANTENNA subtable. - Table antTab (msName + "/ANTENNA", Table::Update); - ScalarColumn<String> nameCol (antTab, "NAME"); - ScalarColumn<String> typeCol (antTab, "TYPE"); - ScalarColumn<String> mountCol (antTab, "MOUNT"); - ArrayColumn<Double> offsetCol (antTab, "OFFSET"); - ScalarColumn<Double> diamCol (antTab, "DISH_DIAMETER"); - ScalarColumn<Bool> flagCol (antTab, "FLAG_ROW"); - ScalarColumn<String> statCol; - ScalarColumn<Int> stidCol; - ScalarMeasColumn<MPosition> phrefCol; - ScalarMeasColumn<MPosition> posCol (antTab, "POSITION"); - // LOFAR columns are optional. - if (antTab.tableDesc().isColumn ("STATION")) { - statCol.attach (antTab, "STATION"); - } - if (antTab.tableDesc().isColumn ("LOFAR_STATION_ID")) { - stidCol.attach (antTab, "LOFAR_STATION_ID"); - } - if (antTab.tableDesc().isColumn ("LOFAR_PHASE_REFERENCE")) { - phrefCol.attach (antTab, "LOFAR_PHASE_REFERENCE"); - } - uint origNant = antTab.nrow(); - // Take common info from the first row. - String type, mount, stat; - if (origNant > 0) { - type = typeCol(0); - mount = mountCol(0); - if (! statCol.isNull()) { - stat = statCol(0); - } - } - Vector<Double> offset(3, 0.); - // Put the data for each new antenna. - for (uint i=origNant; i<getInfo().antennaNames().size(); ++i) { - antTab.addRow(); - nameCol.put (i, getInfo().antennaNames()[i]); - typeCol.put (i, type); - mountCol.put (i, mount); - offsetCol.put (i, offset); - diamCol.put (i, getInfo().antennaDiam()[i]); - flagCol.put (i, false); - posCol.put (i, getInfo().antennaPos()[i]); - if (! statCol.isNull()) { - statCol.put (i, stat); - } - if (! stidCol.isNull()) { - stidCol.put (i, -1); - } - if (! phrefCol.isNull()) { - phrefCol.put (i, getInfo().antennaPos()[i]); - } - } - // For each new station, add a row to the FEED subtable. - // It is a copy of the first row, except for the station id. - Table feedTab (msName + "/FEED", Table::Update); - TableRow feedRow(feedTab); - ScalarColumn<Int> antidCol(feedTab, "ANTENNA_ID"); - for (uint i=origNant; i<getInfo().antennaNames().size(); ++i) { - uInt rownr = feedTab.nrow(); - feedTab.addRow(); - feedRow.put (rownr, feedRow.get(0)); - antidCol.put (rownr, i); - } - // Now update the BeamInfo tables if they are present. - Table ms(msName); - if (ms.keywordSet().isDefined("LOFAR_ANTENNA_FIELD")) { - updateBeamInfo (msName, origNant, antTab); - } - } - - void StationAdder::updateBeamInfo (const string& msName, uint origNant, - Table& antTab) - { - // Update the LOFAR_ANTENNA_FIELD table. - // Copy all rows where ANTENNA_ID matches one of the stations used in - // a superstation. - Table afTab (msName + "/LOFAR_ANTENNA_FIELD", Table::Update); - TableRow afRow (afTab); - ScalarColumn<Int> antIdCol(afTab, "ANTENNA_ID"); - for (uint i=0; i<afTab.nrow(); ++i) { - for (uint j=0; j<itsParts.size(); ++j) { - int inx = linearSearch1 (itsParts[j], antIdCol(i)); - if (inx >= 0) { - int rownr = afTab.nrow(); - afTab.addRow(); - afRow.put (rownr, afRow.get(i)); - antIdCol.put (rownr, j+origNant); - } - } - } - // Flush the table. - afTab.flush(); - // Update the LOFAR_STATION table. - Table statTab (msName + "/LOFAR_STATION", Table::Update); - ScalarColumn<String> nameCol (statTab, "NAME"); - ScalarColumn<Int> clockCol (statTab, "CLOCK_ID"); - ScalarColumn<Bool> flagCol (statTab, "FLAG_ROW"); - // LOFAR_STATION_ID in the ANTENNA table needs to be updated. - ScalarColumn<Int> stidCol (antTab, "LOFAR_STATION_ID"); - // Get station-ids for each antenna-id. - // Get clock-ids for each station-id. - Vector<Int> statIds (stidCol.getColumn()); - Vector<Int> clockIds (clockCol.getColumn()); - int nextClockId = max(clockIds); - // Loop over all new antennae. - for (uint i=0; i<itsParts.size(); ++i) { - if (itsParts[i].empty()) { - break; - } - // Do all antennae of a new antenna share the same clock? - // If so, use that clock-id, otherwise make a new one. - int cid = clockIds[statIds[itsParts[i][0]]]; - for (uint j=1; j<itsParts[i].size(); ++j) { - if (clockIds[statIds[itsParts[i][j]]] != cid) { - cid = ++nextClockId; - break; - } - } - // Update LOFAR_STATION_ID for this new antenna. - int rownr = statTab.nrow(); - stidCol.put (origNant+i, rownr); - // Add new station. - statTab.addRow(); - nameCol.put (rownr, getInfo().antennaNames()[origNant+i]); - clockCol.put (rownr, cid); - flagCol.put (rownr, False); - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/StefCal.cc b/CEP/DP3/DPPP/src/StefCal.cc deleted file mode 100644 index 0df7cca2674..00000000000 --- a/CEP/DP3/DPPP/src/StefCal.cc +++ /dev/null @@ -1,510 +0,0 @@ -//# StefCal.cc: Perform StefCal algorithm for gain calibration -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: StefCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/StefCal.h> -#include <DPPP/DPInput.h> - -#include <vector> -#include <algorithm> -#include <limits> - -#include <iostream> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - StefCal::StefCal(uint solInt, uint nChan, StefCalMode mode, - bool scalar, double tolerance, uint maxAntennas, - bool detectStalling, uint debugLevel) - : _nSt (maxAntennas), - _badIters (0), - _veryBadIters (0), - _solInt (solInt), - _nChan (nChan), - _mode (mode), - _scalar (scalar), - _tolerance (tolerance), - _totalWeight (0.), - _detectStalling (detectStalling), - _debugLevel (debugLevel) - { - resetVis(); - - _nSt = maxAntennas; - if (_mode==FULLJONES) { - ASSERT(!_scalar); - _nCr=4; - _nSp=1; - _savedNCr=4; - } else if (_scalar) { - _nCr=1; - _nSp=2; - _savedNCr=1; - } else { - _nCr=1; - _nSp=1; - _savedNCr=2; - } - - _vis.resize(IPosition(6,_nSt,2,_solInt,_nChan,2,_nSt)); - _mvis.resize(IPosition(6,_nSt,2,_solInt,_nChan,2,_nSt)); - - if (_scalar || _mode==FULLJONES) { - _nUn = _nSt; - } else { - _nUn = 2*_nSt; - } - - _g.resize(_nUn,_nCr); - _gold.resize(_nUn,_nCr); - _gx.resize(_nUn,_nCr); - _gxx.resize(_nUn,_nCr); - _h.resize(_nUn,_nCr); - _z.resize(_nUn*_nChan*_solInt*_nSp,_nCr); - - _stationFlagged.resize(_nSt, false); - - init(true); - } - - void StefCal::resetVis() { - _vis=0; - _mvis=0; - _totalWeight = 0.; - } - - void StefCal::clearStationFlagged() { - _stationFlagged=false; - } - - void StefCal::init(bool initSolutions) { - _dg = 1.0e29; - _dgx = 1.0e30; - _dgs.clear(); - - _badIters = 0; - _veryBadIters = 0; - - if (initSolutions) { - double ginit=1.0; - if (_mode != PHASEONLY) { - // Initialize solution with sensible amplitudes - double fronormvis=0; - double fronormmod=0; - - DComplex* t_vis_p=_vis.data(); - DComplex* t_mvis_p=_mvis.data(); - - uint vissize=_vis.size(); - for (uint i=0;i<vissize;++i) { - fronormvis+=norm(t_vis_p[i]); - fronormmod+=norm(t_mvis_p[i]); - } - - fronormvis=sqrt(fronormvis); - fronormmod=sqrt(fronormmod); - if (abs(fronormmod)>1.e-15) { - ginit=sqrt(fronormvis/fronormmod); - } else { - ginit=1.0; - } - } - - if (_nCr==4) { - for (uint ant=0;ant<_nUn;++ant) { - _g(ant,0)=ginit; - _g(ant,1)=0.; - _g(ant,2)=0.; - _g(ant,3)=ginit; - } - } else { - _g=ginit; - } - } else { // Take care of NaNs in solution - double ginit=0.; - bool ginitcomputed=false; - for (uint ant=0; ant<_nUn; ++ant) { - if (!isFinite(_g(ant,0).real()) ) { - if (!ginitcomputed && !_stationFlagged[ant%_nSt]) { - // Avoid calling getAverageUnflaggedSolution for stations that are always flagged - ginit = getAverageUnflaggedSolution(); - ginitcomputed = true; - if (ginit==0) { - init(true); - return; - } - } - if (_nCr==4) { - _g(ant,0)=ginit; - _g(ant,1)=0.; - _g(ant,2)=0.; - _g(ant,3)=ginit; - } else { - _g(ant,0)=ginit; - } - } - } - } - } - - double StefCal::getAverageUnflaggedSolution() { - // Get average solution of unflagged antennas only once - // Unflagged means unflagged in previous time slot, so - // look at NaNs, don't look at stationFlagged (that's for - // the current timeslot). - double total=0.; - uint unflaggedstations=0; - for (uint ant2=0; ant2<_nUn; ++ant2) { - if (isFinite(_g(ant2,0).real())) { - total += abs(_g(ant2,0)); - unflaggedstations++; - if (_nCr==4) { - total += abs(_g(ant2,3)); - unflaggedstations++; - } - } - } - if (unflaggedstations==0) { - return 0.; - } else { - return total/unflaggedstations; - } - } - - StefCal::Status StefCal::doStep(uint iter) { - _gxx = _gx; - _gx = _g; - - bool allFlagged=true; - for (uint st1=0;st1<_nSt;++st1) { - if (!_stationFlagged[st1]) { - allFlagged=false; - break; - } - } - if (allFlagged) { - return CONVERGED; - } - - if (_mode==FULLJONES) { - doStep_polarized(); - doStep_polarized(); - return relax(2*iter); - } else { - doStep_unpolarized(); - doStep_unpolarized(); - return relax(2*iter); - } - } - - void StefCal::doStep_polarized() { - _gold = _g; - - for (uint st=0;st<_nSt;++st) { - _h(st,0)=conj(_g(st,0)); - _h(st,1)=conj(_g(st,1)); - _h(st,2)=conj(_g(st,2)); - _h(st,3)=conj(_g(st,3)); - } - - for (uint st1=0;st1<_nSt;++st1) { - if (_stationFlagged[st1]) { - continue; - } - - DComplex* vis_p; - DComplex* mvis_p; - Vector<DComplex> w(_nCr); - Vector<DComplex> t(_nCr); - - for (uint time=0;time<_solInt;++time) { - for (uint ch=0;ch<_nChan;++ch) { - uint zoff=_nSt*ch+_nSt*_nChan*time; - mvis_p=&_mvis(IPosition(6,0,0,time,ch,0,st1)); for (uint st2=0;st2<_nSt;++st2) { _z(st2+zoff,0) = _h(st2,0) * mvis_p[st2]; } // itsMVis(IPosition(6,st2,0,time,ch,0,st1)) - mvis_p=&_mvis(IPosition(6,0,1,time,ch,0,st1)); for (uint st2=0;st2<_nSt;++st2) { _z(st2+zoff,0) += _h(st2,2) * mvis_p[st2]; } // itsMVis(IPosition(6,st2,0,time,ch,1,st1)) - mvis_p=&_mvis(IPosition(6,0,0,time,ch,1,st1)); for (uint st2=0;st2<_nSt;++st2) { _z(st2+zoff,1) = _h(st2,0) * mvis_p[st2]; } // itsMVis(IPosition(6,st2,1,time,ch,0,st1)) - mvis_p=&_mvis(IPosition(6,0,1,time,ch,1,st1)); for (uint st2=0;st2<_nSt;++st2) { _z(st2+zoff,1) += _h(st2,2) * mvis_p[st2]; } // itsMVis(IPosition(6,st2,1,time,ch,1,st1)) - mvis_p=&_mvis(IPosition(6,0,0,time,ch,0,st1)); for (uint st2=0;st2<_nSt;++st2) { _z(st2+zoff,2) = _h(st2,1) * mvis_p[st2]; } // itsMVis(IPosition(6,st2,0,time,ch,0,st1)) - mvis_p=&_mvis(IPosition(6,0,1,time,ch,0,st1)); for (uint st2=0;st2<_nSt;++st2) { _z(st2+zoff,2) += _h(st2,3) * mvis_p[st2]; } // itsMVis(IPosition(6,st2,0,time,ch,1,st1)) - mvis_p=&_mvis(IPosition(6,0,0,time,ch,1,st1)); for (uint st2=0;st2<_nSt;++st2) { _z(st2+zoff,3) = _h(st2,1) * mvis_p[st2]; } // itsMVis(IPosition(6,st2,1,time,ch,0,st1)) - mvis_p=&_mvis(IPosition(6,0,1,time,ch,1,st1)); for (uint st2=0;st2<_nSt;++st2) { _z(st2+zoff,3) += _h(st2,3) * mvis_p[st2]; } // itsMVis(IPosition(6,st2,1,time,ch,1,st1)) - } - } - - w=0; - - for (uint time=0;time<_solInt;++time) { - for (uint ch=0;ch<_nChan;++ch) { - for (uint st2=0;st2<_nSt;++st2) { - uint zoff=st2+_nSt*ch+_nSt*_nChan*time; - w(0) += conj(_z(zoff,0))*_z(zoff,0) + conj(_z(zoff,2))*_z(zoff,2); - w(1) += conj(_z(zoff,0))*_z(zoff,1) + conj(_z(zoff,2))*_z(zoff,3); - w(3) += conj(_z(zoff,1))*_z(zoff,1) + conj(_z(zoff,3))*_z(zoff,3); - } - } - } - w(2)=conj(w(1)); - - t=0; - - for (uint time=0;time<_solInt;++time) { - for (uint ch=0;ch<_nChan;++ch) { - vis_p=&_vis(IPosition(6,0,0,time,ch,0,st1)); for (uint st2=0;st2<_nSt;++st2) { t(0) += conj(_z(st2+_nSt*ch+_nSt*_nChan*time,0)) * vis_p[st2]; }// itsVis(IPosition(6,st2,0,time,ch,0,st1)) - vis_p=&_vis(IPosition(6,0,1,time,ch,0,st1)); for (uint st2=0;st2<_nSt;++st2) { t(0) += conj(_z(st2+_nSt*ch+_nSt*_nChan*time,2)) * vis_p[st2]; }// itsVis(IPosition(6,st2,0,time,ch,1,st1)) - vis_p=&_vis(IPosition(6,0,0,time,ch,1,st1)); for (uint st2=0;st2<_nSt;++st2) { t(1) += conj(_z(st2+_nSt*ch+_nSt*_nChan*time,0)) * vis_p[st2]; }// itsVis(IPosition(6,st2,1,time,ch,0,st1)) - vis_p=&_vis(IPosition(6,0,1,time,ch,1,st1)); for (uint st2=0;st2<_nSt;++st2) { t(1) += conj(_z(st2+_nSt*ch+_nSt*_nChan*time,2)) * vis_p[st2]; }// itsVis(IPosition(6,st2,1,time,ch,1,st1)) - vis_p=&_vis(IPosition(6,0,0,time,ch,0,st1)); for (uint st2=0;st2<_nSt;++st2) { t(2) += conj(_z(st2+_nSt*ch+_nSt*_nChan*time,1)) * vis_p[st2]; }// itsVis(IPosition(6,st2,0,time,ch,0,st1)) - vis_p=&_vis(IPosition(6,0,1,time,ch,0,st1)); for (uint st2=0;st2<_nSt;++st2) { t(2) += conj(_z(st2+_nSt*ch+_nSt*_nChan*time,3)) * vis_p[st2]; }// itsVis(IPosition(6,st2,0,time,ch,1,st1)) - vis_p=&_vis(IPosition(6,0,0,time,ch,1,st1)); for (uint st2=0;st2<_nSt;++st2) { t(3) += conj(_z(st2+_nSt*ch+_nSt*_nChan*time,1)) * vis_p[st2]; }// itsVis(IPosition(6,st2,1,time,ch,0,st1)) - vis_p=&_vis(IPosition(6,0,1,time,ch,1,st1)); for (uint st2=0;st2<_nSt;++st2) { t(3) += conj(_z(st2+_nSt*ch+_nSt*_nChan*time,3)) * vis_p[st2]; }// itsVis(IPosition(6,st2,1,time,ch,1,st1)) - } - } - DComplex invdet= w(0) * w (3) - w(1)*w(2); - if (abs(invdet)==0) { - _stationFlagged[st1] = true; - _g(st1,0) = 0; - continue; - } - invdet= 1./invdet; - _g(st1,0) = invdet * ( w(3) * t(0) - w(1) * t(2) ); - _g(st1,1) = invdet * ( w(3) * t(1) - w(1) * t(3) ); - _g(st1,2) = invdet * ( w(0) * t(2) - w(2) * t(0) ); - _g(st1,3) = invdet * ( w(0) * t(3) - w(2) * t(1) ); - } - } - - void StefCal::doStep_unpolarized() { - _gold=_g; - - for (uint ant=0;ant<_nUn;++ant) { - _h(ant,0)=conj(_g(ant,0)); - } - - for (uint st1=0;st1<_nUn;++st1) { - if (_stationFlagged[st1%_nSt]) { - continue; - } - DComplex* vis_p; - DComplex* mvis_p; - double ww=0; // Same as w, but specifically for pol==false - DComplex tt=0; // Same as t, but specifically for pol==false - - mvis_p=&_mvis(IPosition(6,0,0,0,0,st1/_nSt,st1%_nSt)); - vis_p = &_vis(IPosition(6,0,0,0,0,st1/_nSt,st1%_nSt)); - for (uint st1pol=0;st1pol<_nSp;++st1pol) { - for (uint ch=0;ch<_nChan;++ch) { - for (uint time=0;time<_solInt;++time) { - for (uint st2pol=0;st2pol<_nSp;++st2pol) { - DComplex* h_p=_h.data(); - for (uint st2=0;st2<_nUn;++st2) { - DComplex z(h_p[st2] * *mvis_p); //itsMVis(IPosition(6,st2%nSt,st2/nSt,time,ch,st1/nSt,st1%nSt)); - ASSERT(isFinite(z)); - ww+=norm(z); - tt+=conj(z) * *vis_p; //itsVis(IPosition(6,st2%nSt,st2/nSt,time,ch,st1/nSt,st1%nSt)); - mvis_p++; - vis_p++; - } - } - } - } - } - - // Flag a station if all baselines are flagged or all data is zero - if (ww==0 || abs(tt)==0) { - _stationFlagged[st1%_nSt]=true; - _g(st1,0)=0; - continue; - } - _g(st1,0)=tt/ww; - - - // Constrain solutions - if (_mode==PHASEONLY) { - ASSERT(abs(_g(st1,0))!=0); - _g(st1,0)/=abs(_g(st1,0)); - ASSERT(isFinite(_g(st1,0))); - } else if (_mode==AMPLITUDEONLY) { - _g(st1,0) = abs(_g(st1,0)); - } - } - } - - void StefCal::incrementWeight(float weight) { - _totalWeight += weight; - } - - casacore::Matrix<casacore::DComplex> StefCal::getSolution(bool setNaNs) { - if (setNaNs) { - for (uint ant=0; ant<_nUn; ++ant) { - if (_stationFlagged[ant%_nSt]) { - for (uint cr=0; cr<_nCr; ++cr) { - _g(ant,cr)=std::numeric_limits<double>::quiet_NaN(); - } - } - } - } - - return _g; - } - - StefCal::Status StefCal::relax(uint iter) { - if (_nSt==0) { - return CONVERGED; - } - - double f2 = -1.0; - double f3 = -0.5; - double f1 = 1 - f2 - f3; - double f2q = -0.5; - double f1q = 1 - f2q; - double omega = 0.5; - uint nomega = 24; - double c1 = 0.5; - double c2 = 1.2; - double dgxx; - bool threestep = false; - uint maxBadIters=3; - - int sstep=0; - - if (_detectStalling && iter > 3) { - double improvement = _dgx-_dg; - - if (abs(improvement) < 5.0e-2*_dg) { - // This iteration did not improve much upon the previous - // Stalling detection only after 4 iterations, to account for - // ''startup problems'' (not for tec, where stalling happens very soon) - if (_debugLevel>3) { - cout<<"**"<<endl; - } - _badIters++; - } else if (improvement < 0) { - _veryBadIters++; - } else { - _badIters=0; - } - - if (_badIters>=maxBadIters) { - if (_debugLevel>3) { - cout<<"Detected stall"<<endl; - } - return STALLED; - } else if (_veryBadIters > maxBadIters) { - if (_debugLevel>3) { - cout<<"Detected fail"<<endl; - } - return STALLED; - } - } - - dgxx = _dgx; - _dgx = _dg; - - double fronormdiff=0; - double fronormg=0; - for (uint ant=0;ant<_nUn;++ant) { - for (uint cr=0;cr<_nCr;++cr) { - DComplex diff=_g(ant,cr)-_gold(ant,cr); - fronormdiff+=abs(diff*diff); - fronormg+=abs(_g(ant,cr)*_g(ant,cr)); - } - } - fronormdiff=sqrt(fronormdiff); - fronormg=sqrt(fronormg); - - _dg = fronormdiff/fronormg; - if (_debugLevel>2) { - _dgs.push_back(_dg); - } - - if (_dg <= _tolerance) { - return CONVERGED; - } - - if (_debugLevel>7) { - cout<<"Averaged"<<endl; - } - - for (uint ant=0;ant<_nUn;++ant) { - for (uint cr=0;cr<_nCr;++cr) { - _g(ant,cr) = (1-omega) * _g(ant,cr) + - omega * _gold(ant,cr); - } - } - - if (!threestep) { - threestep = (iter+1 >= nomega) || - ( max(_dg,max(_dgx,dgxx)) <= 1.0e-3 && _dg<_dgx && _dgx<dgxx); - if (_debugLevel>7) { - cout<<"Threestep="<<boolalpha<<threestep<<endl; - } - } - - if (threestep) { - if (sstep <= 0) { - if (_dg <= c1 * _dgx) { - if (_debugLevel>7) { - cout<<"dg<=c1*dgx"<<endl; - } - for (uint ant=0;ant<_nUn;++ant) { - for (uint cr=0;cr<_nCr;++cr) { - _g(ant,cr) = f1q * _g(ant,cr) + - f2q * _gx(ant,cr); - } - } - } else if (_dg <= _dgx) { - if (_debugLevel>7) { - cout<<"dg<=dgx"<<endl; - } - for (uint ant=0;ant<_nUn;++ant) { - for (uint cr=0;cr<_nCr;++cr) { - _g(ant,cr) = f1 * _g(ant,cr) + - f2 * _gx(ant,cr) + - f3 * _gxx(ant,cr); - } - } - } else if (_dg <= c2 *_dgx) { - if (_debugLevel>7) { - cout<<"dg<=c2*dgx"<<endl; - } - _g = _gx; - sstep = 1; - } else { - //cout<<"else"<<endl; - _g = _gxx; - sstep = 2; - } - } else { - if (_debugLevel>7) { - cout<<"no sstep"<<endl; - } - sstep = sstep - 1; - } - } - return NOTCONVERGED; - } - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/Stokes.cc b/CEP/DP3/DPPP/src/Stokes.cc deleted file mode 100644 index ca3010550f1..00000000000 --- a/CEP/DP3/DPPP/src/Stokes.cc +++ /dev/null @@ -1,40 +0,0 @@ -//# Stokes.cc: Complex Stokes vector. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/Stokes.h> - -namespace LOFAR -{ -namespace DPPP -{ - -Stokes::Stokes() -: I(0.0), - Q(0.0), - U(0.0), - V(0.0) -{ -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/SubtractMixed.cc b/CEP/DP3/DPPP/src/SubtractMixed.cc deleted file mode 100644 index 3359f4d0723..00000000000 --- a/CEP/DP3/DPPP/src/SubtractMixed.cc +++ /dev/null @@ -1,86 +0,0 @@ -//# SubtractMixed.cc: Subtract visibilities from a buffer after weighting by -//# mixing coefficients. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/SubtractMixed.h> - -namespace LOFAR -{ -namespace DPPP -{ - -void subtract(size_t nBaseline, size_t nChannel, - const_cursor<Baseline> baselines, cursor<fcomplex> data, - const_cursor<dcomplex> model, const_cursor<dcomplex> weight) -{ - for(size_t bl = 0; bl < nBaseline; ++bl) - { - const size_t p = baselines->first; - const size_t q = baselines->second; - - if(p != q) - { - for(size_t ch = 0; ch < nChannel; ++ch) - { - // Subtract weighted model from data. - *data -= static_cast<fcomplex>((*weight) * (*model)); - ++weight; - ++model; - ++data; - *data -= static_cast<fcomplex>((*weight) * (*model)); - ++weight; - ++model; - ++data; - *data -= static_cast<fcomplex>((*weight) * (*model)); - ++weight; - ++model; - ++data; - *data -= static_cast<fcomplex>((*weight) * (*model)); - ++weight; - ++model; - ++data; - - // Move to the next channel. - weight -= 4; - weight.forward(1); - model -= 4; - model.forward(1); - data -= 4; - data.forward(1); - } // Channels. - - weight.backward(1, nChannel); - model.backward(1, nChannel); - data.backward(1, nChannel); - } - - // Move to the next baseline. - weight.forward(2); - model.forward(2); - data.forward(2); - ++baselines; - } // Baselines. -} - -} //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/SubtractNew.cc b/CEP/DP3/DPPP/src/SubtractNew.cc deleted file mode 100644 index 19e265d62c4..00000000000 --- a/CEP/DP3/DPPP/src/SubtractNew.cc +++ /dev/null @@ -1,72 +0,0 @@ -//# SubtractNew.cc: Subtract visibilities from a buffer after weighting by -//# mixing coefficients. -//# -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ - -#include <lofar_config.h> -#include <DPPP/SubtractNew.h> - -namespace LOFAR { - namespace DPPP { - - void subtract (size_t nBaseline, size_t nChannel, - const_cursor<Baseline> baselines, cursor<fcomplex> data, - const_cursor<dcomplex> model, const_cursor<dcomplex> weight, - vector<float>& ampl) - { - dcomplex vis[4]; - for (size_t bl=0; bl<nBaseline; ++bl) { - // Only for cross correlations. - if (baselines->first != baselines->second) { - for (size_t ch=0; ch<nChannel; ++ch) { - for (size_t cr=0; cr<4; ++cr) { - vis[cr] = (*weight++) * (*model++); - *data++ -= static_cast<fcomplex>(vis[cr]); - } - // Return subtracted amplitude for middle channel. - if (ch == nChannel/2) { - ampl[bl] = (abs(vis[0]) + abs(vis[3])) * 0.5; - } - // Move to the next channel. - weight -= 4; - weight.forward(1); - model -= 4; - model.forward(1); - data -= 4; - data.forward(1); - } // Channels. - weight.backward(1, nChannel); - model.backward(1, nChannel); - data.backward(1, nChannel); - } else { - ampl[bl] = 0.; - } - - // Move to the next baseline. - weight.forward(2); - model.forward(2); - data.forward(2); - ++baselines; - } // Baselines. - } - - } //# namespace DPPP -} //# namespace LOFAR diff --git a/CEP/DP3/DPPP/src/UVWCalculator/UVWCalculator.cc b/CEP/DP3/DPPP/src/UVWCalculator/UVWCalculator.cc deleted file mode 100644 index 05ad175e3cf..00000000000 --- a/CEP/DP3/DPPP/src/UVWCalculator/UVWCalculator.cc +++ /dev/null @@ -1,120 +0,0 @@ -//# UVWCalculator.cc: Class to calculate UVW coordinates -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -// Note: this code is used by LOFAR and APERTIF software. - -#include <lofar_config.h> -#include <DPPP/UVWCalculator.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/measures/Measures/Muvw.h> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - UVWCalculator::UVWCalculator() - {} - - UVWCalculator::UVWCalculator (const MDirection& phaseDir, - const MPosition& arrayPos, - const vector<MPosition>& stationPositions) - { - // Convert the station positions to a baseline in ITRF. - int nrant = stationPositions.size(); - Vector<Double> pos0; - for (int i=0; i<nrant; ++i) { - // Get antenna positions and convert to ITRF. - MPosition mpos = MPosition::Convert (stationPositions[i], - MPosition::ITRF)(); - if (i == 0) { - pos0 = mpos.getValue().getVector(); - } - Vector<Double> pos = mpos.getValue().getVector(); - MVPosition mvpos((pos[0] - pos0[0]), - (pos[1] - pos0[1]), - (pos[2] - pos0[2])); - itsAntMB.push_back (MBaseline (MVBaseline(mvpos), MBaseline::ITRF)); - } - // Initialize the converters. - // Set up the frame for epoch and antenna position. - itsFrame.set (arrayPos, MDirection()); - // Create converter for phase center direction to J2000. - itsDirToJ2000.set (phaseDir, - MDirection::Ref(MDirection::J2000,itsFrame)); - // We can already try to convert the phase reference direction to J2000. - // If it fails, it is a time-dependent direction (like SUN). - itsMovingPhaseDir = false; - try { - itsPhaseDir = itsDirToJ2000(); - itsFrame.resetDirection (itsPhaseDir); - } catch (...) { - itsMovingPhaseDir = true; - } - itsFrame.set (MEpoch()); - // Create converter for MBaseline ITRF to J2000. - itsBLToJ2000.set (MBaseline(), MBaseline::Ref(MBaseline::J2000,itsFrame)); - // Initialize the rest which is used to cache the UVW per antenna. - // The cache is only useful if the MS is accessed in time order, but that - // is normally the case. - itsLastTime = 0; - itsAntUvw.resize (nrant); - itsUvwFilled.resize (nrant); - itsUvwFilled = false; - } - - Vector<double> UVWCalculator::getUVW (uint ant1, uint ant2, double time) - { - // If a different time, we have to calculate the UVWs. - if (time != itsLastTime) { - itsLastTime = time; - Quantum<Double> tm(time, "s"); - itsFrame.resetEpoch - (MEpoch(MVEpoch(tm.get("d").getValue()), MEpoch::UTC)); - itsUvwFilled = false; - // If phase dir is moving, calculate it for this time. - if (itsMovingPhaseDir) { - itsPhaseDir = itsDirToJ2000(); - itsFrame.resetDirection (itsPhaseDir); - } - } - // Calculate the UVWs for this timestamp if not done yet. - int ant = ant1; - for (int i=0; i<2; ++i) { - if (!itsUvwFilled[ant]) { - MBaseline& mbl = itsAntMB[ant]; - mbl.getRefPtr()->set(itsFrame); // attach frame - MBaseline::Convert mcvt(mbl, MBaseline::J2000); - MVBaseline bas = mcvt().getValue(); - MVuvw jvguvw(bas, itsPhaseDir.getValue()); - itsAntUvw[ant] = Muvw(jvguvw, Muvw::J2000).getValue().getVector(); - itsUvwFilled[ant] = true; - } - ant = ant2; - } - // The UVW of the baseline is the difference of the antennae. - return itsAntUvw[ant2] - itsAntUvw[ant1]; - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/UVWCalculator/UVWCalculator.h b/CEP/DP3/DPPP/src/UVWCalculator/UVWCalculator.h deleted file mode 100644 index 252f899de4e..00000000000 --- a/CEP/DP3/DPPP/src/UVWCalculator/UVWCalculator.h +++ /dev/null @@ -1,86 +0,0 @@ -//# UVWCalculator.h: Class to calculate UVW coordinates -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -// Note: this code is used by LOFAR and APERTIF software. - -#ifndef DPPP_UVWCALCULATOR_H -#define DPPP_UVWCALCULATOR_H - -// @file -// @brief Class to calculate UVW coordinates - -#include <Common/LofarLogger.h> -#include <Common/lofar_vector.h> -#include <casacore/measures/Measures/MeasFrame.h> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MPosition.h> -#include <casacore/measures/Measures/MBaseline.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/measures/Measures/MCPosition.h> -#include <casacore/measures/Measures/MCBaseline.h> -#include <casacore/casa/Arrays/Vector.h> - -namespace LOFAR { - namespace DPPP { - - // @ingroup NDPPP - - // This class calculates the UVW coordinates for a given baseline and - // time stamp in the same way as done in LofarStMan. - // - // It calculates and caches the UVW coordinates per antenna and combines - // them to get the baseline UVW coordinates. This is much faster than - // calculating baseline UVW coordinates directly. - - class UVWCalculator - { - public: - // The default constructor creates an empty object. - UVWCalculator(); - - // Construct the object for the given phase direction, array position, - // and station positions. - UVWCalculator (const casacore::MDirection& phaseDir, - const casacore::MPosition& arrayPosition, - const vector<casacore::MPosition>& stationPositions); - - // get the UVW coordinates for the given baseline and time. - casacore::Vector<double> getUVW (uint ant1, uint ant2, double time); - - private: - casacore::MDirection itsPhaseDir; - bool itsMovingPhaseDir; - casacore::MDirection::Convert itsDirToJ2000; //# direction to J2000 - casacore::MBaseline::Convert itsBLToJ2000; //# convert ITRF to J2000 - casacore::MeasFrame itsFrame; - vector<casacore::MBaseline> itsAntMB; - vector<casacore::Vector<double> > itsAntUvw; - casacore::Block<bool> itsUvwFilled; - double itsLastTime; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP/src/UVWFlagger.cc b/CEP/DP3/DPPP/src/UVWFlagger.cc deleted file mode 100644 index b02efa355e3..00000000000 --- a/CEP/DP3/DPPP/src/UVWFlagger.cc +++ /dev/null @@ -1,354 +0,0 @@ -//# UVWFlagger.cc: DPPP step class to flag data on UVW coordinates -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/UVWFlagger.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StreamUtil.h> -#include <Common/LofarLogger.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/casa/Quanta/MVAngle.h> -#include <casacore/casa/Utilities/GenSort.h> -#include <iostream> -#include <algorithm> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - UVWFlagger::UVWFlagger (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsNTimes (0), - itsFlagCounter (input->msName(), parset, prefix+"count.") - { - itsRangeUVm = fillUVW (parset, prefix, "uvm", true); - itsRangeUm = fillUVW (parset, prefix, "um", false); - itsRangeVm = fillUVW (parset, prefix, "vm", false); - itsRangeWm = fillUVW (parset, prefix, "wm", false); - itsRangeUVl = fillUVW (parset, prefix, "uvlambda", false); - itsRangeUl = fillUVW (parset, prefix, "ulambda", false); - itsRangeVl = fillUVW (parset, prefix, "vlambda", false); - itsRangeWl = fillUVW (parset, prefix, "wlambda", false); - itsIsDegenerate = itsRangeUVm.size() + itsRangeUVl.size() + - itsRangeUm.size() + itsRangeVm.size() + - itsRangeWm.size() + itsRangeUl.size() + - itsRangeVl.size() + itsRangeWl.size() == 0; - itsCenter = parset.getStringVector (prefix+"phasecenter", - vector<string>()); - } - - UVWFlagger::~UVWFlagger() - {} - - void UVWFlagger::show (std::ostream& os) const - { - if (itsIsDegenerate) { - return; - } - - os << "UVWFlagger " << itsName << std::endl; - vector<double> uvm(itsRangeUVm); - for (uint i=0; i<uvm.size(); ++i) { - if (uvm[i] > 0) { - uvm[i] = sqrt(uvm[i]); - } - } - os << " uvm: " << uvm << std::endl; - os << " um: " << itsRangeUm << std::endl; - os << " vm: " << itsRangeVm << std::endl; - os << " wm: " << itsRangeWm << std::endl; - os << " uvlambda: " << itsRangeUVl << std::endl; - os << " ulambda: " << itsRangeUl << std::endl; - os << " vlambda: " << itsRangeVl << std::endl; - os << " wlambda: " << itsRangeWl << std::endl; - os << " phasecenter: " << itsCenter << std::endl; - } - - void UVWFlagger::showCounts (std::ostream& os) const - { - if (itsIsDegenerate) { - return; - } - os << endl << "Flags set by UVWFlagger " << itsName; - os << endl << "=======================" << endl; - itsFlagCounter.showBaseline (os, itsNTimes); - itsFlagCounter.showChannel (os, itsNTimes); - } - - void UVWFlagger::showTimings (std::ostream& os, double duration) const - { - double flagDur = itsTimer.getElapsed(); - os << " "; - FlagCounter::showPerc1 (os, flagDur, duration); - os << " UVWFlagger " << itsName << endl; - if (! itsCenter.empty()) { - os << " "; - FlagCounter::showPerc1 (os, itsUVWTimer.getElapsed(), flagDur); - os << " of it spent in calculating UVW coordinates" << endl; - } - } - - void UVWFlagger::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setWriteFlags(); - // Convert the given frequencies to possibly averaged frequencies. - // Divide it by speed of light to get reciproke of wavelengths. - itsRecWavel = infoIn.chanFreqs() / casacore::C::c; - // Handle the phase center (if given). - if (! itsCenter.empty()) { - handleCenter(); - } - // Initialize the flag counters. - itsFlagCounter.init (getInfo()); - } - - bool UVWFlagger::process (const DPBuffer& buf) - { - if (itsIsDegenerate) { - getNextStep()->process (buf); - return true; - } - - itsTimer.start(); - // Because no buffers are kept, we can reference the filled arrays - // in the input buffer instead of copying them. - itsBuffer.referenceFilled (buf); - Cube<bool>& flags = itsBuffer.getFlags(); - // Loop over the baselines and flag as needed. - const IPosition& shape = flags.shape(); - uint nrcorr = shape[0]; - uint nrchan = shape[1]; - uint nrbl = shape[2]; - uint nr = nrcorr*nrchan; - ASSERT (nrchan == itsRecWavel.size()); - // Input uvw coordinates are only needed if no new phase center is used. - Matrix<double> uvws; - if (itsCenter.empty()) { - uvws.reference (itsInput->fetchUVW (buf, itsBuffer, itsTimer)); - } - const double* uvwPtr = uvws.data(); - bool* flagPtr = flags.data(); - const bool* origPtr = buf.getFlags().data(); - for (uint i=0; i<nrbl; ++i) { - if (! itsCenter.empty()) { - // A different phase center is given, so calculate UVW for it. - NSTimer::StartStop ssuvwtimer(itsUVWTimer); - Vector<double> uvw = itsUVWCalc.getUVW (getInfo().getAnt1()[i], - getInfo().getAnt2()[i], - buf.getTime()); - uvwPtr = uvw.data(); - ///cout << "uvw = " << uvw << endl; - } - double uvdist = uvwPtr[0] * uvwPtr[0] + uvwPtr[1] * uvwPtr[1]; - bool flagBL = false; - if (! itsRangeUVm.empty()) { - // UV-distance is sqrt(u^2 + v^2). - // The sqrt is not needed because itsRangeUVm is squared. - flagBL = testUVWm (uvdist, itsRangeUVm); - } - if (!(flagBL || itsRangeUm.empty())) { - flagBL = testUVWm (uvwPtr[0], itsRangeUm); - } - if (!(flagBL || itsRangeVm.empty())) { - flagBL = testUVWm (uvwPtr[1], itsRangeVm); - } - if (!(flagBL || itsRangeWm.empty())) { - flagBL = testUVWm (uvwPtr[2], itsRangeWm); - } - if (flagBL) { - // Flag entire baseline. - std::fill (flagPtr, flagPtr+nr, true); - } else { - if (! itsRangeUVl.empty()) { - // UV-distance is sqrt(u^2 + v^2). - testUVWl (sqrt(uvdist), itsRangeUVl, flagPtr, nrcorr); - } - if (! itsRangeUl.empty()) { - testUVWl (uvwPtr[0], itsRangeUl, flagPtr, nrcorr); - } - if (! itsRangeVl.empty()) { - testUVWl (uvwPtr[1], itsRangeVl, flagPtr, nrcorr); - } - if (! itsRangeWl.empty()) { - testUVWl (uvwPtr[2], itsRangeWl, flagPtr, nrcorr); - } - } - // Count the flags set newly. - for (uint j=0; j<nrchan; ++j) { - if (*flagPtr && !*origPtr) { - itsFlagCounter.incrBaseline(i); - itsFlagCounter.incrChannel(j); - } - flagPtr += nrcorr; - origPtr += nrcorr; - } - uvwPtr += 3; - } - // Let the next step do its processing. - itsTimer.stop(); - itsNTimes++; - getNextStep()->process (itsBuffer); - return true; - } - - void UVWFlagger::finish() - { - // Let the next step finish its processing. - getNextStep()->finish(); - } - - bool UVWFlagger::testUVWm (double uvw, const vector<double>& ranges) - { - for (size_t i=0; i<ranges.size(); i+=2) { - if (uvw > ranges[i] && uvw < ranges[i+1]) { - return true; - } - } - return false; - } - - void UVWFlagger::testUVWl (double uvw, const vector<double>& ranges, - bool* flagPtr, uint nrcorr) - { - // This loop could be made more efficient if it is guaranteed that - // itsRecWavel is in strict ascending or descending order. - // It is expected that the nr of ranges is so small that it is not - // worth the trouble, but it could be done if ever needed. - for (uint j=0; j<itsRecWavel.size(); ++j) { - double uvwl = uvw * itsRecWavel[j]; - for (size_t i=0; i<ranges.size(); i+=2) { - if (uvwl > ranges[i] && uvwl < ranges[i+1]) { - std::fill (flagPtr, flagPtr+nrcorr, true); - break; - } - } - flagPtr += nrcorr; - } - } - - vector<double> UVWFlagger::fillUVW (const ParameterSet& parset, - const string& prefix, - const string& name, - bool square) - { - // Get possible range, minimum, and maximum. - vector<string> uvs = parset.getStringVector (prefix + name + "range", - vector<string>()); - double minuv = parset.getDouble (prefix + name + "min", 0.); - double maxuv = parset.getDouble (prefix + name + "max", 0.); - // Process the ranges. - vector<double> vals; - vals.reserve (2*uvs.size()); - for (vector<string>::const_iterator str = uvs.begin(); - str != uvs.end(); ++str) { - // Each range can be given as st..end or val+-halfwidth. - // Find the .. or +- token. - bool usepm = false; - string::size_type pos; - pos = str->find (".."); - if (pos == string::npos) { - usepm = true; - pos = str->find ("+-"); - ASSERTSTR (pos != string::npos, "UVWFlagger " << name << "range '" - << *str << "' should be range using .. or +-"); - } - string str1 = str->substr (0, pos); - string str2 = str->substr (pos+2); - double v1 = strToDouble(str1); - double v2 = strToDouble(str2); - if (usepm) { - double hw = v2; - v2 = v1 + hw; - v1 -= hw; - } - vals.push_back (v1); - vals.push_back (v2); - } - // If minimum or maximum is given, add them as a range as well. - if (minuv > 0) { - vals.push_back (-1e15); - vals.push_back (minuv); - } - if (maxuv > 0) { - vals.push_back (maxuv); - vals.push_back (1e15); - } - if (square) { - for (vector<double>::iterator iter = vals.begin(); - iter != vals.end(); ++iter) { - if (*iter != -1e15) { - *iter = *iter * *iter; - } - } - } - return vals; - } - - void UVWFlagger::handleCenter() - { - // The phase center can be given as one, two, or three values. - // I.e., as source name, ra,dec or ra,dec,frame. - ASSERTSTR (itsCenter.size() < 4, - "Up to 3 values can be given in UVWFlagger phasecenter"); - MDirection phaseCenter; - if (itsCenter.size() == 1) { - string str = toUpper(itsCenter[0]); - MDirection::Types tp; - ASSERTSTR (MDirection::getType(tp, str), - str << " is an invalid source type" - " in UVWFlagger phasecenter"); - phaseCenter = MDirection(tp); - } else { - Quantity q0, q1; - ASSERTSTR (MVAngle::read (q0, itsCenter[0]), - itsCenter[0] << " is an invalid RA or longitude" - " in UVWFlagger phasecenter"); - ASSERTSTR (MVAngle::read (q1, itsCenter[1]), - itsCenter[1] << " is an invalid DEC or latitude" - " in UVWFlagger phasecenter"); - MDirection::Types type = MDirection::J2000; - if (itsCenter.size() > 2) { - string str = toUpper(itsCenter[2]); - MDirection::Types tp; - ASSERTSTR (MDirection::getType(tp, str), - str << " is an invalid direction type in UVWFlagger" - " in UVWFlagger phasecenter"); - } - phaseCenter = MDirection(q0, q1, type); - } - // Create the UVW calculator. - itsUVWCalc = UVWCalculator (phaseCenter, getInfo().arrayPos(), - getInfo().antennaPos()); - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/Upsample.cc b/CEP/DP3/DPPP/src/Upsample.cc deleted file mode 100644 index b15280b32ba..00000000000 --- a/CEP/DP3/DPPP/src/Upsample.cc +++ /dev/null @@ -1,152 +0,0 @@ -//# Upsample.cc: DPPP step class to Upsample visibilities -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: GainCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/Upsample.h> - -#include <iostream> -#include <Common/ParameterSet.h> - -#include <casacore/casa/BasicMath/Math.h> // nearAbs -#include <casacore/casa/Arrays/ArrayLogical.h> // anyTrue - -#include <iomanip> -#include <stddef.h> -#include <string> -#include <sstream> -#include <utility> -#include <vector> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - Upsample::Upsample (DPInput*, - const ParameterSet& parset, - const string& prefix) - : itsOldTimeInterval(0), - itsTimeStep(parset.getInt(prefix + "timestep")), - itsFirstToFlush(0) - { - itsBuffers.resize(itsTimeStep); - } - - Upsample::~Upsample() - {} - - void Upsample::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - - itsOldTimeInterval = info().timeInterval(); - info().setTimeInterval(itsOldTimeInterval / itsTimeStep); - - info().setMetaChanged(); - } - - void Upsample::show (std::ostream& os) const - { - os << "Upsample " << itsName << endl; - os << " time step : " << itsTimeStep <<endl; - } - - bool Upsample::process (const DPBuffer& bufin) - { - - double time0 = bufin.getTime() - 0.5 * itsOldTimeInterval; - double exposure = bufin.getExposure() / itsTimeStep; - - // Duplicate the input buffer itsTimeStep times - for (uint i=0; i<itsTimeStep; ++i) { - itsBuffers[i].copy (bufin); - // Update the time centroid and time exposure - itsBuffers[i].setTime(time0 + info().timeInterval() * (i+0.5)); - itsBuffers[i].setExposure(exposure); - } - - if (itsPrevBuffers.empty()) { - // First time slot, ask for next time slot first - itsPrevBuffers.resize(itsTimeStep); - for (uint i=0; i<itsTimeStep; ++i) { - itsPrevBuffers[i].copy(itsBuffers[i]); // No shallow copy - } - return false; - } - - // Flush the itsPrevBuffers. Skip parts at the beginning as determined - // in the previous call to process. Skip parts at the end as determined - // now. Also, determine at which step the next buffer should start to - // flush in the next call of process. - uint curIndex = 0; // Index in the current buffers - for (uint prevIndex=itsFirstToFlush; prevIndex<itsTimeStep; prevIndex++) { - itsFirstToFlush = 0; // reset for next use - // Advance curIndex until - // buffers[curIndex].time >= prevBuffers[prevIndex].time - while (itsPrevBuffers[prevIndex].getTime() > itsBuffers[curIndex].getTime() && - !nearAbs(itsPrevBuffers[prevIndex].getTime(), - itsBuffers[curIndex].getTime(), - 0.4*info().timeInterval()) ) { - curIndex++; - } - if (nearAbs(itsPrevBuffers[prevIndex].getTime(), - itsBuffers[curIndex].getTime(), - 0.4*info().timeInterval())) { - // Found double buffer, choose which one to use - // If both totally flagged, prefer prevbuffer - if (allTrue(itsBuffers[curIndex].getFlags())) { - // Use prevBuffer - itsFirstToFlush = curIndex+1; - getNextStep()->process(itsPrevBuffers[prevIndex]); - } else { - // Use next buffer; stop processing prevbuffer. - // This will uncorrectly give flagged if data has been flagged - // and a time slot has been inserted and itsTimeStep > 2. - break; - } - } else { - // No double buffer, just flush the prevbuffer - getNextStep()->process(itsPrevBuffers[prevIndex]); - } - } - - itsPrevBuffers.swap(itsBuffers); // itsBuffers will be overwritten later - - return false; - } - - - void Upsample::finish() - { - // Flush itsPrevBuffers - for (uint i=itsFirstToFlush; i<itsTimeStep; ++i) { - getNextStep()->process(itsPrevBuffers[i]); - } - - // Let the next steps finish. - getNextStep()->finish(); - } - } //# end namespace -} diff --git a/CEP/DP3/DPPP/src/__init__.py b/CEP/DP3/DPPP/src/__init__.py deleted file mode 100644 index 5adf25334be..00000000000 --- a/CEP/DP3/DPPP/src/__init__.py +++ /dev/null @@ -1,60 +0,0 @@ -# __init__.py: Top level .py file for DPPP flagging results plotting -# -# Copyright (C) 2007 -# ASTRON (Netherlands Institute for Radio Astronomy) -# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -# -# This file is part of the LOFAR software suite. -# The LOFAR software suite is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# The LOFAR software suite is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -# -# $Id: __init__.py 17341 2011-02-07 07:15:52Z diepen $ - - -# Plot the NDPPP count results by frequency or baseline. -# Frequencies are concatenated; baselines are averaged. - -""" Module to plot NDPPP count results. """ - -import pyrap.tables as pt -import numpy -import pylab - -def plotflags (tabnames): - """Plot NDPPP Count results - - A flagging or count step in NDPPP can save the flagging percentages per - frequency or station. They are saved in a table (per subband) with the - extension ''.flagfreq'' or ''.flagstat''. - The flag percentages of a subband can be plotted by giving the name of - the table containing the results. - - It is also possible to plot the results of multiple subbands by giving - a list of table names. Frequency results will be sorted in order of - frequency, while station results are averaged over the subbands. - - """ - t = pt.table(tabnames) - if 'Frequency' in t.colnames(): - t1 = t.sort ('Frequency') - pylab.plot (t1.getcol('Frequency'), t1.getcol('Percentage')) - elif 'Station' in t.colnames(): - percs = [] - names = [] - for t1 in t.iter ('Station'): - percs.append (t1.getcol('Percentage').mean()) - names.append (t1.getcell('Name', 0)) - pylab.plot (numpy.array(percs), '+') - else: - raise RuntimeError('Table appears not to be a NDPPP Count result; it does not contain a Frequency or Station column') - diff --git a/CEP/DP3/DPPP/src/taqlflagger b/CEP/DP3/DPPP/src/taqlflagger deleted file mode 100755 index 6a4c4e8f0a9..00000000000 --- a/CEP/DP3/DPPP/src/taqlflagger +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/sh - -# Skip first argument if it is a rank (a numeric value). -res=`echo $1 | sed 's/[0-9]*//'` -test "$res" = "" && shift - -# Test if an MS name is given. -err=1 -ms=$1 -if test "$ms" != ""; then - shift - err=0 - - # Test if -dry or dry is given. - dry=0 - if test "$1" = "-dry" -o "$1" = "dry"; then - dry=1 - fi - # Test if flag or unflag is given. flag means use value T, otherwise F. - val=T - if test "$1" = "flag"; then - shift - elif test "$1" = "unflag"; then - val=F - shift - fi - - pol= - chan= - where= - while test $# != 0 -a $err = 0 - do - sel=$1 - # Check if a pol or chan selection is given. - case $sel in - chan=*) - test "$chan" = "" || err=1 - chan=`echo $sel | sed -e 's/chan=//'` - cmd="update $ms set FLAG[$chan,]=T" - ;; - pol=*) - test "$pol" = "" || err=1 - pol=`echo $sel | sed -e 's/pol=//'` - cmd="update $ms set FLAG[,$pol]=T" - ;; - *) - if test "$where" = ""; then - where="$sel" - else - where="($where) && ($sel)" - fi - ;; - esac - shift - done -fi - -if test $err = 0; then - cmd="update $ms set FLAG[$chan,$pol]=$val" - if test "$where" != ""; then - cmd="$cmd where $where" - fi - echo "taql '$cmd'" - if test $dry = 0; then - taql "$cmd" || err=1 - fi -fi - -if test $err != 0; then - echo "" - echo "Run as: taqlflagger [rank] ms [-dry] [flag|unflag] [selection1 ...]" - echo "The rank is a dummy argument meant for rundist." - echo "ms is the name of the MS to be (un)flagged." - echo "dry tells to do a dry run; it only shows the command to execute." - echo "flag or unflag tells what to do (default is flag)." - echo "The selections must be a TaQL WHERE part like" - echo " ANTENNA1=1" - echo " where multiple such parts are anded" - echo "or a polarization or channel selection like" - echo " pol=0 or chan=0:4" - echo " where the end is exclusive (a la python)" - echo "E.g." - echo " taqlflagger unflag ~/my.ms chan=0:32 pol=0 ANTENNA1=1 'ANTENNA2 in [1:4]'" - echo "unflags XX for channel 0 till 31 for baseline 1,1, 1,2 and 1,3" - echo "" - exit 1 -fi -exit 0 diff --git a/CEP/DP3/DPPP/test/CMakeLists.txt b/CEP/DP3/DPPP/test/CMakeLists.txt deleted file mode 100644 index 3cb53f56cac..00000000000 --- a/CEP/DP3/DPPP/test/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -# $Id$ - -# Generate the actual test script. -configure_file(findenv.run_tmpl findenv.run_script) -configure_file(tDemix.run_tmpl tDemix.run_script) - -include(LofarCTest) - -lofar_add_test(tMirror tMirror.cc) -lofar_add_test(tMedian tMedian.cc) -lofar_add_test(tAverager tAverager.cc) -lofar_add_test(tMedFlagger tMedFlagger.cc) -lofar_add_test(tPreFlagger tPreFlagger.cc) -lofar_add_test(tPSet tPSet.cc) -lofar_add_test(tUVWFlagger tUVWFlagger.cc) -lofar_add_test(tPhaseShift tPhaseShift.cc) -lofar_add_test(tStationAdder tStationAdder.cc) -lofar_add_test(tScaleData tScaleData.cc) -lofar_add_test(tApplyCal tApplyCal.cc) -lofar_add_test(tApplyCalH5 tApplyCalH5.cc) -lofar_add_test(tApplyCal2) -lofar_add_test(tMultiApplyCal) -lofar_add_test(tFilter tFilter.cc) -#lofar_add_test(tDemixer tDemixer.cc) -lofar_add_test(tNDPPP tNDPPP.cc) -lofar_add_test(tparse tparse.cc) -lofar_add_test(tBaselineSelection tBaselineSelection.cc) -lofar_add_test(tDemix) -lofar_add_test(tPredict) -lofar_add_test(tApplyBeam) -lofar_add_test(tGainCal) -lofar_add_test(tH5Parm tH5Parm) -lofar_add_test(tGainCalH5Parm) -lofar_add_test(tUpsample tUpsample.cc) -if(CMAKE_CXX_FLAGS MATCHES ".*\\+\\+11.*") - lofar_add_test(tGridInterpolate tGridInterpolate.cc) -endif() -# lofar_add_test(tExpr tExpr.cc) -# lofar_add_test(tmeqarray tmeqarray.cc) -# lofar_add_test(test_flaggers test_flaggers.cc) diff --git a/CEP/DP3/DPPP/test/findenv.run_tmpl b/CEP/DP3/DPPP/test/findenv.run_tmpl deleted file mode 100644 index ca6b5eaf16f..00000000000 --- a/CEP/DP3/DPPP/test/findenv.run_tmpl +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# Find taql program. -taqlexe=@TAQL_EXECUTABLE@ -# Find srcdir in the runctest file. -if test -f runctest.sh; then - rt_srcdir=`grep 'srcdir=' runctest.sh | sed -e 's/srcdir="//' -e 's/";.*//'` -fi diff --git a/CEP/DP3/DPPP/test/tApplyBeam.run b/CEP/DP3/DPPP/test/tApplyBeam.run deleted file mode 100755 index 23c96214f0e..00000000000 --- a/CEP/DP3/DPPP/test/tApplyBeam.run +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash - -# Get the taql executable and srcdir (script created by cmake's CONFIGURE_FILE). -source findenv.run_script -echo "srcdirx=$rt_srcdir" - -# Set srcdir if not defined (in case run by hand). -if test "$srcdir" = ""; then - srcdir="$rt_srcdir" -fi - -if test ! -f ${srcdir}/tNDPPP-generic.in_MS.tgz; then - exit 3 # untested -fi - -rm -rf tApplyBeam_tmp -mkdir -p tApplyBeam_tmp -# Unpack the MS and other files and do the DPPP run. -cd tApplyBeam_tmp -tar zxf ${srcdir}/tNDPPP-generic.in_MS.tgz -tar zxf ${srcdir}/tApplyBeam.tab.tgz - -# Create expected taql output. -echo " select result of 0 rows" > taql.ref - -echo; echo "Test with invert=true and usechannelfreq=false"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=outinv.ms steps=[applybeam] applybeam.usechannelfreq=false applybeam.invert=true' -echo $cmd -$cmd -# Compare the DATA column of the output MS with the BBS reference output. -$taqlexe 'select from outinv.ms t1, tApplyBeam.tab t2 where not all(near(t1.DATA,t2.DATA_noucf,5e-5) || (isnan(t1.DATA) && isnan(t2.DATA_noucf)))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "### Test with invert=false on the output of the previous step"; echo -cmd='NDPPP msin=outinv.ms msout=out.ms steps=[applybeam] applybeam.usechannelfreq=false applybeam.invert=false' -echo $cmd -$cmd -# Compare the DATA column of the output MS with the original MS. -$taqlexe 'select from out.ms t1, tNDPPP-generic.MS t2 where not all(near(t1.DATA,t2.DATA,5e-5) || (isnan(t1.DATA) && isnan(t2.DATA)))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test with invert=true and usechannelfreq=true"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=outinv.ms msout.overwrite=true steps=[applybeam] applybeam.usechannelfreq=true applybeam.invert=true' -echo $cmd -$cmd -# Compare the DATA column of the output MS with the BBS reference output. -$taqlexe 'select from outinv.ms t1, tApplyBeam.tab t2 where not all(near(t1.DATA,t2.DATA_ucf,5e-5) || (isnan(t1.DATA) && isnan(t2.DATA_ucf)))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test with invert=false on the output of the previous step"; echo -cmd='NDPPP msin=outinv.ms msout=out.ms msout.overwrite=true steps=[applybeam] applybeam.usechannelfreq=true applybeam.invert=false' -echo $cmd -$cmd -# Compare the DATA column of the output MS with the original MS. -$taqlexe 'select from out.ms t1, tNDPPP-generic.MS t2 where not all(near(t1.DATA,t2.DATA,5e-5) || (isnan(t1.DATA) && isnan(t2.DATA)))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test with beammode=ARRAY_FACTOR"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=outinv.ms msout.overwrite=true steps=[applybeam] applybeam.usechannelfreq=true applybeam.invert=true applybeam.beammode=ARRAY_FACTOR' -echo $cmd -$cmd -# Compare the DATA column of the output MS with the BBS reference output. -$taqlexe 'select from outinv.ms t1, tApplyBeam.tab t2 where not all(near(t1.DATA,t2.DATA_ARRAY_FACTOR,5e-5) || (isnan(t1.DATA) && isnan(t2.DATA_ARRAY_FACTOR)))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test with beammode=ELEMENT"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=outinv.ms msout.overwrite=true steps=[applybeam] applybeam.usechannelfreq=true applybeam.invert=true applybeam.beammode=ELEMENT' -echo $cmd -$cmd -# Compare the DATA column of the output MS with the BBS reference output. -$taqlexe 'select from outinv.ms t1, tApplyBeam.tab t2 where not all(near(t1.DATA,t2.DATA_ELEMENT,5e-5) || (isnan(t1.DATA) && isnan(t2.DATA_ELEMENT)))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test with updateweights=true"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=. steps=[applybeam] applybeam.updateweights=truue msout.weightcolumn=NEW_WEIGHT_SPECTRUM' -echo $cmd -$cmd -# Check that the weights have changed -$taqlexe 'select from tNDPPP-generic.MS where all(near(WEIGHT_SPECTRUM, NEW_WEIGHT_SPECTRUM))' > taql.out -diff taql.out taql.ref || exit 1 diff --git a/CEP/DP3/DPPP/test/tApplyBeam.sh b/CEP/DP3/DPPP/test/tApplyBeam.sh deleted file mode 100755 index aee9fa41160..00000000000 --- a/CEP/DP3/DPPP/test/tApplyBeam.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tApplyBeam diff --git a/CEP/DP3/DPPP/test/tApplyBeam.tab.tgz b/CEP/DP3/DPPP/test/tApplyBeam.tab.tgz deleted file mode 100644 index a5c6d870b79a183f9953ec1356cc1c2ac7d8a25d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248226 zcmb2|=3rPf>1rqg^P5=i3hAp;<&OJ3ve@`|&xzBXdGk~zuw<%4dU|vm-z3Am#@%Go zWQT4E@8oDlDb2+bg%3MrN@v`3%B;wf-|}+WG<R<4h+C;QYXlZ7ZROn%u&d^-$PJw- zb*;-zuhxyt*!28d&zp-GDcXHHCx86AUtYWZ{NCc{bADTVH{Io)B-EKvZ+!mfHSd_~ zl~*zjuxz-Ud&B&8uG-r9Y^lp~d(FCU`b1}*N?G>S!D(CIL$~&jphqq(8lBxoA2~0P z)~oArI<=<0Ah51>`_cvP4~X8mk#RQif7tBE@c&`6%z{sZ1n3nd%(?zQnW1Y{1n0qD z4l1YGWj|(Usco1vTeu;Nk?*)~;m=1WJ48B{cTRn<>Og4l6_z>YXFte#!n39SQONfd z4>cd8oziU5^=aU=x;-~<x%z@njlp3dD?G2-to-tShoaA?&kJ`*glTercrD_^J)eiy zW?@>;O!nJG$(1L+Wwx#RZ#=Kz^5aA<YrZ-A{%ybE7%T8Mp5@7k`cxT?;vmI)im&Ul z{r={g-^_^pdpjr0`r`ki4U7K24s$F>VhFcds$siEVWZxfkFGmA798{WE5E>J;{S`8 zcTEbW&(%^t5gyzBWues7`NunyuCMQjvbg!Iz=qY*u~+Nk<UMQGt`X)p&YoFYBXo54 z?#X*t<hqUqH?=IW$SSppo^b!>t1s5JeCl3Dl$r9rZ(VbQGto~*;^HQb9TU`6y^nN} z>`{4nk%fKjv7oqA4b`&C+m>56dL6ZD>6mh4(zBY=nhjAVSM$^l@3L7N$8lbMlfY%x z&Y!EMau*tFcM2|i&NTI<$>$=AX&;wgkC@hLnYwb)FX0`TzM=6kFQ4x={r{+awQzG# z=uW18VN>UY>xTc{vqt;Drz(X#U4klc0v20}->%y#zSu>7`jd$#%0DaVw^S^t<X!pj z)5?cGb2_?<7A@-%jbmT6Lu<q7=PdP}yQ)5NU(BkjJzsU?mqdGUtnp#1=xa|x*Jp0K zBr%a|)rFSLH?MEKa7#@5wpdP~VP5)ym&g5oRQ;YTSi#k*9MdzsLQs2Yfy&L<<)^Pa z3QOkP(<T(sv*qK%|K}xFS@Q0fv8<s;JgC@4&NX9$^!9DWx0~wT^KqQd=q<8cVXddM z(tMIjQcZr`(?!QmWSgxIv%L8B?F4bd)pt)7G)XVLqqcL!mcHFdx{tmuvC!0W+o932 z^un(_OEjE*Un$q;-{SK@eEII_4828bmAuleoiArkY&MKMHRboooQA-w|Ct`JZI9bB zD_GUD;GyXzi>HV7a7%S9yLx?lb+lxCfT-e&tb_bJqXJwUBn>@+)H4oq8*aSd#AD8I zKG5Rp)<!-)zB5Y|k}Tt*9rXJe>y(`fEBTKq-1N*Uco&}-!aL>Hq=S`T8#c*o3VY(( znl^3P|KOL6`<*_2TXQi)dZn!EmM@I4YgLzhoi}aSMYX6+f%aFAJ%7Xe^W?AGR9&}P z=Ktq6z1y<lm(-0W*UY|S&eMaNy%kOSJ!kyRUcj;8Hh*Af!21W+o8ouZceHaJQ*XQT z|E1m;zB3no+lSq9dHwx=&X&Cs-~1P0j(DE%G@e_}`Qi!Xm;b6#)opBh9&XfM`!Q;@ z=+t7_sg@VjCA=+`GHq|x4>)y$Ke^wV<MZ!=wU1`GPciaY!xrBESb3w%l<!@MGmf?1 zjd6<pZ6ViRRIyBr-}t4^w1(SLw2j^h3xGk7Y|pPZjQ%F-&%0DMvok?K)5ey^;b-FR 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%0A`<<C? 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�ndmzu<>Ca+pRi8{|FW!G}?=8Qg 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 diff --git a/CEP/DP3/DPPP/test/tApplyBeam_ref b/CEP/DP3/DPPP/test/tApplyBeam_ref deleted file mode 100755 index 967693ea995..00000000000 --- a/CEP/DP3/DPPP/test/tApplyBeam_ref +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash - -# Generate reference data tApplyBeam.tab for tApplyBeam -# This script uses BBS. Note that casacore data should be up-to-date -# Run the script in the source directory of CEP/DP3/DPPP/test - -tar xf tNDPPP-generic.in_MS.tgz - -rm -rf tApplyBeam.tab.tgz tApplyBeam.tab - -#### Run BBS, correct data for beam with UseChannelFreq - -cat > tApplyBeam-bbs-ucf.parset <<EOF -Strategy.ChunkSize=100 -Strategy.Steps=[correct_ucf] - -Step.correct_ucf.Operation=CORRECT -Step.correct_ucf.Model.Beam.Enable=True -Step.correct_ucf.Model.Beam.UseChannelFreq=True -Step.correct_ucf.Output.Column=DATA_ucf -EOF - -calibrate-stand-alone -n -f tNDPPP-generic.MS tApplyBeam-bbs-ucf.parset tApplyBeam-bbs-ucf.parset - -rm tApplyBeam-bbs-ucf.parset - -#### Run BBS, correct data for beam with UseChannelFreq - -cat > tApplyBeam-bbs-noucf.parset <<EOF -Strategy.ChunkSize=100 -Strategy.Steps=[correct_ucf] - -Step.correct_ucf.Operation=CORRECT -Step.correct_ucf.Model.Beam.Enable=True -Step.correct_ucf.Model.Beam.UseChannelFreq=False -Step.correct_ucf.Output.Column=DATA_noucf -EOF - -calibrate-stand-alone -n -f tNDPPP-generic.MS tApplyBeam-bbs-noucf.parset tApplyBeam-bbs-noucf.parset - -rm tApplyBeam-bbs-noucf.parset - -#### Run BBS, correct data for beam with UseChannelFreq, ARRAY_FACTOR - -cat > tApplyBeam-bbs-arrayfactor.parset <<EOF -Strategy.ChunkSize=100 -Strategy.Steps=[correct_ucf] - -Step.correct_ucf.Operation=CORRECT -Step.correct_ucf.Model.Beam.Enable=True -Step.correct_ucf.Model.Beam.Mode=ARRAY_FACTOR -Step.correct_ucf.Model.Beam.UseChannelFreq=True -Step.correct_ucf.Output.Column=DATA_ARRAY_FACTOR -EOF - -calibrate-stand-alone -n -f tNDPPP-generic.MS tApplyBeam-bbs-arrayfactor.parset tApplyBeam-bbs-arrayfactor.parset - -rm tApplyBeam-bbs-arrayfactor.parset - -#### Run BBS, correct data for beam with UseChannelFreq, ELEMENT beam only - -cat > tApplyBeam-bbs-element.parset <<EOF -Strategy.ChunkSize=100 -Strategy.Steps=[correct_ucf] - -Step.correct_ucf.Operation=CORRECT -Step.correct_ucf.Model.Beam.Enable=True -Step.correct_ucf.Model.Beam.Mode=ELEMENT -Step.correct_ucf.Model.Beam.UseChannelFreq=True -Step.correct_ucf.Output.Column=DATA_ELEMENT -EOF - -calibrate-stand-alone -n -f tNDPPP-generic.MS tApplyBeam-bbs-element.parset tApplyBeam-bbs-element.parset - -rm tApplyBeam-bbs-element.parset - -#### Store output from BBS in separate table - -taql 'select from (select DATA_ucf, DATA_noucf, DATA_ARRAY_FACTOR, DATA_ELEMENT from tNDPPP-generic.MS giving tApplyBeam.tab as plain)' - -tar czf tApplyBeam.tab.tgz tApplyBeam.tab diff --git a/CEP/DP3/DPPP/test/tApplyCal.cc b/CEP/DP3/DPPP/test/tApplyCal.cc deleted file mode 100644 index 36ee1c1f08d..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCal.cc +++ /dev/null @@ -1,350 +0,0 @@ -//# tApplyCal.cc: Test program for class AORFlagger -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: tApplyCal.cc 24221 2013-08-02 12:24:48Z tammo $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/ApplyCal.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <Common/StreamUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// 9 baselines, 3 antennas, 4 correlations -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nchan) - : itsCount(0), itsNTime(ntime), itsNChan(nchan), itsNBl(9), itsNCorr(4), - itsTimeInterval(5.) - { - info().init (itsNCorr, nchan, ntime, 4472025740.0, itsTimeInterval, - string(), string()); - // Fill the baseline stations; use 3 stations. - // So they are called 00 01 02 10 11 12 20 21 22, etc. - - Vector<Int> ant1(itsNBl); - Vector<Int> ant2(itsNBl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<itsNBl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 3) { - st2 = 0; - if (++st1 == 3) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "ant1"; - antNames[1] = "ant2"; - antNames[2] = "ant3"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos(4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanWidth(nchan, 1000000.); - Vector<double> chanFreqs(nchan); - indgen (chanFreqs, 10500000., 1000000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(1,0); - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - weights=1.; - - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - DPBuffer buf; - buf.setTime (itsCount*itsTimeInterval + 4472025740.0); - buf.setData (data); - buf.setWeights (weights); - buf.setUVW (uvw); - Cube<bool> flags(data.shape()); - flags = false; - buf.setFlags (flags); - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = false; - buf.setFullResFlags (fullResFlags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) {} - - int itsCount, itsNTime, itsNChan, itsNBl, itsNCorr, itsTimeInterval; -}; - - - -// Class to check result of TestInput run by tests. -class TestOutput: public DPStep -{ -public: - enum tests {WeightsNotChanged=1, DataNotChanged=2, DataChanged=4, - DataEquals=8, WeightEquals=16}; - TestOutput(int ntime, int nchan, int doTest) - : itsCount(0), itsTimeStep(0), itsNTime(ntime), itsNBl(9), itsNChan(nchan), - itsNCorr(4), itsTimeInterval(5.), itsDoTest(doTest) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // Fill data and scale as needed. - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(1,0); - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - indgen (weights, 1.0f, 0.0f); - - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - - // The same gain corrections as in tApplyCal_tmp.parmdb - vector<Cube<Complex> > gains(4); // cube for every corr - for (int corr=0; corr<4; ++corr) { - gains[corr].resize(IPosition(3,2,2,3)); //freq,time,ant; - } - - gains[0](Slice(0,2),Slice(0,2),Slice(0,3))=1; - gains[1](Slice(0,2),Slice(0,2),Slice(0,3))=0; - gains[2](Slice(0,2),Slice(0,2),Slice(0,3))=0; - gains[3](Slice(0,2),Slice(0,2),Slice(0,3))=1; - // ant2 - gains[0](0,0,1)=2; - gains[3](0,0,1)=3; - gains[0](1,1,1)=Complex(3.,4.); - // ant3 - gains[2](1,0,2)=.5; - - if (itsDoTest & DataEquals) { - //cout<<"weights="<<buf.getWeights()<<endl; - for (int bl=0; bl<itsNBl; ++bl) { - for (int chan=0; chan<itsNChan; ++chan) { - for (int corr=0; corr<itsNCorr; ++corr) { - data(corr,chan,bl) /= - (gains[corr/2*3](chan/(itsNChan/2), - itsTimeStep/(itsNTime/2), info().getAnt1()[bl]) * - conj(gains[corr%2*3](chan/(itsNChan/2), - itsTimeStep/(itsNTime/2), info().getAnt2()[bl]))); - } - if (info().getAnt2()[bl]==2 && (itsTimeStep/(itsNTime/2))==0 - && (chan/(itsNChan/2))==1) { - data(0,chan,bl)-=0.5*data(1,chan,bl); - data(2,chan,bl)-=0.5*data(3,chan,bl); - } - if (info().getAnt1()[bl]==2 && (itsTimeStep/(itsNTime/2))==0 - && (chan/(itsNChan/2))==1) { - data(0,chan,bl)-=0.5*data(2,chan,bl); - data(1,chan,bl)-=0.5*data(3,chan,bl); - } - } - } - - } - - if (itsDoTest & WeightEquals) { - ASSERT ( near(buf.getWeights()(0,0,1),4.)); - ASSERT ( near(buf.getWeights()(1,0,1),9.)); - ASSERT ( near(buf.getWeights()(2,0,1),4.)); - ASSERT ( near(buf.getWeights()(3,0,1),9.)); - ASSERT ( near(buf.getWeights()(0,31,5),0.8)); - } - - if (itsDoTest & DataEquals) { - ASSERT (allNear (buf.getData(), data, 1.e-7)); - } - - if (itsDoTest & DataNotChanged) { - ASSERT (allNear (buf.getData(), data, 1.e-7)); - } - if (itsDoTest & DataChanged) { - ASSERT (!(allNear (buf.getData(), data, 1.e-7))); - } - if (itsDoTest & WeightsNotChanged) { - ASSERT (allNear (buf.getWeights(), weights, 1.e-7)); - } - itsCount++; - itsTimeStep++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==itsTimeInterval); - ASSERT (int(infoIn.nbaselines())==itsNBl); - } - - int itsCount; - int itsTimeStep; - int itsNTime, itsNBl, itsNChan, itsNCorr, itsTimeInterval, itsDoTest; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - - const DPStep::ShPtr& step=step1->getNextStep(); - - // TODO: do line below for any step that is an ApplyCal - step->show (cout); - - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test clock + tec, and test two ApplyCals in sequence -void testclocktec(int ntime, int nchan) -{ - cout << "testclocktec: ntime=" << ntime << " nchan=" << nchan << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nchan); - DPStep::ShPtr step1(in); - - ParameterSet parset1; - parset1.add ("correction", "tec"); - parset1.add ("parmdb", "tApplyCal_tmp.parmdb"); - parset1.add ("timeslotsperparmupdate", "5"); - parset1.add ("updateweights", "true"); - DPStep::ShPtr step2(new ApplyCal(in, parset1, "")); - - ParameterSet parset2; - parset2.add ("correction", "clock"); - parset2.add ("parmdb", "tApplyCal_tmp.parmdb"); - parset2.add ("timeslotsperparmupdate", "5"); - parset2.add ("updateweights", "true"); - DPStep::ShPtr step3(new ApplyCal(in, parset2, "")); - - ParameterSet parset3; - parset3.add ("correction", "commonscalarphase"); - parset3.add ("parmdb", "tApplyCal_tmp.parmdb"); - parset3.add ("timeslotsperparmupdate", "1"); - parset3.add ("udpateweights", "true"); - DPStep::ShPtr step4(new ApplyCal(in, parset3, "")); - - DPStep::ShPtr step5(new TestOutput(ntime, nchan, - TestOutput::DataChanged | TestOutput::WeightsNotChanged)); - - step1->setNextStep (step2); - step2->setNextStep (step3); - step3->setNextStep (step4); - step4->setNextStep (step5); - execute (step1); - cout<<"finished testclocktec"<<endl; -} - -// Test gain -void testgain(int ntime, int nchan) -{ - cout << "testgain: ntime=" << ntime << " nchan=" << nchan << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nchan); - DPStep::ShPtr step1(in); - - ParameterSet parset1; - parset1.add ("correction", "gain"); - parset1.add ("parmdb", "tApplyCal_tmp.parmdb"); - parset1.add ("timeslotsperparmupdate", "5"); - parset1.add ("updateweights", "true"); - DPStep::ShPtr step2(new ApplyCal(in, parset1, "")); - - DPStep::ShPtr step3(new TestOutput(ntime, nchan, - TestOutput::DataEquals)); - - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - - -int main() -{ - INIT_LOGGER ("tApplyCal"); - try { - testclocktec (10, 32); - testgain (10, 32); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tApplyCal.in_parmdb.tgz b/CEP/DP3/DPPP/test/tApplyCal.in_parmdb.tgz deleted file mode 100644 index 4c14cc17721364d02af8f9a7c73d3815929b7429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2961 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 diff --git a/CEP/DP3/DPPP/test/tApplyCal.run b/CEP/DP3/DPPP/test/tApplyCal.run deleted file mode 100755 index 64910a681ba..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCal.run +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -if test ! -f tApplyCal.in_parmdb.tgz; then - return 3 # untested -fi - -tar zxf tApplyCal.in_parmdb.tgz -./tApplyCal diff --git a/CEP/DP3/DPPP/test/tApplyCal.sh b/CEP/DP3/DPPP/test/tApplyCal.sh deleted file mode 100755 index 52e5cec9329..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCal.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tApplyCal diff --git a/CEP/DP3/DPPP/test/tApplyCal2.run b/CEP/DP3/DPPP/test/tApplyCal2.run deleted file mode 100755 index 6505b604075..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCal2.run +++ /dev/null @@ -1,145 +0,0 @@ -#!/bin/bash - -# Get the taql executable and srcdir (script created by cmake's CONFIGURE_FILE). -source findenv.run_script -echo "srcdirx=$rt_srcdir" - -# Set srcdir if not defined (in case run by hand). -if test "$srcdir" = ""; then - srcdir="$rt_srcdir" -fi - -if test ! -f ${srcdir}/tNDPPP-generic.in_MS.tgz; then - exit 3 # untested -fi - -set -e # Stop on any error - -rm -rf tApplyCal2_tmp -mkdir -p tApplyCal2_tmp -# Unpack the MS and other files and do the DPPP run. -cd tApplyCal2_tmp -tar zxf ${srcdir}/tNDPPP-generic.in_MS.tgz - -# Create expected taql output. -echo " select result of 0 rows" > taql.ref - -echo; echo "Creating parmdb with defvalues 3" -parmdbm <<EOL -open table="tApplyCal.parmdb" -adddef Gain:0:0:Real values=3. -adddef Gain:1:1:Real values=3. -EOL - -echo; echo "Testing without updateweights" -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 msout.weightcolumn=WEIGHTS_NEW steps=[applycal] applycal.parmdb=tApplyCal.parmdb showcounts=false' -echo $cmd -eval $cmd -$taqlexe 'select from tNDPPP-generic.MS where not(all(DATA~=9*DATA3))' > taql.out -diff taql.out taql.ref || exit 1 -$taqlexe 'select from tNDPPP-generic.MS where not(all(WEIGHTS_NEW~=WEIGHT_SPECTRUM))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Testing with updateweights" -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 msout.weightcolumn=WEIGHTS_NEW steps=[applycal] applycal.parmdb=tApplyCal.parmdb showcounts=false applycal.updateweights=true' -echo $cmd -eval $cmd -$taqlexe 'select from tNDPPP-generic.MS where not(all(WEIGHTS_NEW~=81*WEIGHT_SPECTRUM))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Testing CommonScalarPhase" -rm -rf tApplyCal.parmdb -parmdbm <<EOL -open table="tApplyCal.parmdb" -adddef CommonScalarPhase values=0 -EOL -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.parmdb=tApplyCal.parmdb applycal.correction=commonscalarphase showcounts=false' -echo $cmd -eval $cmd -$taqlexe 'select from tNDPPP-generic.MS where not(all(DATA~=DATA3))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Testing ScalarPhase" -rm -rf tApplyCal.parmdb -parmdbm <<EOL -open table="tApplyCal.parmdb" -adddef ScalarPhase values=0 -EOL -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.parmdb=tApplyCal.parmdb applycal.correction=commonscalarphase showcounts=false' -echo $cmd -eval $cmd -$taqlexe 'select from tNDPPP-generic.MS where not(all(DATA~=DATA3))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Testing ScalarPhase values" -rm -rf tApplyCal.parmdb -parmdbm <<EOL -open table="tApplyCal.parmdb" -add ScalarPhase:CS001HBA0 values=[0.,0.,0.,0.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarPhase:CS002HBA0 values=[0.,0.,0.,0.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarPhase:CS002HBA1 values=[0.,0.,0.,0.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarPhase:CS004HBA1 values=[0.,0.,0.,0.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarPhase:RS106HBA values=[0.,0.,0.,0.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarPhase:RS208HBA values=[0.,0.,0.,0.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarPhase:RS305HBA values=[0.,0.,0.,0.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarPhase:RS307HBA values=[0.,0.,0.,0.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -EOL -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.parmdb=tApplyCal.parmdb applycal.correction=commonscalarphase showcounts=false' -echo $cmd -eval $cmd -$taqlexe 'select from tNDPPP-generic.MS where not(all(DATA~=DATA3))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Testing ScalarAmplitude values" -rm -rf tApplyCal.parmdb -parmdbm <<EOL -open table="tApplyCal.parmdb" -add ScalarAmplitude:CS001HBA0 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarAmplitude:CS002HBA0 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarAmplitude:CS002HBA1 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarAmplitude:CS004HBA1 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarAmplitude:RS106HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarAmplitude:RS208HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarAmplitude:RS305HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add ScalarAmplitude:RS307HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -EOL -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.parmdb=tApplyCal.parmdb applycal.correction=scalaramplitude showcounts=false' -echo $cmd -eval $cmd -$taqlexe 'select from tNDPPP-generic.MS where not(all(DATA~=9*DATA3))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Testing RotationAngle:*:phase_center values" -rm -rf tApplyCal.parmdb -parmdbm <<EOL -open table="tApplyCal.parmdb" -add RotationMeasure:CS001HBA0:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:CS002HBA0:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:CS002HBA1:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:CS004HBA1:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:RS106HBA:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:RS208HBA:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:RS305HBA:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:RS307HBA:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -EOL -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.parmdb=tApplyCal.parmdb applycal.correction=rotationmeasure showcounts=false' -echo $cmd -eval $cmd - -echo; echo "Testing RotationAngle:* values" -rm -rf tApplyCal.parmdb -parmdbm <<EOL -open table="tApplyCal.parmdb" -add RotationMeasure:CS001HBA0 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:CS002HBA0 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:CS002HBA1 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:CS004HBA1 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:RS106HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:RS208HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:RS305HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -add RotationMeasure:RS307HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] -EOL -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.parmdb=tApplyCal.parmdb applycal.correction=rotationmeasure showcounts=false' -echo $cmd -eval $cmd - diff --git a/CEP/DP3/DPPP/test/tApplyCal2.sh b/CEP/DP3/DPPP/test/tApplyCal2.sh deleted file mode 100755 index 2c166e188f8..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCal2.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tApplyCal2 diff --git a/CEP/DP3/DPPP/test/tApplyCalH5.cc b/CEP/DP3/DPPP/test/tApplyCalH5.cc deleted file mode 100644 index 9a5ebe79d08..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCalH5.cc +++ /dev/null @@ -1,382 +0,0 @@ -//# tApplyCalH5.cc: Test program for class ApplyCal -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: tApplyCalH5.cc 24221 2013-08-02 12:24:48Z tammo $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/ApplyCal.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/H5Parm.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <Common/StreamUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// 9 baselines, 3 antennas, 4 correlations -class TestInput: public DPInput -{ -public: - TestInput(uint ntime, uint nchan) - : itsCount(0), itsNTime(ntime), itsNChan(nchan), itsNBl(9), itsNCorr(4), - itsTimeInterval(5.), itsFirstTime(4472025740.0) - { - info().init (itsNCorr, nchan, ntime, itsFirstTime, itsTimeInterval, - string(), string()); - // Fill the baseline stations; use 3 stations. - // So they are called 00 01 02 10 11 12 20 21 22, etc. - - Vector<Int> ant1(itsNBl); - Vector<Int> ant2(itsNBl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<itsNBl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 3) { - st2 = 0; - if (++st1 == 3) { - st1 = 0; - } - } - } - Vector<String> antNames(3); - antNames[0] = "ant1"; - antNames[1] = "ant2"; - antNames[2] = "ant3"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos(3); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(3, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanWidth(nchan, 100.e6); - Vector<double> chanFreqs(nchan); - for (uint ch=0; ch<nchan; ++ch) { - double freq = 100.e6 + ch*10.e6; - if (ch>2) { - // Make frequencies unevenly spaced - freq += 4.e6; - } - if (ch>4) { - freq += 1.e6; - } - if (ch>5) { - freq += 15.e6; - } - chanFreqs[ch] = freq; - } - if (nchan==2) { - chanFreqs[0] = 100.e6; - chanFreqs[1] = 101.e6; - } - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(1,0); - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - weights=1.; - - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - DPBuffer buf; - buf.setTime (itsCount*itsTimeInterval + itsFirstTime); - buf.setData (data); - buf.setWeights (weights); - buf.setUVW (uvw); - Cube<bool> flags(data.shape()); - flags = false; - buf.setFlags (flags); - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = false; - buf.setFullResFlags (fullResFlags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) {} - - int itsCount, itsNTime, itsNChan, itsNBl, itsNCorr, itsTimeInterval; - double itsFirstTime; -}; - - - -// Class to check result of TestInput run by tests. -class TestOutput: public DPStep -{ -public: - enum tests {WeightsNotChanged=1, DataNotChanged=2, DataChanged=4, - DataEquals=8, WeightEquals=16}; - TestOutput(int ntime, int nchan, int doTest, bool solsHadFreqAxis=true, - bool solsHadTimeAxis=true) - : itsCount(0), itsTimeStep(0), itsNTime(ntime), itsNBl(9), itsNChan(nchan), - itsNCorr(4), itsTimeInterval(5.), itsDoTest(doTest), - itsSolsHadFreqAxis(solsHadFreqAxis), itsSolsHadTimeAxis(solsHadTimeAxis) - {} -private: - virtual bool process (const DPBuffer& buf) - { - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(1,0); - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - indgen (weights, 1.0f, 0.0f); - - vector<double> rightTimes(max(itsNTime, 5)); - rightTimes[0] = 0; - rightTimes[1] = 2; - rightTimes[2] = 3; - for (int t=3; t<itsNTime; ++t) { - rightTimes[t] = 4; - } - if (!itsSolsHadTimeAxis) { - rightTimes.assign(itsNTime, 0); - } - - vector<double> rightFreqs(max(itsNChan, 5)); - rightFreqs[0] = 1; - rightFreqs[1] = 1; - rightFreqs[2] = 2; - rightFreqs[3] = 2; - rightFreqs[4] = 2; - for (int f=5; f<itsNChan; ++f) { - rightFreqs[f] = 3; - } - if (!itsSolsHadFreqAxis) { - rightFreqs.assign(itsNChan, 1); - } - - if (itsDoTest) { - //cout<<endl; - for (uint bl=0; bl<info().nbaselines(); ++bl) { - for (int chan=0; chan<itsNChan; ++chan) { - uint ant1 = info().getAnt1()[bl]; - uint ant2 = info().getAnt2()[bl]; - // Square root of autocorrelation for first antenna - complex<float> val = sqrt(buf.getData().data()[bl*itsNCorr*itsNChan + chan*itsNCorr]); - - bool flag = buf.getFlags().data()[bl*itsNCorr*itsNChan + chan*itsNCorr]; - if ((ant1==1 || ant2==1) && rightTimes[itsTimeStep]==2 && rightFreqs[chan]==2) { - ASSERT(flag); - } else { - ASSERT(!flag); - ASSERT(near(rightTimes[itsTimeStep]*100 + rightFreqs[chan], val)); - } - } - } - } - - if (itsDoTest & DataEquals) { - ASSERT (allNear (buf.getData(), data, 1.e-7)); - } - - if (itsDoTest & DataNotChanged) { - ASSERT (allNear (buf.getData(), data, 1.e-7)); - } - if (itsDoTest & DataChanged) { - ASSERT (!(allNear (buf.getData(), data, 1.e-7))); - } - if (itsDoTest & WeightsNotChanged) { - ASSERT (allNear (buf.getWeights(), weights, 1.e-7)); - } - itsCount++; - itsTimeStep++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==itsTimeInterval); - ASSERT (int(infoIn.nbaselines())==itsNBl); - } - - int itsCount; - int itsTimeStep; - int itsNTime, itsNBl, itsNChan, itsNCorr, itsTimeInterval, itsDoTest; - bool itsSolsHadFreqAxis, itsSolsHadTimeAxis; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - - const DPStep::ShPtr& step=step1->getNextStep(); - - // TODO: do line below for any step that is an ApplyCal - step->show (cout); - - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test amplitude correction -void testampl(int ntime, int nchan, bool freqaxis, bool timeaxis) -{ - cout << "testampl: ntime=" << ntime << " nchan=" << nchan << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nchan); - DPStep::ShPtr step1(in); - - ParameterSet parset1; - parset1.add ("correction", "myampl"); - parset1.add ("parmdb", "tApplyCalH5_tmp.h5"); - DPStep::ShPtr step2(new ApplyCal(in, parset1, "")); - - DPStep::ShPtr step3(new TestOutput(ntime, nchan, - TestOutput::WeightsNotChanged, freqaxis, timeaxis)); - - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); - cout<<endl; -} - - -// Write a temporary H5Parm -void createH5Parm(vector<double> times, vector<double> freqs) { - H5Parm h5parm("tApplyCalH5_tmp.h5", true); - - // Add antenna metadata - vector<string> antNames; - vector<vector<double> > antPositions; - vector<double> oneAntPos(3, 42.); - for (uint i=0; i<3; ++i) { - stringstream antNameStr; - antNameStr<<"ant"<<(i+1); - antNames.push_back(antNameStr.str()); - antPositions.push_back(oneAntPos); - } - h5parm.addAntennas(antNames, antPositions); - - vector<H5Parm::AxisInfo> axes; - axes.push_back(H5Parm::AxisInfo("ant",3)); - if (!times.empty()) { - axes.push_back(H5Parm::AxisInfo("time", times.size())); - } - if (!freqs.empty()) { - axes.push_back(H5Parm::AxisInfo("freq", freqs.size())); - } - - H5Parm::SolTab soltab = h5parm.createSolTab("myampl","amplitude",axes); - ASSERT(h5parm.nSolTabs() == 1); - ASSERT(h5parm.hasSolTab("myampl")); - soltab.setTimes(times); - soltab.setFreqs(freqs); - soltab.setAntennas(antNames); - - uint ntimes = max(times.size(), 1); - uint nfreqs = max(freqs.size(), 1); - vector<double> values(ntimes*nfreqs*3); - vector<double> weights(ntimes*nfreqs*3); - for (uint ant=0; ant<3; ++ant) { - for (uint t=0; t<ntimes; ++t) { - for (uint f=0; f<nfreqs; ++f) { - values[ant*ntimes*nfreqs+t*nfreqs + f] = 1./(100.*(t%100)+(1+f)); - weights[ant*ntimes*nfreqs+t*nfreqs + f] = 1.; - if (ant==1 && t==2 && f==1) { - weights[ant*ntimes*nfreqs+t*nfreqs + f] = 0.; - } - } - } - } - soltab.setValues(values, weights, "CREATE with DPPP tApplyCalH5"); -} - -int main() -{ - INIT_LOGGER ("tApplyCalH5"); - - vector<double> times; - times.push_back(4472025742.0); - times.push_back(4472025745.0); - times.push_back(4472025747.5); - times.push_back(4472025748.0); - times.push_back(4472025762.0); - vector<double> freqs; - freqs.push_back(90.e6); - freqs.push_back(139.e6); - freqs.push_back(170.e6); - - try { - createH5Parm(times, freqs); - testampl(5, 7, true, true); - createH5Parm(times, freqs); - testampl(5, 2, true, true); - createH5Parm(times, vector<double>()); - testampl(8, 9, false, true); - createH5Parm(vector<double>(), freqs); - testampl(13, 3, true, false); - createH5Parm(vector<double>(), vector<double>()); - testampl(9, 2, false, false); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tApplyCalH5.run b/CEP/DP3/DPPP/test/tApplyCalH5.run deleted file mode 100755 index 81ee2db8f59..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCalH5.run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -./tApplyCalH5 diff --git a/CEP/DP3/DPPP/test/tApplyCalH5.sh b/CEP/DP3/DPPP/test/tApplyCalH5.sh deleted file mode 100755 index 189bdc360b9..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCalH5.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tApplyCalH5 diff --git a/CEP/DP3/DPPP/test/tApplyCal_parmdbscript b/CEP/DP3/DPPP/test/tApplyCal_parmdbscript deleted file mode 100644 index 01414cdf6bc..00000000000 --- a/CEP/DP3/DPPP/test/tApplyCal_parmdbscript +++ /dev/null @@ -1,29 +0,0 @@ -# List of parmdbm commands to generate tApplyCal_tmp.parmdb - -open tablename='tApplyCal_tmp.parmdb' - -clear - -adddef Gain:0:0:Real values=1 -adddef Gain:0:0:Imag values=0 -adddef Gain:1:1:Real values=1 -adddef Gain:0:1:Real values=0 -adddef Gain:0:1:Imag values=0 -adddef Gain:1:0:Imag values=0 - -adddef Clock values=0.0000037 -adddef TEC values=0.000013 -adddef CommonRotationAngle values=0.785 -adddef CommonScalarPhase values=0.00003 - -adddef Clock:ant1 values=0 -adddef TEC:ant1 values=0 -adddef CommonRotationAngle:ant1 values=0 -adddef CommonScalarPhase:ant1 values=0 - -add Gain:0:0:Real:ant2 values=[2,1,1,3], domain=[10000000, 43000000, 4472025735, 4472025795], shape=[2,2] -add Gain:0:0:Imag:ant2 values=[0,0,0,4], domain=[10000000, 43000000, 4472025735, 4472025795], shape=[2,2] -add Gain:1:1:Real:ant2 values=[3,1,1,1], domain=[10000000, 43000000, 4472025735, 4472025795], shape=[2,2] -add Gain:1:1:Imag:ant2 values=[0,0,0,0], domain=[10000000, 43000000, 4472025735, 4472025795], shape=[2,2] - -add Gain:0:1:Real:ant3 values=[0,0.5,0,0], domain=[10000000, 43000000, 4472025735, 4472025795], shape=[2,2] diff --git a/CEP/DP3/DPPP/test/tAverager.cc b/CEP/DP3/DPPP/test/tAverager.cc deleted file mode 100644 index 31a0bd2a20b..00000000000 --- a/CEP/DP3/DPPP/test/tAverager.cc +++ /dev/null @@ -1,623 +0,0 @@ -//# tAverager.cc: Test program for class Averager -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Averager.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> - -#include <casacore/casa/Quanta/Quantum.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - - -// Simple class to generate input arrays. -// It can only set all flags to true or all false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // They are not averaged, thus only 1 time per row. - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = itsFlag; - buf.setFullResFlags (fullResFlags); - Matrix<double> uvw(3,itsNBl); - indgen (uvw, double(itsCount*100)); - buf.setUVW (uvw); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) - { - // Use timeInterval=5 - info().init (itsNCorr, itsNChan, itsNTime, 100, 5, string(), string()); - // Define the frequencies. - Vector<double> chanFreqs(itsNChan); - Vector<double> chanWidth(itsNChan, 100000.); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result of averaging TestInput. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nbl, int nchan, int ncorr, - int navgtime, int navgchan, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsNAvgTime(navgtime), itsNAvgChan(navgchan), - itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer& buf) - { - int nchan = 1+(itsNChan-1)/itsNAvgChan; - int navgtime = std::min(itsNAvgTime, itsNTime-itsCount*itsNAvgTime); - // Fill expected result in similar way as TestInput. - Cube<Complex> data(itsNCorr,itsNChan,itsNBl); - Cube<float> weights(itsNCorr,itsNChan,itsNBl); - Cube<bool> fullResFlags(itsNChan,itsNAvgTime,itsNBl); - fullResFlags = true; // takes care of missing times at the end - weights = 0; - for (int j=itsCount*itsNAvgTime; j<itsCount*itsNAvgTime+navgtime; ++j) { - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] += Complex(i+j*10,i-1000+j*6); - weights.data()[i] += float(1); - } - fullResFlags(Slicer(IPosition(3,0,0,0), - IPosition(3,itsNChan,navgtime,itsNBl))) = itsFlag; - } - Cube<Complex> result(itsNCorr,nchan,itsNBl); - Cube<float> resultw(itsNCorr,nchan,itsNBl); - resultw = 0; - // Average to get the true expected result. - for (int k=0; k<itsNBl; ++k) { - for (int i=0; i<itsNCorr; ++i) { - for (int j=0; j<nchan; ++j) { - int jc; - for (jc=j*itsNAvgChan; - jc<std::min((j+1)*itsNAvgChan, itsNChan); ++jc) { - result(i,j,k) += data(i,jc,k); - resultw(i,j,k) += weights(i,jc,k); - } - result(i,j,k) /= float(navgtime*(jc-j*itsNAvgChan)); - } - } - } - // Check the averaged result. - ASSERT (allNear(real(buf.getData()), real(result), 1e-5)); - ///cout << imag(buf.getData()) << endl<<imag(result); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-5)); - ASSERT (allEQ(buf.getFlags(), itsFlag)); - ASSERT (near(buf.getTime(), - 2+5*(itsCount*itsNAvgTime + (itsNAvgTime-1)/2.))); - ASSERT (allNear(buf.getWeights(), resultw, 1e-5)); - if (navgtime == itsNAvgTime) { - Matrix<double> uvw(3,itsNBl); - indgen (uvw, 100*(itsCount*itsNAvgTime + 0.5*(itsNAvgTime-1))); - ASSERT (allNear(buf.getUVW(), uvw, 1e-5)); - } - cout <<buf.getFullResFlags()<< fullResFlags; - ASSERT (allEQ(buf.getFullResFlags(), fullResFlags)); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNChan); - ASSERT (int(info.nchan())==1+(itsNChan-1)/itsNAvgChan); - ASSERT (int(info.ntime())==1+(itsNTime-1)/itsNAvgTime); - ASSERT (info.timeInterval()==5*itsNAvgTime); - ASSERT (int(info.nchanAvg())==itsNAvgChan); - ASSERT (int(info.ntimeAvg())==itsNAvgTime); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr, itsNAvgTime, itsNAvgChan; - bool itsFlag; -}; - - -// More elaborate class which can set different flags and weights. -class TestInput3: public DPInput -{ -public: - TestInput3(int nrtime, int nrbl, int nrchan, int nrcorr) - : itsCount(0), - itsNrTime(nrtime), itsNrBl(nrbl), itsNrChan(nrchan), itsNrCorr(nrcorr) - { - itsFullResFlags.resize (itsNrChan,1,nrbl); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNrTime) { - return false; - } - Cube<Complex> data(itsNrCorr,itsNrChan,itsNrBl); - Cube<float> weights(itsNrCorr,itsNrChan,itsNrBl); - Cube<bool> flags(itsNrCorr,itsNrChan,itsNrBl); - int i = 0; - for (int ib=0; ib<itsNrBl; ++ib) { - for (int ic=0; ic<itsNrChan; ++ic) { - for (int ip=0; ip<itsNrCorr; ++ip) { - data.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - weights.data()[i] = (1 + (itsCount+ib+ic)%5) / 5.; - flags.data()[i] = ((itsCount+2*ib+3*ic) % 7 == 0); - i++; - } - itsFullResFlags(ic,0,ib) = ((itsCount+2*ib+3*ic) % 7 == 0); - } - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - buf.setWeights (weights); - buf.setFlags (flags); - Vector<uint> rownrs(1,itsCount); - buf.setRowNrs (rownrs); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void getUVW (const casacore::RefRows&, double, DPBuffer& buf) - { - buf.getUVW().resize (3, itsNrBl); - indgen (buf.getUVW()); - } - virtual bool getFullResFlags (const casacore::RefRows&, DPBuffer& buf) - { - buf.getFullResFlags().assign (itsFullResFlags); - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) - { - // Use timeInterval=5 - info().init (itsNrCorr, itsNrChan, itsNrTime, 100, 5, string(), string()); - // Define the frequencies. - Vector<double> chanFreqs(itsNrChan); - Vector<double> chanWidth(itsNrChan, 100000.); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } - int itsCount, itsNrTime, itsNrBl, itsNrChan, itsNrCorr; - Cube<bool> itsFullResFlags; -}; - -// Class to check result of averaging TestInput3. -// All input must be averaged (in one or more steps) to a single value -// per corr/baseline. -class TestOutput3: public DPStep -{ -public: - TestOutput3(int nrtime, int nrbl, int nrchan, int nrcorr) - : itsNrTime(nrtime), itsNrBl(nrbl), itsNrChan(nrchan), itsNrCorr(nrcorr) - {} -private: - virtual bool process (const DPBuffer& buf) - { - Cube<Complex> result(itsNrCorr,1,itsNrBl); - Cube<float> weights(itsNrCorr,1,itsNrBl); - Cube<bool> flags(itsNrCorr,1,itsNrBl); - Cube<bool> fullResFlags(itsNrChan,itsNrTime,itsNrBl); - weights = float(0); - flags = true; - fullResFlags = true; - // Create data in the same way as in TestInput3. - for (int it=0; it<itsNrTime; ++it) { - int i = 0; - for (int ib=0; ib<itsNrBl; ++ib) { - for (int ic=0; ic<itsNrChan; ++ic) { - for (int ip=0; ip<itsNrCorr; ++ip) { - if ((it+2*ib+3*ic) % 7 != 0) { - float weight = (1 + (it+ib+ic)%5) / 5.; - result(ip,0,ib) += weight * Complex(i+it*10,i-1000+it*6); - weights(ip,0,ib) += weight; - /// cout << result(ip,0,ib) << weight << endl; - flags(ip,0,ib) = false; - fullResFlags(ic,it,ib) = false; - } - i++; - } - } - } - } - ASSERT (allNE(weights, float(0.))); - for (uint i=0; i<result.size(); ++i) { - result.data()[i] /= weights.data()[i]; - } - // Check the averaged result. - ///cout << real(buf.getData()) << endl<<real(result); - ASSERT (allNear(real(buf.getData()), real(result), 1e-5)); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-5)); - ASSERT (allEQ(buf.getFlags(), flags)); - ASSERT (near(buf.getTime(), 2.+5*(itsNrTime-1)/2.)); - ASSERT (allNear(buf.getWeights(), weights, 1e-5)); - Matrix<double> uvw(3,itsNrBl); - indgen (uvw); - ASSERT (allNear(buf.getUVW(), uvw, 1e-5)); - ///cout <<buf.getFullResFlags()<< fullResFlags; - ASSERT (allEQ(buf.getFullResFlags(), fullResFlags)); - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNrChan); - ASSERT (info.nchan()==1); - ASSERT (info.ntime()==1); - ASSERT (info.timeInterval()==5*itsNrTime); - ASSERT (int(info.nchanAvg())==itsNrChan); - ASSERT (int(info.ntimeAvg())==itsNrTime); - } - - int itsNrTime, itsNrBl, itsNrChan, itsNrCorr; -}; - -// Simple class to flag every step-th XX point. -class TestFlagger: public DPStep -{ -public: - TestFlagger(int step) - : itsCount(0), itsStep(step) - {} -private: - virtual bool process (const DPBuffer& buf) - { - DPBuffer buf2(buf); - int ncorr = buf2.getFlags().shape()[0]; - int np = buf2.getFlags().size() / ncorr; - bool* flagPtr = buf2.getFlags().data(); - for (int i=0; i<np; ++i) { - if ((i+itsCount)%itsStep == 0) { - ///cout << "flagged " <<itsCount <<' '<< i << endl; - for (int j=0; j<ncorr; ++j) { - flagPtr[i*ncorr + j] = true; - } - } - } - getNextStep()->process (buf2); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - - int itsCount, itsStep; -}; - -// Class to check result of averaging and flagging TestInput3. -// First the data are averaged from 8,4 to 4,2, then every step-th point -// is flagged, and finally it is averaged to 1,1. -class TestOutput4: public DPStep -{ -public: - TestOutput4(int nrtime, int nrbl, int nrchan, int nrcorr, int step) - : itsNrTime(nrtime), itsNrBl(nrbl), itsNrChan(nrchan), itsNrCorr(nrcorr), - itsStep(step) - {} -private: - virtual bool process (const DPBuffer& buf) - { - Cube<Complex> result(itsNrCorr,1,itsNrBl); - Cube<float> weights(itsNrCorr,1,itsNrBl); - Cube<bool> flags(itsNrCorr,1,itsNrBl); - Cube<bool> fullResFlags(itsNrChan,itsNrTime,itsNrBl); - weights = float(0); - flags = true; - fullResFlags = true; - // Create data in the same way as in TestInput3. - for (int it=0; it<itsNrTime; ++it) { - int i = 0; - for (int ib=0; ib<itsNrBl; ++ib) { - for (int ic=0; ic<itsNrChan; ++ic) { - // TestFlagger flags every step-th point of 2x2 averaged data. - int tf = it/2; // same as itsCount in testFlagger - if (((ib*itsNrChan + ic)/2 + tf) % itsStep == 0) { - ///cout << "out4 flagged "<< tf<<' '<< i/itsNrCorr<<' ' <<ib<<' '<<ic/2 << endl; - i += itsNrCorr; - } else { - for (int ip=0; ip<itsNrCorr; ++ip) { - if ((it+2*ib+3*ic) % 7 != 0) { - float weight = (1 + (it+ib+ic)%5) / 5.; - result(ip,0,ib) += weight * Complex(i+it*10,i-1000+it*6); - weights(ip,0,ib) += weight; - /// cout << result(ip,0,ib) << weight << endl; - flags(ip,0,ib) = false; - fullResFlags(ic,it,ib) = false; - } - i++; - } - } - } - } - } - for (uint i=0; i<result.size(); ++i) { - if (!flags.data()[i]) { - result.data()[i] /= weights.data()[i]; - } - } - // Check the averaged result. - ///cout << real(buf.getData()) << endl<<real(result); - ASSERT (allNear(real(buf.getData()), real(result), 1e-5)); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-5)); - ASSERT (allEQ(buf.getFlags(), flags)); - ASSERT (near(buf.getTime(), 2.+5*(itsNrTime-1)/2.)); - ASSERT (allNear(buf.getWeights(), weights, 1e-5)); - Matrix<double> uvw(3,itsNrBl); - indgen (uvw); - ASSERT (allNear(buf.getUVW(), uvw, 1e-5)); - ///cout <<buf.getFullResFlags()<< fullResFlags; - ASSERT (allEQ(buf.getFullResFlags(), fullResFlags)); - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNrChan); - ASSERT (info.nchan()==1); - ASSERT (info.ntime()==1); - ASSERT (info.timeInterval()==5*itsNrTime); - ASSERT (int(info.nchanAvg())==itsNrChan); - ASSERT (int(info.ntimeAvg())==itsNrTime); - } - - int itsNrTime, itsNrBl, itsNrChan, itsNrCorr, itsStep; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test simple averaging without flagged points. -void test1(int ntime, int nbl, int nchan, int ncorr, - int navgtime, int navgchan, bool flag) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " navgtime=" << navgtime - << " navgchan=" << navgchan << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("freqstep", toString(navgchan)); - parset.add ("timestep", toString(navgtime)); - DPStep::ShPtr step2(new Averager(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, - navgtime, navgchan, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Like test 1, but specify target resolution -void test1resolution(int ntime, int nbl, int nchan, int ncorr, - double timeresolution, double freqresolution, - string frequnit, bool flag) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " timeresolution=" << timeresolution - << " freqresolution=" << freqresolution << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("freqresolution", toString(freqresolution)+frequnit); - parset.add ("timeresolution", toString(timeresolution)); - DPStep::ShPtr step2(new Averager(in, parset, "")); - - if (!frequnit.empty()) { - Quantity q(freqresolution, frequnit); - freqresolution = q.getValue("Hz", true); - } - - int navgchan = std::max(1, int(freqresolution / 100000 + 0.5)); - int navgtime = std::max(1, int(timeresolution / 5. + 0.5)); - - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, - navgtime, navgchan, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Like test1, but the averaging is done in two steps. -void test2(int ntime, int nbl, int nchan, int ncorr, bool flag) -{ - cout << "test2: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " navgtime=2" - << " navgchan=4" << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset1, parset2; - parset1.add ("freqstep", "4"); - parset2.add ("timestep", "2"); - DPStep::ShPtr step2a(new Averager(in, parset1, "")); - DPStep::ShPtr step2b(new Averager(in, parset2, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, 2, 4, flag)); - step1->setNextStep (step2a); - step2a->setNextStep (step2b); - step2b->setNextStep (step3); - execute (step1); -} - -// Do tests with weighting and some flagged points. -void test3(int nrbl, int nrcorr) -{ - { - cout << "test3: ntime=2 nrbl=" << nrbl << " nchan=2 ncorr=" << nrcorr - << endl; - cout << " navgtime=2 navgchan=2" << endl; - // Create the steps. - TestInput3* in = new TestInput3(2, nrbl, 2, nrcorr); - DPStep::ShPtr step1(in); - ParameterSet parset1; - parset1.add ("freqstep", "2"); - parset1.add ("timestep", "2"); - DPStep::ShPtr step2a(new Averager(in, parset1, "")); - DPStep::ShPtr step3(new TestOutput3(2, nrbl, 2, nrcorr)); - step1->setNextStep (step2a); - step2a->setNextStep (step3); - execute (step1); - } - { - cout << "test3: ntime=4 nrbl=" << nrbl << " nchan=8 ncorr=" << nrcorr - << endl; - cout << " [navgtime=2 navgchan=4], [navgtime=2 navgchan=2]" << endl; - // Create the steps. - TestInput3* in = new TestInput3(4, nrbl, 8, nrcorr); - DPStep::ShPtr step1(in); - ParameterSet parset1, parset2; - parset1.add ("freqstep", "4"); - parset1.add ("timestep", "2"); - parset2.add ("freqstep", "2"); - parset2.add ("timestep", "2"); - DPStep::ShPtr step2a(new Averager(in, parset1, "")); - DPStep::ShPtr step2b(new Averager(in, parset2, "")); - DPStep::ShPtr step3(new TestOutput3(4, nrbl, 8, nrcorr)); - step1->setNextStep (step2a); - step2a->setNextStep (step2b); - step2b->setNextStep (step3); - execute (step1); - } -} - -// Do tests with averaging and flagging steps to see if the flags are -// promoted to the FULLRES flags. -void test4(int nrbl, int nrcorr, int flagstep) -{ - { - cout << "test4: ntime=4 nrbl=" << nrbl << " nchan=8 ncorr=" << nrcorr - << endl; - cout << " [navgtime=2 navgchan=2], [flagstep=" << flagstep - << "] [navgtime=2 navgchan=4]" << endl; - // Create the steps. - TestInput3* in = new TestInput3(4, nrbl, 8, nrcorr); - DPStep::ShPtr step1(in); - ParameterSet parset1, parset2; - parset1.add ("freqstep", "2"); - parset1.add ("timestep", "2"); - parset2.add ("freqstep", "4"); - parset2.add ("timestep", "2"); - DPStep::ShPtr step2a(new Averager(in, parset1, "")); - DPStep::ShPtr step2b(new TestFlagger(flagstep)); - DPStep::ShPtr step2c(new Averager(in, parset2, "")); - DPStep::ShPtr step3(new TestOutput4(4, nrbl, 8, nrcorr, flagstep)); - step1->setNextStep (step2a); - step2a->setNextStep (step2b); - step2b->setNextStep (step2c); - step2c->setNextStep (step3); - execute (step1); - } -} - - -int main() -{ - try { - test1(10, 3, 32, 4, 2, 4, false); - test1(10, 3, 30, 1, 3, 3, true); - test1(10, 3, 30, 1, 3, 3, false); - test1(11, 3, 30, 2, 3, 3, false); - test1(10, 3, 32, 4, 1, 32, false); - test1(10, 3, 32, 1, 1, 1, false); - - test1resolution(10, 3, 32, 4, 10., 100000, "Hz", false); - test1resolution(11, 3, 32, 4, 1., 800, "kHz", false); - test1resolution(11, 3, 32, 4, 15., 0.4, "MHz", false); - test2(10, 3, 32, 2, true); - test2(10, 3, 32, 2, false); - test3(1, 1); - test3(10, 4); - test4(1, 4, 3); - test4(20, 4, 5); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tAverager.sh b/CEP/DP3/DPPP/test/tAverager.sh deleted file mode 100755 index 2e4fb8ee3c5..00000000000 --- a/CEP/DP3/DPPP/test/tAverager.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tAverager diff --git a/CEP/DP3/DPPP/test/tBaselineSelection.cc b/CEP/DP3/DPPP/test/tBaselineSelection.cc deleted file mode 100644 index 81a9ab12a06..00000000000 --- a/CEP/DP3/DPPP/test/tBaselineSelection.cc +++ /dev/null @@ -1,228 +0,0 @@ -//# tBaselineSelection.cc: Test program for class BaselneSelection -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/BaselineSelection.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <Common/StreamUtil.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - - -// Define the info object containing the antenna/baseline info. -DPInfo makeInfo (int nbl) -{ - DPInfo info; - info.init (4, 16, 1, 0.5, 5., string(), string()); - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(nbl); - Vector<Int> ant2(nbl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<nbl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - // Baseline lengths are: - // 0-1 144.01 - // 0-2 288.021 - // 0-3 431.914 - // 1-2 144.01 - // 1-3 287.904 - // 2-3 143.896 - vector<MPosition> antPos(4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info.set (antNames, antDiam, antPos, ant1, ant2); - return info; -} - -void test1 (const DPInfo& info) -{ - cout << "test empty" << endl; - ParameterSet ps; - ps.add ("baseline", "[]"); - BaselineSelection selBL (ps, ""); - selBL.show (cout); - Matrix<bool> res = selBL.apply (info); - ASSERT (allEQ(res, true)); -} - -void test2 (const DPInfo& info) -{ - cout << "test auto" << endl; - ParameterSet ps; - ps.add ("baseline", "[]"); - ps.add ("corrtype", "AUTO"); - BaselineSelection selBL (ps, ""); - selBL.show (cout); - Matrix<bool> res = selBL.apply (info); - ASSERT (allEQ(res.diagonal(), true)); - res.diagonal() = false; - ASSERT (allEQ(res, false)); -} - -void test3 (const DPInfo& info) -{ - cout << "test cross" << endl; - ParameterSet ps; - ps.add ("corrtype", "CROSS"); - BaselineSelection selBL (ps, ""); - selBL.show (cout); - Matrix<bool> res = selBL.apply (info); - ASSERT (allEQ(res.diagonal(), false)); - res.diagonal() = true; - ASSERT (allEQ(res, true)); -} - -void test4 (const DPInfo& info) -{ - cout << "test length" << endl; - Matrix<double> blength(4,4, 0.); - blength(0,1) = blength(1,0) = 144.01; - blength(0,2) = blength(2,0) = 288.021; - blength(0,3) = blength(3,0) = 431.914; - blength(1,2) = blength(2,1) = 144.01; - blength(1,3) = blength(3,1) = 287.904; - blength(2,3) = blength(3,2) = 143.896; - ParameterSet ps; - ps.add ("blmin", "145"); - BaselineSelection selBL (ps, "", true); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), blength<=145.)); - ps.add ("blmax", "288"); - selBL = BaselineSelection(ps, "", true); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), blength<=145. || blength>=288.)); - ps.add ("corrtype", "cross"); - selBL = BaselineSelection(ps, "", true); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), (blength > 0. && - (blength<=145. || blength>=288.)))); - ps.add ("blrange", "[0,144,288,430]"); - selBL = BaselineSelection(ps, "", true); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), (blength > 0. && - (blength<=145. || blength>=288.)))); - selBL = BaselineSelection(ps, "", false); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), ((blength > 0. && blength<=144.) || - (blength>=288. && blength<=430.)))); - ps.replace ("corrtype", ""); - selBL = BaselineSelection(ps, "", false); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), ((blength >=0. && blength<=144.) || - (blength>=288. && blength<=430.)))); -} - -void test5 (const DPInfo& info) -{ - cout << "test baseline" << endl; - //antNames[0] = "rs01.s01"; - //antNames[1] = "rs02.s01"; - //antNames[2] = "cs01.s01"; - //antNames[3] = "cs01.s02"; - Matrix<int> bl(4,4); - bl(0,0) = 00; - bl(1,1) = 11; - bl(2,2) = 22; - bl(3,3) = 33; - bl(0,1) = bl(1,0) = 01; - bl(0,2) = bl(2,0) = 02; - bl(0,3) = bl(3,0) = 03; - bl(1,2) = bl(2,1) = 12; - bl(1,3) = bl(3,1) = 13; - bl(2,3) = bl(3,2) = 23; - ParameterSet ps; - ps.add ("baseline", "[[rs01.s01]]"); - BaselineSelection selBL (ps, ""); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), bl==00 || bl==01 || bl==02 || bl==03)); - ps.replace ("baseline", "[[rs01.s01,rs*]]"); - selBL = BaselineSelection(ps, ""); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), bl==00 || bl==01)); - ps.replace ("baseline", "[[rs01.s01],[rs02*]]"); - selBL = BaselineSelection(ps, ""); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), !(bl==22 || bl==23 || bl==33))); - ps.replace ("baseline", "[rs01.s01,'rs02*']"); - selBL = BaselineSelection(ps, ""); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), !(bl==22 || bl==23 || bl==33))); - ps.replace ("corrtype", "cross"); - selBL = BaselineSelection(ps, ""); - selBL.show (cout); - ASSERT (allEQ(selBL.apply(info), !(bl==00 || bl==11 || bl==22 || - bl==23 || bl==33))); - // Note that the MSSelection syntax is not tested, because it requires - // a MeasurementSet. -} - -int main() -{ - try { - DPInfo info(makeInfo(16)); - test1(info); - test2(info); - test3(info); - test4(info); - test5(info); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tDemix.in_MS.tgz b/CEP/DP3/DPPP/test/tDemix.in_MS.tgz deleted file mode 100644 index 7caa4601cd5b7c4d991a9b706f95674b7edc49a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1262240 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�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�|; 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⪼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š@G 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%0AuamtO5`lzhGGw#~v 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%0DUbBDivYEa6#D|OWzMZbBzw>u2-V$Zk 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�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­DFV1Mhx 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ðE;(^t)<o}!=BX79VRN^5F-ZbNyV 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 D#8|my diff --git a/CEP/DP3/DPPP/test/tDemix.run b/CEP/DP3/DPPP/test/tDemix.run deleted file mode 100755 index b43af0c3613..00000000000 --- a/CEP/DP3/DPPP/test/tDemix.run +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -if test ! -f tDemix.in_MS.tgz; then - exit 3 # untested -fi - -rm -rf tDemix_tmp -# Unpack the MS and other files and do the DPPP run. -tar zxf tDemix.in_MS.tgz -cd tDemix_tmp - -# Run the test script (created by cmake's CONFIGURE_FILE). -sh ../tDemix.run_script diff --git a/CEP/DP3/DPPP/test/tDemix.run_tmpl b/CEP/DP3/DPPP/test/tDemix.run_tmpl deleted file mode 100644 index bfb0b9789d0..00000000000 --- a/CEP/DP3/DPPP/test/tDemix.run_tmpl +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -# Create expected taql output. -echo " select result of 0 rows" > taql.ref -# Find taql program. -taqlexe=@TAQL_EXECUTABLE@ - -echo; echo "### Test without target."; echo -rm -rf instrument -NDPPP tDemix.parset demix.ignoretarget=true -# Compare some columns of the output MS with the reference output. -$taqlexe 'select from tDemix_out.MS t1, tDemix_ref1.MS t2 where not all(near(t1.DATA,t2.DATA,1e-3) || (isnan(t1.DATA) && isnan(t2.DATA))) || not all(t1.FLAG = t2.FLAG) || not all(near(t1.WEIGHT_SPECTRUM, t2.WEIGHT_SPECTRUM)) || not all(t1.LOFAR_FULL_RES_FLAG = t2.LOFAR_FULL_RES_FLAG) || t1.ANTENNA1 != t2.ANTENNA1 || t1.ANTENNA2 != t2.ANTENNA2 || t1.TIME !~= t2.TIME' > taql.out -diff taql.out taql.ref || exit 1 -# Compare the instrument table. -##$taqlexe 'select from instrument t1, instrument_ref1 t2 where t1.NAMEID!=t1.NAMEID || t1.STARTX!~=t2.STARTX || t1.ENDX!~=t2.ENDX || t1.STARTY!~=t2.STARTY || t1.ENDY!~=t2.ENDY || not all(near(t1.VALUES, t2.VALUES))' > taql.out -##diff taql.out taql.ref || exit 1 - -echo; echo "### Test with target projected away."; echo -rm -rf instrument -NDPPP tDemix.parset demix.ignoretarget=false -# Compare some columns of the output MS with the reference output. -$taqlexe 'select from tDemix_out.MS t1, tDemix_ref2.MS t2 where not all(near(t1.DATA,t2.DATA,1e-3) || (isnan(t1.DATA) && isnan(t2.DATA))) || not all(t1.FLAG = t2.FLAG) || not all(near(t1.WEIGHT_SPECTRUM, t2.WEIGHT_SPECTRUM)) || not all(t1.LOFAR_FULL_RES_FLAG = t2.LOFAR_FULL_RES_FLAG) || t1.ANTENNA1 != t2.ANTENNA1 || t1.ANTENNA2 != t2.ANTENNA2 || t1.TIME !~= t2.TIME' > taql.out -diff taql.out taql.ref || exit 1 -# Compare the instrument table. -##$taqlexe 'select from instrument t1, instrument_ref2 t2 where t1.NAMEID!=t1.NAMEID || t1.STARTX!~=t2.STARTX || t1.ENDX!~=t2.ENDX || t1.STARTY!~=t2.STARTY || t1.ENDY!~=t2.ENDY || not all(near(t1.VALUES, t2.VALUES))' > taql.out -##diff taql.out taql.ref || exit 1 - -echo; echo "### Test with target."; echo -rm -rf instrument -NDPPP tDemix.parset demix.target=CIZA.SP1A.FITS.pbcor_patch_s537 demix.freqstep=32 demix.timestep=5 -# Compare some columns of the output MS with the reference output. -$taqlexe 'select from tDemix_out.MS t1, tDemix_ref3.MS t2 where not all(near(t1.DATA,t2.DATA,1e-3) || (isnan(t1.DATA) && isnan(t2.DATA))) || not all(t1.FLAG = t2.FLAG) || not all(near(t1.WEIGHT_SPECTRUM, t2.WEIGHT_SPECTRUM)) || not all(t1.LOFAR_FULL_RES_FLAG = t2.LOFAR_FULL_RES_FLAG) || t1.ANTENNA1 != t2.ANTENNA1 || t1.ANTENNA2 != t2.ANTENNA2 || t1.TIME !~= t2.TIME' > taql.out -diff taql.out taql.ref || exit 1 -# Compare the instrument table. -##$taqlexe 'select from instrument t1, instrument_ref3 t2 where t1.NAMEID!=t1.NAMEID || t1.STARTX!~=t2.STARTX || t1.ENDX!~=t2.ENDX || t1.STARTY!~=t2.STARTY || t1.ENDY!~=t2.ENDY || not all(near(t1.VALUES, t2.VALUES))' > taql.out -##diff taql.out taql.ref || exit 1 - -exit 0 diff --git a/CEP/DP3/DPPP/test/tDemix.sh b/CEP/DP3/DPPP/test/tDemix.sh deleted file mode 100755 index cb5dad0c9ab..00000000000 --- a/CEP/DP3/DPPP/test/tDemix.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tDemix diff --git a/CEP/DP3/DPPP/test/tDemixer.cc b/CEP/DP3/DPPP/test/tDemixer.cc deleted file mode 100644 index 463b22753e3..00000000000 --- a/CEP/DP3/DPPP/test/tDemixer.cc +++ /dev/null @@ -1,233 +0,0 @@ -//# tDemixer.cc: Test program for class Demixer -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Demixer.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - - -// Simple class to generate input arrays. -// It can only set all flags to true or all false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // They are not averaged, thus only 1 time per row. - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = itsFlag; - buf.setFullResFlags (fullResFlags); - Matrix<double> uvw(3,itsNBl); - indgen (uvw, double(itsCount*100)); - buf.setUVW (uvw); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (DPInfo& info) - // Use startchan=8 and timeInterval=5 - { info.init (itsNCorr, 8, itsNChan, itsNBl, itsNTime, 5); } - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result of averaging TestInput. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nbl, int nchan, int ncorr, - int navgtime, int navgchan, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsNAvgTime(navgtime), itsNAvgChan(navgchan), - itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer& buf) - { - int nchan = 1+(itsNChan-1)/itsNAvgChan; - int navgtime = std::min(itsNAvgTime, itsNTime-itsCount*itsNAvgTime); - // Fill expected result in similar way as TestInput. - Cube<Complex> data(itsNCorr,itsNChan,itsNBl); - Cube<float> weights(itsNCorr,itsNChan,itsNBl); - Cube<bool> fullResFlags(itsNChan,itsNAvgTime,itsNBl); - fullResFlags = true; // takes care of missing times at the end - weights = 0; - if (!itsFlag) { - for (int j=itsCount*itsNAvgTime; j<itsCount*itsNAvgTime+navgtime; ++j) { - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] += Complex(i+j*10,i-1000+j*6); - weights.data()[i] += float(1); - } - } - fullResFlags(Slicer(IPosition(3,0,0,0), - IPosition(3,itsNChan,navgtime,itsNBl))) = itsFlag; - } - Cube<Complex> result(itsNCorr,nchan,itsNBl); - Cube<float> resultw(itsNCorr,nchan,itsNBl); - resultw = 0; - // Average to get the true expected result. - for (int k=0; k<itsNBl; ++k) { - for (int i=0; i<itsNCorr; ++i) { - for (int j=0; j<nchan; ++j) { - int jc; - for (jc=j*itsNAvgChan; - jc<std::min((j+1)*itsNAvgChan, itsNChan); ++jc) { - result(i,j,k) += data(i,jc,k); - resultw(i,j,k) += weights(i,jc,k); - } - result(i,j,k) /= float(navgtime*(jc-j*itsNAvgChan)); - } - } - } - // Check the averaged result. - ASSERT (allNear(real(buf.getData()), real(result), 1e-5)); - ///cout << imag(buf.getData()) << endl<<imag(result); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-5)); - ASSERT (allEQ(buf.getFlags(), itsFlag)); - ASSERT (near(buf.getTime(), - 2+5*(itsCount*itsNAvgTime + (itsNAvgTime-1)/2.))); - ASSERT (allNear(buf.getWeights(), resultw, 1e-5)); - if (navgtime == itsNAvgTime) { - Matrix<double> uvw(3,itsNBl); - indgen (uvw, 100*(itsCount*itsNAvgTime + 0.5*(itsNAvgTime-1))); - ASSERT (allNear(buf.getUVW(), uvw, 1e-5)); - } - ///cout <<buf.getFullResFlags()<< fullResFlags; - ASSERT (allEQ(buf.getFullResFlags(), fullResFlags)); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (DPInfo& info) - { - ASSERT (info.startChan()==8); - ASSERT (int(info.origNChan())==itsNChan); - ASSERT (int(info.nchan())==1+(itsNChan-1)/itsNAvgChan); - ASSERT (int(info.ntime())==1+(itsNTime-1)/itsNAvgTime); - ASSERT (info.timeInterval()==5*itsNAvgTime); - ASSERT (int(info.nchanAvg())==itsNAvgChan); - ASSERT (int(info.ntimeAvg())==itsNAvgTime); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr, itsNAvgTime, itsNAvgChan; - bool itsFlag; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - DPInfo info; - DPStep::ShPtr step = step1; - while (step) { - step->updateInfo (info); - step = step->getNextStep(); - } - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test simple averaging without flagged points. -void test1(int ntime, int nbl, int nchan, int ncorr, - int navgtime, int navgchan, bool flag) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " navgtime=" << navgtime - << " navgchan=" << navgchan << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("freqstep", toString(navgchan)); - parset.add ("timestep", toString(navgtime)); - parset.add ("sources" , "CasA"); - DPStep::ShPtr step2(new Demixer(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, - navgtime, navgchan, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - - -int main() -{ - try { - test1(10, 3, 32, 4, 2, 4, false); - test1(10, 3, 30, 1, 3, 3, true); - test1(10, 3, 30, 1, 3, 3, false); - test1(11, 3, 30, 2, 3, 3, false); - test1(10, 3, 32, 4, 1, 32, false); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tFilter.cc b/CEP/DP3/DPPP/test/tFilter.cc deleted file mode 100644 index daf4cffde45..00000000000 --- a/CEP/DP3/DPPP/test/tFilter.cc +++ /dev/null @@ -1,302 +0,0 @@ -//# tFilter.cc: Test program for class Filter -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Filter.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - - -// Simple class to generate input arrays. -// It can only set all flags to true or all false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - { - // Define start time 0.5 (= 3 - 0.5*5) and time interval 5. - info().init (ncorr, nchan, ntime, 0.5, 5., string(), string()); - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(nbl); - Vector<Int> ant2(nbl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<nbl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos(4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanWidth(nchan, 100000.); - Vector<double> chanFreqs(nchan); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); - buf.setExposure (0.1*(itsCount+1)); - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - } - buf.setData (data); - Cube<float> weights(data.shape()); - buf.setWeights (weights); - indgen (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - // Set part of the flags to another value. - flags(IPosition(3,0), flags.shape()-1, IPosition(3,1,3,4)) = !itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // Assume they are averaged for 2 chan, 2 time. - Cube<bool> fullResFlags; - if (itsNCorr == 4) { - fullResFlags = flags.copy().reform(IPosition(3,2*itsNChan,2,itsNBl)); - } else { - fullResFlags.resize (IPosition(3, itsNChan, 1, itsNBl)); - fullResFlags = true; - } - buf.setFullResFlags (fullResFlags); - Matrix<double> uvw(3,itsNBl); - indgen (uvw, double(itsCount*100)); - buf.setUVW (uvw); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) - { - // Use timeInterval=5 - info().init (itsNCorr, itsNChan, itsNTime, 100, 5, string(), string()); - // Define the frequencies. - Vector<double> chanFreqs(itsNChan); - Vector<double> chanWidth(itsNChan, 100000.); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result of averaging TestInput. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nbl, int nchan, int ncorr, - int nblout, int stchan, int nchanOut, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsNBlOut(nblout), - itsStChan(stchan), itsNChanOut(nchanOut), - itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // Fill expected result in similar way as TestInput. - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - } - Cube<float> weights(data.shape()); - indgen (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - // Set part of the flags to another value. - flags(IPosition(3,0), flags.shape()-1, IPosition(3,1,3,4)) = !itsFlag; - // The fullRes flags are a copy of the XX flags, but differently shaped. - // Assume they are averaged for 2 chan, 2 time. - Cube<bool> fullResFlags; - if (itsNCorr == 4) { - fullResFlags = flags.copy().reform(IPosition(3,2*itsNChan,2,itsNBl)); - } else { - fullResFlags.resize (IPosition(3, itsNChan, 1, itsNBl)); - fullResFlags = true; - } - Matrix<double> uvw(3,itsNBl); - indgen (uvw, double(itsCount*100)); - Slicer slicer(IPosition(3,0,itsStChan,0), - IPosition(3,itsNCorr,itsNChanOut,itsNBlOut)); - // Check the expected result. - ASSERT (allEQ(buf.getData(), data(slicer))); - ASSERT (allEQ(buf.getFlags(), flags(slicer))); - ASSERT (allEQ(buf.getWeights(), weights(slicer))); - ASSERT (allEQ(buf.getUVW(), uvw(IPosition(2,0,0), - IPosition(2,2,itsNBlOut-1)))); - if (itsNCorr == 4) { - ASSERT (allEQ(buf.getFullResFlags(), - fullResFlags(Slicer(IPosition(3,itsStChan*2,0,0), - IPosition(3,2*itsNChanOut,2,itsNBlOut))))); - } else { - ASSERT (allEQ(buf.getFullResFlags(), - fullResFlags(Slicer(IPosition(3,itsStChan,0,0), - IPosition(3,itsNChanOut,1,itsNBlOut))))); - } - ASSERT (near(buf.getTime(), itsCount*5.+2)); - ASSERT (near(buf.getExposure(), 0.1*(itsCount+1))); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNChan); - ASSERT (int(info.nchan())==itsNChanOut); - ASSERT (int(info.nbaselines())==itsNBlOut); - ASSERT (int(info.ntime())==itsNTime); - ASSERT (info.timeInterval()==5.); - ASSERT (int(info.nchanAvg())==1); - ASSERT (int(info.ntimeAvg())==1); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr, itsNBlOut, itsStChan, itsNChanOut; - bool itsFlag; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test filtering of channels only. -void test1(int ntime, int nbl, int nchan, int ncorr, - int startchan, int nchanout, bool flag) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " startchan=" << startchan - << " nchanout=" << nchanout << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("startchan", toString(startchan)); - parset.add ("nchan", toString(nchanout)+"+nchan-nchan"); - DPStep::ShPtr step2(new Filter(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, - nbl, startchan, nchanout, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Test filtering of baselines and channels. -void test2(int ntime, int nbl, int nchan, int ncorr, - int startchan, int nchanout, bool flag) -{ - ASSERT (nbl<=4); // otherwise baseline selection removes more than the first - cout << "test2: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " startchan=" << startchan - << " nchanout=" << nchanout << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("startchan", toString(startchan)+"+nchan-nchan"); - parset.add ("nchan", toString(nchanout)); - // This removes the first baseline. - parset.add ("baseline", "[[rs01.s01,rs*]]"); - DPStep::ShPtr step2(new Filter(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, - 2, startchan, nchanout, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - - -int main() -{ - try { - test1(10, 3, 32, 4, 2, 24, false); - test1(10, 10, 30, 1, 3, 3, true); - test1(10, 10, 1, 4, 0, 1, true); - test2(10, 4, 32, 4, 2, 24, false); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tGainCal.run b/CEP/DP3/DPPP/test/tGainCal.run deleted file mode 100755 index d1b549cbbcb..00000000000 --- a/CEP/DP3/DPPP/test/tGainCal.run +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -# Get the taql executable and srcdir (script created by cmake's CONFIGURE_FILE). -source findenv.run_script -echo "srcdirx=$rt_srcdir" - -# Set srcdir if not defined (in case run by hand). -if test "$srcdir" = ""; then - srcdir="$rt_srcdir" -fi - -if test ! -f ${srcdir}/tNDPPP-generic.in_MS.tgz; then - exit 3 # untested -fi - -set -e # Stop on any error - -rm -rf tGainCal_tmp -mkdir -p tGainCal_tmp -# Unpack the MS and other files and do the DPPP run. -cd tGainCal_tmp -tar zxf ${srcdir}/tNDPPP-generic.in_MS.tgz -tar zxf ${srcdir}/tGainCal.tab.tgz - -# Create expected taql output. -echo " select result of 0 rows" > taql.ref - -echo "Creating MODEL_DATA so that residual can be computed" -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=MODEL_DATA steps=[predict] predict.sourcedb=tNDPPP-generic.MS/sky predict.usebeammodel=false - -echo; echo "Test caltype=diagonal"; echo -NDPPP msin=tNDPPP-generic.MS msout= steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-diagonal gaincal.usebeammodel=false gaincal.caltype=diagonal gaincal.propagatesolutions=true gaincal.solint=1 - -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL steps=[applycal] applycal.parmdb=tNDPPP-generic.MS/inst-diagonal - -echo "Comparing the bbs residual with the dppp residual (solutions will not be equal, but residual should be equal). This avoids issues with local minima." -$taqlexe 'select from (select gsumsqr(sumsqr(abs(iif(t1.FLAG,0,t1.DPPP_DIAGONAL-t1.MODEL_DATA)))) as dpppres, gsumsqr(sumsqr(abs(iif(FLAG,0,t2.BBS_DIAGONAL-t1.MODEL_DATA)))) as bbsres from tNDPPP-generic.MS t1, tGainCal.tab t2) where dpppres>bbsres*1.02' > taql.out -diff taql.out taql.ref || exit 1 -echo "Checking that not everything was flagged" -$taqlexe 'select from tNDPPP-generic.MS where all(FLAG) groupby true having gcount()>100' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=diagonal with timeslotsperparmupdate=4"; echo -NDPPP msin=tNDPPP-generic.MS msout= steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-diagonal-tpp gaincal.usebeammodel=false gaincal.caltype=diagonal gaincal.solint=4 gaincal.timeslotsperparmupdate=1 gaincal.propagatesolutions=false -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_TPP steps=[applycal] applycal.parmdb=tNDPPP-generic.MS/inst-diagonal-tpp -$taqlexe 'select from tNDPPP-generic.MS where not all(near(DPPP_DIAGONAL, DPPP_DIAGONAL_TPP))' - -echo "Comparing the difference between applying with timeslotsperparmupdate = default and timeslotsperparmupdate=1" -$taqlexe 'select from (select gsumsqr(sumsqr(abs(iif(t1.FLAG,0,t1.DPPP_DIAGONAL-t1.MODEL_DATA)))) as dpppres, gsumsqr(sumsqr(abs(iif(FLAG,0,t2.BBS_DIAGONAL-t1.MODEL_DATA)))) as bbsres from tNDPPP-generic.MS t1, tGainCal.tab t2) where dpppres>bbsres*1.02' > taql.out -diff taql.out taql.ref || exit 1 -echo "Checking that not everything was flagged" -$taqlexe 'select from tNDPPP-generic.MS where all(FLAG) groupby true having gcount()>100' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=fulljones"; echo -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_FULLJONES_GAINCAL steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-fulljones gaincal.usebeammodel=false gaincal.caltype=fulljones gaincal.solint=1 gaincal.applysolution=true -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_FULLJONES steps=[applycal] applycal.parmdb=tNDPPP-generic.MS/inst-fulljones - -echo "Comparing the bbs residual with the dppp residual (solutions will not be equal, but residual should be equal). This avoids issues with local minima." -$taqlexe 'select from (select gsumsqr(sumsqr(abs(iif(t1.FLAG,0,t1.DPPP_FULLJONES-t1.MODEL_DATA)))) as dpppres, gsumsqr(sumsqr(abs(iif(FLAG,0,t2.BBS_FULLJONES-t1.MODEL_DATA)))) as bbsres from tNDPPP-generic.MS t1, tGainCal.tab t2) where dpppres>bbsres*1.02' > taql.out -diff taql.out taql.ref || exit 1 -echo "Comparing the solutions from gaincal + applycal with gaincal directly" -$taqlexe 'select from tNDPPP-generic.MS where not(all(DPPP_FULLJONES ~= DPPP_FULLJONES))' > taql.out -diff taql.out taql.ref || exit 1 -echo "Checking that not everything was flagged" -$taqlexe 'select from tNDPPP-generic.MS where all(FLAG) groupby true having gcount()>100' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=diagonal, nchan=2"; echo -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_NCHAN_GAINCAL steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-diagonal-nchan gaincal.usebeammodel=false gaincal.caltype=diagonal gaincal.solint=4 gaincal.nchan=2 gaincal.applysolution=true -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_NCHAN steps=[applycal] applycal.parmdb=tNDPPP-generic.MS/inst-diagonal-nchan - -echo "Comparing the bbs residual with the dppp residual (solutions will not be equal, but residual should be equal). This avoids issues with local minima." -$taqlexe 'select from (select gsumsqr(sumsqr(abs(iif(t1.FLAG,0,t1.DPPP_DIAGONAL_NCHAN-t1.MODEL_DATA)))) as dpppres, gsumsqr(sumsqr(abs(iif(FLAG,0,t2.BBS_DIAGONAL_NCHAN-t1.MODEL_DATA)))) as bbsres from tNDPPP-generic.MS t1, tGainCal.tab t2) where dpppres>bbsres*1.02' > taql.out -diff taql.out taql.ref || exit 1 - -echo "Comparing the solutions from gaincal + applycal with gaincal directly" -$taqlexe 'select from tNDPPP-generic.MS where not(all(DPPP_DIAGONAL_NCHAN_GAINCAL ~= DPPP_DIAGONAL_NCHAN))' > taql.out -diff taql.out taql.ref || exit 1 - -echo "Checking that not everything was flagged" -$taqlexe 'select from tNDPPP-generic.MS where all(FLAG) groupby true having gcount()>100' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=diagonal, nchan=2, solint=7"; echo -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_NCHAN_7_GAINCAL steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-diagonal-nchan gaincal.usebeammodel=false gaincal.caltype=diagonal gaincal.solint=4 gaincal.nchan=2 gaincal.applysolution=true -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_NCHAN_7 steps=[applycal] applycal.parmdb=tNDPPP-generic.MS/inst-diagonal-nchan - -echo "Comparing the solutions from gaincal + applycal with gaincal directly" -$taqlexe 'select from tNDPPP-generic.MS where not(all(DPPP_DIAGONAL_NCHAN_7_GAINCAL ~= DPPP_DIAGONAL_NCHAN_7))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=tec"; echo -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_TEC steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-tec gaincal.caltype=tec gaincal.solint=2 -# For now, only testing that the right parameter names are in the output -echo " select result of 1 rows" > taql1.ref -$taqlexe 'select from tNDPPP-generic.MS/inst-tec where (select NAME from ::NAMES)[NAMEID]=="TEC:CS001HBA0"' > taql.out -diff taql.out taql1.ref || exit 1 -$taqlexe 'select from tNDPPP-generic.MS/inst-tec where (select NAME from ::NAMES)[NAMEID]=="CommonScalarPhase:CS001HBA0"' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=tecandphase"; echo -NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_TEC steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-tecandphase gaincal.caltype=tecandphase gaincal.solint=2 -# For now, only testing that the right parameter names are in the output -echo " select result of 1 rows" > taql1.ref -$taqlexe 'select from tNDPPP-generic.MS/inst-tecandphase where (select NAME from ::NAMES)[NAMEID]=="TEC:CS001HBA0"' > taql.out -diff taql.out taql1.ref || exit 1 -$taqlexe 'select from tNDPPP-generic.MS/inst-tecandphase where (select NAME from ::NAMES)[NAMEID]=="CommonScalarPhase:CS001HBA0"' > taql.out -diff taql.out taql1.ref || exit 1 - -echo; echo "Test filter"; echo -NDPPP msin=tNDPPP-generic.MS msout=tNDPPP-filtered.MS steps=[filter,gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-filter filter.baseline='!CS001HBA0&&*' gaincal.baseline='!CS002HBA1,RS305HBA&&*' gaincal.caltype=diagonal -$taqlexe 'select from tNDPPP-generic.MS/inst-filter::NAMES where NAME LIKE "CS001HBA0%" OR NAME LIKE "%CS002HBA1%" OR NAME LIKE "%RS305HBA%"' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test debug output"; echo -NDPPP msin=tNDPPP-generic.MS msout=. numthreads=1 steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-debug gaincal.caltype=diagonal gaincal.debuglevel=1 -[[ -f debug.h5 ]] -diff taql.out taql.ref || exit 1 - diff --git a/CEP/DP3/DPPP/test/tGainCal.sh b/CEP/DP3/DPPP/test/tGainCal.sh deleted file mode 100755 index 17ddb87fa0e..00000000000 --- a/CEP/DP3/DPPP/test/tGainCal.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tGainCal diff --git a/CEP/DP3/DPPP/test/tGainCal.tab.tgz b/CEP/DP3/DPPP/test/tGainCal.tab.tgz deleted file mode 100644 index 2b93f5b9d5af30ffc0d38ec677d6e1108382aab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212564 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ν#Va8o3j*POm@b`>?aeMkPQ$=1}$54ZmXR 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 diff --git a/CEP/DP3/DPPP/test/tGainCalH5Parm.run b/CEP/DP3/DPPP/test/tGainCalH5Parm.run deleted file mode 100755 index 6799152789c..00000000000 --- a/CEP/DP3/DPPP/test/tGainCalH5Parm.run +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/bash - -# Get the taql executable and srcdir (script created by cmake's CONFIGURE_FILE). -source findenv.run_script -echo "srcdirx=$rt_srcdir" - -# Set srcdir if not defined (in case run by hand). -if test "$srcdir" = ""; then - srcdir="$rt_srcdir" -fi - -if test ! -f ${srcdir}/tNDPPP-generic.in_MS.tgz; then - exit 3 # untested -fi - -set -e # Stop on any error - -rm -rf tGainCalH5Parm_tmp -mkdir -p tGainCalH5Parm_tmp -# Unpack the MS and other files and do the DPPP run. -cd tGainCalH5Parm_tmp -tar zxf ${srcdir}/tNDPPP-generic.in_MS.tgz -tar zxf ${srcdir}/tGainCal.tab.tgz - -# Create expected taql output. -echo " select result of 0 rows" > taql.ref - -echo "Creating MODEL_DATA so that residual can be computed" -cmd='NDPPP checkparset=1 showprogress=false msin=tNDPPP-generic.MS msout=. msout.datacolumn=MODEL_DATA steps=[predict] predict.sourcedb=tNDPPP-generic.MS/sky predict.usebeammodel=false' -echo $cmd -$cmd - -echo; echo "Test caltype=diagonal"; echo -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout= steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-diagonal.h5 gaincal.usebeammodel=false gaincal.caltype=diagonal gaincal.propagatesolutions=true gaincal.solint=1' -echo $cmd -$cmd - -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL steps=[applycal] applycal.parmdb=tNDPPP-generic.MS/inst-diagonal.h5 applycal.steps=[amplitude,phase] applycal.phase.correction=phase000 applycal.amplitude.correction=amplitude000 applycal.amplitude.correction=amplitude000' -echo $cmd -$cmd - -echo "Comparing the bbs residual with the dppp residual (solutions will not be equal, but residual should be equal). This avoids issues with local minima." -$taqlexe 'select from (select gsumsqr(sumsqr(abs(iif(t1.FLAG,0,t1.DPPP_DIAGONAL-t1.MODEL_DATA)))) as dpppres, gsumsqr(sumsqr(abs(iif(FLAG,0,t2.BBS_DIAGONAL-t1.MODEL_DATA)))) as bbsres from tNDPPP-generic.MS t1, tGainCal.tab t2) where dpppres>bbsres*1.02' > taql.out -diff taql.out taql.ref || exit 1 -echo "Checking that not everything was flagged" -$taqlexe 'select from tNDPPP-generic.MS where all(FLAG) groupby true having gcount()>100' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=fulljones"; echo -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_FULLJONES_GAINCAL steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-fulljones.h5 gaincal.usebeammodel=false gaincal.caltype=fulljones gaincal.solint=1 gaincal.applysolution=true' -echo $cmd -$cmd - -echo; echo "Test caltype=diagonal, nchan=2"; echo -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_NCHAN_GAINCAL steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-diagonal-nchan.h5 gaincal.usebeammodel=false gaincal.caltype=diagonal gaincal.solint=4 gaincal.nchan=2 gaincal.applysolution=true' -echo $cmd -$cmd -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_NCHAN steps=[applycal] applycal.parmdb=tNDPPP-generic.MS/inst-diagonal-nchan.h5 applycal.steps=[phase,amplitude] applycal.phase.correction=phase000 applycal.amplitude.correction=amplitude000' -echo $cmd -$cmd - -echo "Comparing the bbs residual with the dppp residual (solutions will not be equal, but residual should be equal). This avoids issues with local minima." -$taqlexe 'select from (select gsumsqr(sumsqr(abs(iif(t1.FLAG,0,t1.DPPP_DIAGONAL_NCHAN-t1.MODEL_DATA)))) as dpppres, gsumsqr(sumsqr(abs(iif(FLAG,0,t2.BBS_DIAGONAL_NCHAN-t1.MODEL_DATA)))) as bbsres from tNDPPP-generic.MS t1, tGainCal.tab t2) where dpppres>bbsres*1.02' > taql.out -diff taql.out taql.ref || exit 1 - -echo "Comparing the solutions from gaincal + applycal with gaincal directly" -$taqlexe 'select from tNDPPP-generic.MS where not(all(DPPP_DIAGONAL_NCHAN_GAINCAL ~= DPPP_DIAGONAL_NCHAN))' > taql.out -diff taql.out taql.ref || exit 1 - -echo "Checking that not everything was flagged" -$taqlexe 'select from tNDPPP-generic.MS where all(FLAG) groupby true having gcount()>100' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=diagonal, nchan=2, solint=7"; echo -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_NCHAN_7_GAINCAL steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-diagonal-nchan7.h5 gaincal.usebeammodel=false gaincal.caltype=diagonal gaincal.solint=4 gaincal.nchan=2 gaincal.applysolution=true' -echo $cmd -$cmd -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_DIAGONAL_NCHAN_7 steps=[applycal] applycal.parmdb=tNDPPP-generic.MS/inst-diagonal-nchan7.h5 applycal.steps=[amplitude,phase] applycal.amplitude.correction=amplitude000 applycal.phase.correction=phase000' -echo $cmd -$cmd - -echo "Comparing the solutions from gaincal + applycal with gaincal directly" -$taqlexe 'select from tNDPPP-generic.MS where not(all(DPPP_DIAGONAL_NCHAN_7_GAINCAL ~= DPPP_DIAGONAL_NCHAN_7))' > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test caltype=tec"; echo -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_TEC steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-tec.h5 gaincal.caltype=tec gaincal.solint=2' -echo $cmd -$cmd - -echo; echo "Test caltype=tecandphase"; echo -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=. msout.datacolumn=DPPP_TEC steps=[gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-tecandphase.h5 gaincal.caltype=tecandphase gaincal.solint=2' -echo $cmd -$cmd - -echo; echo "Test filter"; echo -cmd='NDPPP checkparset=1 msin=tNDPPP-generic.MS msout=tNDPPP-filtered.MS steps=[filter,gaincal] gaincal.sourcedb=tNDPPP-generic.MS/sky gaincal.parmdb=tNDPPP-generic.MS/inst-filter.h5 filter.baseline="!CS001HBA0&&*" gaincal.baseline="!CS002HBA1,RS305HBA&&*" gaincal.caltype=diagonal' -echo $cmd -$cmd - diff --git a/CEP/DP3/DPPP/test/tGainCalH5Parm.sh b/CEP/DP3/DPPP/test/tGainCalH5Parm.sh deleted file mode 100755 index 6fc019f8b38..00000000000 --- a/CEP/DP3/DPPP/test/tGainCalH5Parm.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tGainCalH5Parm diff --git a/CEP/DP3/DPPP/test/tGainCal_ref b/CEP/DP3/DPPP/test/tGainCal_ref deleted file mode 100755 index 1c1549410ad..00000000000 --- a/CEP/DP3/DPPP/test/tGainCal_ref +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash - -# Generate reference data tGainCal.tab for tGainCal -# This script uses BBS. Note that casacore data should be up-to-date -# Run the script in the source directory of CEP/DP3/DPPP/test - -rm -rf tNDPPP-generic.MS -tar xf tNDPPP-generic.in_MS.tgz - -#### Save instrument table with only defaultvalues -cp -r tNDPPP-generic.MS/instrument tNDPPP-generic.MS/definstrument - -#### DIAGONAL - -cat > tGainCal-bbs-diagonal.parset <<EOF -Strategy.ChunkSize = 0 -Strategy.Steps = [solve,correct] - -Step.solve.Operation = SOLVE -Step.solve.Model.Sources = [] -Step.solve.Model.Beam.Enable = F -Step.solve.Model.Beam.UseChannelFreq = T -Step.solve.Model.Gain.Enable = T -Step.solve.Solve.Parms = ["Gain:0:0:*","Gain:1:1:*"] -Step.solve.Solve.CellSize.Freq = 0 -Step.solve.Solve.CellSize.Time = 4 -Step.solve.Solve.CellChunkSize = 10 -Step.solve.Solve.Options.UseSVD = T - -Step.correct.Operation = CORRECT -Step.correct.Model.Gain.Enable = T -Step.correct.Output.Column = BBS_DIAGONAL -EOF - -bbs-reducer tNDPPP-generic.MS tGainCal-bbs-diagonal.parset - -rm tGainCal-bbs-diagonal.parset - -#### Restore instrument table with only defaultvalues -rm -rf tNDPPP-generic.MS/instrument -cp -r tNDPPP-generic.MS/definstrument tNDPPP-generic.MS/instrument - -#### DIAGONAL-NCHAN - -cat > tGainCal-bbs-diagonal-nchan.parset <<EOF -Strategy.ChunkSize = 0 -Strategy.Steps = [solve,correct] - -Step.solve.Operation = SOLVE -Step.solve.Model.Sources = [] -Step.solve.Model.Beam.Enable = F -Step.solve.Model.Beam.UseChannelFreq = T -Step.solve.Model.Gain.Enable = T -Step.solve.Solve.Parms = ["Gain:0:0:*","Gain:1:1:*"] -Step.solve.Solve.CellSize.Freq = 2 -Step.solve.Solve.CellSize.Time = 4 -Step.solve.Solve.CellChunkSize = 10 -Step.solve.Solve.Options.UseSVD = T - -Step.correct.Operation = CORRECT -Step.correct.Model.Gain.Enable = T -Step.correct.Output.Column = BBS_DIAGONAL_NCHAN -EOF - -bbs-reducer tNDPPP-generic.MS tGainCal-bbs-diagonal-nchan.parset - -rm tGainCal-bbs-diagonal-nchan.parset - -#### Restore instrument table with only defaultvalues -rm -rf tNDPPP-generic.MS/instrument -cp -r tNDPPP-generic.MS/definstrument tNDPPP-generic.MS/instrument - -#### FULLJONES - -cat > tGainCal-bbs-fulljones.parset <<EOF -Strategy.ChunkSize = 0 -Strategy.Steps = [solve,correct] - -Step.solve.Operation = SOLVE -Step.solve.Model.Sources = [] -Step.solve.Model.Gain.Enable = T -Step.solve.Model.Beam.Enable = F -Step.solve.Model.Beam.UseChannelFreq = T -Step.solve.Solve.Parms = ["Gain:0:0:*","Gain:1:1:*","Gain:0:1:*","Gain:1:0:*"] -Step.solve.Solve.CellSize.Freq = 0 -Step.solve.Solve.CellSize.Time = 1 -Step.solve.Solve.CellChunkSize = 10 -Step.solve.Solve.Options.UseSVD = T - -Step.correct.Operation = CORRECT -Step.correct.Model.Gain.Enable = T -Step.correct.Output.Column = BBS_FULLJONES -EOF - -bbs-reducer tNDPPP-generic.MS tGainCal-bbs-fulljones.parset - -rm tGainCal-bbs-fulljones.parset - -#### Restore instrument table with only defaultvalues -rm -rf tNDPPP-generic.MS/instrument -cp -r tNDPPP-generic.MS/definstrument tNDPPP-generic.MS/instrument - - - -#### Store output from BBS in separate table - -taql 'select from (select BBS_DIAGONAL, BBS_DIAGONAL_NCHAN, BBS_FULLJONES from tNDPPP-generic.MS giving tGainCal.tab as plain)' - -tar czf tGainCal.tab.tgz tGainCal.tab diff --git a/CEP/DP3/DPPP/test/tGridInterpolate.cc b/CEP/DP3/DPPP/test/tGridInterpolate.cc deleted file mode 100644 index 02a5814d9f4..00000000000 --- a/CEP/DP3/DPPP/test/tGridInterpolate.cc +++ /dev/null @@ -1,64 +0,0 @@ -//# tGridInterpolate.cc: test program for GridInterpolate -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: tGridInterpolate.cc 31423 2015-04-03 14:06:21Z dijkema $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/GridInterpolate.h> -#include <cassert> - -using namespace LOFAR; -using namespace std; - -int main() { - vector<double> ax_src = {1,3}; - vector<double> ax_tgt = {0.5, 1.5, 2.5, 3.5}; - - vector<size_t> indices; - getAxisIndices(ax_src, ax_tgt, indices); - assert(indices.size()==ax_tgt.size()); - assert(indices[0]==0 && indices[1]==0 && indices[2]==1 && indices[3]==1); - - vector<double> x_src = {2,4,8,10}; - vector<double> y_src = {3,6,12}; - vector<double> x_tgt = {1,3.5,9.5,10}; - vector<double> y_tgt = {4,10}; - vector<double> vals_src(x_src.size()*y_src.size()); - vector<double> vals_tgt(x_tgt.size()*y_tgt.size()); - for (size_t i=0; i<vals_src.size(); ++i) { - vals_src[i] = i; - } - - getAxisIndices(x_src, x_tgt, indices); - assert(indices.size() == x_tgt.size()); - assert(indices[0]==0 && indices[1]==1 && indices[2]==3 && indices[3]==3); - - gridNearestNeighbor(x_src, y_src, x_tgt, y_tgt, vals_src.data(), vals_tgt.data()); - - assert(vals_tgt[0] == vals_src[0]); - assert(vals_tgt[1] == vals_src[2]); - assert(vals_tgt[2] == vals_src[3]); - assert(vals_tgt[3] == vals_src[5]); - assert(vals_tgt[4] == vals_src[9]); - assert(vals_tgt[5] == vals_src[11]); - assert(vals_tgt[6] == vals_src[9]); - assert(vals_tgt[7] == vals_src[11]); -} diff --git a/CEP/DP3/DPPP/test/tH5Parm.cc b/CEP/DP3/DPPP/test/tH5Parm.cc deleted file mode 100644 index 886369b302f..00000000000 --- a/CEP/DP3/DPPP/test/tH5Parm.cc +++ /dev/null @@ -1,198 +0,0 @@ -#include <DPPP/H5Parm.h> -#include <iostream> -#include <sstream> -#include <stdio.h> -#include <vector> -#include <Common/LofarLogger.h> -#include <casacore/casa/BasicMath/Math.h> - -using namespace std; -using namespace LOFAR; - -void checkAxes(H5Parm::SolTab& soltab, size_t ntimes) { - ASSERT(soltab.nAxes()==3); - ASSERT(soltab.hasAxis("ant")); - ASSERT(soltab.hasAxis("time")); - ASSERT(soltab.hasAxis("bla")); - ASSERT(soltab.getAxis(0).name=="ant"); - ASSERT(soltab.getAxis(1).name=="time"); - ASSERT(soltab.getAxis(2).name=="bla"); - ASSERT(soltab.getAxis(0).size==3); - ASSERT(soltab.getAxis(1).size==ntimes); - ASSERT(soltab.getAxis(2).size==1); -} - -int main(int, char**) { - { - size_t ntimes=7; - { - // Create a new H5Parm - cout<<"Create tH5Parm_tmp.h5"<<endl; - H5Parm h5parm("tH5Parm_tmp.h5", true); - - // Check that something is created - ASSERT(((H5::H5File&)(h5parm)).getNumObjs()==1); - - // Check the name of the new solset "sol000" - ASSERT(h5parm.getSolSetName()=="sol000"); - - // Add some metadata - vector<string> antNames; - vector<double> oneAntPos(3); - vector<vector<double> > antPositions; - for (uint i=0; i<5; ++i) { - stringstream antNameStr; - antNameStr<<"Antenna"<<i; - antNames.push_back(antNameStr.str()); - antPositions.push_back(oneAntPos); - } - h5parm.addAntennas(antNames, antPositions); - - vector<H5Parm::AxisInfo> axes; - axes.push_back(H5Parm::AxisInfo("ant",3)); - axes.push_back(H5Parm::AxisInfo("time",ntimes)); - axes.push_back(H5Parm::AxisInfo("bla",1)); - - cout<<"Create new SolTab"<<endl; - H5Parm::SolTab a = h5parm.createSolTab("mysol","mytype",axes); - - // Check that the soltab exists - ASSERT(h5parm.nSolTabs() == 1); - ASSERT(h5parm.hasSolTab("mysol")); - - // Check the axes - H5Parm::SolTab soltab = h5parm.getSolTab("mysol"); - ASSERT(soltab.getType()=="mytype"); - checkAxes(soltab, ntimes); - - // Add some data - vector<double> vals(3*ntimes); - vector<double> weights(3*ntimes); - for (size_t ant=0; ant<3; ++ant) { - for (size_t time=0; time<ntimes; ++time) { - vals[ant*ntimes+time]=10*ant+time; - weights[ant*ntimes+time]=0.4; - } - } - - soltab.setValues(vals, weights, "CREATE with DPPP"); - - // Add metadata for stations - vector<string> someAntNames; - someAntNames.push_back("Antenna1"); - someAntNames.push_back("Antenna2"); - someAntNames.push_back("Antenna3"); - soltab.setAntennas(someAntNames); - - // Add metadata for times - vector<double> times; - for (size_t time=0; time<ntimes; ++time) { - times.push_back(57878.5+2.0*time); - } - soltab.setTimes(times); - - // Add metadata for freqs; - vector<double> freqs; - freqs.push_back(130e6); - freqs.push_back(131e6); - freqs.push_back(135e6); - freqs.push_back(137e6); - soltab.setFreqs(freqs); - } - - { - cout<<"opening tH5Parm_tmp.h5 again, force a new soltab"<<endl; - H5Parm h5parm("tH5Parm_tmp.h5", false, true); - ASSERT(h5parm.getSolSetName()=="sol001"); - } - - { - cout<<"opening tH5Parm_tmp.h5 again, force a new solset with name"<<endl; - H5Parm h5parm("tH5Parm_tmp.h5", false, true, "harry"); - ASSERT(h5parm.getSolSetName()=="harry"); - } - - { - cout<<"opening tH5Parm_tmp.h5 again, read existing soltab"<<endl; - H5Parm h5parm("tH5Parm_tmp.h5", false, false, "sol000"); - ASSERT(h5parm.getSolSetName()=="sol000"); - ASSERT(h5parm.nSolTabs() == 1); - ASSERT(h5parm.hasSolTab("mysol")); - ASSERT(!h5parm.hasSolTab("nonexistingsol")); - - // Check the axes - H5Parm::SolTab soltab = h5parm.getSolTab("mysol"); - ASSERT(soltab.getType()=="mytype"); - checkAxes(soltab, ntimes); - - cout<<"read some data"<<endl; - double starttime = 57878.49999; - hsize_t starttimeindex = soltab.getTimeIndex(starttime); - cout<<"starttimeindex="<<starttimeindex<<endl; - vector<double> val = soltab.getValues("Antenna2", starttimeindex, ntimes); - ASSERT(casacore::near(val[0],10.)); - ASSERT(casacore::near(val[1],11.)); - ASSERT(casacore::near(val[2],12.)); - ASSERT(casacore::near(val[3],13.)); - cout<<"read some data with stride 2"<<endl; - starttime = 57880.5; - starttimeindex = soltab.getTimeIndex(starttime); - ASSERT(starttimeindex==1); - vector<double> val2 = soltab.getValues("Antenna3", starttimeindex, 2, 2); - ASSERT(casacore::near(val2[0],21.)); - ASSERT(casacore::near(val2[1],23.)); - cout<<"testing stride"<<endl; - ASSERT(casacore::near(soltab.getTimeInterval(),2.)); - cout<<"reading the antennas into a vector"<<endl; - vector<string> antennas = soltab.getStringAxis("ant"); - ASSERT(antennas.size()==3); - ASSERT(antennas[0]=="Antenna1"); - ASSERT(antennas[1]=="Antenna2"); - ASSERT(antennas[2]=="Antenna3"); - cout<<"Check frequency widths"<<endl; - ASSERT(casacore::near(soltab.getFreqInterval(0),1e6)); - ASSERT(casacore::near(soltab.getFreqInterval(1),4e6)); - ASSERT(casacore::near(soltab.getFreqInterval(2),2e6)); - - cout<<"Checking interpolation (on input time axis)"<<endl; - vector<double> freqs; - freqs.push_back(130e6); - freqs.push_back(131e6); - - vector<double> times; - for (size_t time=0; time<ntimes; ++time) { - times.push_back(57878.5+2.0*time); - } - - vector<double> newgridvals = soltab.getValuesOrWeights("val", "Antenna1", - times, freqs, 0, 0); - ASSERT(newgridvals.size() == times.size() * freqs.size()); - size_t idx=0; - for (size_t time=0; time<times.size(); ++time) { - for (size_t freq=0; freq<freqs.size(); ++freq) { - ASSERT(casacore::near(newgridvals[idx++], double(time))); - } - } - - times.clear(); - cout<<"Checking interpolation, upsampled 3 times, add 2 time slots at end"<<endl; - for (size_t time=0; time<3*ntimes+2; ++time) { - times.push_back(57878.5+2.0*time/3.); - } - newgridvals = soltab.getValuesOrWeights("val", "Antenna1", - times, freqs, 0, 0); - ASSERT(newgridvals.size() == times.size() * freqs.size()); - idx=0; - for (int time=0; time<int(times.size()); ++time) { - for (size_t freq=0; freq<freqs.size(); ++freq) { - ASSERT(casacore::near(newgridvals[idx++], min(double((time+1)/3),double(ntimes-1)))); - } - } - - } - // Remove the file -// remove("tH5Parm_tmp.h5"); - } - - return 0; -} diff --git a/CEP/DP3/DPPP/test/tH5Parm.sh b/CEP/DP3/DPPP/test/tH5Parm.sh deleted file mode 100755 index dacccfa6967..00000000000 --- a/CEP/DP3/DPPP/test/tH5Parm.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -rm -f tH5Parm_tmp.h5 -./runctest.sh tH5Parm diff --git a/CEP/DP3/DPPP/test/tMedFlagger.cc b/CEP/DP3/DPPP/test/tMedFlagger.cc deleted file mode 100644 index ffe71936cc8..00000000000 --- a/CEP/DP3/DPPP/test/tMedFlagger.cc +++ /dev/null @@ -1,291 +0,0 @@ -//# tMedFlagger.cc: Test program for class MedFlagger -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/MedFlagger.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// It can only set all flags to true or all to false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nant, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nant*(nant+1)/2), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - { - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-10+itsCount*6); - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // They are not averaged, thus only 1 time per row. - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = itsFlag; - buf.setFullResFlags (fullResFlags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - // Use timeInterval=5 - info().init (itsNCorr, itsNChan, itsNTime, 100, 5, string(), string()); - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(itsNBl); - Vector<Int> ant2(itsNBl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<itsNBl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos(4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanFreqs(itsNChan); - Vector<double> chanWidth(itsNChan, 100000); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nant, int nchan, int ncorr, - bool flag, bool useAutoCorr, bool shortbl) - : itsCount(0), itsNTime(ntime), itsNBl(nant*(nant+1)/2), itsNChan(nchan), - itsNCorr(ncorr), - itsFlag(flag), - itsUseAutoCorr(useAutoCorr), - itsShortBL(shortbl) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // Fill expected result in similar way as TestInput. - Cube<Complex> result(itsNCorr,itsNChan,itsNBl); - for (int i=0; i<int(result.size()); ++i) { - result.data()[i] = Complex(i+itsCount*10,i-10+itsCount*6); - } - // Check the result. - ASSERT (allNear(real(buf.getData()), real(result), 1e-10)); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-10)); - // Check the flags. - // If autocorrs are used, only the last channel is flagged, but the first - // channel also for the first time stamp. Thus is only true for a limited - // nr of baselines (thus do not use nant>2 in test2 with flag=false). - // If short baselines are used, bl 2,3,7,8,12,13 are not flagged. - // The others have length 0 or 144. - Cube<bool> expFlag(itsNCorr,itsNChan,itsNBl); - expFlag = itsFlag; - if (itsUseAutoCorr) { - for (int i=0; i<itsNBl; ++i) { - if (!itsShortBL || !(i==2 || i==3 || i==7 || i==8 || i==12 || i==13)) { - for (int j=0; j<itsNCorr; ++j) { - expFlag(j,0,i) = itsFlag || itsCount==0; - expFlag(j,itsNChan-1,i) = true; - } - } - } - } - ASSERT (allEQ(buf.getFlags(), expFlag)); - ASSERT (near(buf.getTime(), 2+5.*itsCount)); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNChan); - ASSERT (int(info.nchan())==itsNChan); - ASSERT (int(info.ntime())==itsNTime); - ASSERT (info.timeInterval()==5); - ASSERT (int(info.nchanAvg())==1); - ASSERT (int(info.ntimeAvg())==1); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag, itsUseAutoCorr, itsShortBL; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); - DPStep::ShPtr step = step1; - while (step) { - step->showCounts (cout); - step = step->getNextStep(); - } -} - -// Test simple flagging with or without preflagged points. -void test1(int ntime, int nant, int nchan, int ncorr, bool flag, int threshold, - bool shortbl) -{ - cout << "test1: ntime=" << ntime << " nrant=" << nant << " nchan=" << nchan - << " ncorr=" << ncorr << " threshold=" << threshold - << " shortbl=" << shortbl << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nant, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("freqwindow", "1"); - parset.add ("timewindow", "1"); - parset.add ("threshold", toString(threshold)); - if (shortbl) { - parset.add ("blmin", "0"); - parset.add ("blmax", "145"); - } - DPStep::ShPtr step2(new MedFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nant, nchan, ncorr, flag, false, - shortbl)); - step1->setNextStep (step2); - step2->setNextStep (step3); - step2->show (cout); - execute (step1); -} - -// Test applyautocorr flagging with or without preflagged points. -void test2(int ntime, int nant, int nchan, int ncorr, bool flag, int threshold, - bool shortbl) -{ - cout << "test2: ntime=" << ntime << " nrant=" << nant << " nchan=" << nchan - << " ncorr=" << ncorr << " threshold=" << threshold - << " shortbl=" << shortbl << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nant, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("freqwindow", "3"); - parset.add ("timewindow", "min(1,max(1,bl))"); - parset.add ("threshold", toString(threshold)); - parset.add ("applyautocorr", "True"); - if (shortbl) { - parset.add ("blmax", "145"); - } - DPStep::ShPtr step2(new MedFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nant, nchan, ncorr, flag, true, - shortbl)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - - -int main() -{ - INIT_LOGGER ("tMedFlagger"); - try { - - for (uint i=0; i<2; ++i) { - test1(10, 2, 32, 4, false, 1, i>0); - test1(10, 5, 32, 4, true, 1, i>0); - test2( 4, 2, 8, 4, false, 100, i>0); - test2(10, 5, 32, 4, true, 1, i>0); - test2( 4, 2, 8, 4, false, 100, i>0); - } - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tMedFlagger.sh b/CEP/DP3/DPPP/test/tMedFlagger.sh deleted file mode 100755 index 56257ab02b4..00000000000 --- a/CEP/DP3/DPPP/test/tMedFlagger.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tMedFlagger diff --git a/CEP/DP3/DPPP/test/tMedian.cc b/CEP/DP3/DPPP/test/tMedian.cc deleted file mode 100644 index 5d318ef9bd2..00000000000 --- a/CEP/DP3/DPPP/test/tMedian.cc +++ /dev/null @@ -1,71 +0,0 @@ -//# tMedian.cc: Program to test performance of kthLargest and nth_element -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <casacore/casa/OS/Timer.h> -#include <casacore/casa/Utilities/GenSort.h> -#include <vector> -#include <algorithm> -#include <iostream> - -using namespace casacore; -using namespace std; - -void testCasa (size_t sz, size_t n) -{ - Timer timer; - for (uint i=0; i<n; ++i) { - vector<float> vec(sz); - uint j=0; - for (vector<float>::iterator iter=vec.begin(); iter!=vec.end(); ++iter) { - *iter = j++; - } - GenSort<float>::kthLargest (&(vec[0]), sz, sz/2); - } - timer.show ("casa"); -} - -void testStl (size_t sz, size_t n) -{ - Timer timer; - for (uint i=0; i<n; ++i) { - vector<float> vec(sz); - uint j=0; - for (vector<float>::iterator iter=vec.begin(); iter!=vec.end(); ++iter) { - *iter = j++; - } - nth_element (vec.begin(), vec.begin()+sz/2, vec.end()); - } - timer.show ("stl "); -} - -int main (int argc, char* argv[]) -{ - size_t window = 155; - size_t ntimes = 1000; - if (argc > 1) window = atoi(argv[1]); - if (argc > 2) ntimes = atoi(argv[2]); - testCasa (window, ntimes); - testStl (window, ntimes); - return 0; -} diff --git a/CEP/DP3/DPPP/test/tMedian.sh b/CEP/DP3/DPPP/test/tMedian.sh deleted file mode 100755 index be461d0df19..00000000000 --- a/CEP/DP3/DPPP/test/tMedian.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tMedian diff --git a/CEP/DP3/DPPP/test/tMirror.cc b/CEP/DP3/DPPP/test/tMirror.cc deleted file mode 100644 index c32d9f091c9..00000000000 --- a/CEP/DP3/DPPP/test/tMirror.cc +++ /dev/null @@ -1,171 +0,0 @@ -//# tMirror.cc: Test if the way of mirroring done in MedFlagger is fine -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <Common/LofarTypes.h> -#include <Common/LofarLogger.h> - -#include <casacore/casa/Arrays/Matrix.h> -#include <casacore/casa/Utilities/LinearSearch.h> -#include <Common/StreamUtil.h> -#include <Common/lofar_vector.h> - -using namespace casacore; -using namespace std; -using namespace LOFAR; - -void doChan (int windowSize, int nchan, int chan) -{ - // At the beginning or end of the window the values are wrapped. - // So we might need to move in two parts. - int hw = windowSize/2; - int s1 = chan - hw; - int e1 = chan + hw + 1; - int s2 = 1; - int e2 = 1; - if (s1 < 0) { - e2 = -s1 + 1; - s1 = 0; - } else if (e1 > nchan) { - s2 = nchan + nchan - e1 - 1; // e1-nchan+1 too far, so go back that amount - e2 = nchan-1; - e1 = nchan; - } - std::cout <<"wdw,nch=" << windowSize << ',' << nchan << " chan=" << chan - << ' ' << s1 << '-' << e1 << ' ' << s2 << '-' << e2 << std::endl; - ASSERT (e1-s1 + e2-s2 == windowSize); -} - -void testAdd() -{ - uint nrold = 5; - uint nrnew = 7; - vector<int> itsAnt1(15); - vector<int> itsAnt2(15); - int inx=0; - for (int a1=0; a1<5; ++a1) { - for (int a2=a1; a2<5; ++a2) { - itsAnt1[inx] = a1; - itsAnt2[inx] = a2; - ++inx; - } - } - vector<Vector<int> > itsParts(2); - itsParts[0].resize (2); - itsParts[0][0] = 0; - itsParts[0][1] = 1; - itsParts[1].resize (2); - itsParts[1][0] = 3; - itsParts[1][1] = 4; - - - vector<int> newbl(nrnew); - vector<vector<int> > itsBufRows; - bool itsMakeAutoCorr = true; - // Loop over the superstations. - // Note that by making this the outer loop, the baselines between - // superstations are also formed. - // At the end the new baselines are added to itsAnt1 and itsAnt2. - // itsBufRows contains for each new baseline the rownrs in the DPBuffer - // to be added for the new baseline. If rownr<0, the conjugate has to be - // added (1 is added to rownr, otherwise 0 is ambiguous). - // Note that a rownr can be the rownr of a new baseline. - for (uint j=0; j<itsParts.size(); ++j) { - std::fill (newbl.begin(), newbl.end(), -1); - vector<int> newAnt1; - vector<int> newAnt2; - // Loop through all baselines and find out if a baseline should - // be used for a superstation. - for (uint i=0; i<itsAnt1.size(); ++i) { - bool havea1 = linearSearch1 (itsParts[j], itsAnt1[i]) >= 0; - bool havea2 = linearSearch1 (itsParts[j], itsAnt2[i]) >= 0; - int ant = nrold+j; - int take = 0; - if (havea1) { - // If both stations are in same superstation, only use them - // if it is an autocorrelation. - if (havea2) { - if (itsMakeAutoCorr && itsAnt1[i] == itsAnt2[i]) { - take = 1; - } - } else { - ant = itsAnt2[i]; - take = -1; // conjugate has to be added - } - } else if (havea2) { - ant = itsAnt1[i]; - take = 1; - } - if (take != 0) { - // We have a baseline for the superstation. - // Get its index; create it if not used before. - int blinx = newbl[ant]; - if (blinx < 0) { - blinx = newbl[ant] = itsBufRows.size(); - itsBufRows.push_back (vector<int>()); - newAnt1.push_back (ant); - newAnt2.push_back (nrold+j); - } - itsBufRows[blinx].push_back (take*(i+1)); - } - } - // Copy the new baselines for this superstation to the baseline list. - // Give a warning if nothing found. - if (newAnt1.empty()) { - // DPLOG_WARN_STR ("StationAdder: no baseline found for superstation"); - cout << "StationAdder: no baseline found for superstation" << endl; - } else { - uint oldsz = itsAnt1.size(); - itsAnt1.resize (oldsz + newAnt1.size()); - itsAnt2.resize (oldsz + newAnt1.size()); - for (uint i=0; i<newAnt1.size(); ++i) { - itsAnt1[oldsz+i] = newAnt1[i]; - itsAnt2[oldsz+i] = newAnt2[i]; - } - } - } - cout << itsAnt1<<endl<<itsAnt2<<endl; - writeVector (cout, itsBufRows); - cout<<endl; -} - -int main (int argc, char* argv[]) -{ - uint windowSize = 5; - uint nchan = 8; - if (argc > 1) { - windowSize = atoi(argv[1]); - } - if (argc > 2) { - nchan = atoi(argv[2]); - } - if (windowSize == 0) windowSize = 1; - if (windowSize > nchan) windowSize = nchan; - if (windowSize%2 == 0) windowSize--; - - for (uint i=0; i<nchan; ++i) { - doChan (windowSize, nchan, i); - } - - testAdd(); -} diff --git a/CEP/DP3/DPPP/test/tMirror.sh b/CEP/DP3/DPPP/test/tMirror.sh deleted file mode 100755 index 09a5523297b..00000000000 --- a/CEP/DP3/DPPP/test/tMirror.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tMirror diff --git a/CEP/DP3/DPPP/test/tMultiApplyCal.run b/CEP/DP3/DPPP/test/tMultiApplyCal.run deleted file mode 100755 index 31762901986..00000000000 --- a/CEP/DP3/DPPP/test/tMultiApplyCal.run +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -# Get the taql executable and srcdir (script created by cmake's CONFIGURE_FILE). -source findenv.run_script -echo "srcdirx=$rt_srcdir" - -# Set srcdir if not defined (in case run by hand). -if test "$srcdir" = ""; then - srcdir="$rt_srcdir" -fi - -if test ! -f ${srcdir}/tNDPPP-generic.in_MS.tgz; then - exit 3 # untested -fi - -set -e # Stop on any error - -rm -rf tMultiApplyCal_tmp -mkdir -p tMultiApplyCal_tmp -# Unpack the MS and other files and do the DPPP run. -cd tMultiApplyCal_tmp -tar zxf ${srcdir}/tNDPPP-generic.in_MS.tgz - -# Create expected taql output. -echo " select result of 0 rows" > taql.ref - -echo; echo "Creating parmdb with defvalues 3" -parmdbm <<EOL -open table="tApplyCal.parmdb" -adddef Gain:0:0:Real values=3. -adddef Gain:1:1:Real values=3. -adddef CommonScalarPhase values=0 -EOL - -cmd='NDPPP msin=tNDPPP-generic.MS checkparset=1 msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.steps="[gain,csp]" applycal.gain.parmdb=tApplyCal.parmdb applycal.gain.correction=gain applycal.csp.parmdb=tApplyCal.parmdb applycal.csp.correction=commonscalarphase showcounts=false' -echo $cmd -eval $cmd -$taqlexe 'select from tNDPPP-generic.MS where not(all(DATA~=9*DATA3))' > taql.out -diff taql.out taql.ref || exit 1 - -cmd='NDPPP msin=tNDPPP-generic.MS checkparset=1 msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.steps="[gain,csp]" applycal.parmdb=tApplyCal.parmdb applycal.gain.correction=gain applycal.csp.correction=commonscalarphase showcounts=false' -echo $cmd -eval $cmd -$taqlexe 'select from tNDPPP-generic.MS where not(all(DATA~=9*DATA3))' > taql.out -diff taql.out taql.ref || exit 1 - diff --git a/CEP/DP3/DPPP/test/tMultiApplyCal.sh b/CEP/DP3/DPPP/test/tMultiApplyCal.sh deleted file mode 100755 index 12b39f281e6..00000000000 --- a/CEP/DP3/DPPP/test/tMultiApplyCal.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tMultiApplyCal diff --git a/CEP/DP3/DPPP/test/tNDPPP-generic.in_MS.tgz b/CEP/DP3/DPPP/test/tNDPPP-generic.in_MS.tgz deleted file mode 100644 index e6244abfc464786d4f22ce43ebffbd5ec609703c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274580 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%0DM6)1mV4>)LmNEVJ{)hG`TF>!%Ahy(M>ak- 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	^SXlCNEs+mk}GHWN}Et?e(^Oi?uh&oKUM^_u9>O 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/#0m7;u!e{-cw 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 diff --git a/CEP/DP3/DPPP/test/tNDPPP.cc b/CEP/DP3/DPPP/test/tNDPPP.cc deleted file mode 100644 index a42b0916993..00000000000 --- a/CEP/DP3/DPPP/test/tNDPPP.cc +++ /dev/null @@ -1,1027 +0,0 @@ -//# tNDPPP.cc: test program for NDPPP -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/DPRun.h> -#include <casacore/tables/Tables.h> -#include <casacore/tables/Tables/TableIter.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayPartMath.h> -#include <Common/LofarLogger.h> -#include <iostream> -#include <stdexcept> - -using namespace LOFAR::DPPP; -using namespace casacore; - -// This test program uses the MS in tNDPPP.in_MS.tgz. -// The MS contains 4 corr, 16 freq, 6 baselines, 18 time slots of 30 sec. -// Two time slots are missing between time slot 2 and 3. - -void checkCopy (const String& in, const String& out, int nms) -{ - Table tin(in); - Table tout(out); - ASSERT (tout.nrow() == 6*24); - for (int j=0; j<nms; ++j) { - // A few dummy time slots were inserted, so ignore those. - Table t1 = tableCommand - ("using style python " - "select from $1 where rownumber() not in [0:6, 4*6:6*6, 21*6:24*6]", - tout); - ROArrayColumn<Complex> data(t1, "DATA"); - ROArrayColumn<Bool> flag(t1, "FLAG"); - ROArrayColumn<uChar> oflag(t1, "LOFAR_FULL_RES_FLAG"); - IPosition dshape (2, 4, 16); - IPosition dst (2, 0, j*16); - Slicer dslicer (dst, dshape); - ASSERT (data(0).shape() == IPosition(2,4,16*nms)); - ASSERT (flag(0).shape() == IPosition(2,4,16*nms)); - ASSERT (oflag(0).shape() == IPosition(2,16*nms/8,1)); - ASSERT (allEQ(data.getColumn(dslicer), - ROArrayColumn<Complex>(tin,"DATA").getColumn())); - ASSERT (allEQ(flag.getColumn(), false)); - ASSERT (allEQ(oflag.getColumn(), uChar(0))); - ASSERT (allEQ(ROArrayColumn<float>(t1,"WEIGHT_SPECTRUM").getColumn(), - float(1))); - // cout<<ROArrayColumn<double>(t1,"UVW").getColumn()<< - // ROArrayColumn<double>(tin,"UVW").getColumn(); - // ASSERT (allEQ(ROArrayColumn<double>(t1,"UVW").getColumn(), - // ROArrayColumn<double>(tin,"UVW").getColumn())); - ASSERT (allEQ(ROScalarColumn<double>(t1,"TIME").getColumn(), - ROScalarColumn<double>(tin,"TIME").getColumn())); - ASSERT (allEQ(ROScalarColumn<double>(t1,"TIME_CENTROID").getColumn(), - ROScalarColumn<double>(tin,"TIME_CENTROID").getColumn())); - ASSERT (allEQ(ROScalarColumn<double>(t1,"INTERVAL").getColumn(), - ROScalarColumn<double>(tin,"INTERVAL").getColumn())); - ASSERT (allEQ(ROScalarColumn<double>(t1,"EXPOSURE").getColumn(), - ROScalarColumn<double>(tin,"EXPOSURE").getColumn())); - } - { - // Check the inserted time slots. - // The MS misses a few time slots (3 and 4). - Table t1 = tableCommand - ("using style python " - "select from $1 where rownumber() in [0:6, 4*6:6*6, 21*6:24*6]", - tout); - ROArrayColumn<Complex> data(t1, "DATA"); - ROArrayColumn<Bool> flag(t1, "FLAG"); - ROArrayColumn<uChar> oflag(t1, "LOFAR_FULL_RES_FLAG"); - ASSERT (data(0).shape() == IPosition(2,4,16*nms)); - ASSERT (flag(0).shape() == IPosition(2,4,16*nms)); - ASSERT (oflag(0).shape() == IPosition(2,16*nms/8,1)); - ASSERT (allEQ(data.getColumn(), Complex())); - ASSERT (allEQ(flag.getColumn(), true)); - ASSERT (allEQ(oflag.getColumn(), uChar(0xff))); - ASSERT (allEQ(ROArrayColumn<float>(t1,"WEIGHT_SPECTRUM").getColumn(), - float(0))); - ASSERT (allEQ(ROScalarColumn<double>(t1,"INTERVAL").getColumn(), 30.)); - ASSERT (allEQ(ROScalarColumn<double>(t1,"EXPOSURE").getColumn(), 30.)); - double time = ROScalarColumn<double>(tin,"TIME")(0); - for (uint i=0; i<6; ++i) { - double timec = time - 30; - ASSERT (near(ROScalarColumn<double>(t1,"TIME")(i), timec)); - ASSERT (near(ROScalarColumn<double>(t1,"TIME_CENTROID")(i), timec)); - } - time = ROScalarColumn<double>(tin,"TIME")(2*6); - for (uint i=6; i<18; ++i) { - double timec = time + (i/6)*30.; - ASSERT (near(ROScalarColumn<double>(t1,"TIME")(i), timec)); - ASSERT (near(ROScalarColumn<double>(t1,"TIME_CENTROID")(i), timec)); - } - time = ROScalarColumn<double>(tin,"TIME")(17*6); - for (uint i=18; i<36; ++i) { - double timec = time + (i/6-2)*30.; - ASSERT (near(ROScalarColumn<double>(t1,"TIME")(i), timec)); - ASSERT (near(ROScalarColumn<double>(t1,"TIME_CENTROID")(i), timec)); - } - } - // Now check if the SPECTRAL_WINDOW table is fine. - Table spwin(tin.keywordSet().asTable("SPECTRAL_WINDOW")); - Table spwout(tout.keywordSet().asTable("SPECTRAL_WINDOW")); - for (int j=0; j<nms; ++j) { - IPosition dshape (1, 16); - IPosition dst (1, j*16); - Slicer dslicer (dst, dshape); - ASSERT (allEQ (ROArrayColumn<double>(spwin, "CHAN_FREQ").getColumn(), - ROArrayColumn<double>(spwout,"CHAN_FREQ").getColumn(dslicer))); - ASSERT (allEQ (ROArrayColumn<double>(spwin, "CHAN_WIDTH").getColumn(), - ROArrayColumn<double>(spwout,"CHAN_WIDTH").getColumn(dslicer))); - ASSERT (allEQ (ROArrayColumn<double>(spwin, "EFFECTIVE_BW").getColumn(), - ROArrayColumn<double>(spwout,"EFFECTIVE_BW").getColumn(dslicer))); - ASSERT (allEQ (ROArrayColumn<double>(spwin, "RESOLUTION").getColumn(), - ROArrayColumn<double>(spwout,"RESOLUTION").getColumn(dslicer))); - } - ASSERT (allEQ (double(nms)*ROScalarColumn<double>(spwin, "TOTAL_BANDWIDTH").getColumn(), - ROScalarColumn<double>(spwout,"TOTAL_BANDWIDTH").getColumn())); - if (nms == 1) { - ASSERT (allEQ (ROScalarColumn<double>(spwin, "REF_FREQUENCY").getColumn(), - ROScalarColumn<double>(spwout,"REF_FREQUENCY").getColumn())); - } - // Check the TIME_RANGE in the OBSERVATION table. - Table obsout(tout.keywordSet().asTable("OBSERVATION")); - Vector<double> timeRange - (ROArrayColumn<double>(obsout, "TIME_RANGE").getColumn()); - ASSERT (near(timeRange(0), ROScalarColumn<double>(tout,"TIME")(0) - 15)); - ASSERT (near(timeRange(1), ROScalarColumn<double>(tout,"TIME")(143) + 15)); -} - -void checkCopyColumn (const String& in) -{ - Table tin(in); - ASSERT (tin.nrow() == 6*24); - ROArrayColumn<Complex> data1(tin, "DATA"); - ROArrayColumn<Complex> data2(tin, "COPY_DATA"); - ROArrayColumn<float> weight1(tin, "NEW_WEIGHT_SPECTRUM"); - ROArrayColumn<float> weight2(tin, "COPY_NEW_WEIGHT_SPECTRUM"); - ASSERT (allEQ(data1.getColumn(), data2.getColumn())); - ASSERT (allEQ(weight1.getColumn(), weight2.getColumn())); -} - -void testCopy() -{ - cout << endl << "** testCopy **" << endl; - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - // Give starttime 35 sec before actual, hence 1 missing timeslot. - ostr << "msin.starttime=03-Aug-2000/13:21:45" << endl; - // Give endtime 90 sec after actual, hence 3 missing timeslots. - ostr << "msin.endtime=03-Aug-2000/13:33:15" << endl; - ostr << "msout=tNDPPP_tmp.MS1" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - checkCopy ("tNDPPP_tmp.MS", "tNDPPP_tmp.MS1", 1); -} - -void testCopyColumn() -{ - cout << endl << "** testCopyColumn 1 **" << endl; - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS1" << endl; - ostr << "msout=." << endl; - ostr << "msout.datacolumn=COPY_DATA" << endl; - ostr << "msout.weightcolumn=NEW_WEIGHT_SPECTRUM" << endl; - ostr << "steps=[]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - - cout << endl << "** testCopyColumn 2 **" << endl; - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS1" << endl; - ostr << "msin.datacolumn=COPY_DATA" << endl; - ostr << "msin.weightcolumn=NEW_WEIGHT_SPECTRUM" << endl; - ostr << "msout=." << endl; - ostr << "msout.datacolumn=DATA" << endl; - ostr << "msout.weightcolumn=COPY_NEW_WEIGHT_SPECTRUM" << endl; - ostr << "steps=[]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - - checkCopyColumn ("tNDPPP_tmp.MS1"); -} - -void testMultiIn() -{ - cout << endl << "** testMultiIn **" << endl; - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=[tNDPPP_tmp.MS1, tNDPPP_tmp.MS1]" << endl; - ostr << "msout=tNDPPP_tmp.MS1a" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - checkCopy ("tNDPPP_tmp.MS", "tNDPPP_tmp.MS1a", 2); - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=[tNDPPP_tmp.MS1, tNDPPP_tmp.MS1]" << endl; - ostr << "msin.datacolumn=CORRECTED_DATA" << endl; - ostr << "msin.weightcolumn=NEW_WEIGHT_SPECTRUM" << endl; - ostr << "msin.missingdata=true" << endl; - ostr << "msin.baseline=0,2&6" << endl; - ostr << "msout=tNDPPP_tmp.MS1a" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - Table tab("tNDPPP_tmp.MS1a"); - ASSERT (tab.nrow() == 48); - ASSERT (allEQ (ROArrayColumn<Complex>(tab,"DATA").getColumn(), Complex())); - ASSERT (tab.tableDesc().isColumn("WEIGHT_SPECTRUM")); - ASSERT (allEQ (ROArrayColumn<Bool>(tab,"FLAG").getColumn(), True)); - ASSERT (allEQ (ROScalarColumn<Int>(tab,"ANTENNA2").getColumn(), 6)); - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=[notexist, tNDPPP_tmp.MS1, notexist, notexist]" << endl; - ostr << "msin.datacolumn=CORRECTED_DATA" << endl; - ostr << "msin.missingdata=true" << endl; - ostr << "msin.orderms=false" << endl; - ostr << "msin.baseline=0,2&6" << endl; - ostr << "msout=tNDPPP_tmp.MS1b" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - tab = Table("tNDPPP_tmp.MS1b"); - ASSERT (tab.nrow() == 48); - ASSERT (allEQ (ROArrayColumn<Complex>(tab,"DATA").getColumn(), Complex())); - ASSERT (allEQ (ROArrayColumn<Bool>(tab,"FLAG").getColumn(), True)); - ASSERT (allEQ (ROScalarColumn<Int>(tab,"ANTENNA2").getColumn(), 6)); -} - -void checkAvg (const String& outName) -{ - Table tin("tNDPPP_tmp.MS"); - Table tout(outName); - ROScalarColumn<double> timeCol(tin, "TIME"); - double time = 0.5 * (timeCol(tin.nrow()-1) + timeCol(0)); - ASSERT (tout.nrow() == 6); - Block<String> colNames(2); - colNames[0] = "ANTENNA1"; - colNames[1] = "ANTENNA2"; - TableIterator iterin(tin, colNames); - TableIterator iterout(tout, colNames); - // Iterate over baseline to be able to average the input in an easy way. - while (! iterin.pastEnd()) { - Table t2(iterin.table()); - Table t1(iterout.table()); - ROArrayColumn<Complex> data(t1, "DATA"); - ROArrayColumn<Bool> flag(t1, "FLAG"); - ROArrayColumn<uChar> oflag(t1, "LOFAR_FULL_RES_FLAG"); - ASSERT (data(0).shape() == IPosition(2,4,1)); - ASSERT (flag(0).shape() == IPosition(2,4,1)); - ASSERT (oflag(0).shape() == IPosition(2,16/8,20)); - // Average the original data over all channels and times. - Array<Complex> dataAvg = partialMeans - (ROArrayColumn<Complex>(t2,"DATA").getColumn(), IPosition(2,1,2)); - Array<Complex> dataRes = dataAvg.reform (IPosition(3,4,1,1)); - ASSERT (allNear(data.getColumn(), dataRes, 1e-5)); - ASSERT (allNear(ROArrayColumn<float>(t1,"WEIGHT_SPECTRUM").getColumn(), - float(18*16), 1e-5)); - ASSERT (allEQ(flag.getColumn(), false)); - ASSERT (allNear(ROScalarColumn<double>(t1,"TIME").getColumn(), time, 1e-5)); - ASSERT (allNear(ROScalarColumn<double>(t1,"TIME_CENTROID").getColumn(), - time, 1e-5)); - ASSERT (allEQ(ROScalarColumn<double>(t1,"INTERVAL").getColumn(), 20*30.)); - ASSERT (allEQ(ROScalarColumn<double>(t1,"EXPOSURE").getColumn(), 20*30.)); - // Two time entries should be flagged. - Array<uChar> of = oflag.getColumn(); - ASSERT (allEQ(of(Slicer(IPosition(3,0,0,0),IPosition(3,2,3,1))),uChar(0))); - ASSERT (allEQ(of(Slicer(IPosition(3,0,3,0),IPosition(3,2,2,1))),uChar(0xff))); - ASSERT (allEQ(of(Slicer(IPosition(3,0,5,0),IPosition(3,2,15,1))),uChar(0))); - iterin.next(); - iterout.next(); - } - // Now check if the SPECTRAL_WINDOW table is fine. - Table spwin(tin.keywordSet().asTable("SPECTRAL_WINDOW")); - Table spwout(tout.keywordSet().asTable("SPECTRAL_WINDOW")); - Matrix<double> cw = ROArrayColumn<double>(spwout, "CHAN_WIDTH").getColumn(); - ASSERT (cw.size() == 1); - ASSERT (near(cw(0,0), - sum(ROArrayColumn<double>(spwin, "CHAN_WIDTH").getColumn()))); - Matrix<double> cfi = ROArrayColumn<double>(spwin, "CHAN_FREQ").getColumn(); - Matrix<double> cfo = ROArrayColumn<double>(spwout, "CHAN_FREQ").getColumn(); - ASSERT (near(cfo(0,0), 0.5*(cfi(0,0) + cfi(15,0)))); - Matrix<double> ce = ROArrayColumn<double>(spwout, "EFFECTIVE_BW").getColumn(); - ASSERT (ce.size() == 1); - ASSERT (near(ce(0,0), cw(0,0))); - Matrix<double> cr = ROArrayColumn<double>(spwout, "RESOLUTION").getColumn(); - ASSERT (cr.size() == 1); - ASSERT (near(cr(0,0), cw(0,0))); - ASSERT (near(ROScalarColumn<double>(spwin, "TOTAL_BANDWIDTH")(0), - cw(0,0))); - ASSERT (allEQ (ROScalarColumn<double>(spwin, "REF_FREQUENCY").getColumn(), - ROScalarColumn<double>(spwout,"REF_FREQUENCY").getColumn())); - // Check the TIME_RANGE in the OBSERVATION table. - Table obsout(tout.keywordSet().asTable("OBSERVATION")); - Vector<double> timeRange - (ROArrayColumn<double>(obsout, "TIME_RANGE").getColumn()); - ASSERT (near(timeRange(0), ROScalarColumn<double>(tout,"TIME")(0) - 300)); - ASSERT (near(timeRange(1), ROScalarColumn<double>(tout,"TIME")(0) + 295)); -} - -void testAvg1() -{ - cout << endl << "** testAvg1 **" << endl; - { - // Average in a single step. - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin.name=tNDPPP_tmp.MS" << endl; - // Give start and end time as actual, hence no missing timeslots. - ostr << "msin.starttime=03-Aug-2000/13:22:20" << endl; - ostr << "msin.endtime=03-Aug-2000/13:31:45" << endl; - ostr << "msout.name=tNDPPP_tmp.MS2" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[avg,count]" << endl; - ostr << "avg.type=average" << endl; - ostr << "avg.timestep=20" << endl; - ostr << "avg.freqstep=100" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - checkAvg ("tNDPPP_tmp.MS2"); -} - -void testAvg2() -{ - cout << endl << "** testAvg2 **" << endl; - // Averaging in multiple steps should be the same as above. - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "msout=tNDPPP_tmp.MS3" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[avg1,avg2,avg3,avg4]" << endl; - ostr << "avg1.type=average" << endl; - ostr << "avg1.timestep=5" << endl; - ostr << "avg1.freqstep=2" << endl; - ostr << "avg2.type=average" << endl; - ostr << "avg2.timestep=1" << endl; - ostr << "avg2.freqstep=2" << endl; - ostr << "avg3.type=average" << endl; - ostr << "avg3.timestep=2" << endl; - ostr << "avg3.freqstep=1" << endl; - ostr << "avg4.type=average" << endl; - ostr << "avg4.timestep=2" << endl; - ostr << "avg4.freqstep=4" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - checkAvg ("tNDPPP_tmp.MS3"); -} - -void testAvg3() -{ - cout << endl << "** testAvg3 **" << endl; - // Averaging in multiple steps with multiple outputs should be the same - // as above. - { - ofstream ostr1("tNDPPP_tmp.parset1"); - ofstream ostr2("tNDPPP_tmp.parset2"); - ofstream ostr3("tNDPPP_tmp.parset3"); - ofstream ostr4("tNDPPP_tmp.parset4"); - ostr1 << "msin=tNDPPP_tmp.MS" << endl; - ostr1 << "msout=tNDPPP_tmp.MS4a" << endl; - ostr1 << "msout.overwrite=true" << endl; - ostr1 << "steps=[avg1]" << endl; - ostr1 << "avg1.type=average" << endl; - ostr1 << "avg1.timestep=5" << endl; - ostr1 << "avg1.freqstep=2" << endl; - ostr2 << "msin=tNDPPP_tmp.MS4a" << endl; - ostr2 << "msout=tNDPPP_tmp.MS4b" << endl; - ostr2 << "msout.overwrite=true" << endl; - ostr2 << "steps=[avg2]" << endl; - ostr2 << "avg2.type=average" << endl; - ostr2 << "avg2.timestep=1" << endl; - ostr2 << "avg2.freqstep=2" << endl; - ostr3 << "msin=tNDPPP_tmp.MS4b" << endl; - ostr3 << "msout=tNDPPP_tmp.MS4c" << endl; - ostr3 << "msout.overwrite=true" << endl; - ostr3 << "steps=[avg3]" << endl; - ostr3 << "avg3.type=average" << endl; - ostr3 << "avg3.timestep=2" << endl; - ostr3 << "avg3.freqstep=1" << endl; - ostr4 << "msin=tNDPPP_tmp.MS4c" << endl; - ostr4 << "msout=tNDPPP_tmp.MS4d" << endl; - ostr4 << "msout.overwrite=true" << endl; - ostr4 << "steps=[avg4]" << endl; - ostr4 << "avg4.type=average" << endl; - ostr4 << "avg4.timestep=2" << endl; - ostr4 << "avg4.freqstep=4" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset1"); - DPRun::execute ("tNDPPP_tmp.parset2"); - DPRun::execute ("tNDPPP_tmp.parset3"); - DPRun::execute ("tNDPPP_tmp.parset4"); - checkAvg ("tNDPPP_tmp.MS4d"); -} - -// This function tests if the correct start time is used when selecting times. -void testAvg4() -{ - cout << endl << "** testAvg4 **" << endl; - { - // Average in a single step. - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - // Give start a few seconds after first one, hence skip first time slot. - ostr << "msin.starttime=03-Aug-2000/13:22:25" << endl; - ostr << "msout=tNDPPP_tmp.MS5" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[avg]" << endl; - ostr << "avg.type=average" << endl; - ostr << "avg.timestep=2" << endl; - ostr << "avg.freqstep=100" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - { - // Only check the times; - Table tab ("tNDPPP_tmp.MS"); - // First time to be used. - double time = ROScalarColumn<double>(tab, "TIME")(6) + 15; - Table t2 ("tNDPPP_tmp.MS5"); - ASSERT (t2.nrow() == 6*10); - ROScalarColumn<double> timeCol(t2, "TIME"); - for (uint i=0; i<t2.nrow(); ++i) { - ASSERT (near(timeCol(i), time)); - if (i%6 == 5) time += 60; - } - } -} - -void testUpdate1() -{ - cout << endl << "** testUpdate1 **" << endl; - // Test if update works fine. - // In fact, it does not do anything apart from rewriting the current flags. - // However, it should ignore the inserted time slots. - Array<bool> flags; - { - Table tab("tNDPPP_tmp.MS"); - flags = ROArrayColumn<bool>(tab,"FLAG").getColumn(); - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "msout=''" << endl; - ostr << "steps=[]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - // Check that the flags did not change. - { - Table tab("tNDPPP_tmp.MS"); - ASSERT (allEQ(ROArrayColumn<bool>(tab,"FLAG").getColumn(), flags)); - } -} - -void testUpdate2() -{ - cout << endl << "** testUpdate2 **" << endl; - // Test if update all flags works fine. - { - Table tab("tNDPPP_tmp.MS"); - tab.deepCopy ("tNDPPP_tmp.MS_copy1", Table::New); - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS_copy1" << endl; - ostr << "msout=." << endl; - ostr << "steps=[preflag]" << endl; - ostr << "preflag.blmin=1e6" << endl; // should flag all data - } - DPRun::execute ("tNDPPP_tmp.parset"); - // Check that all flags are true. - { - Table tab("tNDPPP_tmp.MS_copy1"); - ASSERT (allEQ(ROArrayColumn<bool>(tab,"FLAG").getColumn(), true)); - } -} - -void testUpdateScale() -{ - cout << endl << "** testUpdateScale **" << endl; - // Test if update data works fine. - Array<Complex> data; - Array<bool> flags; - { - Table tab("tNDPPP_tmp.MS"); - data = ROArrayColumn<Complex>(tab,"DATA").getColumn(); - flags = ROArrayColumn<bool>(tab,"FLAG").getColumn(); - tab.deepCopy ("tNDPPP_tmp.MS_copy1", Table::New); - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS_copy1" << endl; - ostr << "msout=tNDPPP_tmp.MS_copy1" << endl; // same name means update - ostr << "steps=[scaledata]" << endl; - ostr << "scaledata.coeffs=2" << endl; - ostr << "scaledata.stations=*" << endl; - ostr << "scaledata.scalesize=false" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - // Check that all data is doubled. - { - Table tab("tNDPPP_tmp.MS_copy1"); - data *= Complex(2,0); - ASSERT (allNear(ROArrayColumn<Complex>(tab,"DATA").getColumn(), data, 1e-5)); - ASSERT (allEQ(ROArrayColumn<bool>(tab,"FLAG").getColumn(), flags)); - } -} - -void checkFlags (const string& outName) -{ - // Only check the FULL_RES_FLAGS and table size. - // The flags are created in various ways, but should be the same in all cases. - // 3 time slots are averaged to 1. - Table tout(outName); - ASSERT (tout.nrow() == 6*4); - // Check the full-res-flags. - // Channels 0,2,6,7,8 are flagged everywhere. - { - // Input time slots 3,4 are inserted, thus flagged. - Table t1 = tableCommand - ("using style python " - "select from $1 where rownumber() in [0:6]", - tout); - ROArrayColumn<uChar> oflag(t1, "LOFAR_FULL_RES_FLAG"); - ASSERT (oflag(0).shape() == IPosition(2,2,6)); - Array<uChar> flags = oflag.getColumn(); - ASSERT (allEQ(flags(IPosition(3,0,0,0), IPosition(3,0,2,5)), uChar(0xc5))); - ASSERT (allEQ(flags(IPosition(3,1,0,0), IPosition(3,1,2,5)), uChar(0x01))); - ASSERT (allEQ(flags(IPosition(3,0,3,0), IPosition(3,0,4,5)), uChar(0xff))); - ASSERT (allEQ(flags(IPosition(3,1,3,0), IPosition(3,1,4,5)), uChar(0x0f))); - ASSERT (allEQ(flags(IPosition(3,0,5,0), IPosition(3,0,5,5)), uChar(0xc5))); - ASSERT (allEQ(flags(IPosition(3,1,5,0), IPosition(3,1,5,5)), uChar(0x01))); - } - { - // Input time slots 10,11 are flagged. - Table t1 = tableCommand - ("using style python " - "select from $1 where rownumber() in [6:12]", - tout); - ROArrayColumn<uChar> oflag(t1, "LOFAR_FULL_RES_FLAG"); - ASSERT (oflag(0).shape() == IPosition(2,2,6)); - Array<uChar> flags = oflag.getColumn(); - ASSERT (allEQ(flags(IPosition(3,0,0,0), IPosition(3,0,3,5)), uChar(0xc5))); - ASSERT (allEQ(flags(IPosition(3,1,0,0), IPosition(3,1,3,5)), uChar(0x01))); - ASSERT (allEQ(flags(IPosition(3,0,4,0), IPosition(3,0,5,5)), uChar(0xff))); - ASSERT (allEQ(flags(IPosition(3,1,4,0), IPosition(3,1,5,5)), uChar(0x0f))); - } - { - // Input time slots 12-17 are not flagged. - Table t1 = tableCommand - ("using style python " - "select from $1 where rownumber() in [12:18]", - tout); - ROArrayColumn<uChar> oflag(t1, "LOFAR_FULL_RES_FLAG"); - ASSERT (oflag(0).shape() == IPosition(2,2,6)); - Array<uChar> flags = oflag.getColumn(); - ASSERT (allEQ(flags(IPosition(3,0,0,0), IPosition(3,0,5,5)), uChar(0xc5))); - ASSERT (allEQ(flags(IPosition(3,1,0,0), IPosition(3,1,5,5)), uChar(0x01))); - } - { - // Input time slot 20-23 did not exist, thus flagged in average. - Table t1 = tableCommand - ("using style python " - "select from $1 where rownumber() in [18:24]", - tout); - ROArrayColumn<uChar> oflag(t1, "LOFAR_FULL_RES_FLAG"); - ASSERT (oflag(0).shape() == IPosition(2,2,6)); - Array<uChar> flags = oflag.getColumn(); - ASSERT (allEQ(flags(IPosition(3,0,0,0), IPosition(3,0,1,5)), uChar(0xc5))); - ASSERT (allEQ(flags(IPosition(3,1,0,0), IPosition(3,1,1,5)), uChar(0x01))); - ASSERT (allEQ(flags(IPosition(3,0,2,0), IPosition(3,0,5,5)), uChar(0xff))); - ASSERT (allEQ(flags(IPosition(3,1,2,0), IPosition(3,1,5,5)), uChar(0x0f))); - } -} - -void testFlags1() -{ - cout << endl << "** testFlags1 **" << endl; - { - // Most simple case. - // Just flag some channels and time stamps. - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "msin.startchan=1" << endl; - ostr << "msin.nchan=12" << endl; - ostr << "msout=tNDPPP_tmp.MS5" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[preflag,average]" << endl; - ostr << "preflag.expr='flag1 or flag2'" << endl; - ostr << "preflag.flag1.timeslot=[10,11]" << endl; - ostr << "preflag.flag2.chan=[0,2,6..8]" << endl; - ostr << "average.timestep=6" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - checkFlags ("tNDPPP_tmp.MS5"); -} - -void testFlags2() -{ - cout << endl << "** testFlags2 **" << endl; - { - // A more advanced case in two NDPPP steps. - // Flag the channels, but shifted 2. In the next step the first 2 channels - // are skipped, thus the channel numbers shift back 2. - // An averaged time slot is flagged, so the original time slots should - // come out flagged. - ofstream ostr1("tNDPPP_tmp.parset1"); - ostr1 << "msin=tNDPPP_tmp.MS" << endl; - ostr1 << "msin.nchan=15" << endl; - ostr1 << "msout=tNDPPP_tmp.MS6a" << endl; - ostr1 << "msout.overwrite=true" << endl; - ostr1 << "steps=[preflag,average]" << endl; - ostr1 << "preflag.chan=[2,4,8..10]" << endl; - ostr1 << "average.timestep=2" << endl; - ofstream ostr2("tNDPPP_tmp.parset2"); - ostr2 << "msin=tNDPPP_tmp.MS6a" << endl; - ostr2 << "msin.startchan=2*1" << endl; // output chan 0,2 are now flagged - ostr2 << "msin.nchan=nchan-3" << endl; - ostr2 << "msout=tNDPPP_tmp.MS6b" << endl; - ostr2 << "msout.overwrite=true" << endl; - ostr2 << "steps=[preflag,average]" << endl; - ostr2 << "preflag.timeslot=5" << endl; // is 10,11 in input - ostr2 << "average.timestep=3" << endl; - ostr2 << "average.freqstep=2" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset1"); - DPRun::execute ("tNDPPP_tmp.parset2"); - checkFlags ("tNDPPP_tmp.MS6b"); -} - -void testFlags3() -{ - cout << endl << "** testFlags3 **" << endl; - { - // Even a bit more advanced, also in two NDPPP runs. - // Input channels 6,7,8 are flagged by flagging their averaged channel. - // This is done at the end of run 1, so the averager of run 2 should pick - // up those flags. - ofstream ostr1("tNDPPP_tmp.parset1"); - ostr1 << "msin=tNDPPP_tmp.MS" << endl; - ostr1 << "msin.nchan=15" << endl; - ostr1 << "msout=tNDPPP_tmp.MS7a" << endl; - ostr1 << "msout.overwrite=true" << endl; - ostr1 << "steps=[preflag,average,pre2]" << endl; - ostr1 << "preflag.chan=[0,2]" << endl; - ostr1 << "average.timestep=2" << endl; - ostr1 << "average.freqstep=3" << endl; - ostr1 << "pre2.type=preflag" << endl; - ostr1 << "pre2.chan=2" << endl; // is input channel 6,7,8 - ofstream ostr2("tNDPPP_tmp.parset2"); - ostr2 << "msin=tNDPPP_tmp.MS7a" << endl; - ostr2 << "msin.nchan=4" << endl; - ostr2 << "msout=tNDPPP_tmp.MS7b" << endl; - ostr2 << "msout.overwrite=true" << endl; - ostr2 << "steps=[preflag,average]" << endl; - ostr2 << "preflag.timeslot=5" << endl; // is 10,11 in input - ostr2 << "average.timestep=3" << endl; - ostr2 << "average.freqstep=2" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset1"); - DPRun::execute ("tNDPPP_tmp.parset2"); - checkFlags ("tNDPPP_tmp.MS7b"); -} - -void testStationAdd() -{ - cout << endl << "** testStationAdd **" << endl; - // Add station RT0, 1 and 2. - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "msout=tNDPPP_tmp.MSa" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[stationadd]" << endl; - ostr << "stationadd.stations={RTnew:[RT0..2]}" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - Table t1("tNDPPP_tmp.MS/ANTENNA"); - Table t2("tNDPPP_tmp.MSa/ANTENNA"); - ASSERT (t2.nrow() == t1.nrow()+1); // 1 antenna has been added - ASSERT (ROScalarColumn<String>(t2,"NAME")(t2.nrow()-1) == "RTnew"); - Int oldNant = t1.nrow(); - t1 = Table("tNDPPP_tmp.MS/FEED"); - t2 = Table("tNDPPP_tmp.MSa/FEED"); - ASSERT (t2.nrow() == t1.nrow()+1); // 1 antenna has been added - ASSERT (ROScalarColumn<Int>(t2,"ANTENNA_ID")(t2.nrow()-1) == oldNant); - t1 = Table("tNDPPP_tmp.MS"); - t2 = Table("tNDPPP_tmp.MSa"); - ASSERT (t2.nrow() == t1.nrow()+40+12); // 2 baselines and 2 time slots added -} - -void testFilter1() -{ - cout << endl << "** testFilter1 **" << endl; - // Remove all baselines containing station RT1 or 6. - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "msout=tNDPPP_tmp.MSa" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[filter]" << endl; - ostr << "filter.baseline=!RT[16]&&*" << endl; - ostr << "filter.remove=True" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - Table t1("tNDPPP_tmp.MS/ANTENNA"); - Table t2("tNDPPP_tmp.MSa/ANTENNA"); - // Note: the ANTENNA table also contained RT8, RT9, etc., but they do not - // have baselines. So these were removed as well meaning only 0,2,7 are left. - Vector<uInt> rownrs(3); - rownrs[0]=0; rownrs[1]=2; rownrs[2]=7; - Table t1s = t1(rownrs); - ASSERT (t2.nrow() == t1s.nrow()); - ASSERT (allEQ (ROScalarColumn<String>(t2,"NAME").getColumn(), - ROScalarColumn<String>(t1s,"NAME").getColumn())); - t1 = Table("tNDPPP_tmp.MS/FEED"); - t2 = Table("tNDPPP_tmp.MSa/FEED"); - t1s = t1(rownrs); - ASSERT (t2.nrow() == t1s.nrow()); - // The ANTENNA_IDs in the FEED table must be 0,1,2. - Vector<Int> ids(t2.nrow()); - indgen (ids); - ASSERT (allEQ (ROScalarColumn<Int>(t2,"ANTENNA_ID").getColumn(), ids)); - // Check the main table. - t1 = Table("tNDPPP_tmp.MS"); - t2 = Table("tNDPPP_tmp.MSa"); - ASSERT (t2.nrow() == t1.nrow()-72+4); // 4 baselines removed, 2 timeslots added - t1s = t1((t1.col("ANTENNA1")==0 || t1.col("ANTENNA1")==2) && - t1.col("ANTENNA2")==7); - // A few dummy time slots were inserted, so ignore those. - Table t2s = t2(t2.nodeRownr() < 6 || t2.nodeRownr() >= 10); - ASSERT (allEQ (ROArrayColumn<Complex>(t2s,"DATA").getColumn(), - ROArrayColumn<Complex>(t1s,"DATA").getColumn())); - t2s = t2(t2.nodeRownr() % 2 == 0); - ASSERT (allEQ (ROScalarColumn<Int>(t2s,"ANTENNA1").getColumn(), 0)); - ASSERT (allEQ (ROScalarColumn<Int>(t2s,"ANTENNA2").getColumn(), 2)); - t2s = t2(t2.nodeRownr() % 2 == 1); - ASSERT (allEQ (ROScalarColumn<Int>(t2s,"ANTENNA1").getColumn(), 1)); - ASSERT (allEQ (ROScalarColumn<Int>(t2s,"ANTENNA2").getColumn(), 2)); -} - -void testFilter2() -{ - cout << endl << "** testFilter2 **" << endl; - // Keep all baselines. - // First by not specifying baseline selection, second by all baselines. - // Also alter between remove and !remove. - for (int iter=0; iter<4; ++iter) { - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "msout=tNDPPP_tmp.MSa" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[filter]" << endl; - if (iter%2 == 1) { - ostr << "filter.baseline=*&&*" << endl; - } - if (iter/2 == 1) { - ostr << "filter.remove=True" << endl; - } - } - DPRun::execute ("tNDPPP_tmp.parset"); - //cout << "check ANTENNA"<<endl; - Table t1("tNDPPP_tmp.MS/ANTENNA"); - Table t2("tNDPPP_tmp.MSa/ANTENNA"); - // Note: the ANTENNA table also contained RT8, RT9, etc., but they do not - // have baselines. So these were removed meaning only 0,1,2,6,7 are left. - Vector<uInt> rownrs(5); - rownrs[0]=0; rownrs[1]=1; rownrs[2]=2; rownrs[3]=6; rownrs[4]=7; - Table t1s(t1); - if (iter/2 == 1) { - t1s = t1(rownrs); - } - ASSERT (t2.nrow() == t1s.nrow()); - ASSERT (allEQ (ROScalarColumn<String>(t2,"NAME").getColumn(), - ROScalarColumn<String>(t1s,"NAME").getColumn())); - //cout << "check FEED"<<endl; - t1 = Table("tNDPPP_tmp.MS/FEED"); - t2 = Table("tNDPPP_tmp.MSa/FEED"); - t1s = t1; - if (iter/2 == 1) { - t1s = t1(rownrs); - } - ASSERT (t2.nrow() == t1s.nrow()); - // The ANTENNA_IDs in the FEED table must be 0,1,2. - Vector<Int> ids(t2.nrow()); - indgen (ids); - ASSERT (allEQ (ROScalarColumn<Int>(t2,"ANTENNA_ID").getColumn(), ids)); - // Check the main table. - t1 = Table("tNDPPP_tmp.MS"); - t2 = Table("tNDPPP_tmp.MSa"); - ASSERT (t2.nrow() == t1.nrow()+12); // 2 timeslots added - // A few dummy time slots were inserted, so ignore those. - Table t2s = t2(t2.nodeRownr() < 18 || t2.nodeRownr() >= 30); - ASSERT (allEQ (ROArrayColumn<Complex>(t2s,"DATA").getColumn(), - ROArrayColumn<Complex>(t1,"DATA").getColumn())); - int ant1[] = {0,0,1,1,2,2}; - int ant2[] = {6,7,6,7,6,7}; - int sub = (iter/2 == 0 ? 0:3); // if remove, ant2 6->3 and 7->4 - for (int i=0; i<6; ++i) { - t2s = t2(t2.nodeRownr() % 6 == i); - ASSERT (allEQ (ROScalarColumn<Int>(t2s,"ANTENNA1").getColumn(), - ant1[i])); - ASSERT (allEQ (ROScalarColumn<Int>(t2s,"ANTENNA2").getColumn(), - ant2[i]-sub)); - } - } -} - - -void testFilter3() -{ - cout << endl << "** testFilter3 **" << endl; - // Remove some baselines, update original file with different data column - // This test justs tests if it runs without throwing exceptions - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "msout=." << endl; - ostr << "msout.datacolumn=DATA_FILTER" << endl; - ostr << "steps=[filter]" << endl; - ostr << "filter.baseline=!RT[16]&&*" << endl; - ostr << "filter.remove=False" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); -} - - -void testClear() -{ - cout << endl << "** testClear **" << endl; - Array<bool> flags; - // First flag in the same way as testFlags1. - testFlags1(); - // Get the resulting flags. - { - Table tab("tNDPPP_tmp.MS5"); - flags.reference (ROArrayColumn<bool>(tab, "FLAG").getColumn()); - } - // Flag all data. - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS5" << endl; - ostr << "msout=tNDPPP_tmp.MS5a" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[preflag]" << endl; - ostr << "preflag.baseline=[[*]]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - checkFlags ("tNDPPP_tmp.MS5a"); - { - Table tab("tNDPPP_tmp.MS5a"); - ASSERT (allEQ(ROArrayColumn<bool>(tab, "FLAG").getColumn(), True)); - } - // Clear the flags. - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS5a" << endl; - ostr << "msout=tNDPPP_tmp.MS5b" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[preflag]" << endl; - ostr << "preflag.mode=clear" << endl; - ostr << "preflag.baseline=[[*]]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - checkFlags ("tNDPPP_tmp.MS5b"); - { - Table tab("tNDPPP_tmp.MS5b"); - ASSERT (allEQ(ROArrayColumn<bool>(tab, "FLAG").getColumn(), false)); - } -} - - -void testMultiOut() -{ - cout << endl << "** testMultiOut **" << endl; - { - // First make the reference output MS. - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "msout=tNDPPP_tmp.MS_copy" << endl; - ostr << "msout.overwrite=true" << endl; - ostr << "steps=[]" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - // Test if update data works fine with multiple outputs: - // read from tNDPPP_tmp.MS, write to copy3, update to copy3 - Array<Complex> data; - Array<bool> flags; - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "steps=[scaledata,out1,scaledata,out2]" << endl; - ostr << "scaledata.coeffs=2" << endl; - ostr << "scaledata.stations=*" << endl; - ostr << "scaledata.scalesize=false" << endl; - ostr << "out1.type=out" << endl; - ostr << "out1.name=tNDPPP_tmp.MS_copy3" << endl; - ostr << "out1.overwrite=true" << endl; - ostr << "out2.type=out" << endl; - ostr << "out2.name=." << endl; // Defaults to the previous out, so _copy3 - ostr << "out2.datacolumn=DATA_2" << endl; - ostr << "msout=tNDPPP_tmp.MS_copy4" << endl; // same name means update - ostr << "msout.overwrite=true" << endl; - } - DPRun::execute ("tNDPPP_tmp.parset"); - // Check that tables exist, contain the specified columns - { - Table tab1("tNDPPP_tmp.MS_copy"); - Table tab2("tNDPPP_tmp.MS_copy3"); - ///cout<<ROArrayColumn<Complex>(tab2,"DATA_2").getColumn(); - ///cout<<Complex(2,0)*ROArrayColumn<Complex>(tab1,"DATA").getColumn(); - ASSERT (allNear(ROArrayColumn<Complex>(tab2,"DATA").getColumn(), - Complex(2,0)*ROArrayColumn<Complex>(tab1,"DATA").getColumn(), - 1e-5)); - ASSERT (allNear(ROArrayColumn<Complex>(tab2,"DATA_2").getColumn(), - Complex(4,0)*ROArrayColumn<Complex>(tab1,"DATA").getColumn(), - 1e-5)); - ASSERT (allNear(ROArrayColumn<Float>(tab2,"WEIGHT_SPECTRUM").getColumn(), - ROArrayColumn<Float>(tab1,"WEIGHT_SPECTRUM").getColumn(), - 1e-5)); - ASSERT (allEQ(ROArrayColumn<Bool>(tab2,"FLAG").getColumn(), - ROArrayColumn<Bool>(tab1,"FLAG").getColumn())); - Table tab3("tNDPPP_tmp.MS_copy4"); - ASSERT (allNear(ROArrayColumn<Complex>(tab3,"DATA").getColumn(), - Complex(4,0)*ROArrayColumn<Complex>(tab1,"DATA").getColumn(), - 1e-5)); - ASSERT (allNear(ROArrayColumn<Float>(tab3,"WEIGHT_SPECTRUM").getColumn(), - ROArrayColumn<Float>(tab1,"WEIGHT_SPECTRUM").getColumn(), - 1e-5)); - ASSERT (allEQ(ROArrayColumn<Bool>(tab3,"FLAG").getColumn(), - ROArrayColumn<Bool>(tab1,"FLAG").getColumn())); - } - -} - -void tryErr (const string& parsetName) -{ - bool err = false; - try { - DPRun::execute (parsetName); - } catch (const std::exception& x) { - err = true; - cout << "Expected exception: " << x.what() << endl; - } - ASSERT (err); -} - -void testErrorOut() -{ - cout << endl << "Trying some incorrect DPPP runs ..." << endl; - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "steps=[filter,out1,average,out2]" << endl; - ostr << "out1.type=out" << endl; - ostr << "out1.name=''" << endl; - ostr << "out2.type=out" << endl; - ostr << "out2.name=." << endl; // update not possible when avg - ostr << "msout=''" << endl; - tryErr ("tNDPPP_tmp.parset"); - } - { - ofstream ostr("tNDPPP_tmp.parset"); - ostr << "msin=tNDPPP_tmp.MS" << endl; - ostr << "steps=[average,out1,filter,out2]" << endl; - ostr << "out1.type=out" << endl; - ostr << "out1.name=tNDPPP_tmp.MSx" << endl; - ostr << "out1.overwrite=true" << endl; - ostr << "filter.remove=true" << endl; - ostr << "out2.type=out" << endl; - ostr << "out2.name=./tNDPPP_tmp.MSx" << endl; // update not possible (filter) - ostr << "msout=''" << endl; - tryErr ("tNDPPP_tmp.parset"); - } -} - - -int main() -{ - try - { - testCopy(); - testCopyColumn(); - testMultiIn(); - testAvg1(); - testAvg2(); - testAvg3(); - testAvg4(); - testUpdate1(); - testUpdate2(); - testUpdateScale(); - testFlags1(); - testFlags2(); - testFlags3(); - testStationAdd(); - testFilter1(); - testFilter2(); - testFilter3(); - testClear(); - testMultiOut(); - testErrorOut(); - } catch (std::exception& err) { - std::cerr << "Error detected: " << err.what() << std::endl; - return 1; - } -} diff --git a/CEP/DP3/DPPP/test/tNDPPP.in_MS.tgz b/CEP/DP3/DPPP/test/tNDPPP.in_MS.tgz deleted file mode 100644 index 57bef2b6821d647bf45bc685c4c224c13ba99312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66473 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 T82|2nsAu@V@G+kugN*?ITHdi> diff --git a/CEP/DP3/DPPP/test/tNDPPP.run b/CEP/DP3/DPPP/test/tNDPPP.run deleted file mode 100755 index e3ae3b22b32..00000000000 --- a/CEP/DP3/DPPP/test/tNDPPP.run +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -if test ! -f tNDPPP.in_MS.tgz; then - return 3 # untested -fi - -tar zxf tNDPPP.in_MS.tgz -./tNDPPP diff --git a/CEP/DP3/DPPP/test/tNDPPP.sh b/CEP/DP3/DPPP/test/tNDPPP.sh deleted file mode 100755 index feac3b39893..00000000000 --- a/CEP/DP3/DPPP/test/tNDPPP.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tNDPPP diff --git a/CEP/DP3/DPPP/test/tPSet.cc b/CEP/DP3/DPPP/test/tPSet.cc deleted file mode 100644 index 0e24a6d301f..00000000000 --- a/CEP/DP3/DPPP/test/tPSet.cc +++ /dev/null @@ -1,435 +0,0 @@ -//# tPSet.cc: Test program for class PreFlagger::PSet -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/PreFlagger.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <casacore/casa/Quanta/MVTime.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// It can only set all flags to true or all to false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int nbl, int nchan, int ncorr) - : itsNChan(nchan), itsNCorr(ncorr) - { - info().init (itsNCorr, itsNChan, 0, 0, 50, string(), string()); - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(nbl); - Vector<Int> ant2(nbl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<nbl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - vector<MPosition> antPos(4); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - Vector<double> chanWidth(nchan, 100000); - Vector<double> chanFreqs(nchan); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) { return false; } - virtual void finish() {} - virtual void show (std::ostream&) const {} - - int itsNChan, itsNCorr; -}; - - -namespace LOFAR { - namespace DPPP { - // This class name should match the friend in PreFlagger. - class TestPSet - { - public: - static void testNone(); - static void testBL(); - static void testChan(); - static void testTime(); - static void testMinMax(); - }; - } -} - -void TestPSet::testNone() -{ - TestInput* in = new TestInput(16, 8, 4); - DPStep::ShPtr step1(in); - cout << "testNone" << endl; - ParameterSet parset; - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (!(pset.itsFlagOnBL || pset.itsFlagOnAmpl || pset.itsFlagOnPhase || - pset.itsFlagOnReal || pset.itsFlagOnImag || - pset.itsFlagOnAzEl || pset.itsFlagOnUV)); -} - -void TestPSet::testBL() -{ - TestInput* in = new TestInput(16, 8, 4); - DPStep::ShPtr step1(in); - { - cout << "testBL 1" << endl; - ParameterSet parset; - parset.add ("baseline", "[rs01.*, rs02.s01]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (!(pset.itsFlagOnAmpl || pset.itsFlagOnPhase || pset.itsFlagOnReal || - pset.itsFlagOnImag || pset.itsFlagOnAzEl || pset.itsFlagOnUV) && - pset.itsFlagOnBL); - // Make sure the matrix is correct. - const Matrix<bool>& mat = pset.itsFlagBL; - ASSERT (mat.shape() == IPosition(2,4,4)); - ASSERT ( mat(0,0) && mat(0,1) && mat(0,2) && mat(0,3)); - ASSERT ( mat(1,0) && mat(1,1) && mat(1,2) && mat(1,3)); - ASSERT ( mat(2,0) && mat(2,1) && !mat(2,2) && !mat(2,3)); - ASSERT ( mat(3,0) && mat(3,1) && !mat(3,2) && !mat(3,3)); - } - { - cout << "testBL 2" << endl; - ParameterSet parset; - parset.add ("corrtype", "auto"); - parset.add ("baseline", "[rs01.*, [*s*.*2], rs02.s01]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - // Make sure the matrix is correct. - const Matrix<bool>& mat = pset.itsFlagBL; - ASSERT (mat.shape() == IPosition(2,4,4)); - ASSERT ( mat(0,0) && !mat(0,1) && !mat(0,2) && !mat(0,3)); - ASSERT (!mat(1,0) && mat(1,1) && !mat(1,2) && !mat(1,3)); - ASSERT (!mat(2,0) && !mat(2,1) && !mat(2,2) && !mat(2,3)); - ASSERT (!mat(3,0) && !mat(3,1) && !mat(3,2) && mat(3,3)); - } - { - cout << "testBL 3" << endl; - ParameterSet parset; - parset.add ("corrtype", "CROSS"); - parset.add ("baseline", "[[rs*, *s*.*1], [cs01.s01,cs01.s02]]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - // Make sure the matrix is correct. - const Matrix<bool>& mat = pset.itsFlagBL; - ASSERT (mat.shape() == IPosition(2,4,4)); - ASSERT (!mat(0,0) && mat(0,1) && mat(0,2) && !mat(0,3)); - ASSERT ( mat(1,0) && !mat(1,1) && mat(1,2) && !mat(1,3)); - ASSERT ( mat(2,0) && mat(2,1) && !mat(2,2) && mat(2,3)); - ASSERT (!mat(3,0) && !mat(3,1) && mat(3,2) && !mat(3,3)); - } - // Some erronous ones. - cout << "testBL expected error 1" << endl; - bool err = false; - try { - ParameterSet parset; - parset.add ("corrtype", "crossx"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - } catch (std::exception& x) { - err = true; - cout << " " << x.what() << endl; - } - ASSERT (err); - cout << "testBL expected error 2" << endl; - err = false; - try { - ParameterSet parset; - parset.add ("baseline", "[[a,b,c]]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - } catch (std::exception& x) { - err = true; - cout << " " << x.what() << endl; - } - ASSERT (err); - cout << "testBL expected error 3" << endl; - err = false; - try { - ParameterSet parset; - parset.add ("baseline", "[[a,b], [ ] ]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - } catch (std::exception& x) { - err = true; - cout << " " << x.what() << endl; - } - ASSERT (err); -} - -void TestPSet::testChan() -{ - TestInput* in = new TestInput(16, 32, 4); - DPStep::ShPtr step1(in); - { - cout << "testChan 1" << endl; - ParameterSet parset; - parset.add ("chan", "[11..13, 4]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsChannels.size() == 4); - ASSERT (pset.itsChannels[0] == 4); - ASSERT (pset.itsChannels[1] == 11); - ASSERT (pset.itsChannels[2] == 12); - ASSERT (pset.itsChannels[3] == 13); - ASSERT (pset.itsChanFlags.shape() == IPosition(2,4,32)); - for (uint i=0; i<32; ++i) { - if (i==4 || i==11 || i==12 || i==13) { - ASSERT (allEQ(pset.itsChanFlags.column(i), true)); - } else { - ASSERT (allEQ(pset.itsChanFlags.column(i), false)); - } - } - } - { - cout << "testChan 2" << endl; - ParameterSet parset; - parset.add ("freqrange", "[ 1.1 .. 1.2 MHz, 1.5MHz+-65000Hz]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsChannels.size() == 3); - ASSERT (pset.itsChannels[0] == 1); - ASSERT (pset.itsChannels[1] == 4); - ASSERT (pset.itsChannels[2] == 5); - } - { - cout << "testChan 3" << endl; - ParameterSet parset; - parset.add ("chan", "[11..13, 4]"); - parset.add ("freqrange", "[ 1.1 .. 1.2 MHz, 1.5MHz+-65000Hz]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsChannels.size() == 1); - ASSERT (pset.itsChannels[0] == 4); - } -} - -void TestPSet::testTime() -{ - TestInput* in = new TestInput(16, 8, 4); - DPStep::ShPtr step1(in); - { - cout << "testTime 1" << endl; - ParameterSet parset; - parset.add ("abstime", "[1mar2009/12:00:00..2mar2009/13:00:00]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsATimes.size() == 2); - Quantity q; - MVTime::read (q, "1mar2009/12:00:00"); - ASSERT (q.getValue("s") == pset.itsATimes[0]); - ASSERT (pset.itsATimes[1] - pset.itsATimes[0] == 86400+3600); - } - { - cout << "testTime 2" << endl; - ParameterSet parset; - parset.add ("reltime", "[12:00:00..13:00:00, 16:00 +- 2min ]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsRTimes.size() == 4); - ASSERT (pset.itsRTimes[0] == 12*3600); - ASSERT (pset.itsRTimes[1] == 13*3600); - ASSERT (pset.itsRTimes[2] == 16*3600-120); - ASSERT (pset.itsRTimes[3] == 16*3600+120); - } - { - cout << "testTime 3" << endl; - ParameterSet parset; - parset.add ("timeofday", "[22:00:00..2:00:00, 23:30 +- 1h ]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsTimes.size() == 8); - ASSERT (pset.itsTimes[0] == -1); - ASSERT (pset.itsTimes[1] == 2*3600); - ASSERT (pset.itsTimes[2] == 22*3600); - ASSERT (pset.itsTimes[3] == 24*3600+1); - ASSERT (pset.itsTimes[4] == -1); - ASSERT (pset.itsTimes[5] == 1800); - ASSERT (pset.itsTimes[6] == 22*3600+1800); - ASSERT (pset.itsTimes[7] == 24*3600+1); - } - { - cout << "testTime 4" << endl; - ParameterSet parset; - parset.add ("timeslot", "[2..4, 10]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsTimeSlot.size() == 4); - ASSERT (pset.itsTimeSlot[0] == 2); - ASSERT (pset.itsTimeSlot[1] == 3); - ASSERT (pset.itsTimeSlot[2] == 4); - ASSERT (pset.itsTimeSlot[3] == 10); - } - // Some erronous ones. - cout << "testTime expected error 1" << endl; - bool err = false; - try { - ParameterSet parset; - parset.add ("reltime", "[12:00:00]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - } catch (std::exception& x) { - err = true; - cout << " " << x.what() << endl; - } - ASSERT (err); - cout << "testTime expected error 2" << endl; - err = false; - try { - ParameterSet parset; - parset.add ("reltime", "[12:00:00..11:00:00]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - } catch (std::exception& x) { - err = true; - cout << " " << x.what() << endl; - } - ASSERT (err); - cout << "testTime expected error 3" << endl; - err = false; - try { - ParameterSet parset; - parset.add ("abstime", "[12:00:00..13:00:00]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - } catch (std::exception& x) { - err = true; - cout << " " << x.what() << endl; - } - ASSERT (err); -} - -void TestPSet::testMinMax() -{ - TestInput* in = new TestInput(16, 8, 4); - DPStep::ShPtr step1(in); - { - cout << "testMinMax 1" << endl; - ParameterSet parset; - parset.add ("amplmin", "[23,,,45]"); - parset.add ("amplmax", "112.5"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsFlagOnAmpl); - ASSERT (pset.itsAmplMin.size() == 4); - ASSERT (pset.itsAmplMax.size() == 4); - ASSERT (near(pset.itsAmplMin[0], 23.)); - ASSERT (near(pset.itsAmplMin[1], -1e30)); - ASSERT (near(pset.itsAmplMin[2], -1e30)); - ASSERT (near(pset.itsAmplMin[3], 45.)); - ASSERT (near(pset.itsAmplMax[0], 112.5)); - ASSERT (near(pset.itsAmplMax[1], 112.5)); - ASSERT (near(pset.itsAmplMax[2], 112.5)); - ASSERT (near(pset.itsAmplMax[3], 112.5)); - } - { - cout << "testMinMax 2" << endl; - ParameterSet parset; - parset.add ("phasemin", "[23]"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsFlagOnPhase); - ASSERT (pset.itsAmplMin.size() == 4); - ASSERT (pset.itsAmplMax.size() == 4); - ASSERT (near(pset.itsPhaseMin[0], 23.)); - ASSERT (near(pset.itsPhaseMin[1], -1e30)); - ASSERT (near(pset.itsPhaseMin[2], -1e30)); - ASSERT (near(pset.itsPhaseMin[3], -1e30)); - ASSERT (near(pset.itsPhaseMax[0], 1e30)); - ASSERT (near(pset.itsPhaseMax[1], 1e30)); - ASSERT (near(pset.itsPhaseMax[2], 1e30)); - ASSERT (near(pset.itsPhaseMax[3], 1e30)); - } - { - cout << "testMinMax 3" << endl; - ParameterSet parset; - parset.add ("uvmmin", "23"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsFlagOnUV); - ASSERT (near(pset.itsMinUV, 23.*23.)); - ASSERT (near(pset.itsMaxUV, 1e30)); - } - { - cout << "testMinMax 4" << endl; - ParameterSet parset; - parset.add ("uvmmax", "23"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsFlagOnUV); - ASSERT (pset.itsMinUV < 0.); - ASSERT (near(pset.itsMaxUV, 23.*23.)); - } - { - cout << "testMinMax 5" << endl; - ParameterSet parset; - parset.add ("uvmmin", "23"); - parset.add ("uvmmax", "123"); - PreFlagger::PSet pset (in, parset, ""); - pset.updateInfo (in->getInfo()); - ASSERT (pset.itsFlagOnUV); - ASSERT (near(pset.itsMinUV, 23.*23.)); - ASSERT (near(pset.itsMaxUV, 123.*123.)); - } -} - -int main() -{ - INIT_LOGGER ("tPSet"); - try { - TestPSet::testNone(); - TestPSet::testBL(); - TestPSet::testChan(); - TestPSet::testTime(); - TestPSet::testMinMax(); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tPSet.sh b/CEP/DP3/DPPP/test/tPSet.sh deleted file mode 100755 index 2f3e0c17fdc..00000000000 --- a/CEP/DP3/DPPP/test/tPSet.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tPSet diff --git a/CEP/DP3/DPPP/test/tPhaseShift.cc b/CEP/DP3/DPPP/test/tPhaseShift.cc deleted file mode 100644 index 7638d5549a4..00000000000 --- a/CEP/DP3/DPPP/test/tPhaseShift.cc +++ /dev/null @@ -1,330 +0,0 @@ -//# tPhaseShift.cc: Test program for class PhaseShift -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/PhaseShift.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - - -// Simple class to generate input arrays. -// It can only set all flags to true or all false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - { - info().init (ncorr, nchan, ntime, 0., 10., string(), string()); - MDirection phaseCenter(Quantity(45,"deg"), Quantity(30,"deg"), - MDirection::J2000); - info().set (MPosition(), phaseCenter, phaseCenter, phaseCenter); - // Define the frequencies. - Vector<double> chanWidth (nchan, 100000.); - Vector<double> chanFreqs (nchan); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - // Fill the baseline stations. - // Determine nr of stations using: na*(na+1)/2 = nbl - // If many baselines, divide into groups of 6 to test if - // PhaseShift disentangles it correctly. - int nant = int(-0.5 + sqrt(0.25 + 2*nbl)); - if (nant*(nant+1)/2 < nbl) ++nant; - int grpszant = 3; - int grpszbl = grpszant*(grpszant+1)/2; - if (nbl > grpszbl) { - nant = grpszant*(nbl+grpszbl-1)/grpszbl; - } else { - grpszant = nant; - grpszbl = nbl; - } - Vector<Int> ant1(nbl); - Vector<Int> ant2(nbl); - int st1 = 0; - int st2 = 0; - int lastant = grpszant; - for (int i=0; i<nbl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (i%grpszbl == grpszbl-1) { - st1 = lastant; - st2 = lastant; - lastant += grpszant; - } else { - if (++st2 == lastant) { - st2 = ++st1; - } - } - } - Vector<String> antNames(nant); - vector<MPosition> antPos(nant); - Vector<double> antDiam(nant, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - itsStatUVW.resize (3, nant); - for (int i=0; i<nant; ++i) { - itsStatUVW(0,i) = 0.01 + i*0.02; - itsStatUVW(1,i) = 0.05 + i*0.03; - itsStatUVW(2,i) = 0.015 + i*0.025; - } - } - - void fillUVW (Matrix<double>& uvw, int count) - { - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = (itsStatUVW(0,getInfo().getAnt2()[i]) + count*0.002 - - (itsStatUVW(0,getInfo().getAnt1()[i]) + count*0.002)); - uvw(1,i) = (itsStatUVW(1,getInfo().getAnt2()[i]) + count*0.004 - - (itsStatUVW(1,getInfo().getAnt1()[i]) + count*0.004)); - uvw(2,i) = (itsStatUVW(2,getInfo().getAnt2()[i]) + count*0.006 - - (itsStatUVW(2,getInfo().getAnt1()[i]) + count*0.006)); - cout <<getInfo().getAnt1()[i]<<' '<<getInfo().getAnt2()[i]<<' ' - <<uvw(0,i)<<' '<<uvw(1,i)<<' '<<uvw(2,i)<<endl; - } - } - -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // They are not averaged, thus only 1 time per row. - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = itsFlag; - buf.setFullResFlags (fullResFlags); - Matrix<double> uvw(3,itsNBl); - fillUVW (uvw, itsCount); - buf.setUVW (uvw); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void updateInfo (const DPInfo&) {} - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; - Matrix<double> itsStatUVW; -}; - -// Class to check result of null phase-shifted TestInput. -class TestOutput: public DPStep -{ -public: - TestOutput(TestInput* input, - int ntime, int nbl, int nchan, int ncorr, bool flag) - : itsInput(input), - itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> result(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(result.size()); ++i) { - result.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - } - Matrix<double> uvw(3,itsNBl); - itsInput->fillUVW (uvw, itsCount); - // Check the result. - ASSERT (allNear(real(buf.getData()), real(result), 1e-7)); - ///cout << imag(buf.getData()) << endl<<imag(result); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-7)); - ASSERT (allEQ(buf.getFlags(), itsFlag)); - ASSERT (near(buf.getTime(), 2.+5*itsCount)); - ASSERT (allNear(buf.getUVW(), uvw, 1e-7)); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - MVDirection dir = infoIn.phaseCenter().getValue(); - ASSERT (near(dir.getLong("deg").getValue(), 45.)); - ASSERT (near(dir.getLat("deg").getValue(), 30.)); - } - - TestInput* itsInput; - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result of null phase-shifted TestInput. -class TestOutput1: public DPStep -{ -public: - TestOutput1(TestInput* input, - int ntime, int nbl, int nchan, int ncorr, bool flag) - : itsInput(input), - itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> result(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(result.size()); ++i) { - result.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - } - Matrix<double> uvw(3,itsNBl); - itsInput->fillUVW (uvw, itsCount); - // Check the result. - ASSERT (! allNear(real(buf.getData()), real(result), 1e-5)); - ASSERT (! allEQ(real(buf.getData()), real(result))); - ///cout << imag(buf.getData()) << endl<<imag(result); - ASSERT (! allNear(imag(buf.getData()), imag(result), 1e-5)); - ASSERT (! allEQ(imag(buf.getData()), imag(result))); - ASSERT (allEQ(buf.getFlags(), itsFlag)); - ASSERT (near(buf.getTime(), 2.+5*itsCount)); - ASSERT (! allNear(buf.getUVW(), uvw, 1e-5)); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - MVDirection dir = infoIn.phaseCenter().getValue(); - ASSERT (near(dir.getLong("deg").getValue(), 50.)); - ASSERT (near(dir.getLat("deg").getValue(), 35.)); - } - - TestInput* itsInput; - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test with a shift to the original center. -void test1(int ntime, int nbl, int nchan, int ncorr, bool flag) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " flag=" << flag << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - // Keep phase center the same to be able to check if data are correct. - parset.add ("phasecenter", "[45deg, 30deg]"); - DPStep::ShPtr step2(new PhaseShift(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(in, ntime, nbl, nchan, ncorr, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Test with a shift to another and then to the original phase center. -void test2(int ntime, int nbl, int nchan, int ncorr, bool flag) -{ - cout << "test2: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " flag=" << flag << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - // First shift to another center, then back to original. - ParameterSet parset; - parset.add ("phasecenter", "[50deg, 35deg]"); - ParameterSet parset1; - parset1.add ("phasecenter", "[]"); - DPStep::ShPtr step2(new PhaseShift(in, parset, "")); - DPStep::ShPtr step3(new TestOutput1(in, ntime, nbl, nchan, ncorr, flag)); - DPStep::ShPtr step4(new PhaseShift(in, parset1, "")); - DPStep::ShPtr step5(new TestOutput(in, ntime, nbl, nchan, ncorr, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - step3->setNextStep (step4); - step4->setNextStep (step5); - execute (step1); -} - - -int main() -{ - try { - test1(10, 3, 32, 4, false); - test1(10, 10, 30, 1, true); - test2(10, 6, 32, 4, false); - test2(10, 6, 30, 1, true); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tPreFlagger.cc b/CEP/DP3/DPPP/test/tPreFlagger.cc deleted file mode 100644 index f080f77abb4..00000000000 --- a/CEP/DP3/DPPP/test/tPreFlagger.cc +++ /dev/null @@ -1,606 +0,0 @@ -//# tPreFlagger.cc: Test program for class PreFlagger -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/PreFlagger.h> -#include <DPPP/Counter.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - DPStep::ShPtr step = step1; - while (step) { - step->show (cout); - step = step->getNextStep(); - } - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Simple class to generate input arrays. -// It can only set all flags to true or all to false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - { - // Define start time 0.5 (= 3 - 0.5*5) and time interval 5. - info().init (ncorr, nchan, ntime, 0.5, 5., string(), string()); - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(nbl); - Vector<Int> ant2(nbl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<nbl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos(4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanWidth(nchan, 100000.); - Vector<double> chanFreqs(nchan); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-10+itsCount*6); - } - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - DPBuffer buf; - buf.setTime (itsCount*5 + 3); //same interval as in updateAveragInfo - buf.setData (data); - buf.setUVW (uvw); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // They are not averaged, thus only 1 time per row. - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = itsFlag; - buf.setFullResFlags (fullResFlags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) {} - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result of flagged, unaveraged TestInput run by test1/3. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nbl, int nchan, int ncorr, - bool flag, bool clear, bool useComplement) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), - itsFlag(flag), - itsClear(clear), - itsUseComplement(useComplement) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // The result of the selected and complement data depends on the - // settings of itsFlag, itsClear, and itsUseComplement as follows: - // itsFlag itsUseComp itsClear sel comp - // T T T T F * - // F T T F F - // T F T F T - // F F T F F - // T T F T T - // F T F F T * - // T F F T T - // F F F T F - // The lines marked with * are the cases in the if below. - Cube<bool> result(itsNCorr,itsNChan,itsNBl); - bool compFlag = itsFlag; - bool selFlag = !itsClear; - if (itsUseComplement && itsFlag == itsClear) { - compFlag = !itsFlag; - selFlag = itsClear; - } - result = compFlag; - // All baselines except 2-2 should be selected. - // Of them only channel 1,4,5 are selected. - for (int i=0; i<itsNBl; ++i) { - if (i%16 != 10) { - for (int j=0; j<itsNChan; ++j) { - if (j==1 || j==4 || j==5) { - for (int k=0; k<itsNCorr; ++k) { - result(k,j,i) = selFlag; - } - } - } - } - } - /// cout << buf.getFlags() << endl << result << endl; - ASSERT (allEQ(buf.getFlags(), result)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag, itsClear, itsUseComplement; -}; - -// Test flagging a few antennae and freqs. -void test1(int ntime, int nbl, int nchan, int ncorr, bool flag, - bool clear, bool useComplement) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " flag=" << flag - << " clear=" << clear << " useComplement=" << useComplement << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - string mode; - if (clear) { - mode = (useComplement ? "clearComplement" : "clear"); - } else { - mode = (useComplement ? "setComplement" : "set"); - } - parset.add ("mode", mode); - parset.add ("freqrange", "[ 1.1 .. 1.2 MHz, 1.5MHz+-65000Hz]"); - parset.add ("baseline", "[rs01.*, *s*.*2, rs02.s01]"); - parset.add ("countflag", "true"); - DPStep::ShPtr step2(new PreFlagger(in, parset, "")); - DPStep::ShPtr step3(new Counter(in, parset, "cnt")); - DPStep::ShPtr step4(new TestOutput(ntime, nbl, nchan, ncorr, flag, - clear, useComplement)); - step1->setNextStep (step2); - step2->setNextStep (step3); - step3->setNextStep (step4); - execute (step1); - step2->showCounts (cout); - step3->showCounts (cout); -} - - -// Class to check result of flagged, unaveraged TestInput run by test2. -class TestOutput2: public DPStep -{ -public: - TestOutput2(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // A few baselines should be flagged (0, 7, 13, 15) - // Furthermore channel 1,4,5,11,12,13 are flagged. - Cube<bool> result(itsNCorr,itsNChan,itsNBl); - result = false; - for (int i=0; i<itsNBl; ++i) { - if (i%16 == 0 || i%16 == 7 || i%16 == 13 || i%16 == 15) { - for (int j=0; j<itsNChan; ++j) { - if (j==4) { - for (int k=0; k<itsNCorr; ++k) { - result(k,j,i) = true; - } - } - } - } - } - ///cout << buf.getFlags() << endl << result << endl; - ASSERT (allEQ(buf.getFlags(), result)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; -}; - -// Test flagging a few baselines, freqs, and channels. -void test2(int ntime, int nbl, int nchan, int ncorr) -{ - cout << "test2: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, false); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("freqrange", "[ 1.1 .. 1.2 MHz, 1.5MHz+-65000Hz]"); - parset.add ("chan", "[11..13, 4, 11, nchan/1000+1000..1000*nchan]"); - parset.add ("baseline", "[[rs01.*,rs01.*],[*s*.*2,*s*.*2],[*s*.*2,rs02.*]]"); - DPStep::ShPtr step2(new PreFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput2(ntime, nbl, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Test flagging a few antennae or freqs by using multiple steps. -void test3(int ntime, int nbl, int nchan, int ncorr, bool flag) -{ - cout << "test3: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " flag=" << flag << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("expr", "s1"); - parset.add ("s1.freqrange", "[ 1.1 .. 1.2 MHz, 1.5MHz+-65000Hz]"); - parset.add ("s1.expr", "s2"); - parset.add ("s1.s2.baseline", "[rs01.*, *s*.*2, rs02.s01]"); - DPStep::ShPtr step2(new PreFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, flag, - false, false)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - - -// Class to check result of flagged, unaveraged TestInput run by test4. -class TestOutput4: public DPStep -{ -public: - TestOutput4(int ntime, int nbl, int nchan, int ncorr, - bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), - itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // All baselines except autocorr should be flagged. - // Furthermore channel 1,4,5 are flagged. - Cube<bool> result(itsNCorr,itsNChan,itsNBl); - result = true; - for (int i=0; i<itsNBl; ++i) { - if (i%16==0 || i%16==5 || i%16==10 || i%16==15) { - for (int j=0; j<itsNChan; ++j) { - if (j!=1 && j!=4 && j!=5) { - for (int k=0; k<itsNCorr; ++k) { - result(k,j,i) = itsFlag; - } - } - } - } - } - ///cout << buf.getFlags() << endl << result << endl; - ASSERT (allEQ(buf.getFlags(), result)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Test flagging a few antennae and freqs by using multiple steps. -void test4(int ntime, int nbl, int nchan, int ncorr, bool flag) -{ - cout << "test4: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " flag=" << flag << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("expr", "(s1&s1),(s2|s2)"); - parset.add ("s1.freqrange", "[ 1.1 .. 1.2 MHz, 1.5MHz+-65000Hz]"); - parset.add ("s2.baseline", "[rs01.*, *s*.*2, rs02.s01]"); - parset.add ("s2.corrtype", "cross"); - DPStep::ShPtr step2(new PreFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput4(ntime, nbl, nchan, ncorr, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -typedef bool CheckFunc (Complex value, double time, int ant1, int ant2, - const double* uvw); - -// Class to check result of flagged, unaveraged TestInput run by test5. -class TestOutput5: public DPStep -{ -public: - TestOutput5 (CheckFunc* cfunc) - : itsCount(0), - itsCFunc (cfunc) - {} -private: - virtual bool process (const DPBuffer& buf) - { - const Cube<Complex>& data = buf.getData(); - const double* uvw = buf.getUVW().data(); - const IPosition& shp = data.shape(); - Cube<bool> result(shp); - for (int i=0; i<shp[2]; ++i) { - int a1 = i/4; - int a2 = i%4; - for (int j=0; j<shp[1]; ++j) { - bool flag = false; - for (int k=0; k<shp[0]; ++k) { - if (!flag) flag = itsCFunc(data(k,j,i), buf.getTime(), a1, a2, - uvw+3*i); - } - for (int k=0; k<shp[0]; ++k) { - result(k,j,i) = flag; - } - } - } - ///cout << buf.getFlags() << endl << result << endl; - ASSERT (allEQ(buf.getFlags(), result)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) {} - - int itsCount; - CheckFunc* itsCFunc; -}; - -// Test flagging on a single parameter. -void test5(const string& key, const string& value, CheckFunc* cfunc) -{ - cout << "test5: " << key << '=' << value << endl; - // Create the steps. - TestInput* in = new TestInput(2, 6, 5, 4, false); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add (key, value); - DPStep::ShPtr step2(new PreFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput5(cfunc)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Test flagging on multiple parameters. -void test6(const string& key1, const string& value1, - const string& key2, const string& value2, CheckFunc* cfunc) -{ - cout << "test6: " << key1 << '=' << value1 << ' ' - << key2 << '=' << value2 << endl; - // Create the steps. - TestInput* in = new TestInput(6, 10, 8, 4, false); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add (key1, value1); - parset.add (key2, value2); - DPStep::ShPtr step2(new PreFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput5(cfunc)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -bool checkBL(Complex, double, int a1, int a2, const double*) - { return a1==a2; } -bool checkAmplMin (Complex data, double, int, int, const double*) - { return abs(data) < 9.5; } -bool checkAmplMax (Complex data, double, int, int, const double*) - { return abs(data) > 31.5; } -bool checkPhaseMin (Complex data, double, int, int, const double*) - { return arg(data) < 1.4; } -bool checkPhaseMax (Complex data, double, int, int, const double*) - { return arg(data) > 2.1; } -bool checkRealMin (Complex data, double, int, int, const double*) - { return real(data) < 5.5; } -bool checkRealMax (Complex data, double, int, int, const double*) - { return real(data) > 29.4; } -bool checkImagMin (Complex data, double, int, int, const double*) - { return imag(data) < -1.4; } -bool checkImagMax (Complex data, double, int, int, const double*) - { return imag(data) > 20.5; } -bool checkUVMin (Complex, double, int, int, const double* uvw) - { return sqrt(uvw[0]*uvw[0] + uvw[1]*uvw[1]) <= 30; } -bool checkUVBL (Complex, double, int a1, int a2, const double* uvw) - { return sqrt(uvw[0]*uvw[0] + uvw[1]*uvw[1]) >= 30 && (a1==0 || a2==0); } -bool checkBLMin (Complex, double, int a1, int a2, const double*) - { return abs(a1-a2) < 2; } // adjacent ant have bl<145 -bool checkBLMinMax (Complex, double, int a1, int a2, const double*) - { return abs(a1-a2) != 1; } // adjacent ant have bl<145 -bool checkTimeSlot (Complex, double time, int, int, const double*) - { return time<5; } -bool checkNone (Complex, double, int, int, const double*) - { return false; } -bool checkAll (Complex, double, int, int, const double*) - { return true; } - -// Test flagging on various fields. -void testMany() -{ - test5("corrtype", "auto", &checkBL); - test5("amplmin", "9.5", &checkAmplMin); - test5("amplmax", "31.5", &checkAmplMax); - test5("phasemin", "1.4", &checkPhaseMin); - test5("phasemax", "2.1", &checkPhaseMax); - test5("realmin", "5.5", &checkRealMin); - test5("realmax", "29.4", &checkRealMax); - test5("imagmin", "-1.4", &checkImagMin); - test5("imagmax", "20.5", &checkImagMax); - test5("uvmmin", "30", &checkUVMin); - test6("uvmmax", "30", "baseline", "[rs01.s01]", &checkUVBL); - test5("timeslot", "0", &checkTimeSlot); - test5("abstime", "17-nov-1858/0:0:2..17nov1858/0:0:4", &checkTimeSlot); - test5("abstime", "17-nov-1858/0:0:3+-1s", &checkTimeSlot); - test5("reltime", "0:0:0..0:0:6", &checkTimeSlot); - test5("reltime", "0:0:2+-1s", &checkTimeSlot); - test5("reltime", "0:0:2+-20s", &checkAll); - test6("abstime", "17-nov-1858/0:0:20+-19s", - "reltime", "0:0:20+-20s", &checkAll); - test6("abstime", "17-nov-1858/0:0:3+-2s", - "reltime", "0:0:20+-20s", &checkTimeSlot); - test6("abstime", "17-nov-1858/0:0:20+-19s", - "reltime", "0:0:3+-2s", &checkTimeSlot); - test6("abstime", "17-nov-1858/0:0:20+-9s", - "reltime", "0:0:3+-2s", &checkNone); - // Elevation is 12738s; azimuth=86121s - test5("elevation", "180deg..190deg", &checkNone); - test5("elevation", "12730s..12740s", &checkAll); - test5("azimuth", "180deg..190deg", &checkNone); - test5("azimuth", "86120s..86125s", &checkAll); - test6("azimuth", "86120s..86125s", "elevation", "180deg..190deg", &checkNone); - test6("azimuth", "86120s..86125s", "elevation", "12730s..12740s", &checkAll); - test5("lst", "0.154d..0.155d", &checkAll); - test5("blmin", "145", &checkBLMin); - test6("blmin", "10", "blmax", "145", &checkBLMinMax); -} - -int main() -{ - INIT_LOGGER ("tPreFlagger"); - try { - - test1(10, 16, 32, 4, false, true, false); - test1(10, 16, 32, 4, true, true, false); - test1(10, 16, 32, 4, false, false, false); - test1(10, 16, 32, 4, true, false, false); - test1(10, 16, 32, 4, false, true, true); - test1(10, 16, 32, 4, true, true, true); - test1(10, 16, 32, 4, false, false, true); - test1(10, 16, 32, 4, true, false, true); - test2( 2, 16, 32, 4); - test2( 2, 36, 16, 2); - test3( 3, 16, 32, 4, false); - test3( 4, 16, 4, 2, true); - test4( 3, 16, 32, 4, false); - testMany(); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tPreFlagger.sh b/CEP/DP3/DPPP/test/tPreFlagger.sh deleted file mode 100755 index 9c4ead9986c..00000000000 --- a/CEP/DP3/DPPP/test/tPreFlagger.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tPreFlagger diff --git a/CEP/DP3/DPPP/test/tPredict.run b/CEP/DP3/DPPP/test/tPredict.run deleted file mode 100755 index f8f77c514d6..00000000000 --- a/CEP/DP3/DPPP/test/tPredict.run +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - -# Get the taql executable and srcdir (script created by cmake's CONFIGURE_FILE). -source findenv.run_script -echo "srcdirx=$rt_srcdir" - -# Set srcdir if not defined (in case run by hand). -if test "$srcdir" = ""; then - srcdir="$rt_srcdir" -fi - -if test ! -f ${srcdir}/tNDPPP-generic.in_MS.tgz; then - exit 3 # untested -fi - -rm -rf tPredict_tmp -mkdir -p tPredict_tmp -# Unpack the MS and other files and do the DPPP run. -cd tPredict_tmp -tar zxf ${srcdir}/tNDPPP-generic.in_MS.tgz -tar zxf ${srcdir}/tPredict.tab.tgz - -# Create expected taql output. -echo " select result of 0 rows" > taql.ref - -echo; echo "Test with beam, subtract"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=MODEL_DATA steps=[predict] predict.sourcedb=tNDPPP-generic.MS/sky predict.usebeammodel=true predict.operation=subtract' -echo $cmd -$cmd -# Compare the MODEL_DATA column of the output MS with the original data minus the BBS reference output. -taqlcmd='select from tNDPPP-generic.MS t1, tPredict.tab t2 where not all(near(t1.MODEL_DATA,t1.DATA-t2.PREDICT_beam,5e-2) || (isnan(t1.DATA) && isnan(t2.PREDICT_beam)))' -echo $taqlcmd -$taqlexe $taqlcmd > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test without beam, add"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=MODEL_DATA steps=[predict] predict.sourcedb=tNDPPP-generic.MS/sky predict.usebeammodel=false predict.operation=add' -echo $cmd -$cmd -# Compare the MODEL_DATA column of the output MS with the original data plus the BBS reference output. -taqlcmd='select from tNDPPP-generic.MS t1, tPredict.tab t2 where not all(near(t1.MODEL_DATA,t1.DATA+t2.PREDICT_nobeam,5e-2) || (isnan(t1.DATA) && isnan(t2.PREDICT_beam)))' -echo $taqlcmd -$taqlexe $taqlcmd > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test without beam, with applycal, subtract (like peeling)"; echo -parmdbm <<EOL -open table="tPredict.parmdb" -adddef Gain:0:0:Real values=3. -adddef Gain:1:1:Real values=3. -EOL -cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=MODEL_DATA steps=[predict] predict.sourcedb=tNDPPP-generic.MS/sky predict.applycal.parmdb=tPredict.parmdb predict.operation=subtract' -echo $cmd -$cmd -# Compare the MODEL_DATA column of the output MS with the original data minus the BBS reference output. -taqlcmd='select from tNDPPP-generic.MS t1, tPredict.tab t2 where not all(near(t1.MODEL_DATA,t1.DATA-9.0*t2.PREDICT_nobeam,5e-2) || (isnan(t1.DATA) && isnan(t2.PREDICT_nobeam)))' -echo $taqlcmd -$taqlexe $taqlcmd > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test without beam"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=. steps=[predict] predict.sourcedb=tNDPPP-generic.MS/sky' -echo $cmd -$cmd -# Compare the DATA column of the output MS with the BBS reference output. -taqlcmd='select from tNDPPP-generic.MS t1, tPredict.tab t2 where not all(near(t1.DATA,t2.PREDICT_nobeam,5e-2) || (isnan(t1.DATA) && isnan(t2.PREDICT_nobeam)))' -echo $taqlcmd -$taqlexe $taqlcmd > taql.out -diff taql.out taql.ref || exit 1 - -echo; echo "Test with beam"; echo -cmd='NDPPP msin=tNDPPP-generic.MS msout=. steps=[predict] predict.sourcedb=tNDPPP-generic.MS/sky predict.usebeammodel=true' -echo $cmd -$cmd -# Compare the DATA column of the output MS with the BBS reference output. -taqlcmd='select from tNDPPP-generic.MS t1, tPredict.tab t2 where not all(near(t1.DATA,t2.PREDICT_beam,5e-2) || (isnan(t1.DATA) && isnan(t2.PREDICT_beam)))' > taql.out -echo $taqlcmd -$taqlexe $taqlcmd > taql.out -diff taql.out taql.ref || exit 1 diff --git a/CEP/DP3/DPPP/test/tPredict.sh b/CEP/DP3/DPPP/test/tPredict.sh deleted file mode 100755 index 7a13c4cc6f6..00000000000 --- a/CEP/DP3/DPPP/test/tPredict.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tPredict diff --git a/CEP/DP3/DPPP/test/tPredict.tab.tgz b/CEP/DP3/DPPP/test/tPredict.tab.tgz deleted file mode 100644 index 0fb13910905d98f131ab95030842cdf70d4f06dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143274 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 diff --git a/CEP/DP3/DPPP/test/tPredict_ref b/CEP/DP3/DPPP/test/tPredict_ref deleted file mode 100755 index 5c5cd3d6e99..00000000000 --- a/CEP/DP3/DPPP/test/tPredict_ref +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -#wfeaw Generate reference data tPredict.tab for tPredict -# This script uses BBS. Note that casacore data should be up-to-date -# Run the script in the source directory of CEP/DP3/DPPP/test - -tar xf tNDPPP-generic.in_MS.tgz -#gsm.py tPredict_ref_skymodel 01:37:41.299440 +33.09.35.13240 4 -rm -rf tNDPPP-generic.MS/sky -makesourcedb in=my.skymodel out=tNDPPP-generic.MS/sky format='<' -rm -rf tNDPPP-generic.in_MS.tgz -tar czf tNDPPP-generic.in_MS.tgz tNDPPP-generic.MS - -rm -rf tPredict.tab.tgz tPredict.tab - -#### Run BBS, do not corrupt data with beam - -cat > tPredict-bbs-nobeam.parset <<EOF -Strategy.ChunkSize=100 -Strategy.Steps=[predict_nobeam] - -Step.predict_nobeam.Operation=PREDICT -Step.predict_nobeam.Model.Beam.Enable=FALSE -Step.predict_nobeam.Output.Column=PREDICT_nobeam -EOF - -bbs-reducer --sourcedb=tNDPPP-generic.MS/sky tNDPPP-generic.MS tPredict-bbs-nobeam.parset - -rm tPredict-bbs-nobeam.parset - -#### Run BBS, corrupt data with beam - -cat > tPredict-bbs-beam.parset <<EOF -Strategy.ChunkSize=100 -Strategy.Steps=[predict_beam] - -Step.predict_beam.Operation=PREDICT -Step.predict_beam.Model.Beam.Enable=TRUE -Step.predict_beam.Model.Beam.UseChannelFreq=TRUE -Step.predict_beam.Output.Column=PREDICT_beam -EOF - -bbs-reducer --sourcedb=tNDPPP-generic.MS/sky tNDPPP-generic.MS tPredict-bbs-beam.parset - -rm tPredict-bbs-beam.parset - -#### Run BBS, corrupt data with beam, subtract from data - -cat > tPredict-bbs-beam-subtract.parset <<EOF -Strategy.ChunkSize=100 -Strategy.Steps=[subtract_beam] - -Step.subtract_beam.Operation=PREDICT -Step.subtract_beam.Model.Beam.Enable=TRUE -Step.subtract_beam.Model.Beam.UseChannelFreq=TRUE -Step.subtract_beam.Output.Column=SUBTRACT_beam -EOF - -bbs-reducer --sourcedb=tNDPPP-generic.MS/sky tNDPPP-generic.MS tPredict-bbs-beam.parset - -#### Store output from BBS in separate table - -taql 'select from (select PREDICT_nobeam, PREDICT_beam, SUBTRACT_BEAM from tNDPPP-generic.MS giving tPredict.tab as plain)' - -tar czf tPredict.tab.tgz tPredict.tab diff --git a/CEP/DP3/DPPP/test/tPredict_ref_skymodel b/CEP/DP3/DPPP/test/tPredict_ref_skymodel deleted file mode 100644 index 864b814969f..00000000000 --- a/CEP/DP3/DPPP/test/tPredict_ref_skymodel +++ /dev/null @@ -1,16 +0,0 @@ -FORMAT = Name, Type, Ra, Dec, I, Q, U, V, ReferenceFrequency='60e6', SpectralIndex='[0.0]', MajorAxis, MinorAxis, Orientation - -# the next lines define the sources -0002.2+3139, POINT, 00:02:14.14080000, +31.39.42.01200000, 4.845, , , , , [-0.6711, -0.1114] -0005.9+3139, POINT, 00:05:55.73040000, +31.39.50.00400000, 5.0769, , , , , [-0.3954, -0.1446] -0010.1+3045, GAUSSIAN, 00:10:07.75920000, +30.45.24.08400000, 4.7809, , , , , [-0.7518, -0.0461], 35.9, 38.7, 116.3 -0010.4+3329, GAUSSIAN, 00:10:25.44000000, +33.29.39.51600000, 8.5526, , , , , [-0.8742], 93.2, 32.3, 4.6 -0013.7+3441, GAUSSIAN, 00:13:43.97040000, +34.41.34.29600000, 10.94, , , , , [-0.7], 42.9, 27.4, 14.0 -0015.1+3216, POINT, 00:15:06.31920000, +32.16.12.21600000, 12.0884, , , , , [-0.5168, -0.0805] -0016.2+3238, GAUSSIAN, 00:16:12.48960000, +32.38.56.50800000, 8.1975, , , , , [-0.7735], 56.4, 37.6, 144.7 -0016.5+3259, GAUSSIAN, 00:16:30.97920000, +32.59.53.48400000, 6.1083, , , , , [-0.8603], 39.9, 31.5, 104.2 -0017.0+3209, POINT, 00:17:02.20080000, +32.09.17.78400000, 6.1197, , , , , [-0.6543, -0.1483] -0018.5+3105, GAUSSIAN, 00:18:31.74960000, +31.05.53.59200000, 5.4645, , , , , [-0.809, -0.02], 52.7, 32.5, 7.7 -2352.3+3303, GAUSSIAN, 23:52:20.92080000, +33.03.59.61600000, 11.3143, , , , , [-0.7843, -0.045], 59.2, 28.0, 160.1 -2354.1+3255, GAUSSIAN, 23:54:11.35920000, +32.55.13.58400000, 22.5335, , , , , [-0.8153, -0.0882], 46.4, 31.5, 44.1 -2358.2+3130, POINT, 23:58:13.49040000, +31.30.00.50400000, 4.9352, , , , , [-0.5184, -0.1986] diff --git a/CEP/DP3/DPPP/test/tScaleData.cc b/CEP/DP3/DPPP/test/tScaleData.cc deleted file mode 100644 index 4f6b31fdd14..00000000000 --- a/CEP/DP3/DPPP/test/tScaleData.cc +++ /dev/null @@ -1,263 +0,0 @@ -//# tScaleData.cc: Test program for class ScaleData -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: tScaleData.cc 23691 2013-02-12 13:32:33Z diepen $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/ScaleData.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <Common/StreamUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// It can only set all flags to true or all to false. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - { - info().init (ncorr, nchan, ntime, 0., 5., string(), string()); - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(nbl); - Vector<Int> ant2(nbl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<nbl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos(4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanWidth(nchan, 1000000.); - Vector<double> chanFreqs(nchan); - indgen (chanFreqs, 10500000., 1000000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-10+itsCount*6); - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - indgen (weights, 0.5f, 0.01f); - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - DPBuffer buf; - buf.setTime (itsCount*30 + 4472025740.0); - buf.setData (data); - buf.setWeights (weights); - buf.setUVW (uvw); - Cube<bool> flags(data.shape()); - flags = false; - buf.setFlags (flags); - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = false; - buf.setFullResFlags (fullResFlags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) {} - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; -}; - -// Class to check result of TestInput run by test1. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - {} -private: - void addData (Cube<Complex>& to, const Cube<Complex>& from, int bl) - { - to += from(IPosition(3,0,0,bl), IPosition(3,to.nrow()-1,to.ncolumn()-1,bl)); - } - void addConjData (Cube<Complex>& to, const Cube<Complex>& from, int bl) - { - to += conj(from(IPosition(3,0,0,bl), IPosition(3,to.nrow()-1,to.ncolumn()-1,bl))); - } - virtual bool process (const DPBuffer& buf) - { - // Fill data and scale as needed. - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - Complex* dataPtr = data.data(); - int cnt=0; - for (int i=0; i<itsNBl; ++i) { - double freq = 10.5; - for (int j=0; j<itsNChan; ++j) { - double sc1 = 3 + 2*freq + freq*freq; - double sc2 = sc1; - if ((i%16)/4 == 0) { - sc1 = 2 + 0.5*freq; - } - if (i%4 == 0) { - sc2 = 2 + 0.5*freq; - } - double scale = sqrt(sc1*sc2); - freq += 1; - for (int k=0; k<itsNCorr; ++k) { - *dataPtr++ = Complex(cnt+itsCount*10,cnt-10+itsCount*6) * scale; - cnt++; - } - } - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - indgen (weights, 0.5f, 0.01f); - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - ASSERT (allEQ (buf.getData(), data)); - ASSERT (buf.getFlags().shape() == IPosition(3,itsNCorr,itsNChan,itsNBl)); - ASSERT (allEQ (buf.getFlags(), false)); - ASSERT (allEQ (buf.getWeights(), weights)); - ASSERT (allEQ (buf.getUVW(), uvw)); - ASSERT (buf.getFullResFlags().shape() == IPosition(3,itsNChan,1,itsNBl)); - ASSERT (allEQ (buf.getFullResFlags(), false)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - ASSERT (int(infoIn.nbaselines())==itsNBl); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - step1->getNextStep()->show (cout); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test scaling. -void test1(int ntime, int nbl, int nchan, int ncorr) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("stations", "[rs01.s01, *]"); - parset.add ("coeffs", "[[2,0.5],[3,2,1]]"); - parset.add ("scalesize", "false"); - DPStep::ShPtr step2(new ScaleData(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - - -int main() -{ - INIT_LOGGER ("tScaleData"); - try { - test1 ( 2, 4, 4, 1); - test1 (10, 16, 32, 4); - test1 (10, 12, 16, 2); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tStationAdder.cc b/CEP/DP3/DPPP/test/tStationAdder.cc deleted file mode 100644 index 82eb1524ed2..00000000000 --- a/CEP/DP3/DPPP/test/tStationAdder.cc +++ /dev/null @@ -1,579 +0,0 @@ -//# tStationAdder.cc: Test program for class StationAdder -//# Copyright (C) 2012 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/StationAdder.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <Common/StreamUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// It can only set all flags to true or all to false. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - { - info().init (ncorr, nchan, ntime, 0., 5., string(), string()); - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(nbl); - Vector<Int> ant2(nbl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<nbl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos(4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanWidth(nchan, 1000000.); - Vector<double> chanFreqs(nchan); - indgen (chanFreqs, 10500000., 1000000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-10+itsCount*6); - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - indgen (weights, 0.5f, 0.01f); - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - DPBuffer buf; - buf.setTime (itsCount*30 + 4472025740.0); - buf.setData (data); - buf.setWeights (weights); - buf.setUVW (uvw); - Cube<bool> flags(data.shape()); - flags = false; - buf.setFlags (flags); - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = false; - buf.setFullResFlags (fullResFlags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) {} - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; -}; - -// Class to check result of TestInput run by test1. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nbl, int nchan, int ncorr, bool sumauto) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsSumAuto(sumauto) - {} -private: - void addData (Cube<Complex>& to, const Cube<Complex>& from, int bl) - { - to += from(IPosition(3,0,0,bl), IPosition(3,to.nrow()-1,to.ncolumn()-1,bl)); - } - void addConjData (Cube<Complex>& to, const Cube<Complex>& from, int bl) - { - to += conj(from(IPosition(3,0,0,bl), IPosition(3,to.nrow()-1,to.ncolumn()-1,bl))); - } - virtual bool process (const DPBuffer& buf) - { - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-10+itsCount*6); - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - indgen (weights, 0.5f, 0.01f); - Cube<Complex> databl0 (itsNCorr, itsNChan, 1); - Cube<Complex> databl1 (itsNCorr, itsNChan, 1); - // "{ns:[rs01.s01, rs02.s01, cs01.s02]}" was given resulting in 2 new - // baselines (ns-ns and cs01.s01-ns). - // Thus adding the baselines below. - float weight=0; - if (itsSumAuto) { - // add autocorr to form new autocorr - addData (databl0, data, 0); - addData (databl0, data, 5); - addData (databl0, data, 15); - weight = 3; - } else { - // add crosscorr to form new autocorr - addData (databl0, data, 1); - addData (databl0, data, 3); - addData (databl0, data, 4); - addData (databl0, data, 7); - addData (databl0, data, 12); - addData (databl0, data, 13); - weight = 6; - } - addData (databl1, data, 8); - addData (databl1, data, 9); - addData (databl1, data, 11); - addConjData (databl1, data, 2); - addConjData (databl1, data, 6); - addConjData (databl1, data, 14); - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - IPosition end(3,itsNCorr-1,itsNChan-1,itsNBl-1); - ASSERT (allEQ (buf.getData()(IPosition(3,0), end), data)); - ASSERT (buf.getFlags().shape() == IPosition(3,itsNCorr,itsNChan,itsNBl+2)); - ASSERT (allEQ (buf.getFlags(), false)); - ASSERT (allEQ (buf.getWeights()(IPosition(3,0), end), weights)); - ASSERT (allEQ (buf.getUVW()(IPosition(2,0), - IPosition(2,2,itsNBl-1)), uvw)); - ASSERT (buf.getFullResFlags().shape() == IPosition(3,itsNChan,1,itsNBl+2)); - ASSERT (allEQ (buf.getFullResFlags(), false)); - // Now check data of new baselines. - end[2] = itsNBl; - ASSERT (allNear (buf.getData()(IPosition(3,0,0,itsNBl), end), databl0/weight, 1e-5)); - ASSERT (allNear (buf.getWeights()(IPosition(3,0,0,itsNBl), end), weight, 1e-5)); - end[2] = itsNBl+1; - ASSERT (allNear (buf.getData()(IPosition(3,0,0,itsNBl+1), end), databl1/6.f, 1e-5)); - ASSERT (allNear (buf.getWeights()(IPosition(3,0,0,itsNBl+1), end), 6.f, 1e-5)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - ASSERT (int(infoIn.nbaselines())==itsNBl+2); - ASSERT (int(infoIn.antennaNames().size())==5); - ASSERT (int(infoIn.antennaDiam().size())==5); - ASSERT (int(infoIn.antennaPos().size())==5); - ASSERT (infoIn.antennaNames()[4]=="ns"); - Vector<Double> pos1 (infoIn.antennaPos()[4].getValue().getValue()); - ASSERT (near(pos1[0], (3828763.+3828746.+3828713.)/3)); - ASSERT (near(pos1[1], ( 442449.+ 442592.+ 442878.)/3)); - ASSERT (near(pos1[2], (5064923.+5064924.+5064926.)/3)); - // Check diam. - double d1 = sqrt ((pos1[0]-3828763) * (pos1[0]-3828763) + - (pos1[1]- 442449) * (pos1[1]- 442449) + - (pos1[2]-5064923) * (pos1[2]-5064923)); - double d2 = sqrt ((pos1[0]-3828746) * (pos1[0]-3828746) + - (pos1[1]- 442592) * (pos1[1]- 442592) + - (pos1[2]-5064924) * (pos1[2]-5064924)); - double d3 = sqrt ((pos1[0]-3828713) * (pos1[0]-3828713) + - (pos1[1]- 442878) * (pos1[1]- 442878) + - (pos1[2]-5064926) * (pos1[2]-5064926)); - ASSERT (near(infoIn.antennaDiam()[4], 70+2*max(d1,max(d2,d3)))); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsSumAuto; -}; - -// Class that throws an error when process() is called -class ThrowStep: public DPStep -{ - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual bool process (const DPBuffer&) { - cout<<"Previous step should have thrown an error!"<<endl; - return true; - } -}; - -// Class to check result of flagged, unaveraged TestInput run by test2. -class TestOutput2: public DPStep -{ -public: - TestOutput2(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - {} -private: - void addData (Cube<Complex>& to, const Cube<Complex>& from, - Cube<Float>& tow, const Cube<Float>& weights, int bl) - { - Cube<Complex> tmp=from.copy(); - Cube<Complex>::iterator tmpit=tmp.begin(); - Cube<Float>::const_iterator weightit=weights.begin(); - for (; tmpit!=tmp.end() && weightit!=weights.end(); tmpit++, weightit++) { - *tmpit *= *weightit; - } - to += tmp(IPosition(3,0,0,bl), IPosition(3,to.nrow()-1,to.ncolumn()-1,bl)); - tow += weights(IPosition(3,0,0,bl), IPosition(3,to.nrow()-1,to.ncolumn()-1,bl)); - } - void addConjData (Cube<Complex>& to, const Cube<Complex>& from, - Cube<Float>& tow, const Cube<Float>& weights, int bl) - { - Cube<Complex> tmp=from.copy(); - Cube<Complex>::iterator tmpit=tmp.begin(); - Cube<Float>::const_iterator weightit=weights.begin(); - for (; tmpit!=tmp.end() && weightit!=weights.end(); tmpit++, weightit++) { - *tmpit *= *weightit; - } - to += conj(tmp(IPosition(3,0,0,bl), IPosition(3,to.nrow()-1,to.ncolumn()-1,bl))); - tow += weights(IPosition(3,0,0,bl), IPosition(3,to.nrow()-1,to.ncolumn()-1,bl)); - } - virtual bool process (const DPBuffer& buf) - { - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-10+itsCount*6); - } - Cube<Float> weights(itsNCorr, itsNChan, itsNBl); - indgen (weights, 0.5f, 0.01f); - Cube<Complex> databl0 (itsNCorr, itsNChan, 1); - Cube<Complex> databl1 (itsNCorr, itsNChan, 1); - Cube<Complex> databl2 (itsNCorr, itsNChan, 1); - Cube<Complex> databl3 (itsNCorr, itsNChan, 1); - Cube<Complex> databl4 (itsNCorr, itsNChan, 1); - Cube<Float> weightbl0 (itsNCorr, itsNChan, 1, 0.); - Cube<Float> weightbl1 (itsNCorr, itsNChan, 1, 0.); - Cube<Float> weightbl2 (itsNCorr, itsNChan, 1, 0.); - Cube<Float> weightbl3 (itsNCorr, itsNChan, 1, 0.); - Cube<Float> weightbl4 (itsNCorr, itsNChan, 1, 0.); - // "{ns1:[rs01.s01, rs02.s01], ns2:[cs01.s02, cs01.s01]}" was given. - addData (databl0, data, weightbl0, weights, 8); - addData (databl0, data, weightbl0, weights, 9); - addData (databl1, data, weightbl1, weights, 12); - addData (databl1, data, weightbl1, weights, 13); - addData (databl2, data, weightbl2, weights, 2); - addData (databl2, data, weightbl2, weights, 3); - addData (databl3, data, weightbl3, weights, 6); - addData (databl3, data, weightbl3, weights, 7); - addConjData (databl0, data, weightbl0, weights, 2); - addConjData (databl0, data, weightbl0, weights, 6); - addConjData (databl1, data, weightbl1, weights, 3); - addConjData (databl1, data, weightbl1, weights, 7); - addConjData (databl2, data, weightbl2, weights, 8); - addConjData (databl2, data, weightbl2, weights, 12); - addConjData (databl3, data, weightbl3, weights, 9); - addConjData (databl3, data, weightbl3, weights, 13); - addConjData (databl4, databl0, weightbl4, weightbl0, 0); - addConjData (databl4, databl1, weightbl4, weightbl1, 0); - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - IPosition end(3,itsNCorr-1,itsNChan-1,itsNBl-1); - ASSERT (allEQ (buf.getData()(IPosition(3,0), end), data)); - ASSERT (buf.getFlags().shape() == IPosition(3,itsNCorr,itsNChan,itsNBl+5)); - ASSERT (allEQ (buf.getFlags(), false)); - ASSERT (allEQ (buf.getWeights()(IPosition(3,0), end), weights)); - ASSERT (allEQ (buf.getUVW()(IPosition(2,0), - IPosition(2,2,itsNBl-1)), uvw)); - ASSERT (buf.getFullResFlags().shape() == IPosition(3,itsNChan,1,itsNBl+5)); - ASSERT (allEQ (buf.getFullResFlags(), false)); - // Now check data of new baselines. - end[2] = itsNBl; - cout<< buf.getUVW()(IPosition(2,0,itsNBl-1), IPosition(2,2,itsNBl+4)); - ASSERT (allNear (buf.getData()(IPosition(3,0,0,itsNBl), end), databl0, 1e-5)); - ASSERT (allNear (buf.getWeights()(IPosition(3,0,0,itsNBl), end), weightbl0, 1e-5)); - end[2] = itsNBl+1; - ASSERT (allNear (buf.getData()(IPosition(3,0,0,itsNBl+1), end), databl1, 1e-5)); - ASSERT (allNear (buf.getWeights()(IPosition(3,0,0,itsNBl+1), end), weightbl1, 1e-5)); - end[2] = itsNBl+2; - ASSERT (allNear (buf.getData()(IPosition(3,0,0,itsNBl+2), end), databl2, 1e-5)); - ASSERT (allNear (buf.getWeights()(IPosition(3,0,0,itsNBl+2), end), weightbl2, 1e-5)); - end[2] = itsNBl+3; - ASSERT (allNear (buf.getData()(IPosition(3,0,0,itsNBl+3), end), databl3, 1e-5)); - ASSERT (allNear (buf.getWeights()(IPosition(3,0,0,itsNBl+3), end), weightbl3, 1e-5)); - end[2] = itsNBl+4; - ASSERT (allNear (buf.getData()(IPosition(3,0,0,itsNBl+4), end), databl4, 1e-5)); - ASSERT (allNear (buf.getWeights()(IPosition(3,0,0,itsNBl+4), end), weightbl4, 1e-5)); - itsCount++; - return true; - ///cout << buf.getFlags() << endl << result << endl; - ASSERT (allEQ(buf.getFlags(), false)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - ASSERT (int(infoIn.nbaselines())==itsNBl+5); - ASSERT (int(infoIn.antennaNames().size())==6); - ASSERT (infoIn.antennaNames()[4]=="ns1"); - ASSERT (infoIn.antennaNames()[5]=="ns2"); - Vector<Double> pos1 (infoIn.antennaPos()[4].getValue().getValue()); - ASSERT (near(pos1[0], (3828763.+3828746.)/2)); - ASSERT (near(pos1[1], ( 442449.+ 442592.)/2)); - ASSERT (near(pos1[2], (5064923.+5064924.)/2)); - Vector<Double> pos2 (infoIn.antennaPos()[5].getValue().getValue()); - ASSERT (near(pos2[0], (3828729.+3828713.)/2)); - ASSERT (near(pos2[1], ( 442735.+ 442878.)/2)); - ASSERT (near(pos2[2], (5064925.+5064926.)/2)); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; -}; - -// Class to check result of TestInput run by test4. -class TestOutput4: public DPStep -{ -public: - TestOutput4(int ntime, int nbl, int nchan, int /*ncorr*/) - : itsNTime(ntime), itsNBl(nbl), itsNChan(nchan) - {} -private: - virtual bool process (const DPBuffer&) - { - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - ASSERT (int(infoIn.nbaselines())==itsNBl); - ASSERT (int(infoIn.antennaNames().size())==4); - ASSERT (int(infoIn.antennaDiam().size())==4); - ASSERT (int(infoIn.antennaPos().size())==4); - } - - int itsNTime, itsNBl, itsNChan; -}; - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - step1->getNextStep()->show (cout); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test adding 3 stations. -void test1(int ntime, int nbl, int nchan, int ncorr, bool sumauto) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " sumauto=" << sumauto << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("stations", - "{ns:[rs01.s01, rs02.s01, cs01.s02]}"); - parset.add ("autocorr", "true"); - if (!sumauto) { - parset.add ("sumauto", "false"); - } - parset.add ("average", "true"); - parset.add ("useweights", "false"); - DPStep::ShPtr step2(new StationAdder(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, sumauto)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Test adding two groups of 2 stations. -void test2(int ntime, int nbl, int nchan, int ncorr) -{ - cout << "test2: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("stations", - "{ns1:[rs01.s01, rs02.s01], ns2:[cs01.s02, cs01.s01]}"); - parset.add ("autocorr", "false"); - parset.add ("average", "false"); - DPStep::ShPtr step2(new StationAdder(in, parset, "")); - DPStep::ShPtr step3(new TestOutput2(ntime, nbl, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); - step2->showCounts (cout); -} - -void test3 (const string& stations) -{ - // Do some erronous attempts. - TestInput* in = new TestInput(2, 8, 4, 4); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("stations", stations); - parset.add ("autocorr", "true"); - parset.add ("average", "false"); - DPStep::ShPtr step2(new StationAdder(in, parset, "")); - DPStep::ShPtr step3(new ThrowStep()); - step1->setNextStep (step2); - step2->setNextStep (step3); - bool ok = true; - try { - execute (step1); - } catch (std::exception& x) { - cout << "Expected exception: " << x.what() << endl; - ok = false; - } - ASSERT (!ok); -} - -// Test making a superstation out of nonexisting stations (should do nothing) -void test4(int ntime, int nbl, int nchan, int ncorr) -{ - cout << "test4: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("stations", - "{ns1:nonexistingstationpattern}"); - DPStep::ShPtr step2(new StationAdder(in, parset, "")); - DPStep::ShPtr step3(new TestOutput4(ntime, nbl, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -void testPatterns() -{ - Vector<String> antNames(10); - antNames[0] = "CS001HBA0"; antNames[1] = "CS001HBA1"; - antNames[2] = "CS002HBA0"; antNames[3] = "CS002HBA1"; - antNames[4] = "CS003HBA0"; antNames[5] = "CS003HBA1"; - antNames[6] = "CS004HBA0"; antNames[7] = "CS004HBA1"; - antNames[8] = "CS005HBA0"; antNames[9] = "CS005HBA1"; - vector<string> patterns; - patterns.push_back ("CS00[0-9]*"); - cout << StationAdder::getMatchingStations (antNames, patterns) << endl; - patterns[0] = "CS00[0-9]*"; - cout << StationAdder::getMatchingStations (antNames, patterns) << endl; - patterns.push_back ("!CS00[45]*"); - cout << StationAdder::getMatchingStations (antNames, patterns) << endl; - patterns.push_back ("CS00[124]HBA0"); - cout << StationAdder::getMatchingStations (antNames, patterns) << endl; -} - - -int main() -{ - INIT_LOGGER ("tStationAdder"); - try { - // Test the station selection patterns. - testPatterns(); - // Test must be done with with 16 baselines. - test1( 10, 16, 32, 4, true); - test1( 10, 16, 32, 4, false); - test2( 10, 16, 32, 4); - // Unknown station. - //test3("{ns1:unknown, ns2:[cs01.s02, cs01.s01]}"); - // New station already used. - test3("{ns1:[rs01.s01, rs02.s01], cs01.s02:[cs01.s02, cs01.s01]}"); - // Old station doubly used. - test3("{ns1:[rs01.s01, rs02.s01], ns2:[rs01.s01, cs01.s01]}"); - test4( 10, 16, 32, 4); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tUVWFlagger.cc b/CEP/DP3/DPPP/test/tUVWFlagger.cc deleted file mode 100644 index 56da782026f..00000000000 --- a/CEP/DP3/DPPP/test/tUVWFlagger.cc +++ /dev/null @@ -1,438 +0,0 @@ -//# tUVWFlagger.cc: Test program for class UVWFlagger -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/UVWFlagger.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// It can only set all flags to true or all to false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - { - info().init (ncorr, nchan, ntime, 0., 5., string(), string()); - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(nbl); - Vector<Int> ant2(nbl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<nbl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos(4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanWidth(nchan, 1000000.); - Vector<double> chanFreqs(nchan); - indgen (chanFreqs, 10500000., 1000000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-10+itsCount*6); - } - Matrix<double> uvw(3, itsNBl); - for (int i=0; i<itsNBl; ++i) { - uvw(0,i) = 1 + itsCount + i; - uvw(1,i) = 2 + itsCount + i; - uvw(2,i) = 3 + itsCount + i; - } - DPBuffer buf; - buf.setTime (itsCount*30 + 4472025740.0); - buf.setData (data); - buf.setUVW (uvw); - Cube<bool> flags(data.shape()); - flags = false; - buf.setFlags (flags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) {} - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; -}; - -// Class to check result of flagged, unaveraged TestInput run by test1. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // Flag where u,v,w matches intervals given in test1. - Cube<bool> result(itsNCorr,itsNChan,itsNBl); - result = false; - for (int i=0; i<itsNBl; ++i) { - double u = 1+i+itsCount; - double v = 2+i+itsCount; - double w = 3+i+itsCount; - double uv = sqrt(u*u+v*v); - if ((uv>5.5 && uv<8.5) || (u>20.5 && u<23.5) || (u>31.5 && u<40.5) - || (v>11.5 && v<14.5) || w<3.5 || w>44.5) { - for (int j=0; j<itsNChan; ++j) { - for (int k=0; k<itsNCorr; ++k) { - result(k,j,i) = true; - } - } - } - } - ///cout << buf.getFlags() << endl << result << endl; - ASSERT (allEQ(buf.getFlags(), result)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; -}; - -// Class to check result of flagged, unaveraged TestInput run by test2. -class TestOutput2: public DPStep -{ -public: - TestOutput2(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - {} -private: - virtual bool process (const DPBuffer& buf) - { - // Flag where u,v,w matches intervals given in test1. - Cube<bool> result(itsNCorr,itsNChan,itsNBl); - result = false; - for (int i=0; i<itsNBl; ++i) { - for (int j=0; j<itsNChan; ++j) { - double wavel = 2.99792458e+08 / (10.5e6 + j*1e6); - double u = (1+i+itsCount) / wavel; - double v = (2+i+itsCount) / wavel; - double w = (3+i+itsCount) / wavel; - double uv = sqrt(u*u+v*v); - if ((uv>0.2 && uv<0.31) || (u>1.55 && u<1.485) || (u>0.752 && u<0.862) - || (v>0.42 && v<0.53) || w<0.12 || w>1.63) { - for (int k=0; k<itsNCorr; ++k) { - result(k,j,i) = true; - } - } - } - } - ///cout << buf.getFlags() << endl << result << endl; - ASSERT (allEQ(buf.getFlags(), result)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; -}; - - -// Class to check result of flagged, unaveraged TestInput run by test3. -class TestOutput3: public DPStep -{ -public: - TestOutput3(int ntime, int nbl, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr) - { - ASSERT (ntime==2 && nbl==16); - } -private: - virtual bool process (const DPBuffer& buf) - { - // These are the UVW coordinates as calculated by UVWFlagger for the - // station positions and times defined in TestInput and phase center - // defined in test3. - double uvwvals[] = { - 0, 0, 0, - 0.423756, -127.372, 67.1947, - 0.847513, -254.744, 134.389, - 0.277918, -382.015, 201.531, - -0.423756, 127.372, -67.1947, - 0, 0, 0, - 0.423756, -127.372, 67.1947, - -0.145838, -254.642, 134.336, - -0.847513, 254.744, -134.389, - -0.423756, 127.372, -67.1947, - 0, 0, 0, - -0.569594, -127.27, 67.1417, - -0.277918, 382.015, -201.531, - 0.145838, 254.642, -134.336, - 0.569594, 127.27, -67.1417, - 0, 0, 0, - 0, 0, 0, - 0.738788, -127.371, 67.1942, - 1.47758, -254.742, 134.388, - 1.22276, -382.013, 201.53, - -0.738788, 127.371, -67.1942, - 0, 0, 0, - 0.738788, -127.371, 67.1942, - 0.483976, -254.642, 134.336, - -1.47758, 254.742, -134.388, - -0.738788, 127.371, -67.1942, - 0, 0, 0, - -0.254812, -127.271, 67.1421, - -1.22276, 382.013, -201.53, - -0.483976, 254.642, -134.336, - 0.254812, 127.271, -67.1421, - 0, 0, 0 - }; - Cube<double> uvws(IPosition(3,3,16,2), uvwvals, SHARE); - // Flag where u,v,w matches intervals given in test3. - Cube<bool> result(itsNCorr,itsNChan,itsNBl); - result = false; - for (int i=0; i<itsNBl; ++i) { - double u = uvws(0,i,itsCount); - double v = uvws(1,i,itsCount); - double w = uvws(2,i,itsCount); - double uv = sqrt(u*u+v*v); - if ((uv>5.5 && uv<8.5) || (u>20.5 && u<23.5) || (u>31.5 && u<40.5) - || (v>11.5 && v<14.5) || w<3.5 || w>44.5) { - for (int j=0; j<itsNChan; ++j) { - for (int k=0; k<itsNCorr; ++k) { - result(k,j,i) = true; - } - } - } - } - ///cout << buf.getFlags() << endl << result << endl; - ASSERT (allEQ(buf.getFlags(), result)); - itsCount++; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - ASSERT (int(infoIn.origNChan())==itsNChan); - ASSERT (int(infoIn.nchan())==itsNChan); - ASSERT (int(infoIn.ntime())==itsNTime); - ASSERT (infoIn.timeInterval()==5); - ASSERT (int(infoIn.nchanAvg())==1); - ASSERT (int(infoIn.ntimeAvg())==1); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test flagging a few baselines on UV in m. -void test1(int ntime, int nbl, int nchan, int ncorr) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("uvmrange", "[5.5..8.5]"); - parset.add ("umrange", "[31.5..40.5, 22+-1.5]"); - parset.add ("vmrange", "[11.5..14.5]"); - parset.add ("wmmax", "44.5"); - parset.add ("wmmin", "3.5"); - DPStep::ShPtr step2(new UVWFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Test flagging a few baselines on UV in wavelengths. -void test2(int ntime, int nbl, int nchan, int ncorr) -{ - cout << "test2: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("uvlambdarange", "[0.2..0.31]"); - parset.add ("ulambdarange", "[1.55..1.485, 0.807+-0.055]"); - parset.add ("vlambdarange", "[0.42..0.53]"); - parset.add ("wlambdamax", "1.63"); - parset.add ("wlambdamin", "0.12"); - DPStep::ShPtr step2(new UVWFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput2(ntime, nbl, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); - step2->showCounts (cout); -} - -// Test flagging a few baselines on UV in m with a different phase center. -void test3(int ntime, int nbl, int nchan, int ncorr) -{ - cout << "test3: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("uvmrange", "[5.5..8.5]"); - parset.add ("umrange", "[31.5..40.5, 22+-1.5]"); - parset.add ("vmrange", "[11.5..14.5]"); - parset.add ("wmmax", "44.5"); - parset.add ("wmmin", "3.5"); - parset.add ("phasecenter", "[-1.92653768rad, 1.09220917rad, j2000]"); - DPStep::ShPtr step2(new UVWFlagger(in, parset, "")); - DPStep::ShPtr step3(new TestOutput3(ntime, nbl, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Test constructing with the Sun as phase center. -void test4() -{ - cout << "test4" << endl; - // Create the steps. - TestInput* in = new TestInput(1,1,1,1); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("uvmrange", "[5.5..8.5]"); - parset.add ("phasecenter", "Sun"); - DPStep::ShPtr step2(new UVWFlagger(in, parset, "")); - step2->show (cout); -} - - -int main() -{ - INIT_LOGGER ("tUVWFlagger"); - try { - - test1( 10, 16, 32, 4); - test1(100, 105, 32, 4); - test2( 2, 16, 32, 4); - test2( 2, 36, 16, 2); - test2( 10, 16, 32, 4); - test2(100, 105, 32, 4); - test3( 2, 16, 32, 4); - test4(); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tUVWFlagger.sh b/CEP/DP3/DPPP/test/tUVWFlagger.sh deleted file mode 100755 index 207563f199b..00000000000 --- a/CEP/DP3/DPPP/test/tUVWFlagger.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tUVWFlagger diff --git a/CEP/DP3/DPPP/test/tUpsample.cc b/CEP/DP3/DPPP/test/tUpsample.cc deleted file mode 100644 index 649f641c364..00000000000 --- a/CEP/DP3/DPPP/test/tUpsample.cc +++ /dev/null @@ -1,181 +0,0 @@ -//# tAverager.cc: Test program for class Averager -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: tAverager.cc 35179 2016-08-25 11:25:17Z dijkema $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/Upsample.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> - -#include <casacore/casa/Quanta/Quantum.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - - -// Simple class to generate input arrays. -// It can only set all flags to true or all false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(vector<double> times, vector<bool> flags, double timeInterval) - : itsTimeStep(0), itsNBl(3), itsNChan(5), itsNCorr(4), itsTimes(times), - itsFlags(flags), itsTimeInterval(timeInterval) - {} -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsTimeStep == itsTimes.size()) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsTimeStep*10,i-1000+itsTimeStep*6); - } - DPBuffer buf; - buf.setTime (itsTimes[itsTimeStep]); - buf.setData (data); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlags[itsTimeStep]; - buf.setFlags (flags); - buf.setExposure(itsTimeInterval); - - Matrix<double> uvw(3,itsNBl); - indgen (uvw, double(itsTimeStep*100)); - buf.setUVW (uvw); - getNextStep()->process (buf); - ++itsTimeStep; - return true; - } - - virtual void finish() {getNextStep()->finish();} - - virtual void show (std::ostream&) const {} - - virtual void updateInfo (const DPInfo&) - { - info().init (itsNCorr, itsNChan, itsTimes.size(), itsTimes[0], itsTimeInterval, string(), string()); - // Define the frequencies. - Vector<double> chanFreqs(itsNChan); - Vector<double> chanWidth(itsNChan, 100000.); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } - uint itsTimeStep, itsNBl, itsNChan, itsNCorr; - vector<double> itsTimes; - vector<bool> itsFlags; - double itsTimeInterval; -}; - -// Class to check result of upsampling TestInput -class TestOutput: public DPStep -{ -public: - TestOutput(vector<double> times, vector<bool> flags, double timeInterval) - : itsTimes(times), itsFlags(flags), itsTimeStep(0), itsTimeInterval(timeInterval) - {} -private: - virtual bool process (const DPBuffer& buf) - { - ASSERT(nearAbs(buf.getTime(), itsTimes[itsTimeStep], itsTimeInterval*0.01)); - ASSERT(allTrue(buf.getFlags()) == itsFlags[itsTimeStep]); - ++itsTimeStep; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT(near(info.timeInterval(), itsTimeInterval)); - } - - vector<double> itsTimes; - vector<bool> itsFlags; - uint itsTimeStep; - double itsTimeInterval; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -void test() -{ - { - // Create the steps. - double times_array[] = {5020763030.74, 5020763032.75, 5020763034.76, 5020763035.77, 5020763037.78, 5020763039.8}; - vector<double> times(times_array, times_array+6); - bool flags_array[] = {false, false, true, false, false, false}; - vector<bool> flags(flags_array, flags_array+6); - TestInput* in = new TestInput(times, flags, 2.01327); - DPStep::ShPtr in_step(in); - ParameterSet parset; - parset.add ("timestep", "2"); - - DPStep::ShPtr upsample(new Upsample(in, parset, "")); - - double newtimes_array[] = {5020763030.23, 5020763031.24, 5020763032.25, 5020763033.25, 5020763034.26, 5020763035.27, 5020763036.27, 5020763037.28, 5020763038.29, 5020763039.29, 5020763040.3}; - vector<double> newtimes(newtimes_array, newtimes_array+11); - bool newflags_array[] = {false, false, false, false, true, false, false, false, false, false, false}; - vector<bool> newflags(newflags_array, newflags_array+11); - - DPStep::ShPtr out_step(new TestOutput(newtimes, newflags, 0.5 * 2.01327)); - in_step->setNextStep (upsample); - upsample->setNextStep (out_step); - execute (in_step); - } -} - - -int main() -{ - try { - test(); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP/test/tUpsample.sh b/CEP/DP3/DPPP/test/tUpsample.sh deleted file mode 100755 index dbdc884b91f..00000000000 --- a/CEP/DP3/DPPP/test/tUpsample.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tUpsample diff --git a/CEP/DP3/DPPP/test/test_flaggers.sh b/CEP/DP3/DPPP/test/test_flaggers.sh deleted file mode 100755 index 7cee918c9b1..00000000000 --- a/CEP/DP3/DPPP/test/test_flaggers.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh test_flaggers diff --git a/CEP/DP3/DPPP/test/testdemixfilter b/CEP/DP3/DPPP/test/testdemixfilter deleted file mode 100755 index 19532daaec3..00000000000 --- a/CEP/DP3/DPPP/test/testdemixfilter +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/sh - -# This script tests if selection in a demix gives the same result as demixing -# a selection. - -# Make a selection of the MS (core stations only) -msselect in=L29067_SAP000_SB069_uv.MS out=demix.sel.ms baseline='CS*&' - -# Do simple averaging of the rest of the MS. -cat > demix.avg.ps <<EOF -msin = L29067_SAP000_SB069_uv.MS -msin.startchan = 2 -msin.nchan=60 -msin.baseline=!CS*& -msout=demix.avg.ms -msout.overwrite=true -steps=[avg] -avg.type=averager -avg.freqstep=30 -avg.timestep=5 -EOF -NDPPP demix.avg.ps - -# Do the demixing of the MS selection. -# Create an empty instrument model. -parmdbm <<EOF -create table='demix.inst.pdb1' -adddef gain values=1 -EOF - -cat > demix.sel.demix.ps <<EOF -msin = demix.sel.ms -msin.startchan = 2 -msin.nchan=60 -msout=demix.sel.demix.ms -msout.overwrite=true -steps=[demix] -demix.type=demixer -demix.subtractsources=[CasA,CygA] -#demix.targetsource=3C196 -demix.skymodel=sky.pdb -demix.instrumentmodel=demix.inst.pdb1 -demix.demixfreqstep=60 -demix.demixtimestep=10 -demix.freqstep=30 -demix.timestep=5 -demix.ntimechunk=4 -EOF -NDPPP demix.sel.demix.ps - -# Do the demixing of the entire MS using a selection. -# Create an empty instrument model. -parmdbm <<EOF -create table='demix.inst.pdb2' -adddef gain values=1 -EOF - -cat > demix.demixsel.ps <<EOF -msin = L29067_SAP000_SB069_uv.MS -msin.startchan = 2 -msin.nchan=60 -msout=demix.demixsel.ms -msout.overwrite=true -steps=[demix] -demix.type=demixer -demix.subtractsources=[CasA,CygA] -demix.skymodel=sky.pdb -demix.instrumentmodel=demix.inst.pdb2 -demix.baseline=CS*& -demix.demixfreqstep=60 -demix.demixtimestep=10 -demix.freqstep=30 -demix.timestep=5 -demix.ntimechunk=2 -EOF -NDPPP demix.demixsel.ps - -# Select the baselines from the last demix result and check if equal to first demix. -msselect in=demix.demixsel.ms out=demix.demixsel.sel.ms baseline='CS*&' -taql 'select t1.DATA,t2.DATA as td from demix.sel.demix.ms t1, demix.demixsel.sel.ms t2 where !all((isnan(t1.DATA) && isnan(t2.DATA)) or t1.DATA=t2.DATA) limit 10' -taql 'select t1.DATA,t2.DATA as td from demix.sel.demix.ms t1, demix.demixsel.sel.ms t2 where t1.ANTENNA1 != t2.ANTENNA1 or t1.ANTENNA2 != t2.ANTENNA2' - -# Select the non-demixed baselines from the last demix result and check if equal -# to the averaged selection. -msselect in=demix.demixsel.ms out=demix.demixsel.rest.ms baseline='!CS*&' -taql 'select t1.DATA,t2.DATA as td from demix.avg.ms t1, demix.demixsel.rest.ms t2 where !all((isnan(t1.DATA) && isnan(t2.DATA)) or t1.DATA=t2.DATA) limit 10' -taql 'select t1.DATA,t2.DATA as td from demix.avg.ms t1, demix.demixsel.rest.ms t2 where t1.ANTENNA1 != t2.ANTENNA1 or t1.ANTENNA2 != t2.ANTENNA2' diff --git a/CEP/DP3/DPPP/test/tmwflagger.sh b/CEP/DP3/DPPP/test/tmwflagger.sh deleted file mode 100755 index 5fd6ce6a988..00000000000 --- a/CEP/DP3/DPPP/test/tmwflagger.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tmwflagger diff --git a/CEP/DP3/DPPP/test/tparse.cc b/CEP/DP3/DPPP/test/tparse.cc deleted file mode 100644 index 152c4f4b348..00000000000 --- a/CEP/DP3/DPPP/test/tparse.cc +++ /dev/null @@ -1,69 +0,0 @@ -//# tparse.cc: Test program for function PreFlagger::PSet::exprToRpn -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP/PreFlagger.h> -#include <Common/StringUtil.h> -#include <Common/StreamUtil.h> -#include <Common/LofarLogger.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace std; - -namespace LOFAR { - namespace DPPP { - // This class name should match the friend in PreFlagger. - class TestPSet - { - public: - static void testParse (const string&); - }; - } -} - -void TestPSet::testParse (const string& expr) -{ - PreFlagger::PSet pset; - vector<string> names = pset.exprToRpn (expr); - cout << pset.itsRpn << endl; - cout << names << endl; -} - - -int main(int argc, char* argv[]) -{ - INIT_LOGGER ("tPSet"); - try { - if (argc > 1) { - TestPSet::testParse (argv[1]); - } else { - TestPSet::testParse ("(s1&s_1)|!(!!s2&s2)"); - } - } catch (std::exception& x) { - cout << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP_AOFlag/CMakeLists.txt b/CEP/DP3/DPPP_AOFlag/CMakeLists.txt deleted file mode 100644 index 2cf77e20107..00000000000 --- a/CEP/DP3/DPPP_AOFlag/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -# $Id: CMakeLists.txt 27640 2013-12-04 08:02:49Z diepen $ - -lofar_package(DPPP_AOFlag 1.0 DEPENDS DPPP) - -include(LofarFindPackage) -lofar_find_package(AOFlagger REQUIRED) -lofar_find_package(Casacore COMPONENTS casa ms tables REQUIRED) -lofar_find_package(Boost REQUIRED COMPONENTS date_time thread filesystem system python3) -# AOFlagger depends on Python 2.7, see aoflagger CMake -lofar_find_package(Python 3.4 REQUIRED) -#lofar_find_package(GSL) -lofar_find_package(LibXml2 REQUIRED) -lofar_find_package(PNG REQUIRED) -lofar_find_package(FFTW3 REQUIRED) -lofar_find_package(CFITSIO REQUIRED) -#if(CMAKE_SYSTEM_NAME MATCHES "Linux") -# find_library(RT_LIBRARY rt) -# list(APPEND LOFAR_EXTRA_LIBRARIES ${RT_LIBRARY}) -#endif(CMAKE_SYSTEM_NAME MATCHES "Linux") - -# Copied from AOFlagger CMakeLists to link in GTKMM if AOFlagger was built with it -find_package(PkgConfig) -pkg_check_modules(GTKMM gtkmm-3.0>=3.0.0) -pkg_check_modules(SIGCXX sigc++-2.0) - -if(GTKMM_FOUND) - set(LOFAR_EXTRA_LIBRARIES ${LOFAR_EXTRA_LIBRARIES} ${GTKMM_LIBRARIES} ${GLIBMM_LIBRARIES}) -endif(GTKMM_FOUND) -# End check for GTKMM - -add_subdirectory(include/DPPP_AOFlag) -add_subdirectory(src) -add_subdirectory(test) diff --git a/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/AOFlaggerStep.h b/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/AOFlaggerStep.h deleted file mode 100644 index 3d2800dd8d1..00000000000 --- a/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/AOFlaggerStep.h +++ /dev/null @@ -1,161 +0,0 @@ -//# AOFlaggerStep.h: DPPP step class to flag data using rficonsole's functionality -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: AORFlagger.h 26900 2013-10-08 20:12:58Z loose $ -//# -//# @author Andre Offringa, Ger van Diepen - -#ifndef DPPP_AOFLAGGERSTEP_H -#define DPPP_AOFLAGGERSTEP_H - -// @file -// @brief DPPP step class to flag using aoflagger's functionality - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/FlagCounter.h> - -#include <Common/lofar_vector.h> -#include <Common/lofar_smartptr.h> - -#include <aoflagger.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class flagging data points based on the - // aoflagger library written by Andre Offringa. - // See the following papers for background information: - // <ul> - // <li> Post-correlation radio frequency interference classification - // methods -- http://arxiv.org/abs/1002.1957 - // <li> A LOFAR RFI detection pipeline and its first results - // -- http://arxiv.org/abs/1007.2089 - // </ul> - // - // When a correlation is flagged, all correlations for that data point - // are flagged. It is possible to specify which correlations have to be - // taken into account when flagging. Using, say, only XX may boost - // performance with a factor 4, but miss points to be flagged. - // It is also possible to specify the order in which the correlations - // have to be tested. - // - // It is possible to flag specific baselines only using a selection on - // baseline length. - // <br>Furthermore it is possible to only flag the autocorrelations and - // apply the resulting flags to the crosscorrelations, possibly selected - // on baseline length. - - class AOFlaggerStep : public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - AOFlaggerStep(DPInput*, const ParameterSet&, const string& prefix); - - virtual ~AOFlaggerStep(); - - // Create an AOFlaggerStep object using the given parset. - static DPStep::ShPtr makeStep (DPInput*, const ParameterSet&, - const std::string&); - - // Process the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Write the statistics into the MS. - virtual void addToMS (const string& msName); - - // Update the general info. - // It is used to adjust the parms if needed. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the flagger counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - // Flag all baselines in the time window (using OpenMP to parallellize). - // Process the buffers in the next step. - void flag (uint rightOverlap); - - // Flag a single baseline using the rfistrategy. - void flagBaseline (uint leftOverlap, uint windowSize, - uint rightOverlap, uint bl, - FlagCounter& counter, - aoflagger::QualityStatistics& rfiStats); - - // Add the flags to the statistics. - void addStats (aoflagger::QualityStatistics& rfiStats, - const aoflagger::ImageSet& values, - const aoflagger::FlagMask& rfiMask, const aoflagger::FlagMask& origMask, - int bl); - - // Format a number as kB, MB, etc. - static void formatBytes(std::ostream&, double); - - // Fill the rfi strategy. - void fillStrategy(); - - //# Data members. - string itsName; - uint itsBufIndex; - uint itsNTimes; - string itsStrategyName; - uint itsWindowSize; - uint itsOverlap; //# extra time slots on both sides - double itsOverlapPerc; - double itsMemory; //# Usable memory in GBytes - double itsMemoryPerc; - double itsMemoryNeeded; //# Memory needed for data/flags - bool itsPulsarMode; - bool itsPedantic; - bool itsDoAutoCorr; - bool itsDoRfiStats; - vector<DPBuffer> itsBuf; - FlagCounter itsFlagCounter; - NSTimer itsTimer; - NSTimer itsQualityTimer; //# quality writing timer - NSTimer itsComputeTimer; //# move/flag timer - double itsMoveTime; //# data move timer (sum all threads) - double itsFlagTime; //# flag timer (sum of all threads) - double itsQualTime; //# quality timer (sum of all threads) - casacore::Vector<double> itsFreqs; - aoflagger::AOFlagger itsAOFlagger; - boost::scoped_ptr<aoflagger::Strategy> itsStrategy; - boost::scoped_ptr<aoflagger::QualityStatistics> itsRfiStats; - }; - - } //# end namespace -} - - -#endif diff --git a/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/CMakeLists.txt b/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/CMakeLists.txt deleted file mode 100644 index 24c4b41e38d..00000000000 --- a/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# $Id: CMakeLists.txt 30990 2015-02-12 12:27:47Z diepen $ - -# List of header files that will be installed. -set(inst_HEADERS AOFlaggerStep.h SlidingFlagger.h Register.h) - -# Create symbolic link to include directory. -execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_BINARY_DIR}/include/${PACKAGE_NAME}) - -# Install header files. -#install(FILES ${inst_HEADERS} DESTINATION include/${PACKAGE_NAME}) diff --git a/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/Register.h b/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/Register.h deleted file mode 100644 index 4304d347e82..00000000000 --- a/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/Register.h +++ /dev/null @@ -1,37 +0,0 @@ -//# Register.h: Register AOFlag steps in DPPP -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: AORFlagger.h 26900 2013-10-08 20:12:58Z loose $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_AOFLAG_REGISTER_H -#define DPPP_AOFLAG_REGISTER_H - -// @file -// @brief Register AOFlag steps in DPPP - - -// Define the function (without name mangling) to register the 'constructor'. -extern "C" -{ - void register_aoflag(); -} - -#endif diff --git a/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/SlidingFlagger.h b/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/SlidingFlagger.h deleted file mode 100644 index 350ab3aea61..00000000000 --- a/CEP/DP3/DPPP_AOFlag/include/DPPP_AOFlag/SlidingFlagger.h +++ /dev/null @@ -1,143 +0,0 @@ -//# SlidingFlagger.h: DPPP step class to flag data using rficonsole's functionality -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: SlidingFlagger.h 26900 2013-10-08 20:12:58Z loose $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_AOFLAG_SLIDINGFLAGGER_H -#define DPPP_AOFLAG_SLIDINGFLAGGER_H - -// @file -// @brief DPPP step class to flag using rficonsole's functionality - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/FlagCounter.h> -#include <Common/lofar_vector.h> -#include <Common/lofar_smartptr.h> - -#include <aoflagger.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class flagging data points based on the - // aoflagger library written by Andre Offringa. - // See the following papers for background information: - // <ul> - // <li> Post-correlation radio frequency interference classification - // methods -- http://arxiv.org/abs/1002.1957 - // <li> A LOFAR RFI detection pipeline and its first results - // -- http://arxiv.org/abs/1007.2089 - // </ul> - // - // When a correlation is flagged, all correlations for that data point - // are flagged. It is possible to specify which correlations have to be - // taken into account when flagging. Using, say, only XX may boost - // performance with a factor 4, but miss points to be flagged. - // It is also possible to specify the order in which the correlations - // have to be tested. - // - // It is possible to flag specific baselines only using a selection on - // baseline length. - // <br>Furthermore it is possible to only flag the autocorrelations and - // apply the resulting flags to the crosscorrelations, possibly selected - // on baseline length. - - class SlidingFlagger: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - SlidingFlagger (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~SlidingFlagger(); - - // Create an SlidingFlagger object using the given parset. - static DPStep::ShPtr makeStep (DPInput*, const ParameterSet&, - const std::string&); - - // Process the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - // It is used to adjust the parms if needed. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the flagger counts. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - private: - struct ThreadData { - FlagCounter flagCounter; - NSTimer moveTimer; - NSTimer flagTimer; - }; - - // Flag all baselines in the time window (using OpenMP to parallellize). - // Process the buffers in the next step. - void flag(); - - // Flag a single baseline using the rfistrategy. - void flagBaseline (uint bl, ThreadData&); - - // Fill the rfi strategy. - void fillStrategy(); - - //# Data members. - string itsName; - uint itsBufIndex; - uint itsNTimes; - uint itsNThreads; - string itsStrategyName; - uint itsWindowSize; - uint itsBufferSize; - double itsMemoryNeeded; //# Memory needed for data/flags - bool itsPulsarMode; - bool itsPedantic; - bool itsDoAutoCorr; - vector<DPBuffer> itsBuf; - NSTimer itsTimer; - NSTimer itsComputeTimer; //# move/flag timer - mutable FlagCounter itsFlagCounter; - vector<ThreadData> itsTD; - casacore::Vector<double> itsFreqs; - aoflagger::AOFlagger itsAOFlagger; - boost::scoped_ptr<aoflagger::Strategy> itsStrategy; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP_AOFlag/src/AOFlaggerStep.cc b/CEP/DP3/DPPP_AOFlag/src/AOFlaggerStep.cc deleted file mode 100644 index 33e711fbc5f..00000000000 --- a/CEP/DP3/DPPP_AOFlag/src/AOFlaggerStep.cc +++ /dev/null @@ -1,490 +0,0 @@ -//# AOFlaggerStep.cc: DPPP step class to flag data based on rficonsole -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: AOFlaggerStep.cc 31423 2015-04-03 14:06:21Z dijkema $ -//# -//# @author Andre Offringa, Ger van Diepen - -#include <lofar_config.h> -#include <DPPP_AOFlag/AOFlaggerStep.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <Common/StreamUtil.h> -#include <Common/OpenMP.h> - -#include <casacore/casa/OS/HostInfo.h> -#include <casacore/casa/OS/File.h> - -#include <aoflagger.h> - -#include <iostream> -#include <algorithm> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - AOFlaggerStep::AOFlaggerStep (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsName (prefix), - itsBufIndex (0), - itsNTimes (0), - itsMemoryNeeded(0), - itsFlagCounter (input->msName(), parset, prefix+"count."), - itsMoveTime (0), - itsFlagTime (0), - itsQualTime (0), - itsRfiStats () - { - itsStrategyName = parset.getString (prefix+"strategy", string()); - itsWindowSize = parset.getUint (prefix+"timewindow", 0); - itsMemory = parset.getUint (prefix+"memorymax", 0); - itsMemoryPerc = parset.getUint (prefix+"memoryperc", 0); - itsOverlap = parset.getUint (prefix+"overlapmax", 0); - // Also look for keyword overlap for backward compatibility. - if (itsOverlap == 0) { - itsOverlap = parset.getUint (prefix+"overlap", 0); - } - itsOverlapPerc = parset.getDouble (prefix+"overlapperc", -1); - itsPulsarMode = parset.getBool (prefix+"pulsar", false); - itsPedantic = parset.getBool (prefix+"pedantic", false); - itsDoAutoCorr = parset.getBool (prefix+"autocorr", true); - itsDoRfiStats = parset.getBool (prefix+"keepstatistics", true); - } - - AOFlaggerStep::~AOFlaggerStep() - {} - - DPStep::ShPtr AOFlaggerStep::makeStep (DPInput* input, - const ParameterSet& parset, - const std::string& prefix) - { - return DPStep::ShPtr(new AOFlaggerStep(input, parset, prefix)); - } - - void AOFlaggerStep::show (std::ostream& os) const - { - os << "AOFlaggerStep " << itsName << std::endl; - os << " strategy: " << itsStrategyName << std::endl; - os << " timewindow: " << itsWindowSize << std::endl; - os << " overlap: " << itsOverlap << std::endl; - os << " pulsar: " << itsPulsarMode << std::endl; - os << " pedantic: " << itsPedantic << std::endl; - os << " keepstatistics: " << itsDoRfiStats << std::endl; - os << " autocorr: " << itsDoAutoCorr << std::endl; - os << " nthreads (omp) " << OpenMP::maxThreads() << std::endl; - os << " max memory used "; - formatBytes(os, itsMemoryNeeded); - os << std::endl; - } - - void AOFlaggerStep::formatBytes(std::ostream& os, double bytes) { - int exp=0; - while (bytes >= 1024 && exp<5) { - bytes/=1024; - exp++; - } - - uint origPrec=os.precision(); - os.precision(1); - - if (exp==0) { - os<<fixed<<bytes<<" "<<"B"; - } else { - os<<fixed<<bytes<<" "<<"KMGTPE"[exp-1]<<"B"; - } - - os.precision(origPrec); - } - - void AOFlaggerStep::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - info().setWriteFlags(); - // Get nr of threads. - uint nthread = OpenMP::maxThreads(); - // Determine available memory. - double availMemory = HostInfo::memoryTotal() * 1024.; - // Determine how much memory can be used. - double memoryMax = itsMemory * 1024*1024*1024; - double memory = memoryMax; - if (itsMemoryPerc > 0) { - memory = itsMemoryPerc * availMemory / 100.; - if (memoryMax > 0 && memory > memoryMax) { - memory = memoryMax; - } - } else if (itsMemory <= 0) { - // Nothing given, so use available memory on this machine. - // Set 50% (max 2 GB) aside for other purposes. - memory = availMemory - std::min(0.5 * availMemory, 2.*1024*1024*1024); - } - // Determine how much buffer space is needed per time slot. - // The flagger needs 3 extra work buffers (data+flags) per thread. - double timeSize = (sizeof(Complex) + sizeof(bool)) * - (infoIn.nbaselines() + 3*nthread) * infoIn.nchan() * infoIn.ncorr(); - // If no overlap percentage is given, set it to 1%. - if (itsOverlapPerc < 0 && itsOverlap == 0) { - itsOverlapPerc = 1; - } - // If no time window given, determine it from the available memory. - if (itsWindowSize == 0) { - double nt = memory / timeSize; - if (itsOverlapPerc > 0) { - // Determine the overlap (add 0.5 for rounding). - // If itsOverLap is also given, it is the maximum. - double tw = nt / (1 + 2*itsOverlapPerc/100); - uint overlap = uint(itsOverlapPerc*tw/100 + 0.5); - if (itsOverlap == 0 || overlap < itsOverlap) { - itsOverlap = overlap; - } - } - itsWindowSize = uint(std::max(1., nt-2*itsOverlap)); - // Make the window size divide the nr of times nicely (if known). - // In that way we cannot have a very small last window. - if (infoIn.ntime() > 0) { - uint nwindow = 1 + (infoIn.ntime() - 1) / itsWindowSize; - itsWindowSize = 1 + (infoIn.ntime() - 1) / nwindow; - if (itsOverlapPerc > 0) { - uint overlap = uint(itsOverlapPerc*itsWindowSize/100 + 0.5); - if (overlap < itsOverlap) { - itsOverlap = overlap; - } - } - } - } - if (itsOverlap == 0) { - itsOverlap = uint(itsOverlapPerc*itsWindowSize/100); - } - // Check if it all fits in memory. - itsMemoryNeeded = (itsWindowSize + 2*itsOverlap) * timeSize; - ASSERTSTR (itsMemoryNeeded < availMemory, - "Timewindow " << itsWindowSize - << " and/or overlap " << itsOverlap - << ' ' << memory - << " too large for available memory " << availMemory); - // Size the buffer (need overlap on both sides). - itsBuf.resize (itsWindowSize + 2*itsOverlap); - // Initialize the flag counters. - itsFlagCounter.init (getInfo()); - itsFreqs = infoIn.chanFreqs(); - // Fill the strategy (used by all threads) - // (A thread does not need a private strategy; it is - // safe to share one among different threads.) - fillStrategy(); - } - - void AOFlaggerStep::showCounts (std::ostream& os) const - { - os << endl << "Flags set by AOFlaggerStep " << itsName; - os << endl << "===========================" << endl; - itsFlagCounter.showBaseline (os, itsNTimes); - itsFlagCounter.showChannel (os, itsNTimes); - itsFlagCounter.showCorrelation (os, itsNTimes); - } - - void AOFlaggerStep::showTimings (std::ostream& os, double duration) const - { - double flagDur = itsTimer.getElapsed(); - os << " "; - FlagCounter::showPerc1 (os, flagDur, duration); - os << " AOFlaggerStep " << itsName << endl; - os << " "; - // move time and flag time are sum of all threads. - // Scale them to a single elapsed time. - double factor = (itsComputeTimer.getElapsed() / - (itsMoveTime + itsFlagTime + itsQualTime)); - FlagCounter::showPerc1 (os, itsMoveTime*factor, flagDur); - os << " of it spent in shuffling data" << endl; - os << " "; - FlagCounter::showPerc1 (os, itsFlagTime*factor, flagDur); - os << " of it spent in calculating flags" << endl; - if (itsDoRfiStats) { - os << " "; - FlagCounter::showPerc1 (os, itsQualTime*factor + itsQualityTimer.getElapsed(), - flagDur); - os << " of it spent in making quality statistics" << endl; - } - } - - // Alternative strategy is to flag in windows - // 0 .. n+2m - // n .. 2n+2m - // 2n .. 3n+2m etc. - // and also update the flags in the overlaps - bool AOFlaggerStep::process (const DPBuffer& buf) - { - itsTimer.start(); - // Accumulate in the time window until the window and overlap are full. - itsNTimes++; - itsBuf[itsBufIndex].copy (buf); - ++itsBufIndex; - if (itsBufIndex == itsWindowSize+2*itsOverlap) { - flag(2*itsOverlap); - } - itsTimer.stop(); - return true; - } - - void AOFlaggerStep::finish() - { - cerr << " " << itsBufIndex << " time slots to finish in AOFlaggerStep ..." - << endl; - itsTimer.start(); - // Set window size to all entries left. - itsWindowSize = itsBufIndex; - if (itsWindowSize > 0) { - // Flag the remaining time slots (without right overlap). - flag (0); - } - itsBuf.clear(); - itsTimer.stop(); - // Let the next step finish its processing. - getNextStep()->finish(); - } - - void AOFlaggerStep::addToMS (const string& msName) - { - itsTimer.start(); - if (itsDoRfiStats) { - itsQualityTimer.start(); - itsAOFlagger.WriteStatistics(*itsRfiStats, msName); - itsQualityTimer.stop(); - } - itsTimer.stop(); - getPrevStep()->addToMS (msName); - } - - void AOFlaggerStep::flag (uint rightOverlap) - { - // Get the sizes of the axes. - // Note: OpenMP 2.5 needs signed iteration variables. - int nrbl = itsBuf[0].getData().shape()[2]; - uint ncorr = itsBuf[0].getData().shape()[0]; - ASSERTSTR (ncorr==4, "AOFlaggerStep can only handle all 4 correlations"); - // Get antenna numbers in case applyautocorr is true. - const Vector<Int>& ant1 = getInfo().getAnt1(); - const Vector<Int>& ant2 = getInfo().getAnt2(); - itsComputeTimer.start(); - // Now flag each baseline for this time window. - // The baselines can be processed in parallel. -#pragma omp parallel - { - // Create thread-private counter object. - FlagCounter counter; - counter.init (getInfo()); - - // Create a statistics object for all polarizations. - std::vector<double> scanTimes(itsBuf.size()); - for (size_t i=0; i<itsBuf.size(); ++i) { - scanTimes[i] = itsBuf[i].getTime(); - } - aoflagger::QualityStatistics rfiStats = - itsAOFlagger.MakeQualityStatistics (scanTimes.data(), - scanTimes.size(), - itsFreqs.data(), - itsFreqs.size(), - 4, false); // no histograms - - // The for loop can be parallellized. This must be done dynamically, - // because the execution times of iterations can vary. -#pragma omp for schedule(dynamic) - // GCC-4.3 only supports OpenMP 2.5 that needs signed iteration - // variables. - for (int ib=0; ib<nrbl; ++ib) { - // Do autocorrelations only if told so. - if (ant1[ib] == ant2[ib]) { - if (itsDoAutoCorr) { - flagBaseline (0, itsWindowSize+rightOverlap, 0, ib, - counter, rfiStats); - } - } else { - flagBaseline (0, itsWindowSize+rightOverlap, 0, ib, - counter, rfiStats); - } - } // end of OMP for -#pragma omp critical(aorflagger_updatecounts) - { - // Add the counters to the overall object. - itsFlagCounter.add (counter); - if (itsDoRfiStats) { - itsQualityTimer.stop(); - // Add the rfi statistics to the global object. - if (itsRfiStats == 0) { - itsRfiStats.reset(new aoflagger::QualityStatistics(rfiStats)); - } else { - (*itsRfiStats) += rfiStats; - } - itsQualityTimer.start(); - } - } - } // end of OMP parallel - itsComputeTimer.stop(); - itsTimer.stop(); - // Let the next step process the buffers. - // If possible, discard the buffer processed to minimize memory usage. - for (uint i=0; i<itsWindowSize; ++i) { - getNextStep()->process (itsBuf[i]); - /// itsBuf[i] = DPBuffer(); - ///cout << "cleared buffer " << i << endl; - } - itsTimer.start(); - // Shift the buffers still needed to the beginning of the vector. - // This is a bit easier than keeping a wrapped vector. - // Note it is a cheap operation, because shallow copies are made. - for (uint i=0; i<rightOverlap; ++i) { - itsBuf[i].copy (itsBuf[i+itsWindowSize]); - ///cout << "moved buffer " <<i+itsWindowSize<<" to "<< i << endl; - } - itsBufIndex = rightOverlap; - } - - void AOFlaggerStep::flagBaseline (uint leftOverlap, uint windowSize, - uint rightOverlap, uint bl, - FlagCounter& counter, - aoflagger::QualityStatistics& rfiStats) - { - NSTimer moveTimer, flagTimer, qualTimer; - moveTimer.start(); - // Get the sizes of the axes. - uint ntime = leftOverlap + windowSize + rightOverlap; - uint nchan = itsBuf[0].getData().shape()[1]; - uint blsize = nchan * itsBuf[0].getData().shape()[0]; - // Fill the rficonsole buffers and flag. - // Create the objects for the real and imaginary data of all corr. - aoflagger::ImageSet imageSet = - itsAOFlagger.MakeImageSet(ntime, nchan, 8); - aoflagger::FlagMask origFlags = - itsAOFlagger.MakeFlagMask(ntime, nchan); - const uint iStride = imageSet.HorizontalStride(); - const uint fStride = origFlags.HorizontalStride(); - for (uint i=0; i<ntime; ++i) { - const Complex* data = itsBuf[i].getData().data() + bl*blsize; - const bool* flags = itsBuf[i].getFlags().data() + bl*blsize; - for (uint j=0; j<nchan; ++j) { - for (uint p=0; p!=4; ++p) { - imageSet.ImageBuffer(p*2 )[i + j*iStride] = data->real(); - imageSet.ImageBuffer(p*2+1)[i + j*iStride] = data->imag(); - data++; - } - origFlags.Buffer()[i + j*fStride] = *flags; - flags += 4; - } - } - // Execute the strategy to do the flagging. - moveTimer.stop(); - flagTimer.start(); - aoflagger::FlagMask rfiMask = itsAOFlagger.Run(*itsStrategy, imageSet); - flagTimer.stop(); - // Put back the true flags and count newly set flags. - moveTimer.start(); - for (uint i=leftOverlap; i<windowSize+leftOverlap; ++i) { - bool* flags = itsBuf[i].getFlags().data() + bl*blsize; - for (uint j=0; j<nchan; ++j) { - // Only set if not already set. - // If any corr is newly set, set all corr. - if (! flags[0]) { - bool setFlag = true; - if (rfiMask.Buffer()[i + j*fStride]) { - counter.incrCorrelation(0); - counter.incrCorrelation(1); - counter.incrCorrelation(2); - counter.incrCorrelation(3); - } else { - setFlag = false; - } - if (setFlag) { - counter.incrBaseline(bl); - counter.incrChannel(j); - for (int k=0; k<4; ++k) { - flags[k] = true; - } - } - } - flags += 4; - } - } - moveTimer.stop(); - // Update the RFI statistics if needed. - if (itsDoRfiStats) { - qualTimer.start(); - addStats (rfiStats, imageSet, rfiMask, origFlags, bl); - qualTimer.stop(); - } -#pragma omp critical(aorflagger_updatetimers) - { - // Add the timings. - itsMoveTime += moveTimer.getElapsed(); - itsFlagTime += flagTimer.getElapsed(); - itsQualTime += qualTimer.getElapsed(); - } // end of OMP critical - } - - void AOFlaggerStep::addStats (aoflagger::QualityStatistics& rfiStats, - const aoflagger::ImageSet& values, - const aoflagger::FlagMask& rfiMask, const aoflagger::FlagMask& origMask, - int bl) - { - itsAOFlagger.CollectStatistics(rfiStats, values, rfiMask, origMask, - getInfo().getAnt1()[bl], getInfo().getAnt2()[bl]); - } - - void AOFlaggerStep::fillStrategy () - { - if (! itsStrategyName.empty()) { - File file(itsStrategyName); - if (! file.exists()) { - file = File("$LOFARROOT/share/rfistrategies/" + itsStrategyName); - if (! file.exists()) { - THROW (Exception, "Unknown rfistrategy file " << itsStrategyName); - } - } - itsStrategy.reset(new aoflagger::Strategy - (itsAOFlagger.LoadStrategy(file.path().absoluteName()))); - } else { - double centralFrequency = 0.5*(itsFreqs[0] + itsFreqs[itsFreqs.size()-1]); - double timeRes; - if (itsBuf.size() >=2 ) { - timeRes = (itsBuf[itsBuf.size()-1].getTime() - - itsBuf[0].getTime()) / (itsBuf.size()-1); - } else { - timeRes = 0.0; - } - double frequencyRes; - if (itsFreqs.size() >= 2) { - frequencyRes = (itsFreqs[itsFreqs.size()-1] - - itsFreqs[0]) / (itsFreqs.size()-1); - } else { - frequencyRes = 0.0; - } - itsStrategy.reset(new aoflagger::Strategy - (itsAOFlagger.MakeStrategy(aoflagger::LOFAR_TELESCOPE, - aoflagger::StrategyFlags::NONE, - centralFrequency, - timeRes, - frequencyRes))); - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP_AOFlag/src/CMakeLists.txt b/CEP/DP3/DPPP_AOFlag/src/CMakeLists.txt deleted file mode 100644 index 3bdb538f6fc..00000000000 --- a/CEP/DP3/DPPP_AOFlag/src/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# $Id: CMakeLists.txt 30439 2014-11-19 15:04:34Z dijkema $ - -include(LofarPackageVersion) - -lofar_add_library(dppp_aoflag - Package__Version.cc - AOFlaggerStep.cc -# SlidingFlagger.cc - Register.cc -) - -lofar_add_bin_program(versiondppp_aoflag versiondppp_aoflag.cc) diff --git a/CEP/DP3/DPPP_AOFlag/src/Register.cc b/CEP/DP3/DPPP_AOFlag/src/Register.cc deleted file mode 100644 index d7ede6b1fad..00000000000 --- a/CEP/DP3/DPPP_AOFlag/src/Register.cc +++ /dev/null @@ -1,39 +0,0 @@ -//# Register.cc: Register steps in DPPP -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: AOFlaggerStep.cc 31423 2015-04-03 14:06:21Z dijkema $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP_AOFlag/Register.h> -#include <DPPP_AOFlag/AOFlaggerStep.h> -//#include <DPPP_AOFlag/SlidingFlagger.h> -#include <DPPP/DPRun.h> - -// Define the function to make the AOFlaggerStep 'constructor' known. -// Its suffix must be the (lowercase) name of the package (library). -// Also make the SlidingFlagger known. -void register_aoflag() -{ - LOFAR::DPPP::DPRun::registerStepCtor ("aoflag", - LOFAR::DPPP::AOFlaggerStep::makeStep); - // LOFAR::DPPP::DPRun::registerStepCtor ("aoflag.sliding", - // LOFAR::DPPP::SlidingFlagger::makeStep); -} diff --git a/CEP/DP3/DPPP_AOFlag/src/SlidingFlagger.cc b/CEP/DP3/DPPP_AOFlag/src/SlidingFlagger.cc deleted file mode 100644 index 11f20c4c67e..00000000000 --- a/CEP/DP3/DPPP_AOFlag/src/SlidingFlagger.cc +++ /dev/null @@ -1,369 +0,0 @@ -//# SlidingFlagger.cc: DPPP step class to flag data using a sliding window -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: SlidingFlagger.cc 30697 2015-01-14 12:17:14Z diepen $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP_AOFlag/SlidingFlagger.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <Common/StreamUtil.h> -#include <Common/OpenMP.h> - -#include <casacore/casa/OS/File.h> -#include <casacore/casa/OS/HostInfo.h> - -#include <AOFlagger/msio/image2d.h> -#include <AOFlagger/msio/mask2d.h> -#include <AOFlagger/msio/timefrequencydata.h> -#include <AOFlagger/strategy/actions/changeresolutionaction.h> -#include <AOFlagger/strategy/actions/combineflagresultsaction.h> -#include <AOFlagger/strategy/actions/foreachcomplexcomponentaction.h> -#include <AOFlagger/strategy/actions/foreachpolarisationaction.h> -#include <AOFlagger/strategy/actions/frequencyselectionaction.h> -#include <AOFlagger/strategy/actions/iterationaction.h> -#include <AOFlagger/strategy/actions/setflaggingaction.h> -#include <AOFlagger/strategy/actions/setimageaction.h> -#include <AOFlagger/strategy/actions/slidingwindowfitaction.h> -#include <AOFlagger/strategy/actions/statisticalflagaction.h> -#include <AOFlagger/strategy/actions/strategyaction.h> -#include <AOFlagger/strategy/actions/sumthresholdaction.h> -#include <AOFlagger/strategy/actions/timeselectionaction.h> -#include <AOFlagger/strategy/control/artifactset.h> -#include <AOFlagger/strategy/control/strategyreader.h> - -#include <iostream> -#include <algorithm> - -using namespace casacore; -using namespace rfiStrategy; - -namespace LOFAR { - namespace DPPP { - - SlidingFlagger::SlidingFlagger (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsName (prefix), - itsBufIndex (0), - itsNTimes (0), - itsNThreads (OpenMP::maxThreads()), - itsMemoryNeeded(0), - itsFlagCounter (input->msName(), parset, prefix+"count.") - { - itsStrategyName = parset.getString (prefix+"strategy", string()); - itsWindowSize = parset.getUint (prefix+"timewindow", 0); - itsBufferSize = parset.getUint (prefix+"buffersize", 0); - itsPulsarMode = parset.getBool (prefix+"pulsar", false); - itsPedantic = parset.getBool (prefix+"pedantic", false); - itsDoAutoCorr = parset.getBool (prefix+"autocorr", true); - ASSERT (itsWindowSize > 0 && itsBufferSize > 0); - if (itsBufferSize > itsWindowSize) { - THROW (Exception, "timewindow < buffersize, so AOFlagger should " - "be used instead of SlidingFlagger"); - } - } - - SlidingFlagger::~SlidingFlagger() - {} - - DPStep::ShPtr SlidingFlagger::makeStep (DPInput* input, - const ParameterSet& parset, - const std::string& prefix) - { - return DPStep::ShPtr(new SlidingFlagger(input, parset, prefix)); - } - - void SlidingFlagger::show (std::ostream& os) const - { - os << "SlidingFlagger " << itsName << std::endl; - os << " strategy: " << itsStrategyName << std::endl; - os << " timewindow: " << itsWindowSize << std::endl; - os << " buffersize: " << itsBufferSize << std::endl; - os << " pulsar: " << itsPulsarMode << std::endl; - os << " pedantic: " << itsPedantic << std::endl; - os << " autocorr: " << itsDoAutoCorr << std::endl; - os << " nthreads (omp) " << itsNThreads << std::endl; - os << " memory used " << itsMemoryNeeded << std::endl; - } - - void SlidingFlagger::updateInfo (const DPInfo& infoIn) - { - ASSERTSTR (infoIn.ncorr()==4, - "SlidingFlagger can only handle all 4 correlations"); - info() = infoIn; - info().setNeedVisData(); - info().setWriteFlags(); - // Determine available memory. - double availMemory = HostInfo::memoryTotal() * 1024.; - // Determine how much buffer space is needed per time slot. - // The flagger needs 3 extra work buffers (data+flags) per thread. - double imgSize = 8*sizeof(num_t) * itsWindowSize * infoIn.nchan(); - double bufSize = (infoIn.nbaselines() * infoIn.nchan() * 4 * - (sizeof(Complex) + sizeof(bool))); - // Check if it all fits in memory. - itsMemoryNeeded = (infoIn.nbaselines() * imgSize + - itsBufferSize * bufSize); - ASSERTSTR (itsMemoryNeeded < availMemory, - "timewindow " << itsWindowSize - << " and buffersize " << itsBufferSize - << ' ' << itsMemoryNeeded - << " too large for available memory " << availMemory); - // Create the AOFlagger objects for each baseline. - // Fill them with 0 data and True flags. - ///const Vector<Int>& ant1 = getInfo().getAnt1(); - ///const Vector<Int>& ant2 = getInfo().getAnt2(); - ///int nbl = ant1.size(); - ///int nchan = getInfo().nchan(); - // Create the rficonsole Image2D objects for each baseline to flag. - // The axes are freq,time (time varies slowest) to make the shifting - // in flagBaseline easier. Note that AORFlagger uses time,freq, but - // the order does not matter for rficonsole. - ///itsBLData.resize (nbl); - ///for (int i=0; i<nbl; ++i) { - ///if (itsDoAutoCorr || ant1[i] != ant2[i]) { - ///} - ///} - // Fill the strategy (used by all threads) - // (A thread does not need a private strategy; it is - // safe to share one among different threads.) - fillStrategy(); - itsFreqs = infoIn.chanFreqs(); - // Create the counters for all possible threads. - itsTD.resize (itsNThreads); - for (uint i=0; i<itsNThreads; ++i) { - itsTD[i].flagCounter.init (getInfo()); - } - itsBuf.resize (itsBufferSize); - itsFlagCounter.init (getInfo()); - } - - void SlidingFlagger::showCounts (std::ostream& os) const - { - for (size_t i=0; i<itsTD.size(); ++i) { - itsFlagCounter.add (itsTD[i].flagCounter); - } - os << endl << "Flags set by SlidingFlagger " << itsName; - os << endl << "============================" << endl; - itsFlagCounter.showBaseline (os, itsNTimes); - itsFlagCounter.showChannel (os, itsNTimes); - itsFlagCounter.showCorrelation (os, itsNTimes); - } - - void SlidingFlagger::showTimings (std::ostream& os, double duration) const - { - double moveTime = 0; - double flagTime = 0; - for (size_t i=0; i<itsNThreads; ++i) { - moveTime += itsTD[i].moveTimer.getElapsed(); - flagTime += itsTD[i].flagTimer.getElapsed(); - } - double flagDur = itsTimer.getElapsed(); - os << " "; - FlagCounter::showPerc1 (os, flagDur, duration); - os << " SlidingFlagger " << itsName << endl; - os << " "; - // move time and flag time are sum of all threads. - // Scale them to a single elapsed time. - double factor = itsComputeTimer.getElapsed() / (moveTime + flagTime); - FlagCounter::showPerc1 (os, moveTime*factor, flagDur); - os << " of it spent in shuffling data" << endl; - os << " "; - FlagCounter::showPerc1 (os, flagTime*factor, flagDur); - os << " of it spent in calculating flags" << endl; - } - - bool SlidingFlagger::process (const DPBuffer& buf) - { - itsTimer.start(); - itsNTimes++; - if (itsBufferSize == 1) { - itsBuf[0].referenceFilled (buf); - itsBufIndex = 1; - } else { - itsBuf[itsBufIndex++].copy (buf); - } - if (itsBufIndex == itsBufferSize) { - flag(); - } - itsTimer.stop(); - return true; - } - - void SlidingFlagger::finish() - { - cerr << " " << itsBufIndex << " time slots to finish in SlidingFlagger ..." - << endl; - itsTimer.start(); - if (itsBufIndex > 0) { - // Flag the remaining time slots. - flag(); - } - itsTimer.stop(); - // Let the next step finish its processing. - getNextStep()->finish(); - } - - void SlidingFlagger::flag() - { - // Get the sizes of the axes. - // Note: OpenMP 2.5 needs signed iteration variables. - int nrbl = itsBuf[0].getData().shape()[2]; - // Get antenna numbers in case applyautocorr is true. - const Vector<Int>& ant1 = getInfo().getAnt1(); - const Vector<Int>& ant2 = getInfo().getAnt2(); - itsComputeTimer.start(); - // Now flag each baseline for this time window. - // The baselines can be processed in parallel. -#pragma omp parallel - { - // The for loop can be parallellized. This must be done dynamically, - // because the execution times of iterations can vary. -#pragma omp for schedule(dynamic) - for (int ib=0; ib<nrbl; ++ib) { - // Flag baseline only if told so. - // Do autocorrelations only if told so. - ///if (itsBLData[ib].realXX != 0) { - if (ant1[ib] == ant2[ib]) { - if (itsDoAutoCorr) { - flagBaseline (ib, itsTD[OpenMP::threadNum()]); - } - } else { - flagBaseline (ib, itsTD[OpenMP::threadNum()]); - } - } // end of OMP for - } // end of OMP parallel - itsComputeTimer.stop(); - itsTimer.stop(); - // Let the next step process the buffers. - for (uint i=0; i<itsBufIndex; ++i) { - getNextStep()->process (itsBuf[i]); - } - itsTimer.start(); - itsBufIndex = 0; - } - - void SlidingFlagger::flagBaseline (uint bl, ThreadData& td) - { - td.moveTimer.start(); - // Get the sizes of the axes. - uint ntime = itsWindowSize; - uint nchan = itsBuf[0].getData().shape()[1]; - uint blsize = nchan * itsBuf[0].getData().shape()[0]; - // Fill the rficonsole buffers and flag. - // Create the objects for the real and imaginary data of all corr. - aoflagger::ImageSet imageSet = - itsAOFlagger.MakeImageSet(ntime, nchan, 8); - aoflagger::FlagMask origFlags = - itsAOFlagger.MakeFlagMask(ntime, nchan); - const uint iStride = imageSet.HorizontalStride(); - const uint fStride = origFlags.HorizontalStride(); - for (uint i=0; i<ntime; ++i) { - const Complex* data = itsBuf[i].getData().data() + bl*blsize; - const bool* flags = itsBuf[i].getFlags().data() + bl*blsize; - for (uint j=0; j<nchan; ++j) { - for (uint p=0; p<4; ++p) { - imageSet.ImageBuffer(p*2 )[i + j*iStride] = data->real(); - imageSet.ImageBuffer(p*2+1)[i + j*iStride] = data->imag(); - data++; - } - origFlags.Buffer()[i + j*fStride] = *flags; - flags += 4; - } - } - // Execute the strategy to do the flagging. - td.moveTimer.stop(); - td.flagTimer.start(); - aoflagger::FlagMask rfiMask = itsAOFlagger.Run(*itsStrategy, imageSet); - td.flagTimer.stop(); - // Put back the true flags and count newly set flags. - td.moveTimer.start(); - for (uint i=0; i<itsBufIndex; ++i) { - bool* flags = itsBuf[i].getFlags().data() + bl*blsize; - for (uint j=0; j<nchan; ++j) { - // Only set if not already set. - // Note that if first corr flag is true, all are true. - // If any corr is newly set, set all corr. - if (! flags[0]) { - bool setFlag = true; - if (rfiMask.Buffer()[i + j*fStride]) { - td.flagCounter.incrCorrelation(0); - td.flagCounter.incrCorrelation(1); - td.flagCounter.incrCorrelation(2); - td.flagCounter.incrCorrelation(3); - } else { - setFlag = false; - } - if (setFlag) { - td.flagCounter.incrBaseline(bl); - td.flagCounter.incrChannel(j); - for (int k=0; k<4; ++k) { - flags[k] = true; - } - } - } - flags += 4; - } - } - td.moveTimer.stop(); - } - - void SlidingFlagger::fillStrategy() - { - if (! itsStrategyName.empty()) { - File file(itsStrategyName); - if (! file.exists()) { - file = File("$LOFARROOT/share/rfistrategies/" + itsStrategyName); - if (! file.exists()) { - THROW (Exception, "Unknown rfistrategy file " << itsStrategyName); - } - } - itsStrategy.reset(new aoflagger::Strategy - (itsAOFlagger.LoadStrategy(file.path().absoluteName()))); - } else { - double centralFrequency = 0.5*(itsFreqs[0] + itsFreqs[itsFreqs.size()-1]); - double timeRes; - if (itsBuf.size() >=2 ) { - timeRes = (itsBuf[itsBuf.size()-1].getTime() - - itsBuf[0].getTime()) / (itsBuf.size()-1); - } else { - timeRes = 0.0; - } - double frequencyRes; - if (itsFreqs.size() >= 2) { - frequencyRes = (itsFreqs[itsFreqs.size()-1] - - itsFreqs[0]) / (itsFreqs.size()-1); - } else { - frequencyRes = 0.0; - } - itsStrategy.reset(new aoflagger::Strategy - (itsAOFlagger.MakeStrategy(aoflagger::LOFAR_TELESCOPE, - aoflagger::StrategyFlags::NONE, - centralFrequency, - timeRes, - frequencyRes))); - } - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP_AOFlag/test/CMakeLists.txt b/CEP/DP3/DPPP_AOFlag/test/CMakeLists.txt deleted file mode 100644 index 03858a1ffd3..00000000000 --- a/CEP/DP3/DPPP_AOFlag/test/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -# $Id: CMakeLists.txt 26355 2013-09-04 11:51:07Z dijkema $ - -include(LofarCTest) - -# Do not use lofar_add_test, because libaoflaggerstep should not be linked in. -add_executable (tAOFlaggerStep tAOFlaggerStep.cc) -target_link_libraries (tAOFlaggerStep ${_libs} ${LOFAR_EXTRA_LIBRARIES}) -add_test (tAOFlaggerStep ${CMAKE_SOURCE_DIR}/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.sh) diff --git a/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.cc b/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.cc deleted file mode 100644 index 98bbae18d7d..00000000000 --- a/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.cc +++ /dev/null @@ -1,263 +0,0 @@ -//# tAOFlaggerStep.cc: Test program for class AOFlaggerStep -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: tAOFlaggerStep.cc 24221 2013-03-12 12:24:48Z diepen $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP_AOFlag/AOFlaggerStep.h> -#include <DPPP/DPRun.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// It can only set all flags to true or all to false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nant, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nant*(nant+1)/2), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - { - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(itsNBl); - Vector<Int> ant2(itsNBl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<itsNBl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos (4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanFreqs(nchan); - Vector<double> chanWidth(nchan, 100000.); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - cout << "Input step " << itsCount << ' '<< itsCount*5+2<<endl; - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(1.6, 0.9); - } - if (itsCount == 5) { - data += Complex(10.,10.); - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // They are not averaged, thus only 1 time per row. - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = itsFlag; - buf.setFullResFlags (fullResFlags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) - // Use startchan=0 and timeInterval=5 - { info().init (itsNCorr, itsNChan, itsNTime, 100, 5, string(), string()); } - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nant, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nant*(nant+1)/2), itsNChan(nchan), - itsNCorr(ncorr) - {} -private: - virtual bool process (const DPBuffer& buf) - { - cout << "Output step " << itsCount << ' '<<itsCount*5+2<<endl; - // Fill expected result in similar way as TestInput. - Cube<Complex> result(itsNCorr,itsNChan,itsNBl); - for (int i=0; i<int(result.size()); ++i) { - result.data()[i] = Complex(1.6, 0.9); - } - if (itsCount == 5) { - result += Complex(10.,10.); - } - // Check the result. - ///cout << buf.getData()<< result; - ASSERT (allNear(real(buf.getData()), real(result), 1e-10)); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-10)); - ASSERT (near(buf.getTime(), 2+5.*itsCount)); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNChan); - ASSERT (int(info.nchan())==itsNChan); - ASSERT (int(info.ntime())==itsNTime); - ASSERT (info.startTime()==100); - ASSERT (info.timeInterval()==5); - ASSERT (int(info.nchanAvg())==1); - ASSERT (int(info.ntimeAvg())==1); - ASSERT (int(info.chanFreqs().size()) == itsNChan); - ASSERT (int(info.chanWidths().size()) == itsNChan); - ASSERT (info.msName().empty()); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set the info in each step. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); - DPStep::ShPtr step = step1; - while (step) { - step->showCounts (cout); - step = step->getNextStep(); - } -} - -// Test simple flagging with or without preflagged points. -void test1(int ntime, int nant, int nchan, int ncorr, bool flag, int threshold) -{ - cout << "test1: ntime=" << ntime << " nrant=" << nant << " nchan=" << nchan - << " ncorr=" << ncorr << " threshold=" << threshold << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nant, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("timewindow", "1"); - DPStep::ShPtr step2 = DPRun::findStepCtor("aoflag")(in, parset, ""); - DPStep::ShPtr step3(new TestOutput(ntime, nant, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - step2->show (cout); - execute (step1); -} - -// Test applyautocorr flagging with or without preflagged points. -void test2(int ntime, int nant, int nchan, int ncorr, bool flag, int threshold) -{ - cout << "test2: ntime=" << ntime << " nrant=" << nant << " nchan=" << nchan - << " ncorr=" << ncorr << " threshold=" << threshold << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nant, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("timewindow", "4"); - parset.add ("overlapmax", "1"); - DPStep::ShPtr step2 = DPRun::findStepCtor("aoflag")(in, parset, ""); - DPStep::ShPtr step3(new TestOutput(ntime, nant, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - - -int main() -{ - INIT_LOGGER ("tAOFlaggerStep"); - try { - - for (uint i=0; i<2; ++i) { - test1(10, 2, 32, 4, false, 1); - test1(10, 5, 32, 4, true, 1); - test2( 4, 2, 8, 4, false, 100); - test2(10, 5, 32, 4, true, 1); - test2( 8, 2, 8, 4, false, 100); - test2(14, 2, 8, 4, false, 100); - /// test2(99, 8, 64, 4, false, 100); - } - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.run b/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.run deleted file mode 100755 index 1678dd86f1e..00000000000 --- a/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.run +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# Define the path for finding the library. -#LD_LIBRARY_PATH=../src:/Users/diepen/external/lib:$LD_LIBRARYPATH -#DYLD_LIBRARY_PATH=../src:/Users/diepen/external/lib:$DYLD_LIBRARYPATH -LD_LIBRARY_PATH=../src:$LD_LIBRARY_PATH -DYLD_LIBRARY_PATH=../src:$DYLD_LIBRARY_PATH -export LD_LIBRARY_PATH -export DYLD_LIBRARY_PATH -echo $LD_LIBRARY_PATH -echo $DYLD_LIBRARY_PATH - -./tAOFlaggerStep diff --git a/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.sh b/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.sh deleted file mode 100755 index d016046fd67..00000000000 --- a/CEP/DP3/DPPP_AOFlag/test/tAOFlaggerStep.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tAOFlaggerStep diff --git a/CEP/DP3/DPPP_DDECal/CMakeLists.txt b/CEP/DP3/DPPP_DDECal/CMakeLists.txt deleted file mode 100644 index f31f392f3d0..00000000000 --- a/CEP/DP3/DPPP_DDECal/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# $Id: CMakeLists.txt 27640 2013-12-04 08:02:49Z diepen $ - -lofar_package(DPPP_DDECal 1.0 DEPENDS DPPP) - -include(LofarFindPackage) -lofar_find_package(Casacore COMPONENTS casa ms tables REQUIRED) -lofar_find_package(Armadillo REQUIRED) -lofar_find_package(Boost REQUIRED COMPONENTS date_time) - -add_subdirectory(include/DPPP_DDECal) -add_subdirectory(src) -add_subdirectory(test) diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/CMakeLists.txt b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/CMakeLists.txt deleted file mode 100644 index 37345b4307e..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -# $Id: CMakeLists.txt 30990 2015-02-12 12:27:47Z diepen $ - -# List of header files that will be installed. -set(inst_HEADERS - Register.h DDECal.h MultiDirSolver.h H5Parm.h - Constraint.h KernelSmoother.h ScreenConstraint.h TECConstraint.h - PiercePoint.h Matrix2x2.h PieceWisePhaseFitter.h - RotationConstraint.h RotationAndDiagonalConstraint.h - SmoothnessConstraint.h ) - -# Create symbolic link to include directory. -execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_BINARY_DIR}/include/${PACKAGE_NAME}) - -# Install header files. -#install(FILES ${inst_HEADERS} DESTINATION include/${PACKAGE_NAME}) diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Constraint.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Constraint.h deleted file mode 100644 index b9af08e49f4..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Constraint.h +++ /dev/null @@ -1,167 +0,0 @@ -#ifndef CONSTRAINT_H -#define CONSTRAINT_H - -#include <complex> -#include <memory> -#include <set> -#include <vector> -#include <ostream> - -/** - * This class is the base class for classes that implement a constraint on - * calibration solutions. Constraints are used to increase - * the converge of calibration by applying these inside the solving step. - * - * The MultiDirSolver class uses this class for constrained calibration. - */ -class Constraint -{ -public: - typedef std::complex<double> dcomplex; - struct Result - { - public: - std::vector<double> vals; - std::vector<double> weights; - std::string axes; // Comma-separated string with axis names, fastest varying last - std::vector<size_t> dims; - std::string name; - }; - - virtual ~Constraint() { } - - /** - * Function that initializes the constraint for the next calibration iteration. - * It should be called each time all antenna solutions have been calculated, - * but before the constraint has been applied to all those antenna solutions. - * - * Unlike Apply(), this method is not thread safe. - * - * @param bool This can be used to specify whether the previous solution "step" is - * smaller than the requested precision, i.e. calibration with the constrained - * has converged. This allows a constraint to apply - * its constraint in steps: apply a better-converging constraint as long as the - * solutions are far from the correct answer, then switch to a different constraint - * when hasReachedPrecision=true. - */ - virtual void PrepareIteration(bool /*hasReachedPrecision*/, size_t /*iteration*/, bool /*finalIter*/) { } - - /** - * Whether the constraint has been satisfied. The calibration process will continue - * at least as long as Satisfied()=false, and performs at least one more iteration - * after Satisfied()=true. Together with SetPrecisionReached(), this - * can make the algorithm change the constraining method based on amount of - * convergence. - */ - virtual bool Satisfied() const { return true; } - - /** - * This method applies the constraints to the solutions. - * @param solutions is an array of array, such that: - * - solutions[ch] is a pointer for channelblock ch to antenna x directions x pol solutions. - * - pol is the dimension with the fastest changing index. - * @param time Central time of interval. - */ - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, std::ostream* statStream) = 0; - - /** - * Initialize the dimensions for the constraint. Should be overridden when - * something more than assigning dimensions is needed (e.g. resizing vectors). - * Weights are initialized to 1. here. - */ - virtual void InitializeDimensions(size_t nAntennas, - size_t nDirections, - size_t nChannelBlocks) - { - _nAntennas = nAntennas; - _nDirections = nDirections; - _nChannelBlocks = nChannelBlocks; - } - - /** - * Set weights. The vector should contain an array of size nAntennas * nChannelBlocks, - * where the channel index varies fastest. - */ - virtual void SetWeights(const std::vector<double> &) {} - - virtual void showTimings (std::ostream&, double) const {} - -protected: - size_t _nAntennas, _nDirections, _nChannelBlocks; -}; - -/** - * This class constraints the amplitudes of the solution to be unity, but - * keeps the phase. - */ -class PhaseOnlyConstraint : public Constraint -{ -public: - PhaseOnlyConstraint() {}; - - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, - std::ostream* statStream); -}; - -/** - * This class constraints the phases of the solution to be zero, but - * keeps the amplitude information. - */ -class AmplitudeOnlyConstraint : public Constraint -{ -public: - AmplitudeOnlyConstraint() {}; - - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, - std::ostream* statStream); -}; - -class DiagonalConstraint : public Constraint -{ -public: - DiagonalConstraint(size_t polsPerSolution) : _polsPerSolution(polsPerSolution) {}; - - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, - std::ostream* statStream); -private: - const size_t _polsPerSolution; -}; - -/** - * This constraint averages the solutions of a given list of antennas, - * so that they have equal solutions. - * - * The DDE solver uses this constraint to average the solutions of the core - * antennas. Core antennas are determined by a given maximum distance from - * a reference antenna. The reference antenna is by default the first - * antenna. This constraint is meant to force all core stations to - * have the same solution, thereby decreasing the noise in their solutions. - */ -class CoreConstraint : public Constraint -{ -public: - CoreConstraint() { } - - void initialize(const std::set<size_t>& coreAntennas) - { - _coreAntennas = coreAntennas; - } - - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, - std::ostream* statStream); - -private: - std::set<size_t> _coreAntennas; -}; - -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/DDECal.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/DDECal.h deleted file mode 100644 index b6185b0cc0f..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/DDECal.h +++ /dev/null @@ -1,176 +0,0 @@ -//# DDE.h: DPPP step class to calibrate direction dependent gains -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: DDECal.h 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#ifndef DPPP_DDECAL_H -#define DPPP_DDECAL_H - -// @file -// @brief DPPP step class to apply a calibration correction to the data - -#include <DPPP/DPInput.h> -#include <DPPP/GainCal.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/H5Parm.h> -#include <DPPP/BaselineSelection.h> -#include <DPPP/Patch.h> -#include <DPPP/UVWFlagger.h> -#include <DPPP/Predict.h> -#include <DPPP/SourceDBUtil.h> -#include <DPPP/ApplyBeam.h> -#include <DPPP_DDECal/MultiDirSolver.h> -#include <DPPP_DDECal/Constraint.h> -#include <StationResponse/Station.h> -#include <StationResponse/Types.h> -#include <ParmDB/Parm.h> -#include <casacore/casa/Arrays/Cube.h> -#include <casacore/casa/Quanta/MVEpoch.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/casa/Arrays/ArrayMath.h> - -namespace LOFAR { - - class ParameterSet; - - namespace DPPP { - // @ingroup NDPPP - - // This class is a DPStep class to calibrate (direction independent) gains. - - typedef vector<Patch::ConstPtr> PatchList; - typedef std::pair<size_t, size_t> Baseline; - - class DDECal: public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - DDECal (DPInput*, const ParameterSet&, const std::string& prefix); - - virtual ~DDECal(); - - // Create an DDECal object using the given parset. - static DPStep::ShPtr makeStep (DPInput*, const ParameterSet&, - const std::string&); - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Call the actual solver (called once per solution interval) - void doSolve(); - - // Initialize H5parm-file - void initH5parm(); - - // Write out the solutions - void writeSolutions(); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - - private: - // Initialize solutions - void initializeScalarSolutions(); - - void initializeFullMatrixSolutions(); - - // Convert itsDirections to a vector of strings like "[Patch1, Patch2]" - // Used for setting source names. - std::vector<std::string> getDirectionNames(); - - //# Data members. - DPInput* itsInput; - std::string itsName; - vector<DPBuffer> itsBufs; - - bool itsUseModelColumn; - std::vector<casacore::Cube<casacore::Complex>> itsModelData; - - // The time of the current buffer (in case of solint, average time) - double itsAvgTime; - std::vector<casacore::Complex*> itsDataPtrs; - - // For each timeslot, a vector of nDir buffers - std::vector<std::vector<casacore::Complex*> > itsModelDataPtrs; - - // For each time, for each channel block, a vector of size nAntennas * nDirections - std::vector<std::vector<std::vector<casacore::DComplex> > > itsSols; - std::vector<uint> - itsNIter, // Number of iterations taken - itsNApproxIter; - - // For each time, for each constraint, a vector of results (e.g. tec and phase) - std::vector<std::vector<std::vector<Constraint::Result> > > itsConstraintSols; - - std::string itsH5ParmName; - H5Parm itsH5Parm; - std::string itsParsetString; // Parset, for logging in H5Parm - - GainCal::CalType itsMode; - bool itsPropagateSolutions; - uint itsTimeStep; - uint itsSolInt; - uint itsStepInSolInt; - uint itsNChan; - vector<size_t> itsChanBlockStart; // For each channel block, the index in the channels at which this channel block starts - vector<double> itsChanBlockFreqs; - vector<vector<string> > itsDirections; // For each direction, a vector of patches - vector<casacore::CountedPtr<Constraint> > itsConstraints; - - vector<double> itsWeights; - - UVWFlagger itsUVWFlagStep; - ResultStep::ShPtr itsDataResultStep; // Result step for data after UV-flagging - vector<Predict> itsPredictSteps; - vector<MultiResultStep::ShPtr> itsResultSteps; // For each directions, a multiresultstep with all times - - NSTimer itsTimer; - NSTimer itsTimerPredict; - NSTimer itsTimerSolve; - NSTimer itsTimerWrite; - double itsCoreConstraint; - double itsSmoothnessConstraint; - double itsScreenCoreConstraint; - - MultiDirSolver itsMultiDirSolver; - bool itsFullMatrixMinimalization; - bool itsApproximateTEC; - std::string itsStatFilename; - std::unique_ptr<std::ofstream> itsStatStream; - }; - - } //# end namespace -} - -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/KLFitter.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/KLFitter.h deleted file mode 100644 index 0cd5d46f1da..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/KLFitter.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef KLFITTER_H -#define KLFITTER_H -#include<vector> -#include <armadillo> -#include <DPPP_DDECal/PiercePoint.h> - -namespace LOFAR{ -class KLFitter -{//creates KH base and fits screens from collection of PiercePoints -public: - KLFitter(double r0=1000.,double beta=5./3.,int order=3); - void calculateCorrMatrix(const std::vector<PiercePoint> pp); - void calculateCorrMatrix(const std::vector<PiercePoint*> pp); - void doFit(); - size_t getOrder() const {return itsOrder;} - double* PhaseData() { return _phases.memptr(); } - double* WData() { return _weights.memptr(); } - double* ParData() { return itsPar.memptr(); } - double* TECFitWhiteData() { return itsTECFitWhite.memptr(); } - double* PPData() { return itsPiercePoints.memptr(); } - void setR0(double r0) {itsR0=r0;} - void setBeta(double beta) {itsBeta=beta;} - void setOrder(double order) {itsOrder=order;} - size_t getNumberofPP() {return itsPiercePoints.n_rows;} - -private: - size_t itsOrder; - double itsR0,itsBeta; - arma::Mat<double> itsPiercePoints; - arma::Col<double> _phases; - arma::Mat<double> _weights; //weights of the data points - arma::Mat<double> itsCorrMatrix; //Correlation Matrix for KL fit - arma::Mat<double> itsinvC; //for quick interpolation - arma::Mat<double> itsU; - arma::Mat<double> itsinvU; - arma::Mat<double> itsTECFitWhite; - arma::Col<double> itsPar; -}; -} -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/KernelSmoother.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/KernelSmoother.h deleted file mode 100644 index 984e82d173b..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/KernelSmoother.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef KERNEL_SMOOTHER_H -#define KERNEL_SMOOTHER_H - -#include <cmath> -#include <stdexcept> -#include <vector> - -template<typename DataType, typename NumType> -class KernelSmoother -{ -public: - enum KernelType { - RectangularKernel, - TriangularKernel, - /** Gaussian, trimmed off at 3 sigma */ - GaussianKernel, - /** The Epanechnikov kernel is a quadratic kernel, given by 3/4 (1 - x^2) */ - EpanechnikovKernel - }; - - KernelSmoother(const NumType* frequencies, size_t n, KernelType kernelType, NumType kernelBandwidth) : - _frequencies(frequencies, frequencies+n), - _scratch(n), - _kernelType(kernelType), - _bandwidth(kernelBandwidth) - { - } - - NumType Kernel(NumType distance) const - { - NumType x = distance / _bandwidth; - if(x < NumType(-1.0) || x > NumType(1.0)) - return NumType(0.0); - else { - switch(_kernelType) - { - case RectangularKernel: - default: - return NumType(0.5); - case TriangularKernel: - return x >= NumType(0.0) ? (NumType(1.0) - x) : (NumType(1.0) + x); - case GaussianKernel: - // e^(-x^2 / sigma^2), sigma = bandwidth / 3. - return std::exp(-x*x*NumType(9.0)); - case EpanechnikovKernel: - // 3/4 * (1-x)^2; - x = NumType(1.0) - x; - return (NumType(3.0) / NumType(4.0)) * x * x; - } - } - } - - void Smooth(DataType* data, const NumType* weight) - { - size_t n = _frequencies.size(); - - size_t - bandLeft = 0, - // find right kernel value for first element - bandRight = std::lower_bound(_frequencies.begin(), _frequencies.end(), _frequencies[0] + _bandwidth * 0.5) - _frequencies.begin() + 1; - - for(size_t i=0; i!=n; ++i) - { - // If a boundary is further than half the bandwidth away, move boundary - while(_frequencies[bandLeft] < _frequencies[i] - _bandwidth * 0.5) - ++bandLeft; - while(bandRight!=n && _frequencies[bandRight] < _frequencies[i] + _bandwidth * 0.5) - ++bandRight; - - // A value of 1 is added to make sure we are not skipping a value because of rounding errors - // (kernel will be zero past boundaries, so including an unnecessary value has no effect) - size_t start = bandLeft > 0 ? bandLeft-1 : 0; - size_t end = bandRight < n ? bandRight+1 : n; - - DataType sum(0.0); - NumType weightSum(0.0); - //std::cout << start << " -> " << end << " (" << _frequencies[start] << " -> " << _frequencies[end] << ")\n"; - for(size_t j=start; j!=end; ++j) - { - double distance = _frequencies[i] - _frequencies[j]; - double w = Kernel(distance) * weight[j]; - sum += data[j] * w; - weightSum += w; - } - if(weightSum == 0.0) - _scratch[i] = 0.0; - else - _scratch[i] = sum / weightSum; - } - std::copy(_scratch.begin(), _scratch.end(), data); - } - -private: - std::vector<NumType> _frequencies; - std::vector<DataType> _scratch; - enum KernelType _kernelType; - NumType _bandwidth; -}; - -#endif - diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Matrix2x2.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Matrix2x2.h deleted file mode 100644 index 69746ed8cab..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Matrix2x2.h +++ /dev/null @@ -1,445 +0,0 @@ -#ifndef MATRIX_2X2_H -#define MATRIX_2X2_H - -#include <complex> -#include <limits> -#include <sstream> - -class Matrix2x2 -{ -public: - template<typename LHS_T, typename RHS_T> - static void Assign(std::complex<LHS_T>* dest, const std::complex<RHS_T>* source) - { - for(size_t p=0; p!=4; ++p) - dest[p] = source[p]; - } - - template<typename LHS_T, typename RHS_T> - static void Assign(LHS_T* dest, const RHS_T* source) - { - for(size_t p=0; p!=4; ++p) - dest[p] = source[p]; - } - - template<typename T, typename RHS_T> - static void Add(std::complex<T>* dest, const RHS_T * rhs) - { - for(size_t p=0; p!=4; ++p) - dest[p] += rhs[p]; - } - - template<typename T> - static void Subtract(std::complex<T>* dest, const std::complex<T>* rhs) - { - for(size_t p=0; p!=4; ++p) - dest[p] -= rhs[p]; - } - - template<typename T> - static bool IsFinite(const std::complex<T>* matrix) - { - return - std::isfinite(matrix[0].real()) && std::isfinite(matrix[0].imag()) && - std::isfinite(matrix[1].real()) && std::isfinite(matrix[1].imag()) && - std::isfinite(matrix[2].real()) && std::isfinite(matrix[2].imag()) && - std::isfinite(matrix[3].real()) && std::isfinite(matrix[3].imag()); - } - - template<typename T> - static void ScalarMultiply(std::complex<T>* dest, T factor) - { - for(size_t p=0; p!=4; ++p) - dest[p] *= factor; - } - - template<typename T> - static void ScalarMultiply(T* dest, T factor) - { - for(size_t p=0; p!=4; ++p) - dest[p] *= factor; - } - - template<typename T, typename RHS> - static void MultiplyAdd(std::complex<T>* dest, const RHS* rhs, T factor) - { - for(size_t p=0; p!=4; ++p) - dest[p] += rhs[p] * factor; - } - - template<typename ComplType, typename LHS_T, typename RHS_T> - static void ATimesB(std::complex<ComplType>* dest, const LHS_T* lhs, const RHS_T* rhs) - { - dest[0] = lhs[0] * rhs[0] + lhs[1] * rhs[2]; - dest[1] = lhs[0] * rhs[1] + lhs[1] * rhs[3]; - dest[2] = lhs[2] * rhs[0] + lhs[3] * rhs[2]; - dest[3] = lhs[2] * rhs[1] + lhs[3] * rhs[3]; - } - - static void PlusATimesB(std::complex<double> *dest, const std::complex<double> *lhs, const std::complex<double> *rhs) - { - dest[0] += lhs[0] * rhs[0] + lhs[1] * rhs[2]; - dest[1] += lhs[0] * rhs[1] + lhs[1] * rhs[3]; - dest[2] += lhs[2] * rhs[0] + lhs[3] * rhs[2]; - dest[3] += lhs[2] * rhs[1] + lhs[3] * rhs[3]; - } - - template<typename ComplType, typename LHS_T, typename RHS_T> - static void ATimesHermB(std::complex<ComplType> *dest, const LHS_T* lhs, const RHS_T* rhs) - { - dest[0] = lhs[0] * std::conj(rhs[0]) + lhs[1] * std::conj(rhs[1]); - dest[1] = lhs[0] * std::conj(rhs[2]) + lhs[1] * std::conj(rhs[3]); - dest[2] = lhs[2] * std::conj(rhs[0]) + lhs[3] * std::conj(rhs[1]); - dest[3] = lhs[2] * std::conj(rhs[2]) + lhs[3] * std::conj(rhs[3]); - } - - template<typename ComplType, typename LHS_T, typename RHS_T> - static void PlusATimesHermB(std::complex<ComplType> *dest, const LHS_T* lhs, const RHS_T* rhs) - { - dest[0] += lhs[0] * std::conj(rhs[0]) + lhs[1] * std::conj(rhs[1]); - dest[1] += lhs[0] * std::conj(rhs[2]) + lhs[1] * std::conj(rhs[3]); - dest[2] += lhs[2] * std::conj(rhs[0]) + lhs[3] * std::conj(rhs[1]); - dest[3] += lhs[2] * std::conj(rhs[2]) + lhs[3] * std::conj(rhs[3]); - } - - template<typename ComplType, typename LHS_T, typename RHS_T> - static void HermATimesB(std::complex<ComplType> *dest, const LHS_T* lhs, const RHS_T* rhs) - { - dest[0] = std::conj(lhs[0]) * rhs[0] + std::conj(lhs[2]) * rhs[2]; - dest[1] = std::conj(lhs[0]) * rhs[1] + std::conj(lhs[2]) * rhs[3]; - dest[2] = std::conj(lhs[1]) * rhs[0] + std::conj(lhs[3]) * rhs[2]; - dest[3] = std::conj(lhs[1]) * rhs[1] + std::conj(lhs[3]) * rhs[3]; - } - - static void HermATimesHermB(std::complex<double> *dest, const std::complex<double> *lhs, const std::complex<double> *rhs) - { - dest[0] = std::conj(lhs[0]) * std::conj(rhs[0]) + std::conj(lhs[2]) * std::conj(rhs[1]); - dest[1] = std::conj(lhs[0]) * std::conj(rhs[2]) + std::conj(lhs[2]) * std::conj(rhs[3]); - dest[2] = std::conj(lhs[1]) * std::conj(rhs[0]) + std::conj(lhs[3]) * std::conj(rhs[1]); - dest[3] = std::conj(lhs[1]) * std::conj(rhs[2]) + std::conj(lhs[3]) * std::conj(rhs[3]); - } - - template<typename ComplType, typename LHS_T, typename RHS_T> - static void PlusHermATimesB(std::complex<ComplType> *dest, const LHS_T* lhs, const RHS_T* rhs) - { - dest[0] += std::conj(lhs[0]) * rhs[0] + std::conj(lhs[2]) * rhs[2]; - dest[1] += std::conj(lhs[0]) * rhs[1] + std::conj(lhs[2]) * rhs[3]; - dest[2] += std::conj(lhs[1]) * rhs[0] + std::conj(lhs[3]) * rhs[2]; - dest[3] += std::conj(lhs[1]) * rhs[1] + std::conj(lhs[3]) * rhs[3]; - } - - template<typename T> - static bool Invert(T* matrix) - { - T d = ((matrix[0]*matrix[3]) - (matrix[1]*matrix[2])); - if(d == T(0.0)) - return false; - T oneOverDeterminant = T(1.0) / d; - T temp; - temp = matrix[3] * oneOverDeterminant; - matrix[1] = -matrix[1] * oneOverDeterminant; - matrix[2] = -matrix[2] * oneOverDeterminant; - matrix[3] = matrix[0] * oneOverDeterminant; - matrix[0] = temp; - return true; - } - - template<typename T> - static void ConjugateTranspose(T* matrix) - { - matrix[0] = std::conj(matrix[0]); - T temp = matrix[1]; - matrix[1] = std::conj(matrix[2]); - matrix[2] = std::conj(temp); - matrix[3] = std::conj(matrix[3]); - } - - static bool MultiplyWithInverse(std::complex<double>* lhs, const std::complex<double>* rhs) - { - std::complex<double> d = ((rhs[0]*rhs[3]) - (rhs[1]*rhs[2])); - if(d == 0.0) return false; - std::complex<double> oneOverDeterminant = 1.0 / d; - std::complex<double> temp[4]; - temp[0] = rhs[3] * oneOverDeterminant; - temp[1] = -rhs[1] * oneOverDeterminant; - temp[2] = -rhs[2] * oneOverDeterminant; - temp[3] = rhs[0] * oneOverDeterminant; - - std::complex<double> temp2 = lhs[0]; - lhs[0] = lhs[0] * temp[0] + lhs[1] * temp[2]; - lhs[1] = temp2 * temp[1] + lhs[1] * temp[3]; - - temp2 = lhs[2]; - lhs[2] = lhs[2] * temp[0] + lhs[3] * temp[2]; - lhs[3] = temp2 * temp[1] + lhs[3] * temp[3]; - return true; - } - - static void SingularValues(const std::complex<double>* matrix, double &e1, double &e2) - { - // This is not the ultimate fastest method, since we - // don't need to calculate the imaginary values of b,c at all. - // Calculate M M^H - std::complex<double> temp[4] = { - matrix[0] * std::conj(matrix[0]) + matrix[1] * std::conj(matrix[1]), - matrix[0] * std::conj(matrix[2]) + matrix[1] * std::conj(matrix[3]), - matrix[2] * std::conj(matrix[0]) + matrix[3] * std::conj(matrix[1]), - matrix[2] * std::conj(matrix[2]) + matrix[3] * std::conj(matrix[3]) - }; - // Use quadratic formula, with a=1. - double - b = -temp[0].real() - temp[3].real(), - c = temp[0].real()*temp[3].real() - (temp[1]*temp[2]).real(), - d = b*b - (4.0*1.0)*c, - sqrtd = sqrt(d); - - e1 = sqrt((-b + sqrtd) * 0.5); - e2 = sqrt((-b - sqrtd) * 0.5); - } - - static void EigenValues(const double* matrix, double &e1, double &e2) - { - double tr = matrix[0] + matrix[3]; - double d = matrix[0]*matrix[3] - matrix[1]*matrix[2]; - double term = sqrt(tr*tr*0.25-d); - double trHalf = tr*0.5; - e1 = trHalf + term; - e2 = trHalf - term; - } - - template<typename ValType> - static void EigenValues(const std::complex<ValType>* matrix, std::complex<ValType>& e1, std::complex<ValType>& e2) - { - std::complex<ValType> tr = matrix[0] + matrix[3]; - std::complex<ValType> d = matrix[0]*matrix[3] - matrix[1]*matrix[2]; - std::complex<ValType> term = sqrt(tr*tr*ValType(0.25)-d); - std::complex<ValType> trHalf = tr*ValType(0.5); - e1 = trHalf + term; - e2 = trHalf - term; - } - - static void EigenValuesAndVectors(const double* matrix, double &e1, double &e2, double* vec1, double* vec2) - { - double tr = matrix[0] + matrix[3]; - double d = matrix[0]*matrix[3] - matrix[1]*matrix[2]; - double term = sqrt(tr*tr*0.25-d); - double trHalf = tr*0.5; - e1 = trHalf + term; - e2 = trHalf - term; - if(matrix[2] != 0.0) - { - vec1[0] = matrix[3] - e1; - vec1[1] = -matrix[2]; - vec2[0] = matrix[3] - e2; - vec2[1] = -matrix[2]; - } - else if(matrix[1] != 0.0) - { - vec1[0] = -matrix[1]; - vec1[1] = matrix[0] - e1; - vec2[0] = -matrix[1]; - vec2[1] = matrix[0] - e2; - } - else { - vec1[0] = 1.0; - vec1[1] = 0.0; - vec2[0] = 0.0; - vec2[1] = 1.0; - } - } - - static void SquareRoot(double* matrix) - { - double tr = matrix[0] + matrix[3]; - double d = matrix[0]*matrix[3] - matrix[1]*matrix[2]; - double s = /*+/-*/ sqrt(d); - double t = /*+/-*/ sqrt(tr + 2.0*s); - if(t != 0.0) - { - matrix[0] = (matrix[0]+s ) / t; - matrix[1] = (matrix[1] / t); - matrix[2] = (matrix[2] / t); - matrix[3] = (matrix[3]+s) / t; - } - else { - if(matrix[0] == 0.0 && matrix[1] == 0.0 && - matrix[2] == 0.0 && matrix[3] == 0.0) - { - // done: it's the zero matrix - } else { - for(size_t i=0; i!=4; ++i) - matrix[i] = std::numeric_limits<double>::quiet_NaN(); - } - } - } - - template<typename T> - static T RotationAngle(const std::complex<T>* matrix) - { - return std::atan2((matrix[2].real()-matrix[1].real())*0.5, (matrix[0].real()+matrix[3].real())*0.5); - } - - template<typename T> - static void RotationMatrix(std::complex<T>* matrix, double alpha) - { - T cosAlpha, sinAlpha; - sincos(alpha, &sinAlpha, &cosAlpha); - matrix[0] = cosAlpha; matrix[1] = -sinAlpha; - matrix[2] = sinAlpha; matrix[3] = cosAlpha; - } -}; - -template<typename ValType> -class MC2x2Base -{ -public: - MC2x2Base() { } - MC2x2Base(const MC2x2Base<ValType>& source) { Matrix2x2::Assign(_values, source._values); } - template<typename T> - explicit MC2x2Base(const T source[4]) { Matrix2x2::Assign(_values, source); } - MC2x2Base(ValType m00, ValType m01, ValType m10, ValType m11) { - _values[0] = m00; _values[1] = m01; - _values[2] = m10; _values[3] = m11; - } - MC2x2Base(std::complex<ValType> m00, std::complex<ValType> m01, std::complex<ValType> m10, std::complex<ValType> m11) { - _values[0] = m00; _values[1] = m01; - _values[2] = m10; _values[3] = m11; - } - MC2x2Base<ValType>& operator=(const MC2x2Base<ValType>& source) - { - Matrix2x2::Assign(_values, source._values); - return *this; - } - MC2x2Base<ValType>& operator+=(const MC2x2Base<ValType>& rhs) - { - Matrix2x2::Add(_values, rhs._values); - return *this; - } - MC2x2Base<ValType>& operator-=(const MC2x2Base<ValType>& rhs) - { - Matrix2x2::Subtract(_values, rhs._values); - return *this; - } - MC2x2Base<ValType>& operator*=(const MC2x2Base<ValType>& rhs) - { - MC2x2Base<ValType> dest; - Matrix2x2::ATimesB(dest._values, _values, rhs._values); - *this = dest; - return *this; - } - MC2x2Base<ValType>& operator*=(ValType rhs) - { - Matrix2x2::ScalarMultiply(_values, rhs); - return *this; - } - MC2x2Base<ValType>& operator/=(ValType rhs) - { - Matrix2x2::ScalarMultiply(_values, 1.0/rhs); - return *this; - } - const std::complex<ValType>& operator[](size_t index) const { return _values[index]; } - std::complex<ValType>& operator[](size_t index) { return _values[index]; } - const ValType& IndexReal(size_t index) const { return reinterpret_cast<const ValType(&)[2]>(_values[index/2])[index%2]; } - ValType& IndexReal(size_t index) { return reinterpret_cast<ValType(&)[2]>(_values[index/2])[index%2]; } - static MC2x2Base<ValType> Zero() - { - return MC2x2Base<ValType>(0.0, 0.0, 0.0, 0.0); - } - static MC2x2Base<ValType> Unity() - { - return MC2x2Base(1.0, 0.0, 0.0, 1.0); - } - static MC2x2Base<ValType> NaN() - { - return MC2x2Base<ValType>( - std::complex<ValType>(std::numeric_limits<ValType>::quiet_NaN(), std::numeric_limits<ValType>::quiet_NaN()), - std::complex<ValType>(std::numeric_limits<ValType>::quiet_NaN(), std::numeric_limits<ValType>::quiet_NaN()), - std::complex<ValType>(std::numeric_limits<ValType>::quiet_NaN(), std::numeric_limits<ValType>::quiet_NaN()), - std::complex<ValType>(std::numeric_limits<ValType>::quiet_NaN(), std::numeric_limits<ValType>::quiet_NaN())); - } - std::complex<ValType>* Data() { return _values; } - const std::complex<ValType>* Data() const { return _values; } - MC2x2Base<ValType> Multiply(const MC2x2Base<ValType>& rhs) const - { - MC2x2Base<ValType> dest; - Matrix2x2::ATimesB(dest._values, _values, rhs._values); - return dest; - } - MC2x2Base<ValType> MultiplyHerm(const MC2x2Base<ValType>& rhs) const - { - MC2x2Base dest; - Matrix2x2::ATimesHermB(dest._values, _values, rhs._values); - return dest; - } - MC2x2Base<ValType> HermThenMultiply(const MC2x2Base<ValType>& rhs) const - { - MC2x2Base<ValType> dest; - Matrix2x2::HermATimesB(dest._values, _values, rhs._values); - return dest; - } - MC2x2Base<ValType> HermThenMultiplyHerm(const MC2x2Base<ValType>& rhs) const - { - MC2x2Base<ValType> dest; - Matrix2x2::HermATimesHermB(dest._values, _values, rhs._values); - return dest; - } - void AddWithFactorAndAssign(const MC2x2Base<ValType>& rhs, ValType factor) - { - Matrix2x2::MultiplyAdd(_values, rhs._values, factor); - } - bool Invert() - { - return Matrix2x2::Invert(_values); - } - static void ATimesB(MC2x2Base<ValType>& dest, const MC2x2Base<ValType>& lhs, const MC2x2Base<ValType>& rhs) - { - Matrix2x2::ATimesB(dest._values, lhs._values, rhs._values); - } - static void ATimesB(std::complex<ValType>* dest, const MC2x2Base<ValType>& lhs, const MC2x2Base<ValType>& rhs) - { - Matrix2x2::ATimesB(dest, lhs._values, rhs._values); - } - static void ATimesHermB(MC2x2Base<ValType>& dest, const MC2x2Base<ValType>& lhs, const MC2x2Base<ValType>& rhs) - { - Matrix2x2::ATimesHermB(dest._values, lhs._values, rhs._values); - } - static void HermATimesB(MC2x2Base<ValType>& dest, const MC2x2Base<ValType>& lhs, const MC2x2Base<ValType>& rhs) - { - Matrix2x2::HermATimesB(dest._values, lhs._values, rhs._values); - } - static void HermATimesHermB(MC2x2Base<ValType>& dest, const MC2x2Base<ValType>& lhs, const MC2x2Base<ValType>& rhs) - { - Matrix2x2::HermATimesHermB(dest._values, lhs._values, rhs._values); - } - std::string ToString() const - { - std::stringstream str; - str << _values[0] << ", " << _values[1] << "; " - << _values[2] << ", " << _values[3]; - return str.str(); - } - void CopyValues(std::complex<ValType>* values) const - { - Matrix2x2::Assign(values, _values); - } - void EigenValues(std::complex<ValType> &e1, std::complex<ValType> &e2) const - { - Matrix2x2::EigenValues(_values, e1, e2); - } - bool HasNaN() const - { - return !( - std::isfinite(_values[0].real()) && std::isfinite(_values[0].imag()) && - std::isfinite(_values[1].real()) && std::isfinite(_values[1].imag()) && - std::isfinite(_values[2].real()) && std::isfinite(_values[2].imag()) && - std::isfinite(_values[3].real()) && std::isfinite(_values[3].imag()) - ); - } -private: - std::complex<ValType> _values[4]; -}; - -using MC2x2 = MC2x2Base<double>; -using MC2x2F = MC2x2Base<float>; - -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/MultiDirSolver.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/MultiDirSolver.h deleted file mode 100644 index ddb5b8f397f..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/MultiDirSolver.h +++ /dev/null @@ -1,154 +0,0 @@ -#ifndef MULTI_DIR_SOLVER_H -#define MULTI_DIR_SOLVER_H - -#ifdef AOPROJECT -#include "PhaseFitter.h" -#include "Constraint.h" -#include "Stopwatch.h" -#define UPTR std::unique_ptr -#else -#include <DPPP/PhaseFitter.h> -#include <DPPP_DDECal/Constraint.h> -#include <DPPP_DDECal/Stopwatch.h> -#define UPTR std::auto_ptr -#endif - -#include <complex> -#include <vector> -#include <memory> - -class MultiDirSolver -{ -public: - typedef std::complex<double> DComplex; - typedef std::complex<float> Complex; - - class Matrix : public std::vector<DComplex> - { - public: - Matrix() : _m(0) { } - Matrix(size_t m, size_t n) : std::vector<DComplex>(n * m, 0.0), _m(m) - { } - void zeros() - { - assign(size(), DComplex(0.0, 0.0)); - } - DComplex& operator()(size_t i, size_t j) - { - return (*this)[i + j*_m]; - } - private: - size_t _m; - }; - - - struct SolveResult { - size_t iterations, constraintIterations; - std::vector<std::vector<Constraint::Result> > _results; - }; - - MultiDirSolver(); - - void init(size_t nAntennas, size_t nDirections, size_t nChannels, - const std::vector<int>& ant1, const std::vector<int>& ant2); - - // data[i] is een pointer naar de data voor tijdstap i, vanaf die pointer staat het in volgorde als in MS (bl, chan, pol) - // mdata[i] is een pointer voor tijdstap i naar arrays van ndir model data pointers (elk van die data pointers staat in zelfde volgorde als data) - // solutions[ch] is een pointer voor channelblock ch naar antenna x directions oplossingen. - SolveResult processScalar(std::vector<Complex*>& data, - std::vector<std::vector<Complex* > >& modelData, - std::vector<std::vector<DComplex> >& solutions, double time, - std::ostream* statStream); - - /** - * Same as @ref processScalar(), but solves full Jones matrices. - * @param data als in @ref processScalar() - * @param modelData als in @ref processScalar() - * @param solutions An array, where @c solutions[ch] is a pointer to channelblock @c ch, that points to - * antenna x directions solutions. Each solution consists of 4 complex values forming the full Jones matrix. - */ - SolveResult processFullMatrix(std::vector<Complex *>& data, - std::vector<std::vector<Complex *> >& modelData, - std::vector<std::vector<DComplex> >& solutions, double time, - std::ostream* statStream); - - void set_phase_only(bool phaseOnly) { _phaseOnly = phaseOnly; } - - void set_channel_blocks(size_t nChannelBlocks) { _nChannelBlocks = nChannelBlocks; } - - size_t max_iterations() const { return _maxIterations; } - void set_max_iterations(size_t maxIterations) { _maxIterations = maxIterations; } - - void set_accuracy(double accuracy) { - _accuracy = accuracy; - } - double get_accuracy() const { return _accuracy; } - void set_constraint_accuracy(double constraintAccuracy) { - _constraintAccuracy = constraintAccuracy; - } - void set_step_size(double stepSize) { _stepSize = stepSize; } - double get_step_size() const { return _stepSize; } - - void set_detect_stalling(bool detectStalling) { _detectStalling = detectStalling; } - - bool get_detect_stalling() const { return _detectStalling; } - - void add_constraint(Constraint* constraint) { _constraints.push_back(constraint); } - - void showTimings (std::ostream& os, double duration) const; - -private: - void performScalarIteration(size_t channelBlockIndex, - std::vector<Matrix>& gTimesCs, - std::vector<Matrix>& vs, - const std::vector<DComplex>& solutions, - std::vector<DComplex>& nextSolutions, - const std::vector<Complex *>& data, - const std::vector<std::vector<Complex *> >& modelData); - - void performFullMatrixIteration(size_t channelBlockIndex, - std::vector<Matrix>& gTimesCs, - std::vector<Matrix>& vs, - const std::vector<DComplex>& solutions, - std::vector<DComplex>& nextSolutions, - const std::vector<Complex *>& data, - const std::vector<std::vector<Complex *> >& modelData); - - void makeStep(const std::vector<std::vector<DComplex> >& solutions, - std::vector<std::vector<DComplex> >& nextSolutions) const; - - bool detectStall(size_t iteration, const std::vector<double>& stepMagnitudes) const; - - void makeSolutionsFinite(std::vector<std::vector<DComplex> >& solutions, size_t perPol) const; - - /** - * Assign the solutions in nextSolutions to the solutions. - * @returns whether the solutions have converged. Appends the current step magnitude to step_magnitudes - */ - template<size_t NPol> - bool assignSolutions( - std::vector<std::vector<DComplex> >& solutions, - std::vector<std::vector<DComplex> >& nextSolutions, - bool useConstraintAccuracy, - double& sum, - std::vector<double>& step_magnitudes - ) const; - - size_t _nAntennas, _nDirections, _nChannels, _nChannelBlocks; - std::vector<int> _ant1, _ant2; - - // Calibration setup - size_t _maxIterations; - double _accuracy, _constraintAccuracy; - double _stepSize; - bool _detectStalling; - bool _phaseOnly; - std::vector<Constraint*> _constraints; - - // Timers - Stopwatch _timerSolve; - Stopwatch _timerConstrain; - Stopwatch _timerFillMatrices; -}; - -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/PieceWisePhaseFitter.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/PieceWisePhaseFitter.h deleted file mode 100644 index 2ea7b76c212..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/PieceWisePhaseFitter.h +++ /dev/null @@ -1,426 +0,0 @@ -#ifndef PIECE_WISE_PHASE_FITTER_H -#define PIECE_WISE_PHASE_FITTER_H - -#include <algorithm> -#include <iterator> -#include <cmath> - -class PieceWisePhaseFitter -{ -public: - PieceWisePhaseFitter() : _chunkSize(0) { } - - /** - * Constructor. - * @param chunkSize Size of chunk in number of samples. - */ - PieceWisePhaseFitter(size_t chunkSize) : _chunkSize(chunkSize) { } - - size_t ChunkSize() const { return _chunkSize; } - void SetChunkSize(size_t chunkSize) { _chunkSize = chunkSize; } - - /** - * Unwrap a range of phase values. - */ - template<typename Iter> - static void Unwrap(Iter first, Iter last) - { - for(Iter iter = first+1; iter!=last; ++iter) - { - while(*iter - (*(iter-1)) > M_PI) - *iter -= 2.0*M_PI; - while((*(iter-1) - *iter) > M_PI) - *iter += 2.0*M_PI; - } - } - - static size_t CalculateChunkSize(double startFrequencyHz, double endFrequencyHz, size_t channelCount) - { - // it seems that 10 chunks per octave seems reasonable - double nOctaves = (log(endFrequencyHz) - log(startFrequencyHz)) / M_LN2; - if(nOctaves > 0.0) - return std::min<size_t>(channelCount, ceil(channelCount / (10.0 * nOctaves))); - else - return channelCount; - } - - /** - * Perform a piece-wise fit of linear phase gradients. - * - * The data is divided into chunks with given size, and in each chunk a line is fitted (offset & gradient). - * The fitted line of each chunk is written into fittedData. The resulting line will have a 'jump' between each - * chunk. - * @param nu Frequencies of the channels (in Hz). - * @param data The values, same size as @c nu. - * @param fittedData A vector of at least size @c nu.size(), in which the fitted lines are stored. - */ - void PieceWiseFit(const std::vector<double>& nu, const std::vector<double>& data, std::vector<double>& fittedData) - { - size_t chunkSize = std::min(data.size(), _chunkSize); - if(chunkSize==1) - fittedData = data; - else - { - for(size_t ch=0; ch<data.size(); ch+=chunkSize) - { - size_t pos = ch; - if(pos > data.size() - chunkSize) - pos = data.size() - chunkSize; - fitChunk(chunkSize, pos, nu, data, fittedData); - } - } - } - - void PieceWiseFit(const std::vector<double>& nu, const std::vector<double>& data, const double* weights, std::vector<double>& fittedData) - { - size_t chunkSize = std::min(data.size(), _chunkSize); - if(chunkSize==1) - fittedData = data; - else - { - for(size_t ch=0; ch<data.size(); ch+=chunkSize) - { - size_t pos = ch; - if(pos > data.size() - chunkSize) - pos = data.size() - chunkSize; - fitChunk(chunkSize, pos, nu, data, weights, fittedData); - } - } - } - - /** - * Performs a sliding fit of linear phase gradients (without weighting). - * See other SlidingFit() overload. - */ - void SlidingFit(const double* nu, const double* data, double* fittedData, size_t n) - { - const size_t - chunkSize = std::min(_chunkSize, n); - if(chunkSize==1) - std::copy(data, data+n, fittedData); - else - { - const size_t - leftEdge = chunkSize/2, - rightEdge = n - chunkSize + chunkSize/2; - - double a, b; - PieceWisePhaseFitter::fitSlope(&data[0], &nu[0], chunkSize, a, b); - for(size_t ch=0; ch!=leftEdge; ++ch) - fittedData[ch] = a + b * nu[ch]; - - for(size_t ch=0; ch!=n - chunkSize; ++ch) - { - PieceWisePhaseFitter::fitSlope(&data[ch], &nu[ch], chunkSize, a, b); - fittedData[ch + chunkSize/2] = a + b * nu[ch + chunkSize/2]; - } - - PieceWisePhaseFitter::fitSlope(&data[n - chunkSize], &nu[n - chunkSize], chunkSize, a, b); - for(size_t ch=rightEdge; ch!=n; ++ch) - fittedData[ch] = a + b * nu[ch]; - } - } - - /** - * Performs a sliding fit of linear phase gradients (with weighting). - * - * A window of size @c chunkSize is slid over the data, and a line is fitted at each position. The values near the left - * and right side of the border are evaluated with the fit to the most left/right window. This is slower than - * @ref PieceWiseFit(), but it produces a smoother & more accurate fit. - * The fit is not necessarily entirely smooth, because the line fit tries to guess the right wrapping of the samples. - * Since that is not a linear process, this can still cause slight jumps. - * - * @param nu Frequencies of the channels (in Hz). - * @param data The values, same size as @c nu. - * @param weights Inverse-variance weights. - * @param fittedData A vector of at least size @c nu.size(), in which the fitted lines are stored. - */ - void SlidingFit(const double* nu, const double* data, const double* weights, double* fittedData, size_t n) - { - const size_t - chunkSize = std::min(_chunkSize, n); - if(chunkSize==1) - std::copy(data, data+n, fittedData); - else - { - const size_t - leftEdge = chunkSize/2, - rightEdge = n - chunkSize + chunkSize/2; - - double a, b; - PieceWisePhaseFitter::fitSlope(&data[0], &nu[0], &weights[0], chunkSize, a, b); - for(size_t ch=0; ch!=leftEdge; ++ch) - fittedData[ch] = a + b * nu[ch]; - - for(size_t ch=0; ch!=n - chunkSize; ++ch) - { - PieceWisePhaseFitter::fitSlope(&data[ch], &nu[ch], &weights[ch], chunkSize, a, b); - fittedData[ch + chunkSize/2] = a + b * nu[ch + chunkSize/2]; - } - - PieceWisePhaseFitter::fitSlope(&data[n - chunkSize], &nu[n - chunkSize], &weights[n - chunkSize], chunkSize, a, b); - for(size_t ch=rightEdge; ch!=n; ++ch) - fittedData[ch] = a + b * nu[ch]; - } - } - - size_t SlidingFitWithBreak(const double* nu, const double* data, const double* weights, double* fittedData, size_t n) - { - SlidingFit(nu, data, weights, fittedData, n); - size_t bp = BreakPoint(data, weights, fittedData, n); - SlidingFit(nu, data, weights, fittedData, bp); - SlidingFit(nu+bp, data+bp, weights+bp, fittedData+bp, n-bp); - return bp; - } - - /** - * Calculates a weighted median. The weighted median is defined as the - * sample x for which the sum of all values smaller than x is less than half of the - * total weight, and idem for all values larger than x. - * For example, given the sequence - * 1,2,3,4,5 with weights 1,100,1,1,1; the weighted median is '2'. - * (sum of weight=104, values < 2 a have weight of 1, values > 2 have a weight of 3). - * This function is internally used by the piece-wise phase fitter. - * @param values A vector of (value, weight) pairs. - * @returns The weighted median. - */ - static double WeightedMedian(std::vector<std::pair<double, double>>& values) - { - std::sort(values.begin(), values.end()); - // calculate total weight - double sum = 0.0; - for(std::pair<double,double>& v : values) - sum += v.second; - - int index = 0; - // prefixSum is the weight sum of everything after `index` - double prefixSum = sum - values[0].second; - while(prefixSum > sum/2) - { - ++index; - prefixSum -= values[index].second; - } - return values[index].first; - } - - size_t BreakPoint(const double* data, const double* weights, const double* fittedData, size_t n) - { - double largest = 0.0; - size_t index = 0; - for(size_t i=0; i!=n-_chunkSize; ++i) - { - double curSum = 0.0; - for(size_t j=0; j!=_chunkSize; ++j) - { - double dist = data[i+j] - fittedData[i+j]; - curSum += fabs(dist) * weights[i+j]; - } - if(curSum > largest) - { - largest = curSum; - index = i + _chunkSize/2; - } - } - return index; - } - -private: - size_t _chunkSize; - /** - * This is used to avoid having to reallocate data every fit - */ - std::vector<double> _tempArray; - std::vector<std::pair<double,double>> _tempWeightedArray; - - /** - * Fit a + bx - */ - void fitSlope(const double* data, const double* frequencies, size_t n, double& a, double& b) - { - double - sum_x = 0.0, - sum_xSq = 0.0, - mean_y = 0.0, - ss_xy = 0.0; - std::vector<double>& d = _tempArray; - d.assign(data, data+n); - size_t qCounts[4] = {0,0,0,0}; - for(double& v : d) - { - if(v > M_PI*1.5) - ++qCounts[3]; - else if(v > M_PI*1.0) - ++qCounts[2]; - else if(v > M_PI*0.5) - ++qCounts[1]; - else - ++qCounts[0]; - } - size_t maxQ = 0; - for(size_t i=1; i!=4; ++i) - { - if(qCounts[i] > qCounts[maxQ]) - maxQ = i; - } - double wrapTo = (maxQ*0.5+0.25)*M_PI; - for(double& v : d) - { - if(v - wrapTo > M_PI) - v -= 2.0*M_PI; - else if(v - wrapTo < -M_PI) - v += 2.0*M_PI; - } - std::nth_element(d.data(), d.data()+n/2, d.data()+n); - wrapTo = d[n/2]; - for(size_t i=0; i!=n; ++i) - { - double x = data[i]; - if(x - wrapTo > M_PI) - x -= 2.0*M_PI; - else if(x - wrapTo < -M_PI) - x += 2.0*M_PI; - sum_x += frequencies[i]; - sum_xSq += frequencies[i] * frequencies[i]; - mean_y += x; - ss_xy += frequencies[i] * x; - } - mean_y /= n; - double mean_x = sum_x / n; - double ss_xx = sum_xSq - mean_x * sum_x; - ss_xy -= sum_x * mean_y; - b = ss_xy / ss_xx; - a = mean_y - b * mean_x; - } - - template<typename Iter1, typename Iter2> - double weightedMedian(Iter1 valBegin, Iter1 valEnd, Iter2 weightBegin) - { - _tempWeightedArray.resize(std::distance(valBegin, valEnd)); - auto wIter = _tempWeightedArray.begin(); - while(valBegin != valEnd) - { - *wIter = std::make_pair(*valBegin, *weightBegin); - ++wIter; - ++valBegin; - ++weightBegin; - } - return WeightedMedian(_tempWeightedArray); - } - - /** - * Fit a + bx with weights - */ - void fitSlope(const double* data, const double* frequencies, const double* weights, size_t n, double& a, double& b) - { - size_t qCounts[4] = {0,0,0,0}; - for(size_t i=0; i!=n; ++i) - { - if(data[i] > M_PI*1.5) - qCounts[3] += weights[i]; - else if(data[i] > M_PI*1.0) - qCounts[2] += weights[i]; - else if(data[i] > M_PI*0.5) - qCounts[1] += weights[i]; - else - qCounts[0] += weights[i]; - } - size_t maxQ = 0; - for(size_t i=1; i!=4; ++i) - { - if(qCounts[i] > qCounts[maxQ]) - maxQ = i; - } - double wrapTo = (maxQ*0.5+0.25)*M_PI; - std::vector<double>& d = _tempArray; - d.resize(n); - for(size_t i=n/4; i!=n*3/4; ++i) - { - double v = data[i]; - if(v - wrapTo > M_PI) - v -= 2.0*M_PI; - else if(v - wrapTo < -M_PI) - v += 2.0*M_PI; - d[i] = v; - } - wrapTo = weightedMedian(d.data()+n/4, d.data()+n*3/4, weights+n/4); - - double - sum_x = 0.0, - sum_xSq = 0.0, - mean_y = 0.0, - ss_xy = 0.0, - sum_weight = 0.0; - - for(size_t i=0; i!=n; ++i) - { - double x = data[i]; - if(x - wrapTo > M_PI) - x -= 2.0*M_PI; - else if(x - wrapTo < -M_PI) - x += 2.0*M_PI; - sum_x += frequencies[i] * weights[i]; - sum_xSq += frequencies[i] * frequencies[i] * weights[i]; - mean_y += x * weights[i]; - ss_xy += frequencies[i] * x * weights[i]; - sum_weight += weights[i]; - } - if(sum_weight == 0.0) - { - a = 0.0; - b = 0.0; - } - else { - mean_y /= sum_weight; - double mean_x = sum_x / sum_weight; - double ss_xx = sum_xSq - mean_x * sum_x; - ss_xy -= sum_x * mean_y; - b = ss_xy / ss_xx; - a = mean_y - b * mean_x; - } - } - - void fitChunk(size_t chunkSize, size_t pos, const std::vector<double>& nu, const std::vector<double>& data, std::vector<double>& fittedData) - { - double a, b; - PieceWisePhaseFitter::fitSlope(&data[pos], &nu[pos], chunkSize, a, b); - for(size_t ch=0; ch!=chunkSize; ++ch) - fittedData[ch+pos] = a + b * nu[ch+pos]; - } - - void fitChunk(size_t chunkSize, size_t pos, const std::vector<double>& nu, const std::vector<double>& data, const double* weights, std::vector<double>& fittedData) - { - double a, b; - PieceWisePhaseFitter::fitSlope(&data[pos], &nu[pos], &weights[pos], chunkSize, a, b); - for(size_t ch=0; ch!=chunkSize; ++ch) - fittedData[ch+pos] = a + b * nu[ch+pos]; - } - - /** - * No longer used -- I tried removing samples that deviated far from the fitted line and refit, but this seemed not to help. - */ - static bool removeDeviations(std::vector<double>& data, std::vector<double>& frequencies, double a, double b, double phaseThreshold) - { - if(data.empty()) - return false; - double maxDev = 0.0; - size_t index = 0; - for(size_t i=0; i!=data.size(); ++i) - { - double deviation = std::fabs(data[i] - (a + b * frequencies[i])); - if(deviation >= maxDev) - { - maxDev = deviation; - index = i; - } - } - if(maxDev > phaseThreshold) - { - data.erase(data.begin() + index); - frequencies.erase(frequencies.begin() + index); - return true; - } - else return false; - } -}; - -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/PiercePoint.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/PiercePoint.h deleted file mode 100644 index 45b7df46560..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/PiercePoint.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef PIERCEPOINT_H -#define PIERCEPOINT_H - -#include <vector> -#include <casacore/measures/Measures/MDirection.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/measures/Measures/MCPosition.h> -#include <casacore/measures/Measures/MPosition.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MEpoch.h> - -#include <armadillo> - -namespace LOFAR{ - -class PiercePoint -{ - static const double IONOheight; //= 300000.; //default height in meter - static const double EarthRadius;// = 6371000.; //default Earth radius in meter -public: - PiercePoint(double height=PiercePoint::IONOheight); - PiercePoint(const casacore::MPosition &ant,const casacore::MDirection &source,const double height); - PiercePoint(const casacore::MPosition &ant,const casacore::MDirection &source); - void init(const casacore::MPosition &ant,const casacore::MDirection &source,const double height); - void evaluate(casacore::MEpoch time); - arma::Col<double> getValue() const {return itsValue;} - casacore::MPosition getPos() const {return itsPosition;} - casacore::MDirection getDir() const {return itsDirection;} -private: - //station position - casacore::MPosition itsPosition; - //source position - casacore::MDirection itsDirection; - // Ionospheric layer height. - double itsIonoHeight; - // square of length antenna vector (int ITRF) minus square of vector to piercepoint. This is constant for a assumed spherical Earth - double itsC; - arma::Col<double> itsValue; //PiercePoint in ITRF coordinates -}; -} -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/QRSolver.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/QRSolver.h deleted file mode 100644 index 2431eeea8ea..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/QRSolver.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef QR_SOLVER_H -#define QR_SOLVER_H - -#include <complex> -#include <vector> -#include <cmath> - -typedef std::complex<double> dcomplex; - -/* ZGELS prototype */ -extern "C" void zgels_(char* trans, int* m, int* n, int* nrhs, dcomplex* a, - int* lda, dcomplex* b, int* ldb, dcomplex* work, int* lwork, int* info); - -class QRSolver -{ -public: - QRSolver(int m, int n, int nrhs) : - _m(m), _n(n), _nrhs(nrhs) - { } - - /** - * Find X that minimizes || B - A*X || (i.e. best solution to A*X = B ; A (MxN) * X (NxNRHS) = B (MxNRHS) - * Inputs are ordered column-major. - * @param a The M-by-N matrix A - * @param b On entry: input matrix of size M x NRHS, but with leading dimension max(M, N) - * On succesful exit: the solution vectors, stored columnwise (N, NRHS) - */ - bool Solve(dcomplex* a, dcomplex* b) - { - int info; - char trans = 'N'; // No transpose - int ldb = std::max(_m, _n); - if(_work.empty()) - { - int lwork = -1; - dcomplex wkopt; - zgels_(&trans, &_m, &_n, &_nrhs, a, &_m, b, &ldb, &wkopt, &lwork, &info ); - _work.resize((int) wkopt.real()); - } - int lwork = _work.size(); - zgels_(&trans, &_m, &_n, &_nrhs, a, &_m, b, &ldb, _work.data(), &lwork, &info); - // Check for full rank - return info == 0; - } -private: - /** Number of rows in matrix A */ - int _m; - - /** Number of cols in matrix A */ - int _n; - - /** Number of columns in matrices B and X */ - int _nrhs; - - std::vector<dcomplex> _work; -}; - -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Register.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Register.h deleted file mode 100644 index 8144c212546..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Register.h +++ /dev/null @@ -1,37 +0,0 @@ -//# Register.h: Register AOFlag steps in DPPP -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: AORFlagger.h 26900 2013-10-08 20:12:58Z loose $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_DDECAL_REGISTER_H -#define DPPP_DDECAL_REGISTER_H - -// @file -// @brief Register AOFlag steps in DPPP - - -// Define the function (without name mangling) to register the 'constructor'. -extern "C" -{ - void register_ddecal(); -} - -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/RotationAndDiagonalConstraint.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/RotationAndDiagonalConstraint.h deleted file mode 100644 index cd4934fdf09..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/RotationAndDiagonalConstraint.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef ROTATIONANDDIAGONAL_CONSTRAINT_H -#define ROTATIONANDDIAGONAL_CONSTRAINT_H - -#ifdef AOPROJECT -#include "Constraint.h" -#else -#include <DPPP_DDECal/Constraint.h> -#endif - -#include <vector> -#include <ostream> - -namespace LOFAR { - -class RotationAndDiagonalConstraint : public Constraint -{ -public: - RotationAndDiagonalConstraint() {}; - - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, std::ostream* statStream); - - virtual void InitializeDimensions(size_t nAntennas, - size_t nDirections, - size_t nChannelBlocks); - - virtual void SetWeights(const std::vector<double>& weights); - -private: - std::vector<Constraint::Result> _res; -}; - -} // namespace LOFAR - -#endif - diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/RotationConstraint.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/RotationConstraint.h deleted file mode 100644 index c097b31b8e7..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/RotationConstraint.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef ROTATION_CONSTRAINT_H -#define ROTATION_CONSTRAINT_H - -#ifdef AOPROJECT -#include "Constraint.h" -#else -#include <DPPP_DDECal/Constraint.h> -#endif - -#include <vector> -#include <ostream> - -namespace LOFAR { - -class RotationConstraint : public Constraint -{ -public: - RotationConstraint() {}; - - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, std::ostream* statStream); - - virtual void InitializeDimensions(size_t nAntennas, - size_t nDirections, - size_t nChannelBlocks); - - virtual void SetWeights(const std::vector<double>& weights); - - /* Compute the rotation from a 2x2 full jones solution */ - static double get_rotation(std::complex<double>* data); - -private: - std::vector<Constraint::Result> _res; -}; - -} // namespace LOFAR - -#endif - diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/ScreenConstraint.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/ScreenConstraint.h deleted file mode 100644 index bc4250fc491..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/ScreenConstraint.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef SCREEN_CONSTRAINT_H -#define SCREEN_CONSTRAINT_H -#include <DPPP/PhaseFitter.h> - -#include <DPPP_DDECal/MultiDirSolver.h> -#include <DPPP_DDECal/PiercePoint.h> -#include <DPPP_DDECal/KLFitter.h> -#include <Common/ParameterSet.h> - -#include <cmath> -#include <vector> -#include <memory> -#include <ostream> - -namespace LOFAR { -class ParameterSet; -class ScreenConstraint : public Constraint -{ - static const double phtoTEC;//=1./8.4479745e9; - static const double TECtoph;//=8.4479745e9; - static const size_t maxIter;//number of iterations to store in debug mode - -public: - ScreenConstraint(const ParameterSet& parset, - const string& prefix); - - /** Initialize metadata with frequencies, resize some members. - * Should be called after InitializeDimensions. - */ - void initialize(const double* frequencies); - virtual std::vector<Constraint::Result> Apply(std::vector<std::vector<MultiDirSolver::DComplex> >& solutions, - double time, std::ostream* statStream); - virtual void CalculatePiercepoints(); - - void setAntennaPositions(const std::vector<std::vector<double> > antenna_pos); - void setDirections(const std::vector<std::pair<double, double> > source_pos); - void setTime(double time); - void initPiercePoints(); - void setCoreAntennas(const std::vector<size_t>& coreAntennas) - { - _coreAntennas = coreAntennas; - if (itsMode == "csfull") - _screenFitters.resize(_nAntennas-_coreAntennas.size()+1); - } - void setOtherAntennas(const std::vector<size_t>& otherAntennas) - { - _otherAntennas = otherAntennas; - } - void getPPValue(std::vector<std::vector<std::complex<double> > >&, size_t, size_t, double&,double&) const; -private: - std::vector<std::vector<double> > itsAntennaPos; - std::vector<std::vector<double> > itsSourcePos; - std::vector<double> itsFrequencies; - std::vector<double> itsprevsol; - std::vector<double> _iterphases; - // antenna positions - // source positions - // measures instance ofzo - std::vector<std::vector<PiercePoint> > itsPiercePoints; //temporary hold calculated piercepoints per antenna - std::vector<KLFitter> _screenFitters; - std::vector<size_t> _coreAntennas; - std::vector<size_t> _otherAntennas; //has to be a vector for openmp looping - double itsCurrentTime; - double itsBeta; - double itsHeight; - double itsOrder; - double itsRdiff; - string itsMode; - string itsAVGMode; - int itsDebugMode; - size_t itsIter; - -}; -} -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/SmoothnessConstraint.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/SmoothnessConstraint.h deleted file mode 100644 index 270f5eadd8d..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/SmoothnessConstraint.h +++ /dev/null @@ -1,46 +0,0 @@ -#include "Constraint.h" -#include "KernelSmoother.h" - -#ifndef SMOOTHNESS_CONSTRAINT_H -#define SMOOTHNESS_CONSTRAINT_H - -class SmoothnessConstraint : public Constraint -{ -public: - typedef std::complex<double> dcomplex; - typedef KernelSmoother<dcomplex, double> Smoother; - - SmoothnessConstraint(double bandwidthHz); - - std::vector<Constraint::Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, double, std::ostream* statStream) final override; - - void SetWeights(const std::vector<double> &weights) final override { - _weights = weights; - } - - void Initialize(const double* frequencies); - - virtual void InitializeDimensions(size_t nAntennas, - size_t nDirections, - size_t nChannelBlocks) final override; - - struct FitData - { - FitData(const double* frequencies, size_t n, Smoother::KernelType kernelType, double kernelBandwidth) - : smoother(frequencies, n, kernelType, kernelBandwidth), - data(n), weight(n) - { } - - Smoother smoother; - std::vector<dcomplex> data; - std::vector<double> weight; - }; - std::vector<FitData> _fitData; - std::vector<double> _frequencies, _weights; - Smoother::KernelType _kernelType; - double _bandwidth; -}; - -#endif - diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Stopwatch.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Stopwatch.h deleted file mode 100644 index b93df8b1f0e..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/Stopwatch.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef STOPWATCH_H -#define STOPWATCH_H - -#include <boost/date_time/posix_time/posix_time_types.hpp> - -#include <string> - -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -/** - @author A.R. Offringa <offringa@astro.rug.nl> -*/ -class Stopwatch{ - public: - Stopwatch(); - explicit Stopwatch(bool start); - ~Stopwatch(); - void Start(); - void Pause(); - void Reset(); - - std::string ToString() const; - std::string ToShortString() const; - long double Seconds() const; - - std::string ToDaysString() const; - std::string ToHoursString() const; - std::string ToMinutesString() const; - std::string ToSecondsString() const; - std::string ToMilliSecondsString() const; - std::string ToMicroSecondsString() const; - std::string ToNanoSecondsString() const; - private: - bool _running; - boost::posix_time::ptime _startTime; - boost::posix_time::time_duration _sum; -}; - -// end of Doxygen skip -#endif - -#endif diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/TECConstraint.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/TECConstraint.h deleted file mode 100644 index bee6e9cb745..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/TECConstraint.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef TEC_CONSTRAINT_H -#define TEC_CONSTRAINT_H - -#include <vector> - -#ifdef AOPROJECT -#include "Constraint.h" -#include "PhaseFitter.h" -#include "PieceWisePhaseFitter.h" -#else -#include <DPPP_DDECal/Constraint.h> -#include <DPPP_DDECal/PieceWisePhaseFitter.h> -#include <DPPP/PhaseFitter.h> -#endif - -#include <vector> -#include <ostream> - -class TECConstraintBase : public Constraint -{ -public: - enum Mode { - /** Solve for both a (differential) TEC and an XX/YY-common scalar */ - TECAndCommonScalarMode, - /** Solve only for a (differential) TEC value */ - TECOnlyMode - }; - - TECConstraintBase(Mode mode); - - /** Initialize metadata with frequencies, resize some members. - * Should be called after InitializeDimensions. - */ - void initialize(const double* frequencies); - - /** Propagate weights to the phase fitters */ - virtual void SetWeights(const std::vector<double>& weights) final override; - -protected: - virtual void initializeChild() { } - - void applyReferenceAntenna(std::vector<std::vector<dcomplex> >& solutions) const; - - Mode _mode; - std::vector<PhaseFitter> _phaseFitters; - std::vector<double> _weights; -}; - -class TECConstraint : public TECConstraintBase -{ -public: - TECConstraint(Mode mode) : TECConstraintBase(mode) { } - - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, - std::ostream* statStream) override; -}; - -class ApproximateTECConstraint : public TECConstraint -{ -public: - ApproximateTECConstraint(Mode mode) : - TECConstraint(mode), - _finishedApproximateStage(false), - _fittingChunkSize(0), - _maxApproxIters(50) - { } - - virtual void PrepareIteration(bool hasReachedPrecision, size_t iteration, bool finalIter) final override { - _finishedApproximateStage = hasReachedPrecision || finalIter || iteration >= _maxApproxIters; - for(size_t thread=0; thread!=_phaseFitters.size(); ++thread) { - std::fill(_phaseFitters[thread].WeightData(), - _phaseFitters[thread].WeightData()+_phaseFitters[thread].Size(), - 1.0); - } - } - - virtual bool Satisfied() const final override { return _finishedApproximateStage; } - - virtual std::vector<Result> Apply( - std::vector<std::vector<dcomplex> >& solutions, - double time, - std::ostream* statStream) final override; - - void SetFittingChunkSize(size_t fittingChunkSize) - { _fittingChunkSize = fittingChunkSize; } - - void SetMaxApproximatingIterations(size_t maxApproxIters) - { _maxApproxIters = maxApproxIters; } -protected: - virtual void initializeChild() final override; - -private: - bool _finishedApproximateStage; - std::vector<PieceWisePhaseFitter> _pwFitters; - std::vector<std::vector<double> > _threadData; - std::vector<std::vector<double> > _threadFittedData; - std::vector<std::vector<double> > _threadWeights; - size_t _fittingChunkSize, _maxApproxIters; -}; - -#endif - diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/screenfitter.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/screenfitter.h deleted file mode 100644 index c75b2d7fb07..00000000000 --- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/screenfitter.h +++ /dev/null @@ -1,44 +0,0 @@ -//# screenfitter.h: Class to perform screen fitting -//# Copyright (C) 2016 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# -//# @author Maaijke Mevius - -/** - * @file screenfitter.h Implements TEC model screen filter @ref ScreenFitter. - * @author Maaijke Mevius - * @date 2017-02-01 - */ - -#ifndef SCREEN_FITTER_H -#define SCREEN_FITTER_H -#include <armadillo> -#include <vector> - -class ScreenFitter{ - public: - ScreenFitter(); - double* PhaseData() { return _phases.data(); } - - private: - std::vector<double> _phases,_frequencies, _weights; - mat _corrmatrix; //correlation matrix - -}; -#endif diff --git a/CEP/DP3/DPPP_DDECal/src/CMakeLists.txt b/CEP/DP3/DPPP_DDECal/src/CMakeLists.txt deleted file mode 100644 index 480c5c11c24..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -# $Id: CMakeLists.txt 30439 2014-11-19 15:04:34Z dijkema $ - -include(LofarPackageVersion) - -lofar_add_library(dppp_ddecal - Package__Version.cc - DDECal.cc Register.cc Stopwatch.cc - KLFitter.cc DDECal.cc MultiDirSolver.cc Constraint.cc PiercePoint.cc - ScreenConstraint.cc SmoothnessConstraint.cc - TECConstraint.cc RotationConstraint.cc - RotationAndDiagonalConstraint.cc -) - -lofar_add_bin_program(versiondppp_ddecal versiondppp_ddecal.cc) diff --git a/CEP/DP3/DPPP_DDECal/src/Constraint.cc b/CEP/DP3/DPPP_DDECal/src/Constraint.cc deleted file mode 100644 index b60f4068bc2..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/Constraint.cc +++ /dev/null @@ -1,77 +0,0 @@ -#ifdef AOPROJECT -#include "Constraint.h" -#else -#include <DPPP_DDECal/Constraint.h> -#endif - -std::vector<Constraint::Result> PhaseOnlyConstraint::Apply( - std::vector<std::vector<dcomplex> >& solutions, double, - std::ostream* statStream) -{ - for (size_t ch=0; ch<solutions.size(); ++ch) { - for (size_t solIndex=0; solIndex<solutions[ch].size(); ++solIndex) { - solutions[ch][solIndex] /= std::abs(solutions[ch][solIndex]); - } - } - - return std::vector<Constraint::Result>(); -} - -std::vector<Constraint::Result> AmplitudeOnlyConstraint::Apply( - std::vector<std::vector<dcomplex> >& solutions, double, - std::ostream* statStream) -{ - for (size_t ch=0; ch<solutions.size(); ++ch) { - for (size_t solIndex=0; solIndex<solutions[ch].size(); ++solIndex) { - solutions[ch][solIndex] = std::abs(solutions[ch][solIndex]); - } - } - - return std::vector<Constraint::Result>(); -} - -std::vector<Constraint::Result> DiagonalConstraint::Apply( - std::vector<std::vector<dcomplex> >& solutions, double, - std::ostream* statStream) -{ - if(_polsPerSolution == 4) - { - for (size_t ch=0; ch<solutions.size(); ++ch) { - for (size_t solIndex=0; solIndex<solutions[ch].size(); solIndex += 4) { - solutions[ch][solIndex+1] = 0.0; - solutions[ch][solIndex+2] = 0.0; - } - } - } - - return std::vector<Constraint::Result>(); -} - -std::vector<Constraint::Result> CoreConstraint::Apply( - std::vector<std::vector<dcomplex> >& solutions, double, - std::ostream* statStream) -{ - for (uint ch=0; ch<solutions.size(); ++ch) { - std::vector<dcomplex> coreSolutions(_nDirections, 0.0); - // Calculate the sum of solutions over the core stations - for(size_t antennaIndex : _coreAntennas) - { - size_t startIndex = antennaIndex * _nDirections; - for(size_t direction = 0; direction != _nDirections; ++direction) - coreSolutions[direction] += solutions[ch][startIndex + direction]; - } - - // Divide by nr of core stations to get the mean solution - for(dcomplex& solution : coreSolutions) - solution /= _coreAntennas.size(); - - // Assign all core stations to the mean solution - for(size_t antennaIndex : _coreAntennas) - { - size_t startIndex = antennaIndex * _nDirections; - for(size_t direction = 0; direction != _nDirections; ++direction) - solutions[ch][startIndex + direction] = coreSolutions[direction]; - } - } - return std::vector<Constraint::Result>(); -} diff --git a/CEP/DP3/DPPP_DDECal/src/DDECal.cc b/CEP/DP3/DPPP_DDECal/src/DDECal.cc deleted file mode 100644 index a6b1fc64f0d..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/DDECal.cc +++ /dev/null @@ -1,980 +0,0 @@ -//# DDECal.cc: DPPP step class to do a direction dependent gain calibration -//# Copyright (C) 2013 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: DDECal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Tammo Jan Dijkema - -#include <lofar_config.h> -#include <DPPP/Package__Version.h> -#include <DPPP_DDECal/DDECal.h> - -#include <DPPP/ApplyCal.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPLogger.h> -#include <DPPP/MSReader.h> -#include <DPPP/Simulate.h> -#include <DPPP/SourceDBUtil.h> - -#include <DPPP_DDECal/ScreenConstraint.h> -#include <DPPP_DDECal/TECConstraint.h> -#include <DPPP_DDECal/RotationConstraint.h> -#include <DPPP_DDECal/RotationAndDiagonalConstraint.h> -#include <DPPP_DDECal/SmoothnessConstraint.h> - -#include <ParmDB/ParmDB.h> -#include <ParmDB/ParmValue.h> -#include <ParmDB/SourceDB.h> - -#include <Common/LofarLogger.h> -#include <Common/OpenMP.h> -#include <Common/ParameterSet.h> -#include <Common/StreamUtil.h> -#include <Common/StringUtil.h> - -#include <fstream> -#include <ctime> -#include <utility> - -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/MatrixMath.h> -#include <casacore/measures/Measures/MEpoch.h> -#include <casacore/measures/Measures/MeasConvert.h> -#include <casacore/measures/Measures/MCDirection.h> -#include <casacore/casa/Quanta/Quantum.h> -#include <casacore/casa/OS/File.h> - -#include <vector> -#include <algorithm> - -#include <limits> -#include <iostream> -#include <sstream> -#include <iomanip> - -using namespace casacore; -using namespace LOFAR::BBS; - -namespace LOFAR { - namespace DPPP { - - DDECal::DDECal (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsUseModelColumn(parset.getBool (prefix + "usemodelcolumn", false)), - itsAvgTime (0), - itsSols (), - itsH5ParmName (parset.getString (prefix + "h5parm", - parset.getString("msin")+ - "/instrument.h5")), - itsH5Parm (itsH5ParmName, true), - itsPropagateSolutions (parset.getBool (prefix + "propagatesolutions", - false)), - itsTimeStep (0), - itsSolInt (parset.getInt (prefix + "solint", 1)), - itsStepInSolInt (0), - itsNChan (parset.getInt (prefix + "nchan", 1)), - itsUVWFlagStep (input, parset, prefix), - itsCoreConstraint(parset.getDouble (prefix + "coreconstraint", 0.0)), - itsSmoothnessConstraint(parset.getDouble (prefix + "smoothnessconstraint", 0.0)), - itsScreenCoreConstraint(parset.getDouble (prefix + "tecscreen.coreconstraint", 0.0)), - itsFullMatrixMinimalization(false), - itsApproximateTEC(false), - itsStatFilename(parset.getString(prefix + "statfilename", "")) - { - stringstream ss; - ss << parset; - itsParsetString = ss.str(); - - itsMultiDirSolver.set_max_iterations(parset.getInt(prefix + "maxiter", 50)); - double tolerance = parset.getDouble(prefix + "tolerance", 1.e-4); - itsMultiDirSolver.set_accuracy(tolerance); - itsMultiDirSolver.set_constraint_accuracy(parset.getDouble(prefix + "approxtolerance", tolerance*10.0)); - itsMultiDirSolver.set_step_size(parset.getDouble(prefix + "stepsize", 0.2)); - itsMultiDirSolver.set_detect_stalling(parset.getBool(prefix + "detectstalling", true)); - - if(!itsStatFilename.empty()) - itsStatStream.reset(new std::ofstream(itsStatFilename)); - - vector<string> strDirections; - if (itsUseModelColumn) { - itsModelData.resize(itsSolInt); - strDirections.push_back("pointing"); - itsDirections.push_back(vector<string>()); - } else { - strDirections = parset.getStringVector (prefix + "directions", - vector<string> ()); - // Default directions are all patches - if (strDirections.empty()) { - string sourceDBName = parset.getString(prefix+"sourcedb"); - BBS::SourceDB sourceDB(BBS::ParmDBMeta("", sourceDBName), false); - vector<string> patchNames = makePatchList(sourceDB, vector<string>()); - itsDirections.resize(patchNames.size()); - for (uint i=0; i<patchNames.size(); ++i) { - itsDirections[i] = vector<string>(1, patchNames[i]); - } - } else { - itsDirections.resize(strDirections.size()); - for (uint i=0; i<strDirections.size(); ++i) { - ParameterValue dirStr(strDirections[i]); - itsDirections[i] = dirStr.getStringVector(); - } - } - } - - itsMode = GainCal::stringToCalType( - toLower(parset.getString(prefix + "mode", - "complexgain"))); - if(itsCoreConstraint != 0.0) { - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new CoreConstraint())); - } - if(itsSmoothnessConstraint != 0.0) { - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new SmoothnessConstraint(itsSmoothnessConstraint))); - } - switch(itsMode) { - case GainCal::COMPLEXGAIN: - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new DiagonalConstraint(4))); - itsMultiDirSolver.set_phase_only(false); - itsFullMatrixMinimalization = true; - break; - case GainCal::SCALARCOMPLEXGAIN: - // no constraints - itsMultiDirSolver.set_phase_only(false); - itsFullMatrixMinimalization = false; - break; - case GainCal::FULLJONES: - // no constraints - itsMultiDirSolver.set_phase_only(false); - itsFullMatrixMinimalization = true; - break; - case GainCal::PHASEONLY: - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new PhaseOnlyConstraint())); - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new DiagonalConstraint(4))); - itsMultiDirSolver.set_phase_only(true); - itsFullMatrixMinimalization = true; - break; - case GainCal::SCALARPHASE: - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new PhaseOnlyConstraint())); - itsMultiDirSolver.set_phase_only(true); - break; - case GainCal::AMPLITUDEONLY: - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new DiagonalConstraint(4))); - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new AmplitudeOnlyConstraint())); - itsMultiDirSolver.set_phase_only(false); - itsFullMatrixMinimalization = true; - break; - case GainCal::SCALARAMPLITUDE: - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new AmplitudeOnlyConstraint())); - itsMultiDirSolver.set_phase_only(false); - itsFullMatrixMinimalization = false; - break; - case GainCal::TEC: - case GainCal::TECANDPHASE: - itsApproximateTEC = parset.getBool(prefix + "approximatetec", false); - if(itsApproximateTEC) - { - int iters = parset.getInt(prefix + "maxapproxiter", itsMultiDirSolver.max_iterations()/2); - int chunksize = parset.getInt(prefix + "approxchunksize", 0); - casacore::CountedPtr<ApproximateTECConstraint> ptr; - if(itsMode == GainCal::TEC) - ptr = casacore::CountedPtr<ApproximateTECConstraint>( - new ApproximateTECConstraint(TECConstraint::TECOnlyMode)); - else - ptr = casacore::CountedPtr<ApproximateTECConstraint>( - new ApproximateTECConstraint(TECConstraint::TECAndCommonScalarMode)); - ptr->SetMaxApproximatingIterations(iters); - ptr->SetFittingChunkSize(chunksize); - itsConstraints.push_back(ptr); - } - else { - if(itsMode == GainCal::TEC) - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new TECConstraint(TECConstraint::TECOnlyMode))); - else - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new TECConstraint(TECConstraint::TECAndCommonScalarMode))); - } - itsMultiDirSolver.set_phase_only(true); - itsFullMatrixMinimalization = false; - break; - case GainCal::TECSCREEN: - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new ScreenConstraint(parset, prefix+"tecscreen."))); - itsMultiDirSolver.set_phase_only(true); - itsFullMatrixMinimalization = false; - break; - case GainCal::ROTATIONANDDIAGONAL: - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new RotationAndDiagonalConstraint())); - itsFullMatrixMinimalization = true; - break; - case GainCal::ROTATION: - itsConstraints.push_back(casacore::CountedPtr<Constraint>( - new RotationConstraint())); - itsFullMatrixMinimalization = true; - break; - default: - THROW (Exception, "Unexpected mode: " << - GainCal::calTypeToString(itsMode)); - } - - const size_t nDir = itsDirections.size(); - if (itsUseModelColumn) { - ASSERT(nDir == 1); - } else { - itsPredictSteps.resize(nDir); - for (size_t dir=0; dir<nDir; ++dir) { - itsPredictSteps[dir]=Predict(input, parset, prefix, itsDirections[dir]); - } - } - } - - DDECal::~DDECal() - {} - - DPStep::ShPtr DDECal::makeStep (DPInput* input, - const ParameterSet& parset, - const std::string& prefix) - { - return DPStep::ShPtr(new DDECal(input, parset, prefix)); - } - - void DDECal::updateInfo (const DPInfo& infoIn) - { - info() = infoIn; - info().setNeedVisData(); - - const size_t nDir = itsDirections.size(); - - itsUVWFlagStep.updateInfo(infoIn); - for (size_t dir=0; dir<itsPredictSteps.size(); ++dir) { - itsPredictSteps[dir].updateInfo(infoIn); - } - - if (itsSolInt==0) { - itsSolInt=info().ntime(); - } - - itsDataPtrs.resize(itsSolInt); - itsModelDataPtrs.resize(itsSolInt); - for (uint t=0; t<itsSolInt; ++t) { - itsModelDataPtrs[t].resize(nDir); - } - for (uint i=0;i<itsConstraints.size();i++) { - itsMultiDirSolver.add_constraint(itsConstraints[i].get()); - } - - - itsBufs.resize(itsSolInt); - - itsDataResultStep = ResultStep::ShPtr(new ResultStep()); - itsUVWFlagStep.setNextStep(itsDataResultStep); - - itsResultSteps.resize(itsPredictSteps.size()); - for (size_t dir=0; dir<itsPredictSteps.size(); ++dir) { - itsResultSteps[dir] = MultiResultStep::ShPtr(new MultiResultStep(itsSolInt)); - itsPredictSteps[dir].setNextStep(itsResultSteps[dir]); - } - - if (itsNChan==0 || itsNChan>info().nchan()) { - itsNChan = info().nchan(); - } - - // Convert from casacore::Vector to std::vector - vector<int> ant1(info().getAnt1().size()); - vector<int> ant2(info().getAnt2().size()); - for (uint i=0; i<ant1.size(); ++i) { - ant1[i]=info().getAnt1()[i]; - ant2[i]=info().getAnt2()[i]; - } - - // Fill antenna info in H5Parm, need to convert from casa types to std types - std::vector<std::string> antennaNames(info().antennaNames().size()); - std::vector<std::vector<double> > antennaPos(info().antennaPos().size()); - for (uint i=0; i<info().antennaNames().size(); ++i) { - antennaNames[i]=info().antennaNames()[i]; - casacore::Quantum<casacore::Vector<double> > pos = info().antennaPos()[i].get("m"); - antennaPos[i].resize(3); - antennaPos[i][0] = pos.getValue()[0]; - antennaPos[i][1] = pos.getValue()[1]; - antennaPos[i][2] = pos.getValue()[2]; - } - - itsH5Parm.addAntennas(antennaNames, antennaPos); - - std::vector<std::pair<double, double> > sourcePositions(itsDirections.size()); - if (itsUseModelColumn) { - MDirection dirJ2000(MDirection::Convert(infoIn.phaseCenter(), - MDirection::J2000)()); - Quantum<Vector<Double> > angles = dirJ2000.getAngle(); - sourcePositions[0] = std::pair<double, double> ( - angles.getBaseValue()[0], - angles.getBaseValue()[1]); - - } else { - for (uint i=0; i<itsDirections.size(); ++i) { - sourcePositions[i] = itsPredictSteps[i].getFirstDirection(); - } - } - itsH5Parm.addSources(getDirectionNames(), sourcePositions); - - uint nSolTimes = (info().ntime()+itsSolInt-1)/itsSolInt; - itsSols.resize(nSolTimes); - itsNIter.resize(nSolTimes); - itsNApproxIter.resize(nSolTimes); - itsConstraintSols.resize(nSolTimes); - - size_t nChannelBlocks = info().nchan()/itsNChan; - itsChanBlockStart.resize(nChannelBlocks+1); - itsChanBlockFreqs.resize(nChannelBlocks); - for(size_t chBlock=0; chBlock!=nChannelBlocks; ++chBlock) { - const size_t - channelIndexStart = chBlock * info().nchan() / nChannelBlocks, - channelIndexEnd = (chBlock+1) * info().nchan() / nChannelBlocks, - curChannelBlockSize = channelIndexEnd - channelIndexStart; - double meanfreq = std::accumulate( - info().chanFreqs().data()+channelIndexStart, - info().chanFreqs().data()+channelIndexEnd, - 0.0) / curChannelBlockSize; - itsChanBlockStart[chBlock] = channelIndexStart; - itsChanBlockFreqs[chBlock] = meanfreq; - } - itsChanBlockStart[itsChanBlockStart.size()-1] = info().nchan(); - - itsWeights.assign(itsChanBlockFreqs.size()*info().nantenna(), 0.0); - - for (uint i=0; i<itsConstraints.size();++i) { - // Initialize the constraint with some common metadata - itsConstraints[i]->InitializeDimensions(info().antennaNames().size(), - itsDirections.size(), - nChannelBlocks); - - // Different constraints need different information. Determine if the constraint is - // of a type that needs more information, and if so initialize the constraint. - CoreConstraint* coreConstraint = dynamic_cast<CoreConstraint*>(itsConstraints[i].get()); - if(coreConstraint != 0) - { - // Take antenna with index 0 as reference station - double - refX = antennaPos[0][0], - refY = antennaPos[0][1], - refZ = antennaPos[0][2]; - std::set<size_t> coreAntennaIndices; - const double coreDistSq = itsCoreConstraint*itsCoreConstraint; - for(size_t ant=0; ant!=antennaPos.size(); ++ant) - { - double - dx = refX - antennaPos[ant][0], - dy = refY - antennaPos[ant][1], - dz = refZ - antennaPos[ant][2], - distSq = dx*dx + dy*dy + dz*dz; - if(distSq <= coreDistSq) - coreAntennaIndices.insert(ant); - } - coreConstraint->initialize(coreAntennaIndices); - } - - ScreenConstraint* screenConstraint = dynamic_cast<ScreenConstraint*>(itsConstraints[i].get()); - if(screenConstraint != 0) - { - screenConstraint->initialize(&(itsChanBlockFreqs[0])); - screenConstraint->setAntennaPositions(antennaPos); - screenConstraint->setDirections(sourcePositions); - screenConstraint->initPiercePoints(); - double - refX = antennaPos[i][0], - refY = antennaPos[i][1], - refZ = antennaPos[i][2]; - std::vector<size_t> coreAntennaIndices; - std::vector<size_t> otherAntennaIndices; - const double coreDistSq = itsScreenCoreConstraint*itsScreenCoreConstraint; - for(size_t ant=0; ant!=antennaPos.size(); ++ant) - { - double - dx = refX - antennaPos[ant][0], - dy = refY - antennaPos[ant][1], - dz = refZ - antennaPos[ant][2], - distSq = dx*dx + dy*dy + dz*dz; - if(distSq <= coreDistSq) - coreAntennaIndices.push_back(ant); - else - otherAntennaIndices.push_back(ant); - } - screenConstraint->setCoreAntennas(coreAntennaIndices); - screenConstraint->setOtherAntennas(otherAntennaIndices); - } - - TECConstraintBase* tecConstraint = dynamic_cast<TECConstraintBase*>(itsConstraints[i].get()); - if(tecConstraint != nullptr) - { - tecConstraint->initialize(&itsChanBlockFreqs[0]); - } - SmoothnessConstraint* sConstraint = dynamic_cast<SmoothnessConstraint*>(itsConstraints[i].get()); - if(sConstraint != nullptr) - { - sConstraint->Initialize(&itsChanBlockFreqs[0]); - } - } - - uint nSt = info().antennaNames().size(); - itsMultiDirSolver.init(nSt, nDir, info().nchan(), ant1, ant2); - itsMultiDirSolver.set_channel_blocks(nChannelBlocks); - - for (uint i=0; i<nSolTimes; ++i) { - itsSols[i].resize(nChannelBlocks); - } - } - - void DDECal::show (std::ostream& os) const - { - os - << "DDECal " << itsName << '\n' - << " H5Parm: " << itsH5ParmName << '\n' - << " solint: " << itsSolInt << '\n' - << " nchan: " << itsNChan << '\n' - << " directions: " << itsDirections << '\n' - << " use model column: " << boolalpha << itsUseModelColumn << '\n' - << " tolerance: " << itsMultiDirSolver.get_accuracy() << '\n' - << " max iter: " << itsMultiDirSolver.max_iterations() << '\n' - << " detect stalling: " << std::boolalpha << itsMultiDirSolver.get_detect_stalling() << '\n' - << " step size: " << itsMultiDirSolver.get_step_size() << '\n' - << " mode (constraints): " << GainCal::calTypeToString(itsMode) << '\n' - << " coreconstraint: " << itsCoreConstraint << '\n' - << " smoothnessconstraint:" << itsSmoothnessConstraint << '\n' - << " approximate fitter: " << itsApproximateTEC << '\n'; - for (uint i=0; i<itsPredictSteps.size(); ++i) { - itsPredictSteps[i].show(os); - } - itsUVWFlagStep.show(os); - } - - void DDECal::showTimings (std::ostream& os, double duration) const - { - double totaltime=itsTimer.getElapsed(); - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " DDECal " << itsName << endl; - - os << " "; - FlagCounter::showPerc1 (os, itsTimerPredict.getElapsed(), totaltime); - os << " of it spent in predict" << endl; - - os << " "; - FlagCounter::showPerc1 (os, itsTimerSolve.getElapsed(), totaltime); - os << " of it spent in estimating gains and computing residuals" << endl; - - itsMultiDirSolver.showTimings(os, itsTimerSolve.getElapsed()); - - os << " "; - FlagCounter::showPerc1 (os, itsTimerWrite.getElapsed(), totaltime); - os << " of it spent in writing gain solutions to disk" << endl; - - os << "Iterations taken: ["; - for (uint i=0; i<itsNIter.size()-1; ++i) { - os<<itsNIter[i]; - if(itsNApproxIter[i]!=0) - os << '|' << itsNApproxIter[i]; - os<<","; - } - os<<itsNIter[itsNIter.size()-1]; - if(itsNApproxIter[itsNIter.size()-1]!=0) - os << '|' << itsNApproxIter[itsNIter.size()-1]; - os<<"]"<<endl; - } - - void DDECal::initializeScalarSolutions() { - if (itsTimeStep/itsSolInt>0 && itsPropagateSolutions) { - // initialize solutions with those of the previous step - itsSols[itsTimeStep/itsSolInt] = itsSols[itsTimeStep/itsSolInt-1]; - } else { - // initialize solutions with 1. - size_t n = itsDirections.size()*info().antennaNames().size(); - for (vector<DComplex>& solvec : itsSols[itsTimeStep/itsSolInt]) { - solvec.assign(n, 1.0); - } - } - } - - void DDECal::initializeFullMatrixSolutions() { - if (itsTimeStep/itsSolInt>0 && itsPropagateSolutions) { - // initialize solutions with those of the previous step - itsSols[itsTimeStep/itsSolInt] = itsSols[itsTimeStep/itsSolInt-1]; - } else { - // initialize solutions with unity matrix [1 0 ; 0 1]. - size_t n = itsDirections.size()*info().antennaNames().size(); - for (vector<DComplex>& solvec : itsSols[itsTimeStep/itsSolInt]) { - solvec.resize(n*4); - for(size_t i=0; i!=n; ++i) - { - solvec[i*4 + 0] = 1.0; - solvec[i*4 + 1] = 0.0; - solvec[i*4 + 2] = 0.0; - solvec[i*4 + 3] = 1.0; - } - } - } - } - - vector<string> DDECal::getDirectionNames() { - vector<string> res; - - for (vector<vector<string> >::iterator dirIter = itsDirections.begin(); - dirIter != itsDirections.end(); - dirIter++) { - stringstream ss; - ss << (*dirIter); - res.push_back(ss.str()); - } - return res; - } - - void DDECal::doSolve () - { - if(itsFullMatrixMinimalization) - initializeFullMatrixSolutions(); - else - initializeScalarSolutions(); - - itsTimerSolve.start(); - MultiDirSolver::SolveResult solveResult; - if(itsFullMatrixMinimalization) - { - solveResult = itsMultiDirSolver.processFullMatrix(itsDataPtrs, itsModelDataPtrs, - itsSols[itsTimeStep/itsSolInt], - itsAvgTime / itsSolInt, itsStatStream.get()); - } - else { - solveResult = itsMultiDirSolver.processScalar(itsDataPtrs, itsModelDataPtrs, - itsSols[itsTimeStep/itsSolInt], - itsAvgTime / itsSolInt, itsStatStream.get()); - } - itsTimerSolve.stop(); - - itsNIter[itsTimeStep/itsSolInt] = solveResult.iterations; - itsNApproxIter[itsTimeStep/itsSolInt] = solveResult.constraintIterations; - - // Store constraint solutions if any constaint has a non-empty result - bool someConstraintHasResult = false; - for (uint constraintnum=0; constraintnum<solveResult._results.size(); ++constraintnum) { - if (!solveResult._results[constraintnum].empty()) { - someConstraintHasResult = true; - break; - } - } - if (someConstraintHasResult) { - itsConstraintSols[itsTimeStep/itsSolInt]=solveResult._results; - } - } - - bool DDECal::process (const DPBuffer& bufin) - { - itsTimer.start(); - - itsBufs[itsStepInSolInt].copy(bufin); - itsDataPtrs[itsStepInSolInt] = itsBufs[itsStepInSolInt].getData().data(); - - // Fetch inputs because parallel PredictSteps should not read it from disk - itsInput->fetchUVW(bufin, itsBufs[itsStepInSolInt], itsTimer); - itsInput->fetchWeights(bufin, itsBufs[itsStepInSolInt], itsTimer); - itsInput->fetchFullResFlags(bufin, itsBufs[itsStepInSolInt], itsTimer); - - // UVW flagging happens on a copy of the buffer, so these flags are not written - itsUVWFlagStep.process(itsBufs[itsStepInSolInt]); - - itsTimerPredict.start(); - -// if(itsPredictSteps.size() < LOFAR::OpenMP::maxThreads()) -// LOFAR::OpenMP::setNested(true); - if (itsUseModelColumn) { - itsInput->getModelData (itsBufs[itsStepInSolInt].getRowNrs(), - itsModelData[itsStepInSolInt]); - itsModelDataPtrs[itsStepInSolInt][0] = itsModelData[itsStepInSolInt].data(); - } else { -#pragma omp parallel for schedule(dynamic) if(itsPredictSteps.size()>1) - for (size_t dir=0; dir<itsPredictSteps.size(); ++dir) { - itsPredictSteps[dir].process(itsBufs[itsStepInSolInt]); - itsModelDataPtrs[itsStepInSolInt][dir] = - itsResultSteps[dir]->get()[itsStepInSolInt].getData().data(); - } - } - - // Handle weights and flags - const size_t nBl = info().nbaselines(); - const size_t nCh = info().nchan(); - const size_t nCr = 4; - - size_t nchanblocks = itsChanBlockFreqs.size(); - size_t chanblock = 0; - - double weightFactor = 1./(nCh*(info().nantenna()-1)*nCr*itsSolInt); - - for (size_t ch=0; ch<nCh; ++ch) { - if (ch == itsChanBlockStart[chanblock+1]) { - chanblock++; - } - for (size_t bl=0; bl<nBl; ++bl) { - for (size_t cr=0; cr<nCr; ++cr) { - if (itsBufs[itsStepInSolInt].getFlags().data()[bl*nCr*nCh+ch*nCr+cr]) { - // Flagged points: set data and model to 0 - itsDataPtrs[itsStepInSolInt][bl*nCr*nCh+ch*nCr+cr] = 0; - for (size_t dir=0; dir<itsModelDataPtrs[0].size(); ++dir) { - itsModelDataPtrs[itsStepInSolInt][dir][bl*nCr*nCh+ch*nCr+cr] = 0; - } - } else { - // Premultiply non-flagged data with sqrt(weight) - double weight = itsBufs[itsStepInSolInt].getWeights().data()[bl*nCr*nCh+ch*nCr+cr]; - itsDataPtrs[itsStepInSolInt][bl*nCr*nCh+ch*nCr+cr] *= sqrt(weight); - itsWeights[info().getAnt1()[bl]*nchanblocks + chanblock] += weight; - itsWeights[info().getAnt2()[bl]*nchanblocks + chanblock] += weight; - for (size_t dir=0; dir<itsModelDataPtrs[0].size(); ++dir) { - itsModelDataPtrs[itsStepInSolInt][dir][bl*nCr*nCh+ch*nCr+cr] *= sqrt(weight); - } - } - } - } - } - - for (auto& weight: itsWeights) { - weight *= weightFactor; - } - - itsTimerPredict.stop(); - - itsAvgTime += itsAvgTime + bufin.getTime(); - - if (itsStepInSolInt==itsSolInt-1) { - for (uint constraint_num = 0; constraint_num < itsConstraints.size(); ++constraint_num) { - itsConstraints[constraint_num]->SetWeights(itsWeights); - } - - doSolve(); - - // Clean up, prepare for next iteration - itsStepInSolInt=0; - itsAvgTime=0; - itsWeights.assign(itsWeights.size(), 0.); - for (size_t dir=0; dir<itsResultSteps.size(); ++dir) { - itsResultSteps[dir]->clear(); - } - } else { - itsStepInSolInt++; - } - - itsTimeStep++; - itsTimer.stop(); - - getNextStep()->process(bufin); - - return false; - } - - void DDECal::writeSolutions() { - itsTimer.start(); - itsTimerWrite.start(); - - uint nSolTimes = (info().ntime()+itsSolInt-1)/itsSolInt; - uint nDir = itsDirections.size(); - ASSERT(nSolTimes==itsSols.size()); - vector<double> solTimes(nSolTimes); - double starttime=info().startTime(); - for (uint t=0; t<nSolTimes; ++t) { - solTimes[t] = starttime+(t+0.5)*info().timeInterval()*itsSolInt; - } - - if (itsConstraintSols[0].empty()) { - // Record the actual iterands of the solver, not constraint results - - uint nPol; - - vector<string> polarizations; - if(itsMode == GainCal::COMPLEXGAIN || - itsMode == GainCal::PHASEONLY || - itsMode == GainCal::AMPLITUDEONLY) { - nPol = 2; - polarizations.push_back("XX"); - polarizations.push_back("YY"); - } else if (itsMode == GainCal::FULLJONES) { - polarizations.push_back("XX"); - polarizations.push_back("XY"); - polarizations.push_back("YX"); - polarizations.push_back("YY"); - nPol = 4; - } else { - nPol = 1; - } - - uint nSolChan = itsSols[0].size(); - ASSERT(nSolChan == itsChanBlockFreqs.size()); - - vector<DComplex> sols(nSolChan*info().nantenna()*nSolTimes*nDir*nPol); - size_t i=0; - - // For nPol=1, loop over pol runs just once - // For nPol=2, it runs over values 0 and 2 (picking diagonal elements from 4 pols) - // For nPol=4, it runs over 0, 1, 2, 3 - uint polIncr= (itsMode==GainCal::FULLJONES?1:3); - uint maxPol = (nPol>1?4:1); - // Put solutions in a contiguous piece of memory - for (uint time=0; time<nSolTimes; ++time) { - for (uint chan=0; chan<nSolChan; ++chan) { - for (uint ant=0; ant<info().nantenna(); ++ant) { - for (uint dir=0; dir<nDir; ++dir) { - for (uint pol=0; pol<maxPol; pol+=polIncr) { - ASSERT(!itsSols[time].empty()); - ASSERT(!itsSols[time][chan].empty()); - ASSERT(time<itsSols.size()); - ASSERT(chan<itsSols[time].size()); - ASSERT(ant*nDir*maxPol+dir*maxPol+pol<itsSols[time][chan].size()); - ASSERT(i<sols.size()); - sols[i] = itsSols[time][chan][ant*nDir*maxPol+dir*maxPol+pol]; - ++i; - } - } - } - } - } - vector<H5Parm::AxisInfo> axes; - axes.push_back(H5Parm::AxisInfo("time", itsSols.size())); - axes.push_back(H5Parm::AxisInfo("freq", nSolChan)); - axes.push_back(H5Parm::AxisInfo("ant", info().nantenna())); - axes.push_back(H5Parm::AxisInfo("dir", nDir)); - if (nPol>1) { - axes.push_back(H5Parm::AxisInfo("pol", nPol)); - } - - string historyString = "CREATE by DPPP\n" + - Version::getInfo<DPPPVersion>("DPPP", "top") + "\n" + - "step " + itsName + " in parset: \n" + itsParsetString; - uint numsols = 1; - // For [scalar]complexgain, store two soltabs: phase and amplitude - if (itsMode == GainCal::COMPLEXGAIN || - itsMode == GainCal::SCALARCOMPLEXGAIN || itsMode == GainCal::FULLJONES) { - numsols = 2; - } - for (uint solnum=0; solnum<numsols; ++solnum) { - string solTabName; - H5Parm::SolTab soltab; - switch (itsMode) { - case GainCal::SCALARPHASE: - case GainCal::PHASEONLY: - case GainCal::FULLJONES: - if (solnum==0) { - solTabName = "phase000"; - soltab = itsH5Parm.createSolTab(solTabName, "phase", axes); - soltab.setComplexValues(sols, vector<double>(), false, historyString); - } else { - solTabName = "amplitude000"; - soltab = itsH5Parm.createSolTab(solTabName, "amplitude", axes); - soltab.setComplexValues(sols, vector<double>(), true, historyString); - } - break; - case GainCal::SCALARCOMPLEXGAIN: - case GainCal::COMPLEXGAIN: - if (solnum==0) { - solTabName = "phase000"; - soltab = itsH5Parm.createSolTab(solTabName, "phase", axes); - soltab.setComplexValues(sols, vector<double>(), false, historyString); - } else { - solTabName = "amplitude000"; - soltab = itsH5Parm.createSolTab(solTabName, "amplitude", axes); - soltab.setComplexValues(sols, vector<double>(), true, historyString); - } - break; - case GainCal::SCALARAMPLITUDE: - case GainCal::AMPLITUDEONLY: - solTabName = "amplitude000"; - soltab = itsH5Parm.createSolTab(solTabName, "amplitude", axes); - soltab.setComplexValues(sols, vector<double>(), true, historyString); - break; - default: - THROW(Exception, "Constraint should have produced output"); - } - - // Tell H5Parm that all antennas and directions were used - std::vector<std::string> antennaNames(info().antennaNames().size()); - for (uint i=0; i<info().antennaNames().size(); ++i) { - antennaNames[i]=info().antennaNames()[i]; - } - soltab.setAntennas(antennaNames); - - soltab.setSources(getDirectionNames()); - - if (nPol>1) { - soltab.setPolarizations(polarizations); - } - - soltab.setFreqs(itsChanBlockFreqs); - - soltab.setTimes(solTimes); - } // solnums loop - } else { - // Record the Constraint::Result in the H5Parm - - uint nConstraints = itsConstraintSols[0].size(); - - for (uint constraintNum=0; constraintNum<nConstraints; ++constraintNum) { - // Number of solution names, e.g. 2 for "TEC" and "ScalarPhase" - uint nSolNames = itsConstraintSols[0][constraintNum].size(); - for (uint solNameNum=0; solNameNum<nSolNames; ++solNameNum) { - // Get the result of the constraint solution at first time to get metadata - Constraint::Result firstResult = itsConstraintSols[0][constraintNum][solNameNum]; - - vector<hsize_t> dims(firstResult.dims.size()+1); // Add time dimension at beginning - dims[0]=itsConstraintSols.size(); // Number of times - size_t numSols=dims[0]; - for (uint i=1; i<dims.size(); ++i) { - dims[i] = firstResult.dims[i-1]; - numSols *= dims[i]; - } - - vector<string> firstaxesnames = StringUtil::tokenize(firstResult.axes,","); - - vector<H5Parm::AxisInfo> axes; - axes.push_back(H5Parm::AxisInfo("time", itsConstraintSols.size())); - for (size_t axisNum=0; axisNum<firstaxesnames.size(); ++axisNum) { - axes.push_back(H5Parm::AxisInfo(firstaxesnames[axisNum], firstResult.dims[axisNum])); - } - - // Put solutions in a contiguous piece of memory - vector<double> sols(numSols); - vector<double>::iterator nextpos = sols.begin(); - for (uint time=0; time<itsSols.size(); ++time) { - ASSERTSTR(itsConstraintSols[time].size()==itsConstraintSols[0].size(), "Constraints did not produce enough output at time step "<<time); - nextpos = std::copy( - itsConstraintSols[time][constraintNum][solNameNum].vals.begin(), - itsConstraintSols[time][constraintNum][solNameNum].vals.end(), - nextpos); - } - - // Put solution weights in a contiguous piece of memory - vector<double> weights; - if (!itsConstraintSols[0][constraintNum][solNameNum].weights.empty()) { - weights.resize(numSols); - vector<double>::iterator nextpos = weights.begin(); - for (uint time=0; time<itsSols.size(); ++time) { - nextpos = std::copy( - itsConstraintSols[time][constraintNum][solNameNum].weights.begin(), - itsConstraintSols[time][constraintNum][solNameNum].weights.end(), - nextpos); - } - } - - string solTabName = firstResult.name+"000"; - H5Parm::SolTab soltab = itsH5Parm.createSolTab(solTabName, firstResult.name, axes); - soltab.setValues(sols, weights, - "CREATE by DPPP\n" + - Version::getInfo<DPPPVersion>("DPPP", "top") + "\n" + - "step " + itsName + " in parset: \n" + - itsParsetString); - - // Tell H5Parm that all antennas and directions were used - std::vector<std::string> antennaNames(info().antennaNames().size()); - for (uint i=0; i<info().antennaNames().size(); ++i) { - antennaNames[i]=info().antennaNames()[i]; - } - soltab.setAntennas(antennaNames); - - soltab.setSources(getDirectionNames()); - - if (soltab.hasAxis("pol")) { - vector<string> polarizations; - switch (soltab.getAxis("pol").size) { - case 2: polarizations.push_back("XX"); - polarizations.push_back("YY"); - break; - case 4: polarizations.push_back("XX"); - polarizations.push_back("XY"); - polarizations.push_back("YX"); - polarizations.push_back("YY"); - break; - default: - THROW (Exception, "No metadata for numpolarizations = " << soltab.getAxis("pol").size); - } - - soltab.setPolarizations(polarizations); - } - - // Set channel to frequencies - // Do not use itsChanBlockFreqs, because constraint may have changed size - uint nChannelBlocks = 1; - if (soltab.hasAxis("freq")) { - nChannelBlocks = soltab.getAxis("freq").size; - } - vector<double> chanBlockFreqs; - - chanBlockFreqs.resize(nChannelBlocks); - for(size_t chBlock=0; chBlock!=nChannelBlocks; ++chBlock) { - const size_t - channelIndexStart = chBlock * info().nchan() / nChannelBlocks, - channelIndexEnd = (chBlock+1) * info().nchan() / nChannelBlocks, - curChannelBlockSize = channelIndexEnd - channelIndexStart; - double meanfreq = std::accumulate( - info().chanFreqs().data()+channelIndexStart, - info().chanFreqs().data()+channelIndexEnd, - 0.0) / curChannelBlockSize; - chanBlockFreqs[chBlock] = meanfreq; - } - - soltab.setFreqs(chanBlockFreqs); - - soltab.setTimes(solTimes); - } - } - } - - itsTimerWrite.stop(); - itsTimer.stop(); - } - - void DDECal::finish() - { - itsTimer.start(); - - if (itsStepInSolInt!=0) { - //shrink itsDataPtrs, itsModelDataPtrs - std::vector<casacore::Complex*>(itsDataPtrs.begin(), - itsDataPtrs.begin()+itsStepInSolInt).swap(itsDataPtrs); - std::vector<std::vector<casacore::Complex*> >(itsModelDataPtrs.begin(), - itsModelDataPtrs.begin()+itsStepInSolInt).swap(itsModelDataPtrs); - - doSolve(); - } - - writeSolutions(); - - itsTimer.stop(); - - // Let the next steps finish. - getNextStep()->finish(); - } - - } //# end namespace -} diff --git a/CEP/DP3/DPPP_DDECal/src/KLFitter.cc b/CEP/DP3/DPPP_DDECal/src/KLFitter.cc deleted file mode 100644 index f8021b25d87..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/KLFitter.cc +++ /dev/null @@ -1,66 +0,0 @@ -#include "DPPP_DDECal/KLFitter.h" -using namespace arma; -namespace LOFAR{ -KLFitter::KLFitter(double r0,double beta,int order): - itsOrder(order), - itsR0(r0), - itsBeta(beta) -{ - -} - - - -void KLFitter::calculateCorrMatrix(const std::vector<PiercePoint> pp){ - itsPiercePoints.set_size(pp.size(),3); - _phases.set_size(pp.size()); - _weights=eye<mat>(pp.size(),pp.size()); //TODO, make weights sensible - Mat<double> Distance=zeros<mat>(pp.size(),pp.size()); - for(size_t i=0; i<pp.size();i++){ - Mat<double> A(pp[i].getValue().memptr(),1,3); - itsPiercePoints.row(i)=A; - } - for(size_t n=0;n<pp.size();n++) - for(size_t m=0;m<pp.size();m++) - for(size_t i=0;i<3;i++) - Distance(n,m)+=pow(itsPiercePoints.col(i)[n]-itsPiercePoints.col(i)[m],2); - itsCorrMatrix=-pow((Distance / ( itsR0*itsR0 ) ),( itsBeta / 2.0 ))/2.0; - itsinvC=pinv(itsCorrMatrix); - mat V,U; - Col<double> S; - svd(U,S,V,itsCorrMatrix); - itsU=U(span::all,span(0,itsOrder)); - itsinvU=inv(itsU.t()*(_weights*itsU)); -} - -void KLFitter::calculateCorrMatrix(const std::vector<PiercePoint*> pp){ - itsPiercePoints.set_size(pp.size(),3); - _phases.set_size(pp.size()); - _weights=eye<mat>(pp.size(),pp.size()); //TODO, make weights sensible - Mat<double> Distance=zeros<mat>(pp.size(),pp.size()); - for(size_t i=0; i<pp.size();i++){ - Mat<double> A(pp[i]->getValue().memptr(),1,3); - itsPiercePoints.row(i)=A; - } - for(size_t n=0;n<pp.size();n++) - for(size_t m=0;m<pp.size();m++) - for(size_t i=0;i<3;i++) - Distance(n,m)+=pow(itsPiercePoints.col(i)[n]-itsPiercePoints.col(i)[m],2); - itsCorrMatrix=-pow((Distance / ( itsR0*itsR0 ) ),( itsBeta / 2.0 ))/2.0; - itsinvC=pinv(itsCorrMatrix); - mat V,U; - Col<double> S; - svd(U,S,V,itsCorrMatrix); - itsU=U(span::all,span(0,itsOrder)); - itsinvU=inv(itsU.t()*(_weights*itsU)); -} - - -void KLFitter::doFit(){ - Mat<double> A=itsU.t()*(_weights*_phases); - itsPar=itsinvU* A; - itsTECFitWhite=(itsinvC*(itsU*itsPar)); - - _phases=itsCorrMatrix*itsTECFitWhite; -} -} diff --git a/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc b/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc deleted file mode 100644 index 69019b9f281..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc +++ /dev/null @@ -1,670 +0,0 @@ - -#ifdef AOPROJECT -#include "MultiDirSolver.h" -#include "Matrix2x2.h" -#include "QRSolver.h" -#else -#include <DPPP_DDECal/MultiDirSolver.h> -#include <DPPP_DDECal/Matrix2x2.h> -#include <DPPP_DDECal/QRSolver.h> -#endif - -#include <iomanip> -#include <iostream> - -MultiDirSolver::MultiDirSolver() : - _nAntennas(0), - _nDirections(0), - _nChannels(0), - _nChannelBlocks(0), - _maxIterations(100), - _accuracy(1e-5), - _constraintAccuracy(1e-4), - _stepSize(0.2), - _detectStalling(true), - _phaseOnly(false) -{ } - -void MultiDirSolver::init(size_t nAntennas, - size_t nDirections, - size_t nChannels, - const std::vector<int>& ant1, - const std::vector<int>& ant2) -{ - _nAntennas = nAntennas; - _nDirections = nDirections; - _nChannels = nChannels; - _nChannelBlocks = nChannels; - _ant1 = ant1; - _ant2 = ant2; -} - -void MultiDirSolver::makeStep(const std::vector<std::vector<DComplex> >& solutions, - std::vector<std::vector<DComplex> >& nextSolutions) const -{ - // Move the solutions towards nextSolutions - // (the moved solutions are stored in 'nextSolutions') -#pragma omp parallel for - for(size_t chBlock=0; chBlock<_nChannelBlocks; ++chBlock) - { - for(size_t i=0; i!=nextSolutions[chBlock].size(); ++i) - { - if(_phaseOnly) - { - // In phase only mode, a step is made along the complex circle, - // towards the shortest direction. - double phaseFrom = std::arg(solutions[chBlock][i]); - double distance = std::arg(nextSolutions[chBlock][i]) - phaseFrom; - if(distance > M_PI) distance = distance - 2.0*M_PI; - else if(distance < -M_PI) distance = distance + 2.0*M_PI; - nextSolutions[chBlock][i] = std::polar(1.0, phaseFrom + _stepSize * distance); - } - else { - nextSolutions[chBlock][i] = solutions[chBlock][i]*(1.0-_stepSize) + - nextSolutions[chBlock][i] * _stepSize; - } - } - } -} - -void MultiDirSolver::makeSolutionsFinite(std::vector<std::vector<DComplex> >& solutions, size_t perPol) const -{ - for(std::vector<DComplex>& solVector : solutions) - { - size_t n = solVector.size() / perPol; - std::vector<DComplex>::iterator iter = solVector.begin(); - for(size_t i=0; i!=n; ++i) - { - bool hasNonFinite = false; - for(size_t p=0; p!=perPol; ++p) - { - hasNonFinite = hasNonFinite || !std::isfinite(iter->real()) || !std::isfinite(iter->imag()); - } - if(hasNonFinite) - { - if(perPol == 4) - { - iter[0] = DComplex(1.0, 0.0); - iter[1] = DComplex(0.0, 0.0); - iter[2] = DComplex(0.0, 0.0); - iter[3] = DComplex(1.0, 0.0); - } - else { - for(size_t p=0; p!=perPol; ++p) - { - iter[p] = DComplex(1.0, 0.0); - } - } - } - iter += perPol; - } - } -} - -template<size_t NPol> -bool MultiDirSolver::assignSolutions(std::vector<std::vector<DComplex> >& solutions, - std::vector<std::vector<DComplex> >& nextSolutions, bool useConstraintAccuracy, - double& avgAbsDiff, std::vector<double>& stepMagnitudes) const -{ - avgAbsDiff = 0.0; - // Calculate the norm of the difference between the old and new solutions - size_t n = 0; - for(size_t chBlock=0; chBlock<_nChannelBlocks; ++chBlock) - { - for(size_t i=0; i!=solutions[chBlock].size(); i += NPol) - { - // A normalized squared difference is calculated between the solutions of this - // and the previous step: - // sqrt { 1/n sum over | (t1 - t0) t0^(-1) |_2 } - // This criterion is scale independent: all solutions can be scaled without - // affecting the number of iterations. Also, when the polarized version is given - // scalar matrices, it will use the same number of iterations as the scalar - // version. - if(NPol == 1) - { - if(solutions[chBlock][i] != 0.0) - { - double a = std::abs((nextSolutions[chBlock][i] - solutions[chBlock][i]) / solutions[chBlock][i]); - if(std::isfinite(a)) - { - avgAbsDiff += a; - ++n; - } - } - solutions[chBlock][i] = nextSolutions[chBlock][i]; - } - else { - MC2x2 s(&solutions[chBlock][i]), sInv(s); - if(sInv.Invert()) - { - MC2x2 ns(&nextSolutions[chBlock][i]); - ns -= s; - ns *= sInv; - double sumabs = 0.0; - for(size_t p=0; p!=NPol; ++p) - { - sumabs += std::abs(ns[p]); - } - if(std::isfinite(sumabs)) - { - avgAbsDiff += sumabs; - n += 4; - } - } - for(size_t p=0; p!=NPol; ++p) - { - solutions[chBlock][i+p] = nextSolutions[chBlock][i+p]; - } - } - } - } - // The polarized version needs a factor of two normalization to make it work - // like the scalar version would and when given only scalar matrices. - //if(NPol == 4) - // avgSquaredDiff = sqrt(avgSquaredDiff*0.5/n) ; - //else - // avgSquaredDiff = sqrt(avgSquaredDiff/n); - - // The stepsize is taken out, so that a small stepsize won't cause - // a premature stopping criterion. - double stepMagnitude = (n==0 ? 0 : avgAbsDiff/_stepSize/n); - stepMagnitudes.emplace_back(stepMagnitude); - - if(useConstraintAccuracy) - return stepMagnitude <= _constraintAccuracy; - else { - return stepMagnitude <= _accuracy; - } -} - -MultiDirSolver::SolveResult MultiDirSolver::processScalar(std::vector<Complex *>& data, - std::vector<std::vector<Complex *> >& modelData, - std::vector<std::vector<DComplex> >& solutions, double time, - std::ostream* statStream) -{ - const size_t nTimes = data.size(); - SolveResult result; - - for(size_t i=0; i!=_constraints.size(); ++i) - _constraints[i]->PrepareIteration(false, 0, false); - - std::vector<std::vector<DComplex> > nextSolutions(_nChannelBlocks); - -#ifndef NDEBUG - if (solutions.size() != _nChannelBlocks) { - std::cout << "Error: 'solutions' parameter does not have the right shape\n"; - result.iterations = 0; - return result; - } -#endif - - result._results.resize(_constraints.size()); - - // Model matrix ant x [N x D] and visibility vector ant x [N x 1], - // for each channelblock - // The following loop allocates all structures - std::vector<std::vector<Matrix> > gTimesCs(_nChannelBlocks); - std::vector<std::vector<Matrix> > vs(_nChannelBlocks); - for(size_t chBlock=0; chBlock!=_nChannelBlocks; ++chBlock) - { - nextSolutions[chBlock].resize(_nDirections * _nAntennas); - const size_t - channelIndexStart = chBlock * _nChannels / _nChannelBlocks, - channelIndexEnd = (chBlock+1) * _nChannels / _nChannelBlocks, - curChannelBlockSize = channelIndexEnd - channelIndexStart; - gTimesCs[chBlock].resize(_nAntennas); - vs[chBlock].resize(_nAntennas); - - for(size_t ant=0; ant!=_nAntennas; ++ant) - { - // Model matrix [N x D] and visibility vector [N x 1] - // Also space for the auto correlation is reserved, but they will be set to 0. - size_t - m = _nAntennas * nTimes * curChannelBlockSize * 4, - n = _nDirections, nrhs = 1; - gTimesCs[chBlock][ant] = Matrix(m, n); - vs[chBlock][ant] = Matrix(std::max(m, n), nrhs); - } - } - - /// - /// Start iterating - /// - size_t iteration = 0, constrainedIterations = 0; - bool - hasConverged = false, - hasPreviouslyConverged = false, - constraintsSatisfied = false, - hasStalled = false; - - std::vector<double> stepMagnitudes; - stepMagnitudes.reserve(_maxIterations); - - do { - makeSolutionsFinite(solutions, 1); - -#pragma omp parallel for - for(size_t chBlock=0; chBlock<_nChannelBlocks; ++chBlock) - { - performScalarIteration(chBlock, gTimesCs[chBlock], vs[chBlock], - solutions[chBlock], nextSolutions[chBlock], - data, modelData); - } - - makeStep(solutions, nextSolutions); - - constraintsSatisfied = true; - _timerConstrain.Start(); - - if(statStream) - { - (*statStream) << iteration << '\t'; - } - - for(size_t i=0; i!=_constraints.size(); ++i) - { - // PrepareIteration() might change Satisfied(), and since we always want to - // iterate at least once more when a constraint is not yet satisfied, we - // evaluate Satisfied() before preparing. - constraintsSatisfied = _constraints[i]->Satisfied() && constraintsSatisfied; - _constraints[i]->PrepareIteration(hasPreviouslyConverged, iteration, iteration+1 >= _maxIterations); - result._results[i] = _constraints[i]->Apply(nextSolutions, time, statStream); - } - _timerConstrain.Pause(); - - if(!constraintsSatisfied) - constrainedIterations = iteration+1; - - double avgSquaredDiff; - hasConverged = assignSolutions<1>(solutions, nextSolutions, !constraintsSatisfied, avgSquaredDiff, stepMagnitudes); - if(statStream) - { - (*statStream) << stepMagnitudes.back() << '\t' << avgSquaredDiff << '\n'; - } - iteration++; - - hasPreviouslyConverged = hasConverged || hasPreviouslyConverged; - - if (_detectStalling && constraintsSatisfied) - hasStalled = detectStall(iteration, stepMagnitudes); - - } while(iteration < _maxIterations && (!hasConverged || !constraintsSatisfied) && !hasStalled); - - // When we have not converged yet, we set the nr of iterations to the max+1, so that - // non-converged iterations can be distinguished from converged ones. - if((!hasConverged || !constraintsSatisfied) && !hasStalled) - result.iterations = iteration+1; - else - result.iterations = iteration; - result.constraintIterations = constrainedIterations; - return result; -} - -void MultiDirSolver::performScalarIteration(size_t channelBlockIndex, - std::vector<Matrix>& gTimesCs, - std::vector<Matrix>& vs, - const std::vector<DComplex>& solutions, - std::vector<DComplex>& nextSolutions, - const std::vector<Complex *>& data, - const std::vector<std::vector<Complex *> >& modelData) -{ - for(size_t ant=0; ant!=_nAntennas; ++ant) - { - gTimesCs[ant].zeros(); - vs[ant].zeros(); - } - - const size_t - channelIndexStart = channelBlockIndex * _nChannels / _nChannelBlocks, - channelIndexEnd = (channelBlockIndex+1) * _nChannels / _nChannelBlocks, - curChannelBlockSize = channelIndexEnd - channelIndexStart, - nTimes = data.size(); - - // The following loop fills the matrices for all antennas - for(size_t timeIndex=0; timeIndex!=nTimes; ++timeIndex) - { - std::vector<const Complex*> modelPtrs(_nDirections); - for(size_t baseline=0; baseline!=_ant1.size(); ++baseline) - { - size_t antenna1 = _ant1[baseline]; - size_t antenna2 = _ant2[baseline]; - if(antenna1 != antenna2) - { - Matrix& gTimesC1 = gTimesCs[antenna1]; - Matrix& v1 = vs[antenna1]; - Matrix& gTimesC2 = gTimesCs[antenna2]; - Matrix& v2 = vs[antenna2]; - for(size_t d=0; d!=_nDirections; ++d) - modelPtrs[d] = modelData[timeIndex][d] + (channelIndexStart + baseline * _nChannels) * 4; - const Complex* dataPtr = data[timeIndex] + (channelIndexStart + baseline * _nChannels) * 4; - const size_t p1top2[4] = {0, 2, 1, 3}; - for(size_t ch=channelIndexStart; ch!=channelIndexEnd; ++ch) - { - const size_t - dataIndex1 = ch-channelIndexStart + (timeIndex + antenna1 * nTimes) * curChannelBlockSize, - dataIndex2 = ch-channelIndexStart + (timeIndex + antenna2 * nTimes) * curChannelBlockSize; - for(size_t p1=0; p1!=4; ++p1) - { - size_t p2 = p1top2[p1]; - for(size_t d=0; d!=_nDirections; ++d) - { - std::complex<double> predicted = *modelPtrs[d]; - - size_t solIndex1 = antenna1*_nDirections + d; - size_t solIndex2 = antenna2*_nDirections + d; - gTimesC2(dataIndex1*4+p1, d) = std::conj(solutions[solIndex1] * predicted); // using a* b* = (ab)* - gTimesC1(dataIndex2*4+p2, d) = std::conj(solutions[solIndex2]) * predicted; - - ++modelPtrs[d]; // Goto the next polarization of this 2x2 matrix. - } - v1(dataIndex2*4+p2, 0) = *dataPtr; - v2(dataIndex1*4+p1, 0) = std::conj(*dataPtr); - ++dataPtr; // Goto the next polarization of this 2x2 matrix. - } - } - } - } - } - - // The matrices have been filled; compute the linear solution - // for each antenna. - size_t m = _nAntennas * nTimes * curChannelBlockSize * 4; - size_t n = _nDirections, nrhs = 1; - QRSolver solver(m, n, nrhs); - for(size_t ant=0; ant!=_nAntennas; ++ant) { - // solve x^H in [g C] x^H = v - bool success = solver.Solve(gTimesCs[ant].data(), vs[ant].data()); - Matrix& x = vs[ant]; - if(success && x(0, 0) != 0.) - { - for(size_t d=0; d!=_nDirections; ++d) - nextSolutions[ant*_nDirections + d] = x(d, 0); - } - else { - for(size_t d=0; d!=_nDirections; ++d) - nextSolutions[ant*_nDirections + d] = std::numeric_limits<double>::quiet_NaN(); - } - } -} - -MultiDirSolver::SolveResult MultiDirSolver::processFullMatrix(std::vector<Complex *>& data, - std::vector<std::vector<Complex *> >& modelData, - std::vector<std::vector<DComplex> >& solutions, double time, - std::ostream* statStream) -{ - // This algorithm is basically the same as the scalar algorithm, - // but visibility values are extended to 2x2 matrices and concatenated - // in the matrix equations as block matrices. One difference is that - // order of operations are important because of the non-commutativity of - // matrix multiplication, as well as that A^H B^H = [BA]^H. - // - // The approach: - // First we pre-apply the left-hand solutions to the model to make JM. Each - // 2x2 coherence matrix Ji is matrix-multied by the lh solutions, for all - // directions, and visibilities (times x channels). - // JMi = Ji Mi - // These are stacked in matrix JM : - // JM0_d0 JM1_d0 ... - // JM = JM0_d1 JM1_d1 - // ... - // such that JM is a (2D) rows x (2N) col matrix, N=nvis, D=ndir. - // The solved 2D x 2 solution matrix is similarly formed with the solution - // values: - // ( J0 ) - // J = ( J1 ) - // ( .. ) - // And the 2N x 2 visibility matrix as well: - // ( V0 ) - // V = ( V1 ) - // ( .. ) - // And we solve the equation: - // 'JM' J^H = V - // With dimensions: - // [ 2N x 2D ] [ 2D x 2 ] = [ 2N x 2 ] - - const size_t nTimes = data.size(); - SolveResult result; - - for(size_t i=0; i!=_constraints.size(); ++i) - _constraints[i]->PrepareIteration(false, 0, false); - - std::vector<std::vector<DComplex> > nextSolutions(_nChannelBlocks); - -#ifndef NDEBUG - if (solutions.size() != _nChannelBlocks) { - std::cout << "Error: 'solutions' parameter does not have the right shape\n"; - result.iterations = 0; - return result; - } -#endif - - result._results.resize(_constraints.size()); - - // Dimensions for each channelblock: - // Model matrix ant x [2N x 2D] and visibility matrix ant x [2N x 2], - // The following loop allocates all structures - std::vector<std::vector<Matrix> > gTimesCs(_nChannelBlocks); - std::vector<std::vector<Matrix> > vs(_nChannelBlocks); - for(size_t chBlock=0; chBlock!=_nChannelBlocks; ++chBlock) - { - nextSolutions[chBlock].resize(_nDirections * _nAntennas * 4); - const size_t - channelIndexStart = chBlock * _nChannels / _nChannelBlocks, - channelIndexEnd = (chBlock+1) * _nChannels / _nChannelBlocks, - curChannelBlockSize = channelIndexEnd - channelIndexStart; - gTimesCs[chBlock].resize(_nAntennas); - vs[chBlock].resize(_nAntennas); - - for(size_t ant=0; ant!=_nAntennas; ++ant) - { - // Model matrix [2N x 2D] and visibility matrix [2N x 2] - // Also space for the auto correlation is reserved, but they will be set to 0. - size_t m = _nAntennas * nTimes * curChannelBlockSize * 2; - size_t n = _nDirections * 2, nrhs = 2; - gTimesCs[chBlock][ant] = Matrix(m, n); - vs[chBlock][ant] = Matrix(std::max(n, m), nrhs); - } - } - - /// - /// Start iterating - /// - size_t iteration = 0, constrainedIterations = 0; - bool hasConverged = false, - hasPreviouslyConverged = false, - constraintsSatisfied = false, - hasStalled = false; - - std::vector<double> step_magnitudes; - step_magnitudes.reserve(_maxIterations); - - do { - makeSolutionsFinite(solutions, 4); - -#pragma omp parallel for - for(size_t chBlock=0; chBlock<_nChannelBlocks; ++chBlock) - { - performFullMatrixIteration(chBlock, gTimesCs[chBlock], vs[chBlock], - solutions[chBlock], nextSolutions[chBlock], - data, modelData); - } - - makeStep(solutions, nextSolutions); - - if(statStream) - { - (*statStream) << iteration << '\t'; - } - - constraintsSatisfied = true; - for(size_t i=0; i!=_constraints.size(); ++i) - { - constraintsSatisfied = _constraints[i]->Satisfied() && constraintsSatisfied; - _constraints[i]->PrepareIteration(hasPreviouslyConverged, iteration, iteration+1 >= _maxIterations); - result._results[i] = _constraints[i]->Apply(nextSolutions, time, statStream); - } - - if(!constraintsSatisfied) - constrainedIterations = iteration+1; - - double avgSquaredDiff; - hasConverged = assignSolutions<4>(solutions, nextSolutions, !constraintsSatisfied, avgSquaredDiff, step_magnitudes); - if(statStream) - { - (*statStream) << step_magnitudes.back() << '\t' << avgSquaredDiff << '\n'; - } - iteration++; - - hasPreviouslyConverged = hasConverged || hasPreviouslyConverged; - - if (_detectStalling && constraintsSatisfied) - hasStalled = detectStall(iteration, step_magnitudes); - - } while(iteration < _maxIterations && (!hasConverged || !constraintsSatisfied) && !hasStalled); - - // When we have not converged yet, we set the nr of iterations to the max+1, so that - // non-converged iterations can be distinguished from converged ones. - if((!hasConverged || !constraintsSatisfied) && !hasStalled) - result.iterations = iteration+1; - else - result.iterations = iteration; - result.constraintIterations = constrainedIterations; - return result; -} - -bool MultiDirSolver::detectStall(size_t iteration, const std::vector<double>& step_magnitudes) const -{ - if (iteration<30) { - return false; - } else { - return std::abs(step_magnitudes[iteration-1]/step_magnitudes[iteration-2]-1) < 1.e-4 && - std::abs(step_magnitudes[iteration-2]/step_magnitudes[iteration-3]-1) < 1.e-4; - } -} - -void MultiDirSolver::performFullMatrixIteration(size_t channelBlockIndex, - std::vector<Matrix>& gTimesCs, - std::vector<Matrix>& vs, - const std::vector<DComplex>& solutions, - std::vector<DComplex>& nextSolutions, - const std::vector<Complex *>& data, - const std::vector<std::vector<Complex *> >& modelData) -{ - for(size_t ant=0; ant!=_nAntennas; ++ant) - { - gTimesCs[ant].zeros(); - vs[ant].zeros(); - } - - const size_t - channelIndexStart = channelBlockIndex * _nChannels / _nChannelBlocks, - channelIndexEnd = (channelBlockIndex+1) * _nChannels / _nChannelBlocks, - curChannelBlockSize = channelIndexEnd - channelIndexStart, - nTimes = data.size(); - - // The following loop fills the matrices for all antennas - _timerFillMatrices.Start(); - for(size_t timeIndex=0; timeIndex!=nTimes; ++timeIndex) - { - std::vector<const Complex*> modelPtrs(_nDirections); - for(size_t baseline=0; baseline!=_ant1.size(); ++baseline) - { - size_t antenna1 = _ant1[baseline]; - size_t antenna2 = _ant2[baseline]; - if(antenna1 != antenna2) - { - // This equation is solved: - // J_1 M J_2^H = V - // for visibilities of the 'normal' correlation ant1 x ant2^H. - // Since in this equation antenna2 is solved, the solve matrices are - // called gTimesC2 and v2. The index into these matrices is depending - // on antenna1, hence the index is called dataIndex1. - // - // To use visibilities of correlation ant2 x ant1^H to solve ant1, an - // extra Herm transpose on M and V is required. The equation is: - // J_2 M^H J_1^H = V^H, - // and the relevant matrices/index are called gTimesC1, v1 and dataIndex2. - Matrix - &gTimesC1 = gTimesCs[antenna1], - &v1 = vs[antenna1], - &gTimesC2 = gTimesCs[antenna2], - &v2 = vs[antenna2]; - for(size_t d=0; d!=_nDirections; ++d) - modelPtrs[d] = modelData[timeIndex][d] + (channelIndexStart + baseline * _nChannels) * 4; - const Complex* dataPtr = data[timeIndex] + (channelIndexStart + baseline * _nChannels) * 4; - for(size_t ch=channelIndexStart; ch!=channelIndexEnd; ++ch) - { - const size_t - dataIndex1 = 2 * (ch-channelIndexStart + (timeIndex + antenna1 * nTimes) * curChannelBlockSize), - dataIndex2 = 2 * (ch-channelIndexStart + (timeIndex + antenna2 * nTimes) * curChannelBlockSize); - - for(size_t d=0; d!=_nDirections; ++d) - { - MC2x2 - modelMat(modelPtrs[d]), - gTimesC1Mat, gTimesC2Mat; - size_t solIndex1 = (antenna1*_nDirections + d) * 4; - size_t solIndex2 = (antenna2*_nDirections + d) * 4; - Matrix2x2::ATimesB(gTimesC2Mat.Data(), &solutions[solIndex1], modelMat.Data()); - Matrix2x2::ATimesHermB(gTimesC1Mat.Data(), &solutions[solIndex2], modelMat.Data()); - for(size_t p=0; p!=4; ++p) - { - gTimesC2(dataIndex1+(p/2), d*2+p%2) = gTimesC2Mat[p]; - gTimesC1(dataIndex2+(p/2), d*2+p%2) = gTimesC1Mat[p]; - } - - modelPtrs[d] += 4; // Goto the next 2x2 matrix. - } - for(size_t p=0; p!=4; ++p) - { - v1(dataIndex2+(p%2), p/2) = std::conj(*dataPtr); - v2(dataIndex1+(p/2), p%2) = *dataPtr; // note that this also performs the Herm transpose - ++dataPtr; // Goto the next element of the 2x2 matrix. - } - } - } - } - } - _timerFillMatrices.Pause(); - - // The matrices have been filled; compute the linear solution - // for each antenna. - _timerSolve.Start(); - - size_t m = _nAntennas * nTimes * curChannelBlockSize * 2; - size_t n = _nDirections * 2, nrhs = 2; - QRSolver solver(m, n, nrhs); - - for(size_t ant=0; ant!=_nAntennas; ++ant) { - // solve x^H in [g C] x^H = v - bool success = solver.Solve(gTimesCs[ant].data(), vs[ant].data()); - Matrix& x = vs[ant]; - if(success && x(0, 0) != 0.) - { - for(size_t d=0; d!=_nDirections; ++d) - { - for(size_t p=0; p!=4; ++p) { - // The conj transpose is also performed at this point (note swap of % and /) - nextSolutions[(ant*_nDirections + d)*4 + p] = std::conj(x(d*2+p%2, p/2)); - } - } - } - else { - for(size_t i=0; i!=_nDirections*4; ++i) { - nextSolutions[ant*_nDirections*4 + i] = std::numeric_limits<double>::quiet_NaN(); - } - } - } - _timerSolve.Pause(); -} - -void MultiDirSolver::showTimings (std::ostream& os, double duration) const { - //os << " " << std::fixed << std::setprecision(2) << _timerSolve.Seconds()/duration << "% spent in solve" << std::endl; - //os << " " << std::fixed << std::setprecision(2) << _timerFillMatrices.Seconds()/duration << "% spent in filling matrices" << std::endl; - if (!_constraints.empty()) { - os << " " << std::fixed << std::setprecision(2) << _timerConstrain.Seconds()/duration << "% spent in constraints" << std::endl; - for (auto& constraint: _constraints) { - constraint->showTimings(os, duration); - } - } -} diff --git a/CEP/DP3/DPPP_DDECal/src/PiercePoint.cc b/CEP/DP3/DPPP_DDECal/src/PiercePoint.cc deleted file mode 100644 index 6f2439b5804..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/PiercePoint.cc +++ /dev/null @@ -1,53 +0,0 @@ -#include <DPPP_DDECal/PiercePoint.h> -using namespace arma; - -namespace LOFAR{ - - const double PiercePoint::IONOheight = 300000.; - const double PiercePoint::EarthRadius = 6371000.; - -PiercePoint::PiercePoint(double height): - itsValue(3) -{ - casacore::MPosition ant;//ITRF - casacore::MDirection source;//J2000 pole - init(ant,source,height); -} - -PiercePoint::PiercePoint(const casacore::MPosition &ant,const casacore::MDirection &source,const double height): - itsValue(3) -{ - init(ant,source,height); -}; - -PiercePoint::PiercePoint(const casacore::MPosition &ant,const casacore::MDirection &source): - itsValue(3) - { - init(ant,source,PiercePoint::IONOheight); -}; - -void PiercePoint::init(const casacore::MPosition &ant,const casacore::MDirection &source,const double height){ - - itsPosition=casacore::MPosition::Convert(ant,casacore::MPosition::ITRF)(); - itsDirection=source; - itsIonoHeight=height; - const casacore::MVPosition &mPosition = itsPosition.getValue(); - itsC = mPosition(0)*mPosition(0)+mPosition(1)*mPosition(1)+mPosition(2)*mPosition(2)- - (itsIonoHeight+PiercePoint::EarthRadius)*(itsIonoHeight+PiercePoint::EarthRadius); - -} - -void PiercePoint::evaluate(casacore::MEpoch time){ - //Convert direction to ITRF vector - casacore::MeasFrame myframe(itsPosition,time); - casacore::MDirection::Ref myref(casacore::MDirection::ITRF,myframe); - const casacore::MDirection dir = casacore::MDirection::Convert(itsDirection,myref)(); - const casacore::MVDirection &mDir = dir.getValue(); - const casacore::MVPosition &mPos = itsPosition.getValue(); - double A = mDir(0)*mDir(0)+mDir(1)*mDir(1)+mDir(2)*mDir(2); - double B = mDir(0)*mPos(0) + mDir(1)*mPos(1) +mDir(2)*mPos(2); - double alpha = (-B + sqrt(B*B - A*itsC))/A; - for(uword i=0;i<3;i++) - itsValue(i) = mPos(i) + alpha*mDir(i); -}; -} diff --git a/CEP/DP3/DPPP_DDECal/src/Register.cc b/CEP/DP3/DPPP_DDECal/src/Register.cc deleted file mode 100644 index b31ba20ca65..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/Register.cc +++ /dev/null @@ -1,35 +0,0 @@ -//# Register.cc: Register steps in DPPP -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: AOFlaggerStep.cc 31423 2015-04-03 14:06:21Z dijkema $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP_DDECal/Register.h> -#include <DPPP_DDECal/DDECal.h> -#include <DPPP/DPRun.h> - -// Define the function to make the DDECal 'constructor' known. -// Its suffix must be the (lowercase) name of the package (library). -void register_ddecal() -{ - LOFAR::DPPP::DPRun::registerStepCtor ("ddecal", - LOFAR::DPPP::DDECal::makeStep); -} diff --git a/CEP/DP3/DPPP_DDECal/src/RotationAndDiagonalConstraint.cc b/CEP/DP3/DPPP_DDECal/src/RotationAndDiagonalConstraint.cc deleted file mode 100644 index 47368347c67..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/RotationAndDiagonalConstraint.cc +++ /dev/null @@ -1,112 +0,0 @@ -#include <lofar_config.h> - -#include <DPPP_DDECal/RotationAndDiagonalConstraint.h> -#include <DPPP_DDECal/RotationConstraint.h> -#include <Common/OpenMP.h> -#include <cmath> -#include <assert.h> - -using namespace std; - -namespace LOFAR { - -void RotationAndDiagonalConstraint::InitializeDimensions(size_t nAntennas, - size_t nDirections, - size_t nChannelBlocks) { - Constraint::InitializeDimensions(nAntennas, nDirections, nChannelBlocks); - - assert(_nDirections == 1); - - _res.resize(3); - _res[0].vals.resize(_nAntennas*_nChannelBlocks); - _res[0].weights.resize(_nAntennas*_nChannelBlocks); - _res[0].axes="ant,freq"; - _res[0].dims.resize(2); - _res[0].dims[0]=_nAntennas; - _res[0].dims[1]=_nChannelBlocks; - _res[0].name="rotation"; - - _res[1].vals.resize(_nAntennas*_nChannelBlocks*2); - _res[1].weights.resize(_nAntennas*_nChannelBlocks*2); - _res[1].axes="ant,freq,pol"; - _res[1].dims.resize(3); - _res[1].dims[0]=_nAntennas; - _res[1].dims[1]=_nChannelBlocks; - _res[1].dims[2]=2; - _res[1].name="amplitude"; - - _res[2] = _res[1]; - _res[2].name="phase"; -} - -void RotationAndDiagonalConstraint::SetWeights(const vector<double>& weights) { - _res[0].weights = weights; - - // Duplicate weights for two polarizations - _res[1].weights.resize(_nAntennas*_nChannelBlocks*2); - size_t indexInWeights = 0; - for (auto weight: weights) { - _res[1].weights[indexInWeights++] = weight; - _res[1].weights[indexInWeights++] = weight; - } - - _res[2].weights = _res[1].weights; -} - -vector<Constraint::Result> RotationAndDiagonalConstraint::Apply( - vector<vector<dcomplex> >& solutions, double, - std::ostream* statStream) { - if (statStream) *statStream<<"["; // begin channel - double angle0; - for (uint ch=0; ch<_nChannelBlocks; ++ch) { - if (statStream) *statStream<<"["; // begin antenna - for (uint ant=0; ant<_nAntennas; ++ant) { - // Compute rotation - complex<double> *data = &(solutions[ch][4*ant]); - - double angle = RotationConstraint::get_rotation(data); - // Restrict angle between -pi/2 and pi/2 - // Add 2pi to make sure that fmod doesn't see negative numbers - angle = fmod(angle + 3.5*M_PI, M_PI) - 0.5*M_PI; - - // Right multiply solution with inverse rotation, - // save only the diagonal - // Use sin(-phi) == -sin(phi) - complex<double> a, b; - a = data[0]*cos(angle) - data[1]*sin(angle); - b = data[3]*cos(angle) + data[2]*sin(angle); - - // Use station 0 as reference station (for every chanblock), to work - // around unitary ambiguity - if (ant==0) { - angle0 = angle; - angle = 0.; - } else { - angle -= angle0; - angle = fmod(angle + 3.5*M_PI, M_PI) - 0.5*M_PI; - } - _res[0].vals[ant*_nChannelBlocks + ch] = angle; - - _res[1].vals[ant*_nChannelBlocks*2 + 2*ch ] = abs(a); - _res[1].vals[ant*_nChannelBlocks*2 + 2*ch + 1] = abs(b); - _res[2].vals[ant*_nChannelBlocks*2 + 2*ch ] = arg(a); - _res[2].vals[ant*_nChannelBlocks*2 + 2*ch +1] = arg(b); - - // Do the actual constraining - data[0] = a * cos(angle); - data[1] = -a * sin(angle); - data[2] = b * sin(angle); - data[3] = b * cos(angle); - if (statStream) *statStream<<"["<<a.real()<<"+"<<a.imag()<<"j,"<<b.real()<<"+"<<b.imag()<<"j,"<<angle<<"]"; - //if (pd) cout<<angle; - if (statStream && ant<_nAntennas-1) *statStream<<","; - } - if (statStream) *statStream<<"]"; // end antenna - if (statStream && ch<_nChannelBlocks-1) *statStream<<","; - } - if (statStream) *statStream<<"]\t"; //end channel - - return _res; -} - -} //namespace LOFAR diff --git a/CEP/DP3/DPPP_DDECal/src/RotationConstraint.cc b/CEP/DP3/DPPP_DDECal/src/RotationConstraint.cc deleted file mode 100644 index f71a075e991..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/RotationConstraint.cc +++ /dev/null @@ -1,69 +0,0 @@ -#include <lofar_config.h> - -#include <DPPP_DDECal/RotationConstraint.h> -#include <Common/OpenMP.h> -#include <cmath> -#include <assert.h> - -using namespace std; - -namespace LOFAR { - - void RotationConstraint::InitializeDimensions(size_t nAntennas, - size_t nDirections, - size_t nChannelBlocks) { - Constraint::InitializeDimensions(nAntennas, nDirections, nChannelBlocks); - - assert(_nDirections == 1); - - _res.resize(1); - _res[0].vals.resize(_nAntennas*_nChannelBlocks); - _res[0].axes="ant,freq"; - _res[0].dims.resize(2); - _res[0].dims[0]=_nAntennas; - _res[0].dims[1]=_nChannelBlocks; - _res[0].name="rotation"; -} - -void RotationConstraint::SetWeights(const vector<double>& weights) { - _res[0].weights = weights; -} - -double RotationConstraint::get_rotation(std::complex<double>* data) { - // Convert to circular - complex<double> ll, rr; - complex<double> i(0,1.); - - ll = data[0] + data[3] - i*data[1] + i*data[2]; - rr = data[0] + data[3] + i*data[1] - i*data[2]; - double angle = 0.5 * (arg(ll) - arg(rr)); - - return angle; -} - -vector<Constraint::Result> RotationConstraint::Apply( - vector<vector<dcomplex> >& solutions, double, - std::ostream* statStream) { - // Convert to circular - complex<double> ll, rr; - complex<double> i(0,1.); - - for (uint ch=0; ch<_nChannelBlocks; ++ch) { - for (uint ant=0; ant<_nAntennas; ++ant) { - // Compute rotation - complex<double> *data= &(solutions[ch][4*ant]); - double angle = get_rotation(data); - _res[0].vals[ant*_nChannelBlocks+ch] = angle; - - // Constrain the data - data[0] = cos(angle); - data[1] = -sin(angle); - data[2] = -data[1]; - data[3] = data[0]; - } - } - - return _res; -} - -} //namespace LOFAR diff --git a/CEP/DP3/DPPP_DDECal/src/ScreenConstraint.cc b/CEP/DP3/DPPP_DDECal/src/ScreenConstraint.cc deleted file mode 100644 index 3e16c70f466..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/ScreenConstraint.cc +++ /dev/null @@ -1,378 +0,0 @@ -#include <DPPP_DDECal/ScreenConstraint.h> -#include <Common/OpenMP.h> - -namespace LOFAR{ - -const double ScreenConstraint::phtoTEC = 1./8.4479745e9; -const double ScreenConstraint::TECtoph = 8.4479745e9; -const size_t ScreenConstraint::maxIter=30; - -ScreenConstraint::ScreenConstraint(const ParameterSet& parset, - const string& prefix) - : - itsCurrentTime(0), - itsIter(0) -{ - cout<<"=========="<<(prefix + "order")<<"========\n"; - itsBeta=parset.getDouble (prefix + "beta", 5./3.); - itsHeight=parset.getDouble (prefix + "height", 400e3); - itsOrder=parset.getInt(prefix + "order", 3); - itsRdiff=parset.getDouble (prefix +"rdiff",1e3); - itsMode=toLower(parset.getString(prefix+"mode","station") ); - itsAVGMode=toLower(parset.getString(prefix+"average","tec") ); - itsDebugMode=parset.getInt(prefix + "debug", 0); -} - -void ScreenConstraint::initialize(const double* frequencies) { - itsFrequencies.resize(_nChannelBlocks); - itsprevsol.assign(_nDirections*_nAntennas,-999.); - std::memcpy( itsFrequencies.data(),frequencies, sizeof(double) * _nChannelBlocks); - itsAntennaPos.resize(_nAntennas); - itsSourcePos.resize(_nDirections); - itsPiercePoints.resize(_nAntennas); - for(uint i=0;i<itsPiercePoints.size();i++) - itsPiercePoints[i].resize(_nDirections); - - if (itsMode=="station") - _screenFitters.resize(_nAntennas); - else if (itsMode=="direction") - _screenFitters.resize(_nDirections); - else if (itsMode=="full") - _screenFitters.resize(1); - else if (itsMode=="csfull") - _screenFitters.resize(_nAntennas-_coreAntennas.size()+1); - else - THROW (Exception, "Unexpected tecscreen mode: " << itsMode); - - - for(size_t i=0; i!=_screenFitters.size(); ++i) - { - _screenFitters[i].setR0(itsRdiff); - _screenFitters[i].setBeta(itsBeta); - _screenFitters[i].setOrder(itsOrder); - - } - if (itsDebugMode>0) - { - _iterphases.resize(_nAntennas*_nDirections*_nChannelBlocks*maxIter); - } -} - -void ScreenConstraint::setAntennaPositions(const std::vector<std::vector<double> > antenna_pos) { - itsAntennaPos = antenna_pos; -} - -void ScreenConstraint::setDirections(const std::vector<std::pair<double, double> > source_pos) { - for(uint i=0;i<source_pos.size();i++){ - itsSourcePos[i].resize(2); - itsSourcePos[i][0]=source_pos[i].first; - itsSourcePos[i][1]=source_pos[i].second; - } -} - -void ScreenConstraint::initPiercePoints(){ - for(uint ipos=0;ipos<itsAntennaPos.size();ipos++){ - casacore::MPosition ant(casacore::MVPosition(itsAntennaPos[ipos][0],itsAntennaPos[ipos][1],itsAntennaPos[ipos][2]), - casacore::MPosition::ITRF); - for(uint isrc=0;isrc<itsSourcePos.size();isrc++){ - casacore::MDirection src(casacore::MVDirection(itsSourcePos[isrc][0],itsSourcePos[isrc][1]), - casacore::MDirection::J2000); - - itsPiercePoints[ipos][isrc]=PiercePoint(ant,src,itsHeight); - } - } -} - -void ScreenConstraint::setTime(double time){ - if (itsCurrentTime!=time){ - - itsCurrentTime=time; - itsIter=0; - - CalculatePiercepoints(); - - if (itsMode=="station") - { -#pragma omp parallel for - for(uint ipos=0;ipos<_nAntennas;ipos++) - _screenFitters[ipos].calculateCorrMatrix(itsPiercePoints[ipos]); - } - else if (itsMode=="direction") - { -#pragma omp parallel for - for(uint idir=0;idir<_nDirections;idir++){ - std::vector<PiercePoint *> tmpV(_nAntennas); - for(uint ipos=0;ipos<_nAntennas;ipos++) - tmpV[ipos]=&(itsPiercePoints[ipos][idir]); - _screenFitters[idir].calculateCorrMatrix(tmpV); - } - } - else if (itsMode=="full") - { - std::vector<PiercePoint *> tmpV(_nAntennas*_nDirections); - size_t i=0; - for(uint idir=0;idir<_nDirections;idir++) - { - for(uint ipos=0;ipos<_nAntennas;ipos++) - tmpV[i++]=&(itsPiercePoints[ipos][idir]); - } - _screenFitters[0].calculateCorrMatrix(tmpV); - } - else if (itsMode=="csfull") - { - std::vector<PiercePoint *> tmpV(_coreAntennas.size()*itsSourcePos.size()); - for(size_t iant=0; iant<_coreAntennas.size(); iant++){ - size_t ipos=_coreAntennas[iant]; - for(uint idir=0;idir<_nDirections;idir++) - tmpV[iant*_nDirections+idir]=&(itsPiercePoints[ipos][idir]); - } - _screenFitters[0].calculateCorrMatrix(tmpV); -#pragma omp parallel for - for(size_t iant=0; iant<_otherAntennas.size(); iant++){ - size_t ipos=_otherAntennas[iant]; - _screenFitters[iant+1].calculateCorrMatrix(itsPiercePoints[ipos]); - } - } - else - THROW (Exception, "Unexpected tecscreen mode: " << itsMode); - - } - else - itsIter+=1; -} - -void ScreenConstraint::CalculatePiercepoints(){ - casacore::MEpoch time(casacore::MVEpoch(itsCurrentTime/(24.*3600.))); //convert to MJD - for (uint i=0;i<itsPiercePoints.size();i++) - for (uint j=0;j<itsPiercePoints[i].size();j++) - itsPiercePoints[i][j].evaluate(time); -} - - void ScreenConstraint::getPPValue(std::vector<std::vector<MultiDirSolver::DComplex> >& solutions,size_t solutionIndex,size_t dirIndex,double &avgTEC,double &error) const { - if (itsAVGMode=="simple"){ - avgTEC=0; - for(size_t ch=0;ch<_nChannelBlocks; ++ch){ - double refphase=std::arg(solutions[ch][dirIndex]); - //TODO: more advance frequency averaging... - avgTEC += std::arg(solutions[ch][solutionIndex]*std::polar<double>(1.0,-1*refphase))*itsFrequencies[ch]*phtoTEC; - } - avgTEC/=_nChannelBlocks; - } - else{ - PhaseFitter phfit(_nChannelBlocks) ; - double offset; - for(size_t ch=0;ch<_nChannelBlocks; ++ch){ - phfit.FrequencyData()[ch]=itsFrequencies.data()[ch]; - phfit.PhaseData()[ch] = std::arg(solutions[ch][solutionIndex]); - } - if (itsprevsol[solutionIndex]<-100){ - phfit.FitTEC2ModelParameters(avgTEC,offset); - error=phfit.TEC2ModelCost(avgTEC,offset); - } - else { - avgTEC=itsprevsol[solutionIndex]*TECtoph; - phfit.FitTEC2ModelParameters(avgTEC,offset); - error=phfit.TEC2ModelCost(avgTEC,offset); - } - - avgTEC*=phtoTEC; - } -} - - -std::vector<Constraint::Result> ScreenConstraint::Apply(std::vector<std::vector<MultiDirSolver::DComplex> >& solutions, - double time, std::ostream* statStream) { - //check if we need to reinitialize piercepoints - setTime(time); - size_t nrresults=4; - if (itsDebugMode>0) - nrresults=5; - std::vector<Result> res(nrresults); - size_t numberofPar=_screenFitters[0].getOrder(); - res[0].vals.resize(_screenFitters.size()*numberofPar); - res[0].axes="screennr,par"; - res[0].dims.resize(2); - res[0].dims[0]=_screenFitters.size(); - res[0].dims[1]=numberofPar; - res[0].name="screenpar"; - res[1].vals.resize(_nAntennas*_nDirections*3); - res[1].axes="ant,dir,xyz"; - res[1].dims.resize(3); - res[1].dims[0]=_nAntennas; - res[1].dims[1]=_nDirections; - res[1].dims[2]=3; - res[1].name="piercepoints"; - res[2].vals.resize(_nAntennas*_nDirections); - res[2].axes="ant,dir"; - res[2].dims.resize(2); - res[2].dims[0]=_nAntennas; - res[2].dims[1]=_nDirections; - res[2].name="TECfitwhite"; - res[3].vals.resize(_nAntennas*_nDirections); - res[3].axes="ant,dir,freq"; - res[3].dims.resize(3); - res[3].dims[0]=_nAntennas; - res[3].dims[1]=_nDirections; - res[3].dims[2]=1; - res[3].name="tec"; - if (itsDebugMode>0){ - res[4].vals.resize(_nAntennas*_nDirections*_nChannelBlocks*maxIter); - res[4].axes="ant,dir,freq,iter"; - res[4].dims.resize(4); - res[4].dims[0]=_nAntennas; - res[4].dims[1]=_nDirections; - res[4].dims[2]=_nChannelBlocks; - res[4].dims[3]=maxIter; - res[4].name="phases"; - } - - //TODOEstimate Weights - - -#pragma omp parallel for - for(size_t antIndex = 0; antIndex<_nAntennas; ++antIndex) - { - int foundantcs=-999; - int foundantoth=-999; - if (itsMode=="csfull"){ - for(size_t iant=0; iant<_coreAntennas.size(); iant++){ - if (_coreAntennas[iant]==antIndex){ - foundantcs=iant; - break; - } - } - if (foundantcs<0) - { - for(size_t iant=0; iant<_otherAntennas.size(); iant++){ - if(_otherAntennas[iant]==antIndex){ - foundantoth=iant; - break; - } - } - } - } - for(size_t dirIndex = 0; dirIndex<_nDirections; ++dirIndex){ - double avgTEC,error; - size_t solutionIndex=antIndex*_nDirections+dirIndex; - if (itsDebugMode>0 and itsIter<maxIter) - { - for (size_t ch=0; ch<_nChannelBlocks;ch++) - { - //cout<<"writing "<<antIndex<<":"<<dirIndex<<":"<<ch<<":"<<itsIter<<":"<<antIndex*_nDirections*30*_nChannelBlocks+dirIndex*30*_nChannelBlocks+ch*30+itsIter<<" "<<res[4].vals.size()<<","<<solutionIndex<<":"<<solutions[ch].size()<<std::arg(solutions[ch][solutionIndex])<<endl; - _iterphases[antIndex*_nDirections*maxIter*_nChannelBlocks+dirIndex*maxIter*_nChannelBlocks+ch*maxIter+itsIter]= std::arg(solutions[ch][solutionIndex]); - } - } - getPPValue(solutions,solutionIndex,dirIndex,avgTEC,error); - if(error<=0) error=1; - if (itsMode=="station"){ - _screenFitters[antIndex].PhaseData()[dirIndex] = avgTEC; - _screenFitters[antIndex].WData()[dirIndex] = 1./error; - } - else if (itsMode=="direction"){ - _screenFitters[dirIndex].PhaseData()[antIndex] = avgTEC; - _screenFitters[dirIndex].WData()[antIndex] = 1./error; - } - else if (itsMode=="full"){ - _screenFitters[0].PhaseData()[dirIndex*_nAntennas+antIndex] = avgTEC; - _screenFitters[0].WData()[dirIndex*_nAntennas+antIndex] = 1./error; - } - else - {//csfull mode - if (foundantcs>=0){ - _screenFitters[0].PhaseData()[foundantcs*_nDirections+dirIndex]= avgTEC; - _screenFitters[0].WData()[foundantcs*_nDirections+dirIndex]= 1./error; - } - else if (foundantoth>=0){ - _screenFitters[foundantoth+1].PhaseData()[dirIndex]= avgTEC; - _screenFitters[foundantoth+1].WData()[dirIndex]= 1./error; - } - } - } - } - -#pragma omp parallel for - for(size_t isft=0;isft<_screenFitters.size();isft++) - _screenFitters[isft].doFit(); - -#pragma omp parallel for - for(size_t antIndex = 0; antIndex<_nAntennas; ++antIndex) - { - int foundantcs=-999; - int foundantoth=-999; - if (itsMode=="csfull") - { - for(size_t iant=0; iant<_coreAntennas.size(); iant++){ - if (_coreAntennas[iant]==antIndex){ - foundantcs=iant; - break; - } - } - } - if (foundantcs<0) - { - for(size_t iant=0; iant<_otherAntennas.size(); iant++){ - if(_otherAntennas[iant]==antIndex){ - foundantoth=iant; - break; - } - } - } - for(size_t dirIndex = 0; dirIndex<_nDirections; ++dirIndex){ - size_t solutionIndex=antIndex*_nDirections+dirIndex; - double avgTEC=0; - if (itsMode=="station") - avgTEC=_screenFitters[antIndex].PhaseData()[dirIndex]; - else if (itsMode=="direction") - avgTEC=_screenFitters[dirIndex].PhaseData()[antIndex]; - else if (itsMode=="full") - avgTEC=_screenFitters[0].PhaseData()[dirIndex*_nAntennas+antIndex]; - else - {//csfull - if (foundantcs>=0) - avgTEC=_screenFitters[0].PhaseData()[foundantcs*_nDirections+dirIndex]; - else if (foundantoth>=0) - avgTEC=_screenFitters[foundantoth+1].PhaseData()[dirIndex]; - } - - for(size_t ch=0;ch<_nChannelBlocks; ++ch) - solutions[ch][solutionIndex] = std::polar<double>(1.0, avgTEC*TECtoph/itsFrequencies[ch]); - - res[3].vals[antIndex*_nDirections+dirIndex]= avgTEC; - itsprevsol[antIndex*_nDirections+dirIndex]=avgTEC; - for (size_t i=0;i<3;i++) - { - if (itsMode=="station") - res[1].vals[antIndex*_nDirections*3+dirIndex*3+i]= _screenFitters[antIndex].PPData()[i*_nDirections+dirIndex]; - else if (itsMode=="direction") - res[1].vals[antIndex*_nDirections*3+dirIndex*3+i]= _screenFitters[dirIndex].PPData()[i*_nAntennas+antIndex]; - else if (itsMode=="full") - res[1].vals[antIndex*_nDirections*3+dirIndex*3+i]= _screenFitters[0].PPData()[i*_nDirections*_nAntennas+dirIndex*_nAntennas+antIndex]; - - else - {//csfull - if (foundantcs>=0) - res[1].vals[antIndex*_nDirections*3+dirIndex*3+i]= _screenFitters[0].PPData()[i*_coreAntennas.size()*_nDirections+foundantcs*_nDirections+dirIndex]; - else if (foundantoth>=0) - res[1].vals[antIndex*_nDirections*3+dirIndex*3+i]= _screenFitters[foundantoth].PPData()[i*_nDirections+dirIndex]; - } - } - } - - for(size_t dirIndex = 0; dirIndex<_nDirections; ++dirIndex){ - if (itsMode=="station") - res[2].vals[antIndex*_nDirections+dirIndex]= - _screenFitters[antIndex].TECFitWhiteData()[dirIndex]; - else //not implemented yet for other modes - res[2].vals[antIndex*_nDirections+dirIndex]=0; - } - } - for(size_t i=0;i<_screenFitters.size();i++) - for(size_t j=0;j<numberofPar;j++) - res[0].vals[i*numberofPar+j]= _screenFitters[i].ParData()[j]; - - if (itsDebugMode>0) - res[4].vals=_iterphases; - return res; -} - -} //namespace LOFAR diff --git a/CEP/DP3/DPPP_DDECal/src/SmoothnessConstraint.cc b/CEP/DP3/DPPP_DDECal/src/SmoothnessConstraint.cc deleted file mode 100644 index a37f52305e1..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/SmoothnessConstraint.cc +++ /dev/null @@ -1,77 +0,0 @@ -#ifdef AOPROJECT -#include "KernelSmoother.h" -#include "SmoothnessConstraint.h" -#include "omptools.h" -#else -#include <DPPP_DDECal/KernelSmoother.h> -#include <DPPP_DDECal/SmoothnessConstraint.h> -#include <Common/OpenMP.h> -#endif - -SmoothnessConstraint::SmoothnessConstraint(double bandwidthHz) : - _kernelType(Smoother::GaussianKernel), - _bandwidth(bandwidthHz) -{ } - -void SmoothnessConstraint::Initialize(const double* frequencies) -{ - _frequencies.assign(frequencies, frequencies+_nChannelBlocks); - size_t nthreads = -#ifdef AOPROJECT - omp_get_max_threads(); -#else - LOFAR::OpenMP::maxThreads(); -#endif - for(size_t i=0; i!=nthreads; ++i) - _fitData.emplace_back(_frequencies.data(), _frequencies.size(), _kernelType, _bandwidth); -} - -void SmoothnessConstraint::InitializeDimensions(size_t nAntennas, - size_t nDirections, - size_t nChannelBlocks) -{ - Constraint::InitializeDimensions(nAntennas, nDirections, nChannelBlocks); -} - -std::vector<Constraint::Result> SmoothnessConstraint::Apply( - std::vector<std::vector<dcomplex> >& solutions, double, std::ostream*) -{ - const size_t nPol = solutions.front().size() / (_nAntennas*_nDirections); -#pragma omp parallel for - for(size_t antDirIndex = 0; antDirIndex<_nAntennas*_nDirections; ++antDirIndex) - { -#ifdef AOPROJECT - const size_t thread = omp_get_thread_num(); -#else - const size_t thread = LOFAR::OpenMP::threadNum(); -#endif - size_t antIndex = antDirIndex / _nDirections; - for(size_t pol = 0; pol!=nPol; ++pol) - { - size_t solutionIndex = antDirIndex*nPol + pol; - for(size_t ch=0; ch!=_nChannelBlocks; ++ch) - { - // Flag channels where calibration yielded inf or nan - if(std::isfinite(solutions[ch][solutionIndex].real()) && - std::isfinite(solutions[ch][solutionIndex].imag())) - { - _fitData[thread].data[ch] = solutions[ch][solutionIndex]; - _fitData[thread].weight[ch] = _weights[antIndex*_nChannelBlocks + ch]; - } - else { - _fitData[thread].data[ch] = 0.0; - _fitData[thread].weight[ch] = 0.0; - } - } - - _fitData[thread].smoother.Smooth(_fitData[thread].data.data(), _fitData[thread].weight.data()); - - for(size_t ch=0; ch!=_nChannelBlocks; ++ch) - { - solutions[ch][solutionIndex] = _fitData[thread].data[ch]; - } - } - } - - return std::vector<Constraint::Result>(); -} diff --git a/CEP/DP3/DPPP_DDECal/src/Stopwatch.cc b/CEP/DP3/DPPP_DDECal/src/Stopwatch.cc deleted file mode 100644 index 2e39e06bcf2..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/Stopwatch.cc +++ /dev/null @@ -1,159 +0,0 @@ -#include <DPPP_DDECal/Stopwatch.h> - -#include <cmath> -#include <sstream> - -#include <boost/date_time/posix_time/posix_time.hpp> - -Stopwatch::Stopwatch() : _running(false), _sum(boost::posix_time::seconds(0)) -{ -} - -Stopwatch::Stopwatch(bool start) : - _running(start), - _startTime(boost::posix_time::microsec_clock::local_time()), - _sum(boost::posix_time::seconds(0)) -{ -} - -Stopwatch::~Stopwatch() -{ -} - -void Stopwatch::Start() -{ - if(!_running) { - _startTime = boost::posix_time::microsec_clock::local_time(); - _running = true; - } -} - -void Stopwatch::Pause() -{ - if(_running) { - _sum += (boost::posix_time::microsec_clock::local_time() - _startTime); - _running = false; - } -} - -void Stopwatch::Reset() -{ - _running = false; - _sum = boost::posix_time::seconds(0); -} - -std::string Stopwatch::ToString() const -{ - if(_running) { - boost::posix_time::time_duration current = _sum + (boost::posix_time::microsec_clock::local_time() - _startTime); - return to_simple_string(current); - } else { - return to_simple_string(_sum); - } -} - -std::string Stopwatch::ToShortString() const -{ - const long double seconds = Seconds(); - if(seconds >= 60*60*24) - return ToDaysString(); - else if(seconds >= 60*60) - return ToHoursString(); - else if(seconds >= 60) - return ToMinutesString(); - else if(seconds >= 1.0) - return ToSecondsString(); - else if(seconds >= 0.001) - return ToMilliSecondsString(); - else if(seconds >= 0.000001) - return ToMicroSecondsString(); - else - return ToNanoSecondsString(); -} - -std::string Stopwatch::ToDaysString() const -{ - const long double days = roundl(Seconds() / (60.0*60.0))/24.0; - std::stringstream str; - if(days >= 10.0) - str << roundl(days) << " days"; - else - str << floorl(days) << 'd' << (days*24.0) << 'h'; - return str.str(); -} - -std::string Stopwatch::ToHoursString() const -{ - const long double hours = roundl(Seconds() / 60.0)/60.0; - std::stringstream str; - if(hours >= 10.0) - str << roundl(hours) << 'h'; - else - str << floorl(hours) << 'h' << (hours*60.0) << 'm'; - return str.str(); -} - -std::string Stopwatch::ToMinutesString() const -{ - const long double mins = roundl(Seconds())/60.0; - std::stringstream str; - if(mins >= 10.0) - str << roundl(mins) << " min"; - else - str << floorl(mins) << 'm' << fmod(mins*60.0,60.0) << 's'; - return str.str(); -} - -std::string Stopwatch::ToSecondsString() const -{ - const long double seconds = roundl(Seconds()*10.0)/10.0; - std::stringstream str; - if(seconds >= 10.0) - str << roundl(Seconds()) << 's'; - else - str << seconds << 's'; - return str.str(); -} - -std::string Stopwatch::ToMilliSecondsString() const -{ - const long double msec = roundl(Seconds()*10000.0)/10.0; - std::stringstream str; - if(msec >= 10.0) - str << roundl(Seconds()*1000.0) << "ms"; - else - str << msec << "ms"; - return str.str(); -} - -std::string Stopwatch::ToMicroSecondsString() const -{ - const long double usec = roundl(Seconds()*10000000.0)/10.0; - std::stringstream str; - if(usec >= 10.0) - str << roundl(Seconds()*1000000.0) << "µs"; - else - str << usec << "µs"; - return str.str(); -} - -std::string Stopwatch::ToNanoSecondsString() const -{ - const long double nsec = roundl(Seconds()*10000000000.0)/10.0; - std::stringstream str; - if(nsec >= 10.0) - str << roundl(Seconds()*1000000000.0) << "ns"; - else - str << nsec << "ns"; - return str.str(); -} - -long double Stopwatch::Seconds() const -{ - if(_running) { - boost::posix_time::time_duration current = _sum + (boost::posix_time::microsec_clock::local_time() - _startTime); - return (long double) current.total_microseconds()/1000000.0; - } else { - return (long double) _sum.total_microseconds()/1000000.0; - } -} diff --git a/CEP/DP3/DPPP_DDECal/src/TECConstraint.cc b/CEP/DP3/DPPP_DDECal/src/TECConstraint.cc deleted file mode 100644 index c19df7ee953..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/TECConstraint.cc +++ /dev/null @@ -1,223 +0,0 @@ -#ifdef AOPROJECT -#include "TECConstraint.h" -#include "omptools.h" -#else -#include <DPPP_DDECal/TECConstraint.h> -#include <Common/OpenMP.h> -#endif - -TECConstraintBase::TECConstraintBase(Mode mode) : - _mode(mode), - _phaseFitters() -{ -} - -void TECConstraintBase::initialize(const double* frequencies) { - _phaseFitters.resize( -#ifdef AOPROJECT - omp_get_max_threads() -#else - LOFAR::OpenMP::maxThreads() -#endif - ); - - for(size_t i=0; i!=_phaseFitters.size(); ++i) - { - _phaseFitters[i].SetChannelCount(_nChannelBlocks); - std::memcpy(_phaseFitters[i].FrequencyData(), frequencies, - sizeof(double) * _nChannelBlocks); - } - _weights.assign(_nChannelBlocks*_nAntennas, 1.0); - initializeChild(); -} - -void TECConstraintBase::SetWeights(const std::vector<double>& weights) { - _weights = weights; -} - -void ApproximateTECConstraint::initializeChild() -{ - _pwFitters.resize( -#ifdef AOPROJECT - omp_get_max_threads() -#else - LOFAR::OpenMP::maxThreads() -#endif - ); - _threadData.resize(_pwFitters.size()); - _threadFittedData.resize(_pwFitters.size()); - _threadWeights.resize(_pwFitters.size()); - for(size_t threadId=0; threadId!=_pwFitters.size(); ++threadId) - { - _threadData[threadId].resize(_nChannelBlocks); - _threadFittedData[threadId].resize(_nChannelBlocks); - _threadWeights[threadId].resize(_nChannelBlocks); - } - - if(_fittingChunkSize == 0) - { - size_t - n = _phaseFitters.front().Size(); - const double - startFreq = _phaseFitters.front().FrequencyData()[0], - endFreq = _phaseFitters.front().FrequencyData()[n-1]; - _fittingChunkSize = PieceWisePhaseFitter::CalculateChunkSize(startFreq, endFreq, n); - } - for(size_t i=0; i!=_pwFitters.size(); ++i) - _pwFitters[i].SetChunkSize(_fittingChunkSize); -} - -void TECConstraintBase::applyReferenceAntenna(std::vector<std::vector<dcomplex> >& solutions) const -{ - // TODO chose this more cleverly? - size_t refAntenna = 0; - - for(size_t ch=0; ch!=_nChannelBlocks; ++ch) - { - for(size_t antennaIndex=0; antennaIndex!=_nAntennas; ++antennaIndex) - { - for(size_t d=0; d!=_nDirections; ++d) - { - size_t solutionIndex = antennaIndex*_nDirections + d; - size_t refAntennaIndex = d + refAntenna*_nDirections; - if(antennaIndex != refAntenna) - { - solutions[ch][solutionIndex] = solutions[ch][solutionIndex] / solutions[ch][refAntennaIndex]; - } - } - } - for(size_t d=0; d!=_nDirections; ++d) - solutions[ch][refAntenna*_nDirections + d] = 1.0; - } -} - -std::vector<Constraint::Result> TECConstraint::Apply( - std::vector<std::vector<dcomplex> >& solutions, double, - std::ostream* /*statStream*/) -{ - size_t nRes = 3; - if(_mode == TECOnlyMode) { - nRes = 2; // TEC and error - } - else { - nRes = 3; // TEC, phase and error - } - - std::vector<Constraint::Result> res(nRes); - res[0].vals.resize(_nAntennas*_nDirections); - res[0].weights.resize(_nAntennas*_nDirections); - res[0].axes="ant,dir,freq"; - res[0].name="tec"; - res[0].dims.resize(3); - res[0].dims[0]=_nAntennas; - res[0].dims[1]=_nDirections; - res[0].dims[2]=1; - if(_mode == TECAndCommonScalarMode) { - res[1]=res[0]; - res[1].name="phase"; - } - res.back()=res[0]; - res.back().name="error"; - - // Divide out the reference antenna - applyReferenceAntenna(solutions); - -#pragma omp parallel for - for(size_t solutionIndex = 0; solutionIndex<_nAntennas*_nDirections; ++solutionIndex) - { - size_t antennaIndex = solutionIndex/_nDirections; - size_t thread = -#ifdef AOPROJECT - omp_get_thread_num(); -#else - LOFAR::OpenMP::threadNum(); -#endif - - // Flag channels where calibration yielded inf or nan - double weightSum = 0.0; - for(size_t ch=0; ch!=_nChannelBlocks; ++ch) { - if(std::isfinite(solutions[ch][solutionIndex].real()) && - std::isfinite(solutions[ch][solutionIndex].imag())) - { - _phaseFitters[thread].PhaseData()[ch] = std::arg(solutions[ch][solutionIndex]); - _phaseFitters[thread].WeightData()[ch] = _weights[antennaIndex*_nChannelBlocks + ch]; - weightSum += _weights[antennaIndex*_nChannelBlocks + ch]; - } - else { - _phaseFitters[thread].PhaseData()[ch] = 0.0; - _phaseFitters[thread].WeightData()[ch] = 0.0; - } - } - - double alpha, beta=0.0; - if(_mode == TECOnlyMode) { - res.back().vals[solutionIndex]=_phaseFitters[thread].FitDataToTEC1Model(alpha); - } else { - res.back().vals[solutionIndex]=_phaseFitters[thread].FitDataToTEC2Model(alpha, beta); - } - res.back().weights[solutionIndex] = weightSum; - - res[0].vals[solutionIndex] = alpha / -8.44797245e9; - res[0].weights[solutionIndex] = weightSum; - if(_mode == TECAndCommonScalarMode) { - res[1].vals[solutionIndex] = beta; - res[1].weights[solutionIndex] = weightSum; - } - - for(size_t ch=0; ch!=_nChannelBlocks; ++ch) - { - solutions[ch][solutionIndex] = std::polar<double>(1.0, _phaseFitters[thread].PhaseData()[ch]); - } - } - - return res; -} - -std::vector<Constraint::Result> ApproximateTECConstraint::Apply( - std::vector<std::vector<dcomplex> >& solutions, double time, - std::ostream* statStream) -{ - if(_finishedApproximateStage) - return TECConstraint::Apply(solutions, time, statStream); - else { - applyReferenceAntenna(solutions); - -#pragma omp parallel for - for(size_t solutionIndex = 0; solutionIndex<_nAntennas*_nDirections; ++solutionIndex) - { - size_t antennaIndex = solutionIndex/_nDirections; -#ifdef AOPROJECT - size_t thread = omp_get_thread_num(); -#else - size_t thread = LOFAR::OpenMP::threadNum(); -#endif - std::vector<double>& data = _threadData[thread]; - std::vector<double>& fittedData = _threadFittedData[thread]; - std::vector<double>& weights = _threadWeights[thread]; - - // Flag channels where calibration yielded inf or nan - for(size_t ch=0; ch!=_nChannelBlocks; ++ch) { - if(std::isfinite(solutions[ch][solutionIndex].real()) && - std::isfinite(solutions[ch][solutionIndex].imag())) - { - data[ch] = std::arg(solutions[ch][solutionIndex]); - weights[ch] = _weights[antennaIndex*_nChannelBlocks + ch]; - } - else { - data[ch] = 0.0; - weights[ch] = 0.0; - } - } - - // TODO might be nice to make it a user option whether to break or not - _pwFitters[thread].SlidingFitWithBreak(_phaseFitters[thread].FrequencyData(), data.data(), weights.data(), fittedData.data(), data.size()); - - for(size_t ch=0; ch!=_nChannelBlocks; ++ch) - { - solutions[ch][solutionIndex] = std::polar<double>(1.0, fittedData[ch]); - } - } - - return std::vector<Constraint::Result>(); - } -} diff --git a/CEP/DP3/DPPP_DDECal/src/screenfitter.cc b/CEP/DP3/DPPP_DDECal/src/screenfitter.cc deleted file mode 100644 index 18563530647..00000000000 --- a/CEP/DP3/DPPP_DDECal/src/screenfitter.cc +++ /dev/null @@ -1,8 +0,0 @@ - -#include <DPPP/screenfitter.h> - -ScreenFitter::ScreenFitter(): - _phases(), - _frequencies(), - _weights() -{ } diff --git a/CEP/DP3/DPPP_DDECal/test/CMakeLists.txt b/CEP/DP3/DPPP_DDECal/test/CMakeLists.txt deleted file mode 100644 index deaf0ee440d..00000000000 --- a/CEP/DP3/DPPP_DDECal/test/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -# $Id: CMakeLists.txt 38047 2017-07-26 12:49:53Z dijkema $ - -# Run script to find current directory (needed for getting a tarball from -# the source directory). -configure_file(findenv.run_tmpl findenv.run_script) - -include(LofarCTest) - -lofar_add_test(tDDECal) -lofar_add_test(tRotationConstraint tRotationConstraint.cc) diff --git a/CEP/DP3/DPPP_DDECal/test/findenv.run_tmpl b/CEP/DP3/DPPP_DDECal/test/findenv.run_tmpl deleted file mode 100644 index ca6b5eaf16f..00000000000 --- a/CEP/DP3/DPPP_DDECal/test/findenv.run_tmpl +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# Find taql program. -taqlexe=@TAQL_EXECUTABLE@ -# Find srcdir in the runctest file. -if test -f runctest.sh; then - rt_srcdir=`grep 'srcdir=' runctest.sh | sed -e 's/srcdir="//' -e 's/";.*//'` -fi diff --git a/CEP/DP3/DPPP_DDECal/test/tDDECal.in_MS.tgz b/CEP/DP3/DPPP_DDECal/test/tDDECal.in_MS.tgz deleted file mode 100644 index bbaf4898f3f8483129e2be6a59d00b67e1194f3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230310 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 XFL$#c8Zyt%>}QY@I(U#_gEa#H`kjxn diff --git a/CEP/DP3/DPPP_DDECal/test/tDDECal.run b/CEP/DP3/DPPP_DDECal/test/tDDECal.run deleted file mode 100755 index 36569aa3d61..00000000000 --- a/CEP/DP3/DPPP_DDECal/test/tDDECal.run +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/bash - -# Get the taql executable and srcdir (script created by cmake's CONFIGURE_FILE). -set -e -source findenv.run_script -echo "srcdirx=$rt_srcdir" - -# The lofar cmake logic for finding shared libraries at test time does not -# work well on Darwin, work around this -if [[ $(uname) == 'Darwin' ]]; then - DYLD_LIBRARY_PATH=$(realpath ../../../../lib):$DYLD_LIBRARY_PATH - export DYLD_LIBRARY_PATH - echo $DYLD_LIBRARY_PATH -fi - -if test ! -f ${srcdir}/tDDECal.in_MS.tgz; then - exit 3 # untested -fi - -mkdir -p tDDECal_tmp -# Unpack the MS and other files and do the DPPP run. -cd tDDECal_tmp -tar zxf ${srcdir}/tDDECal.in_MS.tgz - -echo "Running tDDECal" - -$taqlexe 'update tDDECal.MS set WEIGHT_SPECTRUM=1, FLAG=False' - -# Create expected taql output. -echo " select result of 0 rows" > taql.ref - -echo "Predict corrupted visibilities" -cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. msout.datacolumn=DATA\ - steps=[predict] predict.sourcedb=tDDECal.MS/sky_corrupted" -echo $cmd -$cmd >& /dev/null - -echo "Predict model data column" -cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. msout.datacolumn=MODEL_DATA\ - steps=[]" -echo $cmd -$cmd >& /dev/null - -for caltype in complexgain scalarcomplexgain amplitudeonly scalaramplitude -do - for solint in 0 1 2 4 - do - for nchan in 1 2 5 - do - echo "Calibrate on the original sources, caltype=$caltype" - cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. steps=[ddecal]\ - ddecal.sourcedb=tDDECal.MS/sky ddecal.solint=$solint ddecal.nchan=$nchan \ - ddecal.directions=[[center,dec_off],[ra_off],[radec_off]] \ - ddecal.h5parm=instrument.h5 ddecal.mode=$caltype" - echo $cmd - $cmd - - echo "Apply solutions with multiple predict steps, caltype=$caltype" - cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. msout.datacolumn=SUBTRACTED_DATA\ - steps=[predict1,predict2,predict3]\ - predict1.sourcedb=tDDECal.MS/sky\ - predict1.applycal.parmdb=instrument.h5 predict1.sources=[center,dec_off]\ - predict1.operation=subtract predict1.applycal.correction=amplitude000 \ - predict2.sourcedb=tDDECal.MS/sky\ - predict2.applycal.parmdb=instrument.h5 predict2.sources=[radec_off]\ - predict2.operation=subtract predict2.applycal.correction=amplitude000 \ - predict3.sourcedb=tDDECal.MS/sky\ - predict3.applycal.parmdb=instrument.h5 predict3.sources=[ra_off]\ - predict3.operation=subtract predict3.applycal.correction=amplitude000" - echo $cmd - $cmd - - #h5sols.py instrument.h5 - - echo "Check that residual is small, caltype=$caltype, nchan=$nchan, solint=$solint" - cmd="$taqlexe 'select norm_residual/norm_data FROM (select sqrt(abs(gsumsqr(WEIGHT_SPECTRUM*DATA))) as norm_data, sqrt(abs(gsumsqr(WEIGHT_SPECTRUM*SUBTRACTED_DATA))) as norm_residual from tDDECal.MS)'" - echo $cmd - eval $cmd - - cmd="$taqlexe 'select FROM (select sqrt(abs(gsumsqr(WEIGHT_SPECTRUM*DATA))) as norm_data, sqrt(abs(gsumsqr(WEIGHT_SPECTRUM*SUBTRACTED_DATA))) as norm_residual from tDDECal.MS) where norm_residual/norm_data > 0.015 or isinf(norm_residual/norm_data) or isnan(norm_residual/norm_data)' > taql.out" - echo $cmd - eval $cmd - - diff taql.out taql.ref || exit 1 - done # Loop over nchan - done # Loop over solint -done # Loop over caltype - -echo "Apply solutions with h5parmpredict" -cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. msout.datacolumn=SUBTRACTED_DATA_H5PARM\ - steps=[predict]\ - predict.type=h5parmpredict\ - predict.sourcedb=tDDECal.MS/sky\ - predict.applycal.parmdb=instrument.h5\ - predict.operation=subtract predict.applycal.correction=amplitude000" -echo $cmd -$cmd - -echo "Check that h5parmpredict creates the same output as multiple predict steps" -cmd="$taqlexe 'select abs(gsumsqr(SUBTRACTED_DATA-SUBTRACTED_DATA)) as diff from tDDECal.MS'" -echo $cmd -eval $cmd -cmd="$taqlexe 'select from (select abs(gsumsqr(SUBTRACTED_DATA-SUBTRACTED_DATA)) as diff from tDDECal.MS) where diff>1.e-6' > taql.out" -echo $cmd -eval $cmd -diff taql.out taql.ref || exit 1 - -echo "Check pre-apply" -cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. numthreads=4\ - steps=[ddecal]\ - ddecal.sourcedb=tDDECal.MS/sky\ - ddecal.directions=[[center,dec_off],[ra_off],[radec_off]]\ - ddecal.applycal.parmdb=instrument.h5 ddecal.applycal.steps=applyampl\ - ddecal.applycal.applyampl.correction=amplitude000\ - ddecal.h5parm=instrument2.h5 ddecal.mode=scalarcomplexgain" -echo $cmd -$cmd - -echo "Check tec" -cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. numthreads=4\ - steps=[ddecal]\ - ddecal.sourcedb=tDDECal.MS/sky\ - ddecal.directions=[[center,dec_off],[ra_off],[radec_off]]\ - ddecal.h5parm=instrument-tec.h5 ddecal.mode=tec" -echo $cmd -$cmd - -echo "Check tec and phase" -cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. numthreads=4\ - steps=[ddecal]\ - ddecal.sourcedb=tDDECal.MS/sky\ - ddecal.directions=[[center,dec_off],[ra_off],[radec_off]]\ - ddecal.h5parm=instrument-tecandphase.h5 ddecal.mode=tecandphase" -echo $cmd -$cmd - -echo "Create MODEL_DATA" -cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. msout.datacolumn=MODEL_DATA\ - steps=[]" -echo $cmd -$cmd >& /dev/null -cmd="NDPPP checkparset=1 msin=tDDECal.MS msout=. steps=[ddecal]\ - ddecal.usemodelcolumn=true ddecal.h5parm=instrument-modeldata \ - ddecal.solint=2 ddecal.nchan=3" -echo $cmd -$cmd diff --git a/CEP/DP3/DPPP_DDECal/test/tDDECal.sh b/CEP/DP3/DPPP_DDECal/test/tDDECal.sh deleted file mode 100755 index c6f56dae970..00000000000 --- a/CEP/DP3/DPPP_DDECal/test/tDDECal.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tDDECal diff --git a/CEP/DP3/DPPP_DDECal/test/tDDECal_ref b/CEP/DP3/DPPP_DDECal/test/tDDECal_ref deleted file mode 100755 index b052afc7813..00000000000 --- a/CEP/DP3/DPPP_DDECal/test/tDDECal_ref +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -cat << EOF > tDDECal_tmp.skymodel -FORMAT = Name, Type, Ra, Dec, I - -radec_off, POINT, 01:33:40, +32.09.0, 10 -ra_off, POINT, 01:29:40, +33.09.35.13240, 20 -dec_off, POINT, 01:37:41.299440, +32.09.0, 20 -center, POINT, 01:37:41.299440, +33.09.35.13240, 10 -EOF - -# Corruptions: -# [center, dec_off] : 5 -# [radec_off] : 13 -# [ra_off] : 9 - -cat << EOF > tDDECal_tmp_corrupted.skymodel -FORMAT = Name, Type, Ra, Dec, I - -radec_off, POINT, 01:33:40, +32.09.0, 130 -ra_off, POINT, 01:29:40, +33.09.35.13240, 180 -dec_off, POINT, 01:37:41.299440, +32.09.0, 100 -center, POINT, 01:37:41.299440, +33.09.35.13240, 50 -EOF - -rm -rf tDDECal.MS/sky -rm -rf tDDECal.MS/sky_corrupted -makesourcedb in=tDDECal_tmp.skymodel out=tDDECal.MS/sky format='<' -makesourcedb in=tDDECal_tmp_corrupted.skymodel out=tDDECal.MS/sky_corrupted format='<' -rm tDDECal_tmp.skymodel -rm tDDECal_tmp_corrupted.skymodel - -tar czf tDDECal.in_MS.tgz tDDECal.MS diff --git a/CEP/DP3/DPPP_DDECal/test/tRotationConstraint.cc b/CEP/DP3/DPPP_DDECal/test/tRotationConstraint.cc deleted file mode 100644 index 5d629d52646..00000000000 --- a/CEP/DP3/DPPP_DDECal/test/tRotationConstraint.cc +++ /dev/null @@ -1,101 +0,0 @@ -#include <lofar_config.h> -#include <Common/LofarLogger.h> // ASSERT -#include <casacore/casa/BasicMath/Math.h> // near - -#include <vector> -#include <iostream> -#include <complex> - -#include <DPPP_DDECal/RotationConstraint.h> -#include <DPPP_DDECal/RotationAndDiagonalConstraint.h> - -using namespace std; -using namespace casacore; -using namespace LOFAR; - -void test_rotation() { - RotationConstraint constraint; - constraint.InitializeDimensions(1, 1, 1); - - vector<vector<complex<double> > > onesolution(1); - onesolution[0].resize(4); - double pi = 3.1415; - for (double phi=-pi; phi<pi; phi+=pi/6) { - cout<<"test phi = "<<phi<<endl; - /* Solution is of the form ((a,0),(0,b))*rot(phi) - with rot(phi) = ((cos(phi),-sin(phi)),(sin(phi),cos(phi))) - */ - onesolution[0][0] = cos(phi); - onesolution[0][1] = -sin(phi); - onesolution[0][2] = sin(phi); - onesolution[0][3] = cos(phi); - - vector<Constraint::Result> constraint_result; - constraint_result = constraint.Apply(onesolution, 0., nullptr); - - ASSERT( constraint_result.size() == 1 ); - ASSERT( constraint_result[0].axes == "ant,freq" ); - cout<<" got phi = "<<constraint_result[0].vals[0] <<endl; - ASSERT( near(constraint_result[0].vals[0], phi) ); - ASSERT( constraint_result[0].name == "rotation" ); - ASSERT( constraint_result[0].dims.size() == 2 ); - ASSERT( constraint_result[0].dims[0] == 1 ); - ASSERT( constraint_result[0].dims[1] == 1 ); - } -} - -void test_rotation_and_diagonal() { - RotationAndDiagonalConstraint constraint; - constraint.InitializeDimensions(1, 1, 1); - - vector<vector<complex<double> > > onesolution(1); - onesolution[0].resize(4); - double pi = 3.1415; - double phi= pi/6; - const complex<double> i(0,1.); - complex<double> a=2.*exp(i*0.3), b=3.*exp(i*-0.2); - - /* Solution is of the form ((a,0),(0,b))*rot(phi) - with rot(phi) = ((cos(phi),-sin(phi)),(sin(phi),cos(phi))) - */ - onesolution[0][0] = a * cos(phi); - onesolution[0][1] = a *-sin(phi); - onesolution[0][2] = b * sin(phi); - onesolution[0][3] = b * cos(phi); - - vector<Constraint::Result> constraint_result; - constraint_result = constraint.Apply(onesolution, 0., nullptr); - - ASSERT( constraint_result.size() == 3 ); - ASSERT( constraint_result[0].name == "rotation" ); - ASSERT( constraint_result[0].axes == "ant,freq" ); - ASSERT( near(constraint_result[0].vals[0], 0.) ); - ASSERT( constraint_result[0].dims.size() == 2 ); - ASSERT( constraint_result[0].dims[0] == 1 ); - ASSERT( constraint_result[0].dims[1] == 1 ); - - ASSERT( constraint_result[1].name == "amplitude" ); - ASSERT( constraint_result[1].axes == "ant,freq,pol" ); - ASSERT( near(constraint_result[1].vals[0], abs(a)) ); - ASSERT( near(constraint_result[1].vals[1], abs(b)) ); - ASSERT( constraint_result[1].dims.size() == 3 ); - ASSERT( constraint_result[1].dims[0] == 1 ); - ASSERT( constraint_result[1].dims[1] == 1 ); - ASSERT( constraint_result[1].dims[2] == 2 ); - - ASSERT( constraint_result[2].name == "phase" ); - ASSERT( constraint_result[2].axes == "ant,freq,pol" ); - ASSERT( near(constraint_result[2].vals[0], arg(a)) ); - ASSERT( near(constraint_result[2].vals[1], arg(b)) ); - ASSERT( constraint_result[2].dims.size() == 3 ); - ASSERT( constraint_result[2].dims[0] == 1 ); - ASSERT( constraint_result[2].dims[1] == 1 ); - ASSERT( constraint_result[2].dims[2] == 2 ); -} - -int main(int, char**) { - test_rotation(); - test_rotation_and_diagonal(); - - return 0; -} diff --git a/CEP/DP3/DPPP_DDECal/test/tRotationConstraint.sh b/CEP/DP3/DPPP_DDECal/test/tRotationConstraint.sh deleted file mode 100755 index b0777e425ca..00000000000 --- a/CEP/DP3/DPPP_DDECal/test/tRotationConstraint.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tRotationConstraint diff --git a/CEP/DP3/DPPP_Interpolate/CMake/CheckCXXSymbolExists.cmake b/CEP/DP3/DPPP_Interpolate/CMake/CheckCXXSymbolExists.cmake deleted file mode 100644 index 084fbb422f5..00000000000 --- a/CEP/DP3/DPPP_Interpolate/CMake/CheckCXXSymbolExists.cmake +++ /dev/null @@ -1,49 +0,0 @@ -#.rst: -# CheckCXXSymbolExists -# -------------------- -# -# Check if a symbol exists as a function, variable, or macro in C++ -# -# CHECK_CXX_SYMBOL_EXISTS(<symbol> <files> <variable>) -# -# Check that the <symbol> is available after including given header -# <files> and store the result in a <variable>. Specify the list of -# files in one argument as a semicolon-separated list. -# CHECK_CXX_SYMBOL_EXISTS() can be used to check in C++ files, as -# opposed to CHECK_SYMBOL_EXISTS(), which works only for C. -# -# If the header files define the symbol as a macro it is considered -# available and assumed to work. If the header files declare the symbol -# as a function or variable then the symbol must also be available for -# linking. If the symbol is a type or enum value it will not be -# recognized (consider using CheckTypeSize or CheckCSourceCompiles). -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# :: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories -# CMAKE_REQUIRED_LIBRARIES = list of libraries to link -# CMAKE_REQUIRED_QUIET = execute quietly without messages - -#============================================================================= -# Copyright 2003-2011 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - -include(CheckSymbolExists) - -macro(CHECK_CXX_SYMBOL_EXISTS SYMBOL FILES VARIABLE) - _CHECK_SYMBOL_EXISTS("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.cxx" "${SYMBOL}" "${FILES}" "${VARIABLE}" ) -endmacro() diff --git a/CEP/DP3/DPPP_Interpolate/CMake/FindCFITSIO.cmake b/CEP/DP3/DPPP_Interpolate/CMake/FindCFITSIO.cmake deleted file mode 100644 index 6501f7762ca..00000000000 --- a/CEP/DP3/DPPP_Interpolate/CMake/FindCFITSIO.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# - Try to find CFITSIO. -# Variables used by this module: -# CFITSIO_ROOT_DIR - CFITSIO root directory -# Variables defined by this module: -# CFITSIO_FOUND - system has CFITSIO -# CFITSIO_INCLUDE_DIR - the CFITSIO include directory (cached) -# CFITSIO_INCLUDE_DIRS - the CFITSIO include directories -# (identical to CFITSIO_INCLUDE_DIR) -# CFITSIO_LIBRARY - the CFITSIO library (cached) -# CFITSIO_LIBRARIES - the CFITSIO libraries -# (identical to CFITSIO_LIBRARY) - -# Copyright (C) 2009 -# ASTRON (Netherlands Institute for Radio Astronomy) -# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -# -# This file is part of the LOFAR software suite. -# The LOFAR software suite is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# The LOFAR software suite is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -# -# $Id: FindCFITSIO.cmake 22498 2012-10-23 10:51:12Z loose $ - -if(NOT CFITSIO_FOUND) - - find_path(CFITSIO_INCLUDE_DIR fitsio.h - HINTS ${CFITSIO_ROOT_DIR} PATH_SUFFIXES include include/cfitsio include/libcfitsio0) - find_library(CFITSIO_LIBRARY cfitsio - HINTS ${CFITSIO_ROOT_DIR} PATH_SUFFIXES lib) - find_library(M_LIBRARY m) - mark_as_advanced(CFITSIO_INCLUDE_DIR CFITSIO_LIBRARY M_LIBRARY) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(CFITSIO DEFAULT_MSG - CFITSIO_LIBRARY M_LIBRARY CFITSIO_INCLUDE_DIR) - - set(CFITSIO_INCLUDE_DIRS ${CFITSIO_INCLUDE_DIR}) - set(CFITSIO_LIBRARIES ${CFITSIO_LIBRARY} ${M_LIBRARY}) - -endif(NOT CFITSIO_FOUND) diff --git a/CEP/DP3/DPPP_Interpolate/CMake/FindCasacore.cmake b/CEP/DP3/DPPP_Interpolate/CMake/FindCasacore.cmake deleted file mode 100644 index e4689f75102..00000000000 --- a/CEP/DP3/DPPP_Interpolate/CMake/FindCasacore.cmake +++ /dev/null @@ -1,267 +0,0 @@ -# - Try to find Casacore include dirs and libraries -# Usage: -# find_package(Casacore [REQUIRED] [COMPONENTS components...]) -# Valid components are: -# casa, coordinates, derivedmscal, fits, images, lattices, -# meas, measures, mirlib, ms, msfits, python, scimath, scimath_f, tables -# -# Note that most components are dependent on other (more basic) components. -# In that case, it suffices to specify the "top-level" components; dependent -# components will be searched for automatically. -# -# The dependency tree can be generated using the script get_casacore_deps.sh. -# For this, you need to have a complete casacore installation, built with shared -# libraries, at your disposal. -# -# The dependencies in this macro were generated against casacore release 1.7.0. -# -# Variables used by this module: -# CASACORE_ROOT_DIR - Casacore root directory. -# -# Variables defined by this module: -# CASACORE_FOUND - System has Casacore, which means that the -# include dir was found, as well as all -# libraries specified (not cached) -# CASACORE_INCLUDE_DIR - Casacore include directory (cached) -# CASACORE_INCLUDE_DIRS - Casacore include directories (not cached) -# identical to CASACORE_INCLUDE_DIR -# CASACORE_LIBRARIES - The Casacore libraries (not cached) -# CASA_${COMPONENT}_LIBRARY - The absolute path of Casacore library -# "component" (cached) -# HAVE_AIPSPP - True if system has Casacore (cached) -# for backward compatibility with AIPS++ -# HAVE_CASACORE - True if system has Casacore (cached) -# identical to CASACORE_FOUND -# TAQL_EXECUTABLE - The absolute path of the TaQL executable -# (cached) -# -# ATTENTION: The component names need to be in lower case, just as the -# casacore library names. However, the CMake variables use all upper case. - -# Copyright (C) 2009 -# ASTRON (Netherlands Institute for Radio Astronomy) -# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -# -# This file is part of the LOFAR software suite. -# The LOFAR software suite is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# The LOFAR software suite is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -# -# $Id: FindCasacore.cmake 31487 2015-04-16 11:28:17Z dijkema $ - -# - casacore_resolve_dependencies(_result) -# -# Resolve the Casacore library dependencies for the given components. -# The list of dependent libraries will be returned in the variable result. -# It is sorted from least dependent to most dependent library, so it can be -# directly fed to the linker. -# -# Usage: casacore_resolve_dependencies(result components...) -# -macro(casacore_resolve_dependencies _result) - set(${_result} ${ARGN}) - set(_index 0) - # Do a breadth-first search through the dependency graph; append to the - # result list the dependent components for each item in that list. - # Duplicates will be removed later. - while(1) - list(LENGTH ${_result} _length) - if(NOT _index LESS _length) - break() - endif(NOT _index LESS _length) - list(GET ${_result} ${_index} item) - list(APPEND ${_result} ${Casacore_${item}_DEPENDENCIES}) - math(EXPR _index "${_index}+1") - endwhile(1) - # Remove all duplicates in the current result list, while retaining only the - # last of each duplicate. - list(REVERSE ${_result}) - list(REMOVE_DUPLICATES ${_result}) - list(REVERSE ${_result}) -endmacro(casacore_resolve_dependencies _result) - - -# - casacore_find_library(_name) -# -# Search for the library ${_name}. -# If library is found, add it to CASACORE_LIBRARIES; if not, add ${_name} -# to CASACORE_MISSING_COMPONENTS and set CASACORE_FOUND to false. -# -# Usage: casacore_find_library(name) -# -macro(casacore_find_library _name) - string(TOUPPER ${_name} _NAME) - find_library(${_NAME}_LIBRARY ${_name} - HINTS ${CASACORE_ROOT_DIR} PATH_SUFFIXES lib) - mark_as_advanced(${_NAME}_LIBRARY) - if(${_NAME}_LIBRARY) - list(APPEND CASACORE_LIBRARIES ${${_NAME}_LIBRARY}) - else(${_NAME}_LIBRARY) - set(CASACORE_FOUND FALSE) - list(APPEND CASACORE_MISSING_COMPONENTS ${_name}) - endif(${_NAME}_LIBRARY) -endmacro(casacore_find_library _name) - - -# - casacore_find_package(_name) -# -# Search for the package ${_name}. -# If the package is found, add the contents of ${_name}_INCLUDE_DIRS to -# CASACORE_INCLUDE_DIRS and ${_name}_LIBRARIES to CASACORE_LIBRARIES. -# -# If Casacore itself is required, then, strictly speaking, the packages it -# requires must be present. However, when linking against static libraries -# they may not be needed. One can override the REQUIRED setting by switching -# CASACORE_MAKE_REQUIRED_EXTERNALS_OPTIONAL to ON. Beware that this might cause -# compile and/or link errors. -# -# Usage: casacore_find_package(name [REQUIRED]) -# -macro(casacore_find_package _name) - if("${ARGN}" MATCHES "^REQUIRED$" AND - Casacore_FIND_REQUIRED AND - NOT CASACORE_MAKE_REQUIRED_EXTERNALS_OPTIONAL) - find_package(${_name} REQUIRED) - else() - find_package(${_name}) - endif() - if(${_name}_FOUND) - list(APPEND CASACORE_INCLUDE_DIRS ${${_name}_INCLUDE_DIRS}) - list(APPEND CASACORE_LIBRARIES ${${_name}_LIBRARIES}) - endif(${_name}_FOUND) -endmacro(casacore_find_package _name) - -# Define the Casacore components. -set(Casacore_components - casa - coordinates - derivedmscal - fits - images - lattices - meas - measures - mirlib - ms - msfits - python - scimath - scimath_f - tables -) - -# Define the Casacore components' inter-dependencies. -set(Casacore_casa_DEPENDENCIES) -set(Casacore_coordinates_DEPENDENCIES fits measures casa) -set(Casacore_derivedmscal_DEPENDENCIES ms measures tables casa) -set(Casacore_fits_DEPENDENCIES measures tables casa) -set(Casacore_images_DEPENDENCIES mirlib lattices coordinates fits measures scimath tables casa) -set(Casacore_lattices_DEPENDENCIES tables scimath casa) -set(Casacore_meas_DEPENDENCIES measures tables casa) -set(Casacore_measures_DEPENDENCIES tables casa) -set(Casacore_mirlib_DEPENDENCIES) -set(Casacore_ms_DEPENDENCIES measures scimath tables casa) -set(Casacore_msfits_DEPENDENCIES ms fits measures tables casa) -set(Casacore_python_DEPENDENCIES casa) -set(Casacore_scimath_DEPENDENCIES scimath_f casa) -set(Casacore_scimath_f_DEPENDENCIES) -set(Casacore_tables_DEPENDENCIES casa) - -# Initialize variables. -set(CASACORE_FOUND FALSE) -set(CASACORE_DEFINITIONS) -set(CASACORE_LIBRARIES) -set(CASACORE_MISSING_COMPONENTS) - -# Search for the header file first. -if(NOT CASACORE_INCLUDE_DIR) - find_path(CASACORE_INCLUDE_DIR casacore/casa/aips.h - HINTS ${CASACORE_ROOT_DIR} PATH_SUFFIXES include) - mark_as_advanced(CASACORE_INCLUDE_DIR) -endif(NOT CASACORE_INCLUDE_DIR) - -# Fallback for systems that have old casacore installed in directory not called 'casacore' -# This fallback can be removed once we move to casacore 2.0 which always puts headers in 'casacore' -if(NOT CASACORE_INCLUDE_DIR) - find_path(CASACORE_INCLUDE_DIR casa/aips.h - HINTS ${CASACORE_ROOT_DIR} PATH_SUFFIXES include) - mark_as_advanced(CASACORE_INCLUDE_DIR) -endif(NOT CASACORE_INCLUDE_DIR) - -if(NOT CASACORE_INCLUDE_DIR) - set(CASACORE_ERROR_MESSAGE "Casacore: unable to find the header file casa/aips.h.\nPlease set CASACORE_ROOT_DIR to the root directory containing Casacore.") -else(NOT CASACORE_INCLUDE_DIR) - # We've found the header file; let's continue. - set(CASACORE_FOUND TRUE) - # Note that new Casacore uses #include<casacore/casa/...>, while - # LOFAR still uses #include<casa/...>. Hence use both in -I path. - set(CASACORE_INCLUDE_DIRS ${CASACORE_INCLUDE_DIR} ${CASACORE_INCLUDE_DIR}/casacore) - - # Search for some often used binaries. - find_program(TAQL_EXECUTABLE taql - HINTS ${CASACORE_ROOT_DIR}/bin) - mark_as_advanced(TAQL_EXECUTABLE) - - # If the user specified components explicity, use that list; otherwise we'll - # assume that the user wants to use all components. - if(NOT Casacore_FIND_COMPONENTS) - set(Casacore_FIND_COMPONENTS ${Casacore_components}) - endif(NOT Casacore_FIND_COMPONENTS) - - # Get a list of all dependent Casacore libraries that need to be found. - casacore_resolve_dependencies(_find_components ${Casacore_FIND_COMPONENTS}) - - # Find the library for each component, and handle external dependencies - foreach(_comp ${_find_components}) - casacore_find_library(casa_${_comp}) - if(${_comp} STREQUAL casa) - casacore_find_package(HDF5) - casacore_find_library(m) - list(APPEND CASACORE_LIBRARIES ${CMAKE_DL_LIBS}) - elseif(${_comp} STREQUAL coordinates) - casacore_find_package(WCSLIB REQUIRED) - elseif(${_comp} STREQUAL fits) - casacore_find_package(CFITSIO REQUIRED) - elseif(${_comp} STREQUAL scimath_f) - casacore_find_package(LAPACK REQUIRED) - endif(${_comp} STREQUAL casa) - endforeach(_comp ${_find_components}) -endif(NOT CASACORE_INCLUDE_DIR) - -# Set HAVE_CASACORE; and HAVE_AIPSPP (for backward compatibility with AIPS++). -if(CASACORE_FOUND) - set(HAVE_CASACORE TRUE CACHE INTERNAL "Define if Casacore is installed") - set(HAVE_AIPSPP TRUE CACHE INTERNAL "Define if AIPS++/Casacore is installed") -endif(CASACORE_FOUND) - -# Compose diagnostic message if not all necessary components were found. -if(CASACORE_MISSING_COMPONENTS) - set(CASACORE_ERROR_MESSAGE "Casacore: the following components could not be found:\n ${CASACORE_MISSING_COMPONENTS}") -endif(CASACORE_MISSING_COMPONENTS) - -# Print diagnostics. -if(CASACORE_FOUND) - if(NOT Casacore_FIND_QUIETLY) - message(STATUS "Found the following Casacore components: ") - foreach(_comp ${_find_components}) - string(TOUPPER casa_${_comp} _COMP) - message(STATUS " ${_comp}: ${${_COMP}_LIBRARY}") - endforeach(_comp ${_find_components}) - endif(NOT Casacore_FIND_QUIETLY) -else(CASACORE_FOUND) - if(Casacore_FIND_REQUIRED) - message(FATAL_ERROR "${CASACORE_ERROR_MESSAGE}") - else(Casacore_FIND_REQUIRED) - message(STATUS "${CASACORE_ERROR_MESSAGE}") - endif(Casacore_FIND_REQUIRED) -endif(CASACORE_FOUND) - diff --git a/CEP/DP3/DPPP_Interpolate/CMakeLists-standalone.txt b/CEP/DP3/DPPP_Interpolate/CMakeLists-standalone.txt deleted file mode 100644 index 798f11ee87b..00000000000 --- a/CEP/DP3/DPPP_Interpolate/CMakeLists-standalone.txt +++ /dev/null @@ -1,27 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -project(DPPP_Interpolate) - -# Casacore has a separate CMake file in this directory -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake) - -SET(CASACORE_MAKE_REQUIRED_EXTERNALS_OPTIONAL TRUE) -find_package(Casacore REQUIRED COMPONENTS casa ms tables measures) - -find_package(Threads REQUIRED) - -include_directories(${CASACORE_INCLUDE_DIRS} ../../../build/gnucxx11_opt/include/) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wall -DNDEBUG --std=c++11 -ggdb") - -add_library(interpolate-object OBJECT - src/Interpolate.cc - ../../../LCS/Common/src/LofarLogCout.cc) -set_property(TARGET interpolate-object PROPERTY POSITION_INDEPENDENT_CODE 1) - -# Note: casapy fails if Casa is linked in the storage manager, so we have to trust that -# casapy's version of casacore is binary compatible with this storage manager's casacore. -add_library(dppp_interpolate SHARED $<TARGET_OBJECTS:interpolate-object>) -target_link_libraries(dppp_interpolate ${CASACORE_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) - -install (TARGETS dppp_interpolate DESTINATION lib) diff --git a/CEP/DP3/DPPP_Interpolate/CMakeLists.txt b/CEP/DP3/DPPP_Interpolate/CMakeLists.txt deleted file mode 100644 index a45bd5adc12..00000000000 --- a/CEP/DP3/DPPP_Interpolate/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -# $Id: CMakeLists.txt 27640 2013-12-04 08:02:49Z diepen $ - -lofar_package(DPPP_Interpolate 1.0 DEPENDS DPPP) - -include(LofarFindPackage) -lofar_find_package(Casacore COMPONENTS casa ms tables REQUIRED) - -add_subdirectory(include/DPPP_Interpolate) -add_subdirectory(src) -add_subdirectory(test) diff --git a/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/CMakeLists.txt b/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/CMakeLists.txt deleted file mode 100644 index 3d9cb5dee52..00000000000 --- a/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -# $Id: CMakeLists.txt 39071 2018-02-08 15:50:02Z dijkema $ - -# List of header files that will be installed. -set(inst_HEADERS - buffered_lane.h Interpolate.h lane.h - ) - -# Create symbolic link to include directory. -execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_BINARY_DIR}/include/${PACKAGE_NAME}) - -# Install header files. -install(FILES ${inst_HEADERS} DESTINATION include/${PACKAGE_NAME}) diff --git a/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/Interpolate.h b/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/Interpolate.h deleted file mode 100644 index 97570460a72..00000000000 --- a/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/Interpolate.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef INTERPOLATE_H -#define INTERPOLATE_H - -#include <deque> -#include <string> - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> - -#include <Common/ParameterSet.h> - -#include <casacore/casa/Arrays/Cube.h> - -#include "lane.h" - -extern "C" void register_interpolate(); - -namespace LOFAR { namespace DPPP { - - class Interpolate : public DPStep - { - public: - // Construct the object. - // Parameters are obtained from the parset using the given prefix. - Interpolate (DPInput*, const ParameterSet&, const string& prefix); - - virtual ~Interpolate() = default; - - // Process the data. - // It keeps the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - static DPStep::ShPtr makeStep(DPInput* input, const ParameterSet& parset, const std::string& prefix); - - private: - void interpolateTimestep(size_t index); - void interpolateSample(size_t timestep, size_t baseline, size_t channel, size_t pol); - void sendFrontBufferToNextStep(); - void interpolationThread(); - - struct Sample { - Sample() = default; - Sample(size_t timestep_, size_t baseline_, size_t channel_, size_t pol_) : - timestep(timestep_), baseline(baseline_), channel(channel_), pol(pol_) - { } - size_t timestep; - size_t baseline; - size_t channel; - size_t pol; - }; - - //# Data members. - std::string _name; - size_t _interpolatedPos; - std::deque<DPBuffer> _buffers; - size_t _windowSize; - NSTimer _timer; - ao::lane<Sample> _lane; - std::vector<float> _kernelLookup; - }; - -} } //# end namespace - -#endif diff --git a/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/buffered_lane.h b/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/buffered_lane.h deleted file mode 100644 index d9c0f9ec073..00000000000 --- a/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/buffered_lane.h +++ /dev/null @@ -1,122 +0,0 @@ -#ifndef BUFFER_LANE_H -#define BUFFER_LANE_H - -#include <vector> - -#include "lane.h" - -template<typename Tp> -class lane_write_buffer -{ -public: - typedef typename ao::lane<Tp>::size_type size_type; - typedef typename ao::lane<Tp>::value_type value_type; - - lane_write_buffer() : _buffer_size(0), _lane(0) - { } - - lane_write_buffer(ao::lane<Tp>* lane, size_type buffer_size) : _buffer_size(buffer_size), _lane(lane) - { - _buffer.reserve(buffer_size); - } - - ~lane_write_buffer() - { - flush(); - } - - void reset(ao::lane<Tp>* lane, size_type buffer_size) - { - _buffer.clear(); - _buffer.reserve(buffer_size); - _buffer_size = buffer_size; - _lane = lane; - } - - void clear() - { - _lane->clear(); - _buffer.clear(); - } - - void write(const value_type& element) - { - _buffer.push_back(element); - if(_buffer.size() == _buffer_size) - flush(); - } - - void write(value_type&& element) - { - _buffer.push_back(std::move(element)); - if(_buffer.size() == _buffer_size) - flush(); - } - - template<typename... Args> - void emplace(Args&&... args) - { - _buffer.emplace_back(args...); - if(_buffer.size() == _buffer_size) - flush(); - } - - void write_end() - { - flush(); - _lane->write_end(); - } - - void flush() - { - _lane->move_write(&_buffer[0], _buffer.size()); - _buffer.clear(); - } -private: - size_type _buffer_size; - std::vector<value_type> _buffer; - ao::lane<Tp>* _lane; -}; - -template<typename Tp> -class lane_read_buffer -{ -public: - lane_read_buffer(ao::lane<Tp>* lane, size_t buffer_size) : - _buffer(new Tp[buffer_size]), - _buffer_size(buffer_size), - _buffer_pos(0), - _buffer_fill_count(0), - _lane(lane) - { - } - - ~lane_read_buffer() - { - delete[] _buffer; - } - - bool read(Tp& element) - { - if(_buffer_pos == _buffer_fill_count) - { - _buffer_fill_count = _lane->read(_buffer, _buffer_size); - _buffer_pos = 0; - if(_buffer_fill_count == 0) - return false; - } - element = std::move(_buffer[_buffer_pos]); - ++_buffer_pos; - return true; - } - -private: - lane_read_buffer(const lane_read_buffer&) = delete; - lane_read_buffer& operator=(const lane_read_buffer&) = delete; - - Tp* _buffer; - size_t _buffer_size, _buffer_pos, _buffer_fill_count; - ao::lane<Tp>* _lane; -}; - -#endif diff --git a/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/lane.h b/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/lane.h deleted file mode 100644 index 4be42a6e061..00000000000 --- a/CEP/DP3/DPPP_Interpolate/include/DPPP_Interpolate/lane.h +++ /dev/null @@ -1,576 +0,0 @@ -#ifndef AO_LANE_11_H -#define AO_LANE_11_H - -#include <cstring> -#include <deque> -#include <mutex> -#include <condition_variable> - -/** - * @file - * Internal header file for the lane. - * @headername{lane.h} - */ - -//#define LANE_DEBUG_MODE - -#ifdef LANE_DEBUG_MODE -#include <string> -#include <iostream> -#include <sstream> -#include <cmath> -#endif - -namespace ao -{ - -#ifdef LANE_DEBUG_MODE -#define set_lane_debug_name(lane, str) (lane).setDebugName(str) -#define LANE_REGISTER_DEBUG_INFO registerDebugInfo() -#define LANE_REGISTER_DEBUG_WRITE_WAIT registerDebugWriteWait() -#define LANE_REGISTER_DEBUG_READ_WAIT registerDebugReadWait() -#define LANE_REPORT_DEBUG_INFO reportDebugInfo() - -#else - -#define set_lane_debug_name(lane, str) -#define LANE_REGISTER_DEBUG_INFO -#define LANE_REGISTER_DEBUG_WRITE_WAIT -#define LANE_REGISTER_DEBUG_READ_WAIT -#define LANE_REPORT_DEBUG_INFO - -#endif - -/** - * @brief The lane is an efficient cyclic buffer that is synchronized. - * @details - * A lane can typically be used in a multi-threaded producer-consumer - * situation. The lane also holds a state which allows for - * an ellegant way of communicating from producer(s) to - * consumer(s) that all data has been produced. - * - * A simple example: - * @code - * void producer(lane<Task>* taskLane) - * { - * while(moreTasks) - * taskLane->write(nextTask()); - * taskLane->write_end(); - * } - * - * void consumer(lane<Task>* taskLane) - * { - * Task task; - * while(taskLane->read(task)) - * processTask(task); - * } - * - * void run() - * { - * lane<Task> taskLane; - * std::thread consumerThread(&consumer(), &taskLane); - * producer(&taskLane); - * consumerThread.join(); - * } - * @endcode - * - * The various read and write methods, as well as the empty(), - * capacity() and size() methods are always thread safe. The other - * methods are not: assignment, swap(), clear() and resize() can not - * be called from a different thread while another thread is also - * accessing the lane. The same holds obviously for the constructors - * and destructor. This is chosen because these methods should almost never - * be called in parallel with other methods, and hence it is not worth - * to increase every call with extra locks to make this possible. - * - * With one reader and one writer, the order is guaranteed to be consistent. - * With multiple readers or writers in combination with multi-element - * write or read functions, a sequence of symbols might be interrupted. For - * example, if a multi-element write() won't fit completely in the buffer, - * the thread will wait for free space. Another thread might get now write - * access first, causing the single call to the multi-element write to be - * "split up". - * - * @author Andre Offringa - * @tparam Tp Type of elements to be stored in the lane. - */ -template<typename Tp> -class lane -{ - public: - /** @brief Integer type used to store size types. */ - typedef std::size_t size_type; - - /** @brief Type of elements stored in the lane. */ - typedef Tp value_type; - - /** @brief Construct a lane with zero elements. - * @details A lane with zero elements can not be written to or read to - * (both operations will wait forever). - * - * This constructor makes it easy to construct e.g. a container - * of lanes. After the container is created, the lanes can be - * resized with @ref resize(). - */ - lane() noexcept : - _buffer(0), - _capacity(0), - _write_position(0), - _free_write_space(0), - _status(status_normal) - { - } - - /** @brief Construct a lane with the given capacity. - * @details After construction, the lane is ready for writing to and reading from. - * @param capacity Number of elements that the lane can hold at once. - */ - explicit lane(size_t capacity) : - _buffer(new Tp[capacity]), - _capacity(capacity), - _write_position(0), - _free_write_space(_capacity), - _status(status_normal) - { - } - - lane(const lane<Tp>& source) = delete; - - /** @brief Move construct a lane. - * @details This operation is not thread safe: the behaviour is undefined when - * other threads access the source lane. - * @param source Original lane to be moved from. - */ - lane(lane<Tp>&& source) noexcept : - _buffer(0), - _capacity(0), - _write_position(0), - _free_write_space(0), - _status(status_normal) - { - swap(source); - } - - /** @brief Destructor. - * @details The destructor is not synchronized. - */ - ~lane() - { - LANE_REPORT_DEBUG_INFO; - delete[] _buffer; - } - - lane<Tp>& operator=(const lane<Tp>& source) = delete; - - /** @brief Move assignment. - * @details This operation is not thread safe: the behaviour is undefined when - * other threads access the source lane. - * @param source Original lane to be moved from. - * @returns This lane. - */ - lane<Tp>& operator=(lane<Tp>&& source) noexcept - { - swap(source); - return *this; - } - - /** @brief Swap the contents of this lane with another. - * @details This operation is not thread safe: the behaviour is undefined when - * other threads access either lane. - */ - void swap(lane<Tp>& other) noexcept - { - std::swap(_buffer, other._buffer); - std::swap(_capacity, other._capacity); - std::swap(_write_position, other._write_position); - std::swap(_free_write_space, other._free_write_space); - std::swap(_status, other._status); - } - - /** @brief Clear the contents and reset the state of the lane. - * @details After calling clear(), the lane is in the same state as after - * construction. This also means that after clearing the lane, it - * is as if write_end() has not been called yet. - * - * This method is not thread safe. - */ - void clear() noexcept - { - _write_position = 0; - _free_write_space = _capacity; - _status = status_normal; - } - - /** @brief Write a single element. - * @details This method is thread safe, and can be called together with - * other write and read methods from different threads. - * - * If this call comes after a call to write_end(), the call - * will be ignored. - * @param element Object to be copied into the cyclic buffer. - */ - void write(const value_type& element) - { - std::unique_lock<std::mutex> lock(_mutex); - LANE_REGISTER_DEBUG_INFO; - - if(_status == status_normal) - { - while(_free_write_space == 0) - { - LANE_REGISTER_DEBUG_WRITE_WAIT; - _writing_possible_condition.wait(lock); - } - - _buffer[_write_position] = element; - _write_position = (_write_position+1) % _capacity; - --_free_write_space; - // Now that there is less free write space, there is more free read - // space and thus readers can possibly continue. - _reading_possible_condition.notify_all(); - } - } - - /** @brief Write a single element by constructing it. - * @details This method is thread safe, and can be called together with - * other write and read methods from different threads. - * - * If this call comes after a call to write_end(), the call - * will be ignored. The implementation does not construct the value - * in place, but rather constructs the value and then move assigns it. - * This is because the value that it is moved into has already been - * constructed (in the current implementation). - * @param element Object to be moved into the cyclic buffer. - */ - template<typename... Args> - void emplace(Args&&... args) - { - std::unique_lock<std::mutex> lock(_mutex); - LANE_REGISTER_DEBUG_INFO; - - if(_status == status_normal) - { - while(_free_write_space == 0) - { - LANE_REGISTER_DEBUG_WRITE_WAIT; - _writing_possible_condition.wait(lock); - } - - _buffer[_write_position] = value_type(args...); - _write_position = (_write_position+1) % _capacity; - --_free_write_space; - // Now that there is less free write space, there is more free read - // space and thus readers can possibly continue. - _reading_possible_condition.notify_all(); - } - } - - /** @brief Write a single element by moving it in. - * @details This method is thread safe, and can be called together with - * other write and read methods from different threads. - * - * If this call comes after a call to write_end(), the call - * will be ignored. - * @param element Object to be moved into the cyclic buffer. - */ - void write(value_type&& element) - { - std::unique_lock<std::mutex> lock(_mutex); - LANE_REGISTER_DEBUG_INFO; - - if(_status == status_normal) - { - while(_free_write_space == 0) - { - LANE_REGISTER_DEBUG_WRITE_WAIT; - _writing_possible_condition.wait(lock); - } - - _buffer[_write_position] = std::move(element); - _write_position = (_write_position+1) % _capacity; - --_free_write_space; - // Now that there is less free write space, there is more free read - // space and thus readers can possibly continue. - _reading_possible_condition.notify_all(); - } - } - - void write(const value_type* elements, size_t n) - { - write_generic(elements, n); - } - - void move_write(value_type* elements, size_t n) - { - write_generic(elements, n); - } - - bool read(value_type& destination) - { - std::unique_lock<std::mutex> lock(_mutex); - LANE_REGISTER_DEBUG_INFO; - while(free_read_space() == 0 && _status == status_normal) - { - LANE_REGISTER_DEBUG_READ_WAIT; - _reading_possible_condition.wait(lock); - } - if(free_read_space() == 0) - return false; - else - { - destination = std::move(_buffer[read_position()]); - ++_free_write_space; - // Now that there is more free write space, writers can possibly continue. - _writing_possible_condition.notify_all(); - return true; - } - } - - size_t read(value_type* destinations, size_t n) - { - size_t n_left = n; - - std::unique_lock<std::mutex> lock(_mutex); - LANE_REGISTER_DEBUG_INFO; - - size_t free_space = free_read_space(); - size_t read_size = free_space > n ? n : free_space; - immediate_read(destinations, read_size); - n_left -= read_size; - - while(n_left != 0 && _status == status_normal) - { - destinations += read_size; - - do { - LANE_REGISTER_DEBUG_READ_WAIT; - _reading_possible_condition.wait(lock); - } while(free_read_space() == 0 && _status == status_normal); - - free_space = free_read_space(); - read_size = free_space > n_left ? n_left : free_space; - immediate_read(destinations, read_size); - n_left -= read_size; - } - return n - n_left; - } - - void write_end() - { - std::lock_guard<std::mutex> lock(_mutex); - LANE_REGISTER_DEBUG_INFO; - _status = status_end; - _writing_possible_condition.notify_all(); - _reading_possible_condition.notify_all(); - } - - size_t capacity() const noexcept - { - return _capacity; - } - - size_t size() const - { - std::lock_guard<std::mutex> lock(_mutex); - return _capacity - _free_write_space; - } - - bool empty() const - { - std::lock_guard<std::mutex> lock(_mutex); - return _capacity == _free_write_space; - } - - /** - * Change the capacity of the lane. This will erase all data in the lane. - */ - void resize(size_t new_capacity) - { - Tp *new_buffer = new Tp[new_capacity]; - delete[] _buffer; - _buffer = new_buffer; - _capacity = new_capacity; - _write_position = 0; - _free_write_space = new_capacity; - _status = status_normal; - } - -#ifdef LANE_DEBUG_MODE - /** - * Change the name of this lane to make it appear in the output along - * with statistics. Do not use this function directly; use the - * set_lane_debug_name() macro instead. - * @param nameStr New debug description of this lane. - */ - void setDebugName(const std::string& nameStr) - { - _debugName = nameStr; - } -#endif - private: - Tp* _buffer; - - size_t _capacity; - - size_t _write_position; - - size_t _free_write_space; - - enum { status_normal, status_end } _status; - - mutable std::mutex _mutex; - - std::condition_variable _writing_possible_condition, _reading_possible_condition; - - size_t read_position() const noexcept - { - return (_write_position + _free_write_space) % _capacity; - } - - size_t free_read_space() const noexcept - { - return _capacity - _free_write_space; - } - - // This is a template to allow const and non-const (to be able to move) - template<typename T> - void write_generic(T* elements, size_t n) - { - std::unique_lock<std::mutex> lock(_mutex); - LANE_REGISTER_DEBUG_INFO; - - if(_status == status_normal) - { - size_t write_size = _free_write_space > n ? n : _free_write_space; - immediate_write(elements, write_size); - n -= write_size; - - while(n != 0) { - elements += write_size; - - do { - LANE_REGISTER_DEBUG_WRITE_WAIT; - _writing_possible_condition.wait(lock); - } while(_free_write_space == 0 && _status == status_normal); - - write_size = _free_write_space > n ? n : _free_write_space; - immediate_write(elements, write_size); - n -= write_size; - } while(n != 0); - } - } - - // This is a template to allow const and non-const (to be able to move) - template<typename T> - void immediate_write(T *elements, size_t n) noexcept - { - // Split the writing in two ranges if needed. The first range fits in - // [_write_position, _capacity), the second range in [0, end). By doing - // so, we only have to calculate the modulo in the write position once. - if(n > 0) - { - size_t nPart; - if(_write_position + n > _capacity) - { - nPart = _capacity - _write_position; - } else { - nPart = n; - } - for(size_t i = 0; i < nPart ; ++i, ++_write_position) - { - _buffer[_write_position] = std::move(elements[i]); - } - - _write_position = _write_position % _capacity; - - for(size_t i = nPart; i < n ; ++i, ++_write_position) - { - _buffer[_write_position] = std::move(elements[i]); - } - - _free_write_space -= n; - - // Now that there is less free write space, there is more free read - // space and thus readers can possibly continue. - _reading_possible_condition.notify_all(); - } - } - - void immediate_read(value_type *elements, size_t n) noexcept - { - // As with write, split in two ranges if needed. The first range fits in - // [read_position(), _capacity), the second range in [0, end). - if(n > 0) - { - size_t nPart; - size_t position = read_position(); - if(position + n > _capacity) - { - nPart = _capacity - position; - } else { - nPart = n; - } - for(size_t i = 0; i < nPart ; ++i, ++position) - { - elements[i] = std::move(_buffer[position]); - } - - position = position % _capacity; - - for(size_t i = nPart; i < n ; ++i, ++position) - { - elements[i] = std::move(_buffer[position]); - } - - _free_write_space += n; - - // Now that there is more free write space, writers can possibly continue. - _writing_possible_condition.notify_all(); - } - } -#ifdef LANE_DEBUG_MODE - void registerDebugInfo() noexcept - { - _debugSummedSize += _capacity - _free_write_space; - _debugMeasureCount++; - } - void registerDebugReadWait() noexcept - { - ++_debugReadWaitCount; - } - void registerDebugWriteWait() noexcept - { - ++_debugWriteWaitCount; - } - void reportDebugInfo() - { - if(!_debugName.empty()) - { - std::stringstream str; - str - << "*** Debug report for the following lane: ***\n" - << "\"" << _debugName << "\"\n" - << "Capacity: " << _capacity << '\n' - << "Total read/write ops: " << _debugMeasureCount << '\n' - << "Average size of buffer, measured per read/write op.: " << round(double(_debugSummedSize)*100.0/_debugMeasureCount)/100.0 << '\n' - << "Number of wait events during reading: " << _debugReadWaitCount << '\n' - << "Number of wait events during writing: " << _debugWriteWaitCount << '\n'; - std::cout << str.str(); - } - } - std::string _debugName; - size_t - _debugSummedSize = 0, _debugMeasureCount = 0, - _debugReadWaitCount = 0, _debugWriteWaitCount = 0; -#endif -}; - -template<typename Tp> -void swap(ao::lane<Tp>& first, ao::lane<Tp>& second) noexcept -{ - first.swap(second); -} - -} // end of namespace - -#endif // AO_LANE11_H diff --git a/CEP/DP3/DPPP_Interpolate/src/CMakeLists.txt b/CEP/DP3/DPPP_Interpolate/src/CMakeLists.txt deleted file mode 100644 index 52d938d9014..00000000000 --- a/CEP/DP3/DPPP_Interpolate/src/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -include(LofarPackageVersion) - -lofar_add_library(dppp_interpolate - Interpolate.cc ../../../../LCS/Common/src/LofarLogCout.cc -) diff --git a/CEP/DP3/DPPP_Interpolate/src/Interpolate.cc b/CEP/DP3/DPPP_Interpolate/src/Interpolate.cc deleted file mode 100644 index 79ace62ae8d..00000000000 --- a/CEP/DP3/DPPP_Interpolate/src/Interpolate.cc +++ /dev/null @@ -1,245 +0,0 @@ -#include <DPPP_Interpolate/Interpolate.h> -#include <DPPP_Interpolate/buffered_lane.h> - -#include <lofar_config.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPRun.h> -#include <Common/ParameterSet.h> -#include <Common/LofarLogger.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <Common/StringUtil.h> - -#include <iostream> -#include <iomanip> -#include <thread> - -using namespace casacore; - -void register_interpolate() -{ - LOFAR::DPPP::DPRun::registerStepCtor("interpolate", LOFAR::DPPP::Interpolate::makeStep); -} - -namespace LOFAR { namespace DPPP { - -Interpolate::Interpolate(DPInput* /*input*/, const ParameterSet& parset, const string& prefix) : - _name(prefix), - _interpolatedPos(0), - _windowSize(parset.getUint(prefix+"windowsize", 15)) -{ - if(_windowSize%2 != 1) - throw std::runtime_error("Window size of Interpolate action should be an odd number"); - - _kernelLookup.reserve(_windowSize*_windowSize); - for(int t=0; t!=int(_windowSize); ++t) - { - int y = t - int(_windowSize/2); - for(int ch=0; ch!=int(_windowSize); ++ch) - { - int x = ch - int(_windowSize/2); - double windowDist = double(x*x + y*y); - // Gaussian function with sigma = 1 - // (evaluated with double prec, then converted to floats) - double w = std::exp(windowDist * -0.5); - _kernelLookup.emplace_back(w); - } - } -} - -DPStep::ShPtr Interpolate::makeStep(DPInput* input, const ParameterSet& parset, const std::string& prefix) -{ - return DPStep::ShPtr(new Interpolate(input, parset, prefix)); -} - -void Interpolate::updateInfo(const DPInfo& infoIn) -{ - info() = infoIn; - info().setNeedVisData(); - info().setWriteData(); - info().setWriteFlags(); -} - -void Interpolate::show(std::ostream& os) const -{ - os << "Interpolate " << _name << '\n'; - os << " windowsize: " << _windowSize << '\n'; -} - -void Interpolate::showTimings(std::ostream& os, double duration) const -{ - os << " "; - FlagCounter::showPerc1 (os, _timer.getElapsed(), duration); - os << " Interpolate " << _name << endl; -} - -bool Interpolate::process(const DPBuffer& buf) -{ - _timer.start(); - // Collect the data in buffers. - _buffers.emplace_back(); - _buffers.back().copy(buf); - // If we have a full window of data, interpolate everything - // up to the middle of the window - if(_buffers.size() >= _windowSize) - { - size_t mid = _windowSize/2; - while(_interpolatedPos <= mid) - { - interpolateTimestep(_interpolatedPos); - ++_interpolatedPos; - } - // Buffers are only pushed to the next step when they are completely - // out of the window. This is because flags need to be set to false, - // however the flag information of the entire window is needed during - // interpolation, so these can only be set to false after processing. - sendFrontBufferToNextStep(); - } - _timer.stop(); - return true; -} - -void Interpolate::sendFrontBufferToNextStep() -{ - IPosition shp = _buffers.front().getData().shape(); - size_t - nPol = shp[0], - nChan = shp[1], - nBl = shp[2], - n = nPol * nChan * nBl; - // Set all flags to false - bool* flags = _buffers.front().getFlags().data(); - Complex* data = _buffers.front().getData().data(); - std::fill(flags, flags+n, false); - // Flag NaN values (values for which the entire window was flagged on input) - for(size_t i=0; i!=n; ++i) - { - if(!std::isfinite(data[i].real()) || !std::isfinite(data[i].imag())) - { - // The datum value is also set to 0, because NaNs sometimes give problems in - // certain software, even when they are flagged (e.g. in Sagecal). - data[i] = 0.0; - flags[i] = true; - } - } - - _timer.stop(); - getNextStep()->process(_buffers.front()); - _timer.start(); - - _buffers.pop_front(); - --_interpolatedPos; -} - -void Interpolate::finish() -{ - _timer.start(); - - // Interpolate everything up to the end of the window - while(_interpolatedPos<_buffers.size()) { - interpolateTimestep(_interpolatedPos); - ++_interpolatedPos; - } - while(!_buffers.empty()) - { - sendFrontBufferToNextStep(); - } - - _timer.stop(); - - getNextStep()->finish(); -} - -#define BUFFER_SIZE 1024 - -void Interpolate::interpolateTimestep(size_t index) -{ - const IPosition shp = _buffers.front().getData().shape(); - const size_t - nPol = shp[0], - nChan = shp[1], - nPerBl = nPol*nChan, - nBl = shp[2]; - - std::vector<std::thread> threads; - size_t nthreads = std::min<size_t>(sysconf(_SC_NPROCESSORS_ONLN), 8); - _lane.resize(nthreads*BUFFER_SIZE); - lane_write_buffer<Sample> buflane(&_lane, BUFFER_SIZE); - threads.reserve(nthreads); - for(size_t i=0; i!=nthreads; ++i) - threads.emplace_back(&Interpolate::interpolationThread, this); - - std::vector<Complex> dataBlock; - for (size_t bl=0; bl<nBl; ++bl) - { - bool* flags = _buffers[index].getFlags().data() + bl*nPerBl; - for(size_t ch=0; ch!=nChan; ++ch) - { - for(size_t p=0; p!=nPol; ++p) - { - if(*flags) { - buflane.emplace(index, bl, ch, p); - } - ++flags; - } - } - } - buflane.write_end(); - - for(std::thread& t : threads) - t.join(); -} - -void Interpolate::interpolationThread() -{ - lane_read_buffer<Sample> buflane(&_lane, BUFFER_SIZE); - Sample sample; - while(buflane.read(sample)) - { - interpolateSample(sample.timestep, sample.baseline, sample.channel, sample.pol); - } -} - -void Interpolate::interpolateSample(size_t timestep, size_t baseline, size_t channel, size_t pol) -{ - const IPosition shp = _buffers.front().getData().shape(); - const size_t - nPol = shp[0], - nChan = shp[1], - timestepBegin = (timestep > _windowSize/2) ? (timestep - _windowSize/2) : 0, - timestepEnd = std::min(timestep + _windowSize/2 + 1, _buffers.size()), - channelBegin = (channel > _windowSize/2) ? (channel - _windowSize/2) : 0, - channelEnd = std::min(channel + _windowSize/2 + 1, nChan); - - std::complex<float> valueSum = 0.0; - float windowSum = 0.0; - - for(size_t t=timestepBegin; t!=timestepEnd; ++t) - { - Complex* data = _buffers[t].getData().data() + (baseline*nChan + channelBegin)*nPol + pol; - const bool* flags = _buffers[t].getFlags().data() + (baseline*nChan + channelBegin)*nPol + pol; - const float* row = &_kernelLookup[_windowSize * (t + int(_windowSize/2) - timestep)]; - for(size_t ch=channelBegin; ch!=channelEnd; ++ch) - { - if(!*flags) - { - int x = ch + int(_windowSize/2) - channel; - float w = row[x]; - valueSum += *data * w; - windowSum += w; - } - - data += nPol; - flags += nPol; - } - } - // This write is multithreaded, but is allowed because this value is never read from in - // the loops above (because flagged values are skipped). - Complex& value = _buffers[timestep].getData().data()[(baseline*nChan + channel)*nPol + pol]; - if(windowSum != 0.0) - value = valueSum / windowSum; - else - value = Complex(std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN()); -} - -} } //# end namespace diff --git a/CEP/DP3/DPPP_Interpolate/test/CMakeLists.txt b/CEP/DP3/DPPP_Interpolate/test/CMakeLists.txt deleted file mode 100644 index d7d8fbd4174..00000000000 --- a/CEP/DP3/DPPP_Interpolate/test/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -# $Id: CMakeLists.txt 26355 2013-09-04 11:51:07Z dijkema $ - -include(LofarCTest) - -lofar_add_test(tInterpolateStep tInterpolateStep.cc) diff --git a/CEP/DP3/DPPP_Interpolate/test/tInterpolateStep.cc b/CEP/DP3/DPPP_Interpolate/test/tInterpolateStep.cc deleted file mode 100644 index 1dd558c5621..00000000000 --- a/CEP/DP3/DPPP_Interpolate/test/tInterpolateStep.cc +++ /dev/null @@ -1,233 +0,0 @@ -//# tInterpolateStep.cc: Test program for class InterpolateStep -//# Copyright (C) 2010 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: tInterpolateStep.cc 24221 2013-03-12 12:24:48Z diepen $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <DPPP_Interpolate/Interpolate.h> -#include <DPPP/DPRun.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - -// Simple class to generate input arrays. -// It can only set all flags to true or all to false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nant, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nant*(nant+1)/2), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - { - // Fill the baseline stations; use 4 stations. - // So they are called 00 01 02 03 10 11 12 13 20, etc. - Vector<Int> ant1(itsNBl); - Vector<Int> ant2(itsNBl); - int st1 = 0; - int st2 = 0; - for (int i=0; i<itsNBl; ++i) { - ant1[i] = st1; - ant2[i] = st2; - if (++st2 == 4) { - st2 = 0; - if (++st1 == 4) { - st1 = 0; - } - } - } - Vector<String> antNames(4); - antNames[0] = "rs01.s01"; - antNames[1] = "rs02.s01"; - antNames[2] = "cs01.s01"; - antNames[3] = "cs01.s02"; - // Define their positions (more or less WSRT RT0-3). - vector<MPosition> antPos (4); - Vector<double> vals(3); - vals[0] = 3828763; vals[1] = 442449; vals[2] = 5064923; - antPos[0] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828746; vals[1] = 442592; vals[2] = 5064924; - antPos[1] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828729; vals[1] = 442735; vals[2] = 5064925; - antPos[2] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - vals[0] = 3828713; vals[1] = 442878; vals[2] = 5064926; - antPos[3] = MPosition(Quantum<Vector<double> >(vals,"m"), - MPosition::ITRF); - Vector<double> antDiam(4, 70.); - info().set (antNames, antDiam, antPos, ant1, ant2); - // Define the frequencies. - Vector<double> chanFreqs(nchan); - Vector<double> chanWidth(nchan, 100000.); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - cout << "Input step " << itsCount << ' '<< itsCount*5+2<<endl; - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(1.6, 0.9); - } - if (itsCount == 5) { - data += Complex(10.,10.); - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // They are not averaged, thus only 1 time per row. - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = itsFlag; - buf.setFullResFlags (fullResFlags); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) - // Use startchan=0 and timeInterval=5 - { info().init (itsNCorr, itsNChan, itsNTime, 100, 5, string(), string()); } - - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nant, int nchan, int ncorr) - : itsCount(0), itsNTime(ntime), itsNBl(nant*(nant+1)/2), itsNChan(nchan), - itsNCorr(ncorr) - {} -private: - virtual bool process (const DPBuffer& buf) - { - cout << "Output step " << itsCount << ' '<<itsCount*5+2<<endl; - // Fill expected result in similar way as TestInput. - Cube<Complex> result(itsNCorr,itsNChan,itsNBl); - for (int i=0; i<int(result.size()); ++i) { - result.data()[i] = Complex(1.6, 0.9); - } - if (itsCount == 5) { - result += Complex(10.,10.); - } - // Check the result. - ///cout << buf.getData()<< result; - ASSERT (allNear(real(buf.getData()), real(result), 1e-10)); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-10)); - ASSERT (near(buf.getTime(), 2+5.*itsCount)); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNChan); - ASSERT (int(info.nchan())==itsNChan); - ASSERT (int(info.ntime())==itsNTime); - ASSERT (info.startTime()==100); - ASSERT (info.timeInterval()==5); - ASSERT (int(info.nchanAvg())==1); - ASSERT (int(info.ntimeAvg())==1); - ASSERT (int(info.chanFreqs().size()) == itsNChan); - ASSERT (int(info.chanWidths().size()) == itsNChan); - ASSERT (info.msName().empty()); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set the info in each step. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); - DPStep::ShPtr step = step1; - while (step) { - step->showCounts (cout); - step = step->getNextStep(); - } -} - -void test1(int ntime, int nant, int nchan, int ncorr, bool flag, int threshold) -{ - cout << "test1: ntime=" << ntime << " nrant=" << nant << " nchan=" << nchan - << " ncorr=" << ncorr << " threshold=" << threshold << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nant, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("windowsize", "9"); - DPStep::ShPtr step2 = DPRun::findStepCtor("interpolate")(in, parset, ""); - DPStep::ShPtr step3(new TestOutput(ntime, nant, nchan, ncorr)); - step1->setNextStep (step2); - step2->setNextStep (step3); - step2->show (cout); - execute (step1); -} - -int main() -{ - try { - test1(10, 2, 32, 4, false, 1); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/DPPP_Interpolate/test/tInterpolateStep.sh b/CEP/DP3/DPPP_Interpolate/test/tInterpolateStep.sh deleted file mode 100755 index 7cd507992e3..00000000000 --- a/CEP/DP3/DPPP_Interpolate/test/tInterpolateStep.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tInterpolateStep diff --git a/CEP/DP3/PythonDPPP/CMakeLists.txt b/CEP/DP3/PythonDPPP/CMakeLists.txt deleted file mode 100644 index fb329585b2d..00000000000 --- a/CEP/DP3/PythonDPPP/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -# $Id: CMakeLists.txt 27640 2013-12-04 08:02:49Z diepen $ - -lofar_package(PythonDPPP 0.1 DEPENDS DPPP pyparameterset) - -# Try to find Boost-Python. -# If found, build this package. Otherwise give a warning. -FIND_PATH(BOOST_PYTHON_FOUND "boost/python.hpp") - -if(BOOST_PYTHON_FOUND) - include(LofarFindPackage) - lofar_find_package(Python 3.4 REQUIRED) - lofar_find_package(Boost REQUIRED COMPONENTS python3) - lofar_find_package(Casacore COMPONENTS casa ms tables python REQUIRED) - - add_subdirectory(include/PythonDPPP) - add_subdirectory(src) - add_subdirectory(test) -else() - message (WARNING, " Boost-Python not found; PythonDPPP will not be built.") -endif() diff --git a/CEP/DP3/PythonDPPP/include/PythonDPPP/CMakeLists.txt b/CEP/DP3/PythonDPPP/include/PythonDPPP/CMakeLists.txt deleted file mode 100644 index 9e7e4ca3d6e..00000000000 --- a/CEP/DP3/PythonDPPP/include/PythonDPPP/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -# $Id: CMakeLists.txt 30166 2014-10-07 12:00:40Z dijkema $ - -# List of header files that will be installed. -set(inst_HEADERS - PythonStep.h -) - -# Create symbolic link to include directory. -execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_BINARY_DIR}/include/${PACKAGE_NAME}) - -# Install header files. -install(FILES ${inst_HEADERS} DESTINATION include/${PACKAGE_NAME}) diff --git a/CEP/DP3/PythonDPPP/include/PythonDPPP/DPStepBase.h b/CEP/DP3/PythonDPPP/include/PythonDPPP/DPStepBase.h deleted file mode 100644 index ebb7b50cdd9..00000000000 --- a/CEP/DP3/PythonDPPP/include/PythonDPPP/DPStepBase.h +++ /dev/null @@ -1,113 +0,0 @@ -//# DPStepBase.cc: Python base class for a DPStep in python -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: pyparameterset.cc 23074 2012-12-03 07:51:29Z diepen $ - -#ifndef DPPP_DPSTEPBASE_H -#define DPPP_DPSTEPBASE_H - -#include <PythonDPPP/PythonStep.h> -#include <DPPP/DPInfo.h> - - -namespace LOFAR { - namespace DPPP { - - // DPStepBase is the interface for callbacks from the DPPP PythonStep - // class (and its derivations) to C++. Note it is not used for calls - // from C++ to Python, which are done in PythonStep.cc using the - // Boost::Python functionality. - // DPStepBase is bound to the Python interface by PythonDPPP.cc. - // See class PythonStep and __init.py__ for more information. - - class DPStepBase - { - public: - // Keep the this pointer in a static. It is used by PythonStep.cc - // to call setStep to have a pointer from the python interface - // to the C++ code. - DPStepBase() - : itsStep(0) - { - theirPtr = this; - } - - // Create the link for callbacks from Python to C++. - // It is used by the PythonStep constructor. - void setStep (PythonStep* step) - { - itsStep = step; - } - - // Get the visibility data into the ValueHolder array. - // The array must have the correct type and shape. - void _getData (const casacore::ValueHolder& vh) - { - itsStep->getData (vh); - } - - // Get the flags into the ValueHolder array. - // The array must have the correct type and shape. - void _getFlags (const casacore::ValueHolder& vh) - { - itsStep->getFlags (vh); - } - - // Get the weights into the ValueHolder array. - // The array must have the correct type and shape. - void _getWeights (const casacore::ValueHolder& vh) - { - itsStep->getWeights (vh); - } - - // Get the UVW coordinates data into the ValueHolder array. - // The array must have the correct type and shape. - void _getUVW (const casacore::ValueHolder& vh) - { - itsStep->getUVW (vh); - } - - // Get the model data into the ValueHolder array. - // The array must have the correct type and shape. - void _getModelData (const casacore::ValueHolder& vh) - { - itsStep->getModelData (vh); - } - - // Call the process function in the next DPPP step. - // The record must contain the changed data fields which will be - // stored in the output buffer before calling the next step. - bool _processNext (const casacore::Record& rec) - { - return itsStep->processNext (rec); - } - - // Keep the pointer to this object. - // It is filled by the constructor and used shortly thereafter - // in the PythonStep constructor. - static DPStepBase* theirPtr; - - private: - PythonStep* itsStep; - }; - - } -} - -#endif diff --git a/CEP/DP3/PythonDPPP/include/PythonDPPP/PythonStep.h b/CEP/DP3/PythonDPPP/include/PythonDPPP/PythonStep.h deleted file mode 100644 index 665802bed74..00000000000 --- a/CEP/DP3/PythonDPPP/include/PythonDPPP/PythonStep.h +++ /dev/null @@ -1,162 +0,0 @@ -//# PythonStep.h: A DPStep executed in some python module -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: DPStep.h 30718 2015-01-19 15:31:51Z diepen $ -//# -//# @author Ger van Diepen - -#ifndef DPPP_PYTHONSTEP_H -#define DPPP_PYTHONSTEP_H - -// @file -// @brief Class to execute a DPStep in some Python module - -#include <DPPP/DPInput.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <Common/ParameterSet.h> -#include <Common/Timer.h> - -#include <casacore/casa/Containers/ValueHolder.h> -#include <casacore/casa/Containers/Record.h> -#include <boost/python.hpp> - -namespace LOFAR { - namespace DPPP { - - // @ingroup NDPPP - - // This class defines a step in the DPPP pipeline to be executed in - // Python. - // the PythonStep functionality is not directly part of the DPPP program, - // but is automatically loaded on demand from a shared library. - - // The control flow of a python step is as follows: - // <ol> - // <li> PythonStep derives from DPStep as all other DPPP steps do. - // Its constructor initializes Python, opens the module given in - // the parset key 'python.module' and creates an instance of the - // class given in 'python.class'. - // That class must derive from the Python class DPStepBase defined - // in __init.py__. The C++ class DPStepBase is the interface for - // callbacks from Python to C++. - // <li> The updateInfo function calls its Python counterpart. The - // DPInfo object is encoded in a dict. Currently, Measure objects - // in DPInfo are not handled yet. - // <li> The process function calls its Python counterpart with the - // time and exposure in the DPBuffer object. The Python class can - // obtain the other dats (visibilities, flags, weights, UVW, modeldata) - // by means of explicit callbacks. This was done for 2 reasons: - // <br>- it makes it possible to directly fill a numpy array. - // <br>- only data really needed is sent. - // <li> When the Python step has output ready, it needs to call the - // processNext function with the data that has changed. Note that - // (as in e.g. class Averager) it is possible that only every N - // input buffers result in an output buffer. - // <li> The finish, show, showCounts, showTimings, and addToMS - // functions call their Python counterparts. The Python base class - // offers default implementations, so they do not need to be - // implemented in a derived Python step class. - // </ol> - // The class also contains several functions that are basically the - // callback function for Python. - - class PythonStep: public DPStep - { - public: - PythonStep (DPInput* input, - const ParameterSet& parset, - const string& prefix); - - virtual ~PythonStep(); - - // The 'constructor' for dynamically loaded steps. - // It is registered when the shared library is loaded. - static DPStep::ShPtr makeStep (DPInput*, const ParameterSet&, - const std::string&); - - // Process the data. - // When processed, it invokes the process function of the next step. - virtual bool process (const DPBuffer&); - - // Finish the processing of this step and subsequent steps. - virtual void finish(); - - // Update the general info. - virtual void updateInfo (const DPInfo&); - - // Add some data to the MeasurementSet written/updated. - virtual void addToMS (const string& msName); - - // Show the step parameters. - virtual void show (std::ostream&) const; - - // Show the flag counts if needed. - virtual void showCounts (std::ostream&) const; - - // Show the timings. - virtual void showTimings (std::ostream&, double duration) const; - - // Callback functions for Python. - // <group> - // Tell that the Python step needs the visibility data. - void setNeedVisData(); - // Tell that the Python step needs data to be written. - void setNeedWrite(); - // Get the data into the given Complex array. - void getData (const casacore::ValueHolder&); - // Get the flags into the given bool array. - void getFlags (const casacore::ValueHolder&); - // Get the weights into the given float array. - void getWeights (const casacore::ValueHolder&); - // Get the UVWs into the given double array. - void getUVW (const casacore::ValueHolder&); - // Get the model data into the given Complex array. - void getModelData (const casacore::ValueHolder&); - // Execute the process function of the next step. - // The record should contain the changed buffer fields. - bool processNext (const casacore::Record&); - // </group> - - private: - //# Data members. - DPInput* itsInput; - std::string itsName; - ParameterSet itsParset; - DPBuffer itsBufIn; - DPBuffer itsBufTmp; - DPBuffer itsBufOut; - bool itsNChanChg; - bool itsNBlChg; - std::string itsPythonClass; - std::string itsPythonModule; - NSTimer itsTimer; - boost::python::object itsPyObject; - }; - - } //# end namespace -} - -// Define the function (without name mangling) to register the 'constructor'. -extern "C" -{ - void register_pythondppp(); -} - -#endif diff --git a/CEP/DP3/PythonDPPP/src/CMakeLists.txt b/CEP/DP3/PythonDPPP/src/CMakeLists.txt deleted file mode 100644 index 1fff2d9aa44..00000000000 --- a/CEP/DP3/PythonDPPP/src/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -# $Id: CMakeLists.txt 30439 2014-11-19 15:04:34Z dijkema $ - -include(LofarPackageVersion) -include(PythonInstall) - -lofar_add_library(_pythondppp MODULE PythonDPPP.cc) -set_target_properties(_pythondppp PROPERTIES - PREFIX "" - LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BUILD_DIR}/lofar/pythondppp) - -# This is a quick-and-dirty fix to install the Python binding module in the -# right place. It will now be installed twice, because lofar_add_library() -# will install it in $prefix/$libdir -install(TARGETS _pythondppp - DESTINATION ${PYTHON_INSTALL_DIR}/lofar/pythondppp) - -# We only need this library because dependent packages need to link against -# this package's version info. -lofar_add_library(dppp_pythondppp - Package__Version.cc - PythonStep.cc - DPStepBase.cc -) - -lofar_add_bin_program(versionpythondppp versionpythondppp.cc) - -# Install Python modules -python_install(__init__.py DESTINATION lofar/pythondppp) diff --git a/CEP/DP3/PythonDPPP/src/DPStepBase.cc b/CEP/DP3/PythonDPPP/src/DPStepBase.cc deleted file mode 100644 index ffa1b9595c4..00000000000 --- a/CEP/DP3/PythonDPPP/src/DPStepBase.cc +++ /dev/null @@ -1,40 +0,0 @@ -//# DPStepBase.cc: Python base class for a DPStep in python -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: pyparameterset.cc 23074 2012-12-03 07:51:29Z diepen $ - -#include <lofar_config.h> -#include <PythonDPPP/DPStepBase.h> - -// The C++ PythonStep must be able to call functions in Python. -// But the Python functions must be able to call the C++ functions -// (e.g., to get data, flags, etc.) -// All communication goes through DPStepBase -// Let a python step be created by a static function creating a -// PythonWorker doing the actual work. Its pointer is kept in a static -// and thereafter used to create a PythonStep. - -namespace LOFAR { - namespace DPPP { - - // Define the static. - DPStepBase* DPStepBase::theirPtr=0; - - } -} diff --git a/CEP/DP3/PythonDPPP/src/PythonDPPP.cc b/CEP/DP3/PythonDPPP/src/PythonDPPP.cc deleted file mode 100644 index feee455096d..00000000000 --- a/CEP/DP3/PythonDPPP/src/PythonDPPP.cc +++ /dev/null @@ -1,95 +0,0 @@ -//# PythonDPPP.cc: Python base class for a DPStep in python -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: pyparameterset.cc 23074 2012-12-03 07:51:29Z diepen $ - -#include <lofar_config.h> -#include <PythonDPPP/DPStepBase.h> - -#if defined(HAVE_CASACORE) -#include <casacore/python/Converters/PycExcp.h> -#include <casacore/python/Converters/PycBasicData.h> -#include <casacore/python/Converters/PycValueHolder.h> -#include <casacore/python/Converters/PycRecord.h> -#define pyrap python -#else -#include <pyrap/Converters/PycExcp.h> -#include <pyrap/Converters/PycBasicData.h> -#include <pyrap/Converters/PycValueHolder.h> -#include <pyrap/Converters/PycRecord.h> -#endif -#include <boost/python.hpp> -#include <boost/python/args.hpp> - -using namespace boost::python; - -// The C++ PythonStep must be able to call functions in Python. -// But the Python functions must be able to call the C++ functions -// (e.g., to get data, flags, etc.) -// All communication goes through DPStepBase -// Let a python step be created by a static function creating a -// PythonWorker doing the actual work. Its pointer is kept in a static -// and thereafter used to create a PythonStep. - -namespace LOFAR { - namespace DPPP { - - // Define the interface for the PythonStep C++ functions callable - // from python. - // Note that the python functions called from C++ are done using - // the boost::python attr function. - void dpstepbase() - { - class_<DPStepBase> ("_DPStepBase") - .def (init<>()) - .def ("_getData", &DPStepBase::_getData, - "Get the visibility data into the given array", - (boost::python::arg("value"))) - .def ("_getFlags", &DPStepBase::_getFlags, - "Get the flags into the given array", - (boost::python::arg("value"))) - .def ("_getWeights", &DPStepBase::_getWeights, - "Get the weights into the given array", - (boost::python::arg("value"))) - .def ("_getUVW", &DPStepBase::_getUVW, - "Get the UVW coordinates into the given array", - (boost::python::arg("value"))) - .def ("_getModelData", &DPStepBase::_getModelData, - "Get the model data into the given array", - (boost::python::arg("value"))) - .def ("_processNext", &DPStepBase::_processNext, - "Process the next step in the DPPP run", - (boost::python::arg("values"))) - ; - } - - } -} - - -// Define the python module itself. -BOOST_PYTHON_MODULE(_pythondppp) -{ - casacore::pyrap::register_convert_excp(); - casacore::pyrap::register_convert_basicdata(); - casacore::pyrap::register_convert_casa_valueholder(); - casacore::pyrap::register_convert_casa_record(); - - LOFAR::DPPP::dpstepbase(); -} diff --git a/CEP/DP3/PythonDPPP/src/PythonStep.cc b/CEP/DP3/PythonDPPP/src/PythonStep.cc deleted file mode 100644 index bdc50fcbc1b..00000000000 --- a/CEP/DP3/PythonDPPP/src/PythonStep.cc +++ /dev/null @@ -1,369 +0,0 @@ -//# PythonStep.cc: A DPStep executed in some python module -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: ApplyCal.cc 21598 2012-07-16 08:07:34Z diepen $ -//# -//# @author Ger van Diepen - -#include <lofar_config.h> -#include <PythonDPPP/PythonStep.h> -#include <PythonDPPP/DPStepBase.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPRun.h> -#include <Common/ParameterSet.h> - -#if defined(HAVE_CASACORE) -#include <casacore/python/Converters/PycExcp.h> -#include <casacore/python/Converters/PycBasicData.h> -#include <casacore/python/Converters/PycValueHolder.h> -#include <casacore/python/Converters/PycRecord.h> -#include <casacore/python/Converters/PycArray.h> -#define pyrap python -#else -#include <pyrap/Converters/PycExcp.h> -#include <pyrap/Converters/PycBasicData.h> -#include <pyrap/Converters/PycValueHolder.h> -#include <pyrap/Converters/PycRecord.h> -#include <pyrap/Converters/PycArray.h> -#endif - -#include <casacore/casa/OS/Path.h> -#include <unistd.h> - -using namespace casacore; - -namespace LOFAR { - namespace DPPP { - - PythonStep::PythonStep (DPInput* input, - const ParameterSet& parset, - const string& prefix) - : itsInput (input), - itsName (prefix), - itsParset (parset.makeSubset (prefix)), - itsNChanChg (false), - itsNBlChg (false), - itsPythonClass (itsParset.getString ("python.class")), - itsPythonModule (itsParset.getString ("python.module", itsPythonClass)) - { - // Initialize Python interpreter. - // Note: a second call is a no-op. - Py_Initialize(); - // Insert the current working directory into the python path. - // (from http://stackoverflow.com/questions/9285384/ - // how-does-import-work-with-boost-python-from-inside-python-files) - string workingDir = Path(".").absoluteName(); - char path[] = "path"; // needed to avoid warning if "path" used below - PyObject* sysPath = PySys_GetObject(path); -#if PYTHON_VERSION_MAJOR < 3 - PyList_Insert (sysPath, 0, PyString_FromString(workingDir.c_str())); -#else - PyList_Insert (sysPath, 0, PyUnicode_FromString(workingDir.c_str())); -#endif - // Register converters for casa types from/to python types - casacore::pyrap::register_convert_excp(); - casacore::pyrap::register_convert_basicdata(); - casacore::pyrap::register_convert_casa_valueholder(); - casacore::pyrap::register_convert_casa_record(); - try { - // First import main - boost::python::object mainModule = boost::python::import - ("__main__"); - // Import the given module - boost::python::object dpppModule = boost::python::import - (itsPythonModule.c_str()); - // Get the python class object from the imported module - boost::python::object dpppAttr = dpppModule.attr - (itsPythonClass.c_str()); - - // Convert the ParameterSet to a Record (using its string values). - Record rec; - for (ParameterSet::const_iterator iter=itsParset.begin(); - iter!=itsParset.end(); ++iter) { - rec.define (iter->first, iter->second.get()); - } - // Create an instance of the python class passing the record. - itsPyObject = dpppAttr(rec); - // Set the pointer to this object in the DPStepBase object. - DPStepBase::theirPtr->setStep (this); - } catch (boost::python::error_already_set const &) { - // handle the exception in some way - PyErr_Print(); - throw; - } - } - - PythonStep::~PythonStep() - { - } - - DPStep::ShPtr PythonStep::makeStep (DPInput* input, - const ParameterSet& pset, - const std::string& prefix) - { - return DPStep::ShPtr(new PythonStep(input, pset, prefix)); - } - - void PythonStep::updateInfo (const DPInfo& infoIn) - { - try { - boost::python::object result = - itsPyObject.attr("_updateInfo")(infoIn.toRecord()); - Record rec = boost::python::extract<Record>(result); - info() = infoIn; - // Merge possible result back in DPInfo object. - info().fromRecord (rec); - // Check if nr of channels has changed. - // Note: currently a change in antennae/baselines is not supported - // because the antenna positions are not passed yet. - if (infoIn.nchan() != info().nchan()) { - itsNChanChg = true; - } - ASSERT (infoIn.getAnt1().size() == info().getAnt1().size() && - infoIn.getAnt2().size() == info().getAnt2().size() && - allEQ(infoIn.getAnt1(), info().getAnt1()) && - allEQ(infoIn.getAnt2(), info().getAnt2())); - boost::python::object res1 = itsPyObject.attr("needVisData")(); - if (boost::python::extract<bool>(res1)) { - info().setNeedVisData(); - } - boost::python::object res2 = itsPyObject.attr("needWrite")(); - if (boost::python::extract<bool>(res2)) { - info().setWriteData(); - } - } catch (boost::python::error_already_set const &) { - // handle the exception in some way - PyErr_Print(); - throw; - } - } - - bool PythonStep::process (const DPBuffer& buf) - { - try { - itsTimer.start(); - itsBufIn.referenceFilled (buf); - boost::python::object result = - itsPyObject.attr("process")(itsBufIn.getTime(), - itsBufIn.getExposure()); - bool res = boost::python::extract<bool> (result); - itsTimer.stop(); - return res; - } catch (boost::python::error_already_set const &) { - // handle the exception in some way - PyErr_Print(); - throw; - } - } - - void PythonStep::finish() - { - try { - itsPyObject.attr("finish")(); - getNextStep()->finish(); - } catch (boost::python::error_already_set const &) { - // handle the exception in some way - PyErr_Print(); - throw; - } - } - - void PythonStep::addToMS (const string& msName) - { - try { - itsPyObject.attr("addToMS")(msName); - } catch (boost::python::error_already_set const &) { - // handle the exception in some way - PyErr_Print(); - throw; - } - } - - void PythonStep::show (std::ostream& os) const - { - try { - boost::python::object result = itsPyObject.attr("show")(); - string str = boost::python::extract<string>(result); - os << "PythonStep " << itsName << " class=" << itsPythonClass << endl; - if (! str.empty()) { - os << str; - } - } catch (boost::python::error_already_set const &) { - // handle the exception in some way - PyErr_Print(); - throw; - } - } - - void PythonStep::showCounts (std::ostream& os) const - { - try { - boost::python::object result = itsPyObject.attr("showCounts")(); - string str = boost::python::extract<string>(result); - if (! str.empty()) { - os << str; - } - } catch (boost::python::error_already_set const &) { - // handle the exception in some way - PyErr_Print(); - throw; - } - } - - void PythonStep::showTimings (std::ostream& os, double duration) const - { - try { - os << " "; - FlagCounter::showPerc1 (os, itsTimer.getElapsed(), duration); - os << " PythonStep " << itsName << " class=" << itsPythonClass << endl; - boost::python::object result = - itsPyObject.attr("showTimings")(itsTimer.getElapsed()); - string str = boost::python::extract<string>(result); - if (! str.empty()) { - os << str; - } - } catch (boost::python::error_already_set const &) { - // handle the exception in some way - PyErr_Print(); - throw; - } - } - - // Implement all functions to communicate with python. - void PythonStep::setNeedVisData() - { - info().setNeedVisData(); - } - void PythonStep::setNeedWrite() - { - info().setWriteData(); - } - - void PythonStep::getData (const ValueHolder& vh) - { - ASSERT (vh.dataType() == TpArrayComplex); - Array<Complex> arr(vh.asArrayComplex()); - arr = itsBufIn.getData(); // operator= checks if shape matches - } - - void PythonStep::getFlags (const ValueHolder& vh) - { - ASSERT (vh.dataType() == TpArrayBool); - Array<Bool> arr(vh.asArrayBool()); - arr = itsBufIn.getFlags(); - } - - void PythonStep::getWeights (const ValueHolder& vh) - { - ASSERT (vh.dataType() == TpArrayFloat); - Array<Float> arr(vh.asArrayFloat()); - arr = itsInput->fetchWeights (itsBufIn, itsBufTmp, itsTimer); - } - - void PythonStep::getUVW (const ValueHolder& vh) - { - ASSERT (vh.dataType() == TpArrayDouble); - Array<Double> arr(vh.asArrayDouble()); - arr = itsInput->fetchUVW (itsBufIn, itsBufTmp, itsTimer); - } - - void PythonStep::getModelData (const ValueHolder& vh) - { - ASSERT (vh.dataType() == TpArrayComplex); - Cube<Complex> arr(vh.asArrayComplex()); - itsInput->getModelData (RefRows(itsBufIn.getRowNrs()), arr); - } - - bool PythonStep::processNext (const Record& rec) - { - itsTimer.stop(); - uint nproc = 0; - uint narr = 0; - if (rec.isDefined("TIME")) { - itsBufOut.setTime (rec.asDouble("TIME")); - nproc++; - } else { - itsBufOut.setTime (itsBufIn.getTime()); - } - if (rec.isDefined("EXPOSURE")) { - itsBufOut.setExposure (rec.asDouble("EXPOSURE")); - nproc++; - } else { - itsBufOut.setExposure (itsBufIn.getExposure()); - } - itsBufOut.setRowNrs (itsBufIn.getRowNrs()); - if (rec.isDefined("DATA")) { - itsBufOut.getData().assign (rec.toArrayComplex("DATA")); - narr++; - } else if (! itsNChanChg && ! itsNBlChg) { - itsBufOut.getData().assign (itsBufIn.getData()); - } - if (rec.isDefined("FLAGS")) { - itsBufOut.getFlags().assign (rec.toArrayBool("FLAGS")); - narr++; - } else if (! itsNChanChg && ! itsNBlChg) { - itsBufOut.getFlags().assign (itsBufIn.getFlags()); - } - if (rec.isDefined("FULLRESFLAGS")) { - itsBufOut.getFullResFlags().assign (rec.toArrayBool("FULLRESFLAGS")); - narr++; - } else if (! itsNChanChg && ! itsNBlChg) { - itsBufOut.getFullResFlags().assign (itsBufIn.getFullResFlags()); - } - if (rec.isDefined("WEIGHTS")) { - itsBufOut.getWeights().assign (rec.toArrayFloat("WEIGHTS")); - narr++; - } else if (! itsNChanChg && ! itsNBlChg) { - if (! itsBufIn.getWeights().empty()) { - itsBufOut.getWeights().assign (itsBufIn.getWeights()); - } - } - if (rec.isDefined("UVW")) { - itsBufOut.getUVW().assign (rec.toArrayDouble("UVW")); - narr++; - } else if (! itsNChanChg && ! itsNBlChg) { - if (! itsBufIn.getUVW().empty()) { - itsBufOut.getUVW().assign (itsBufIn.getUVW()); - } - } - nproc += narr; - if (nproc != rec.nfields()) { - THROW (Exception, - "Record/dict given to processNext() contains unknown fields"); - } - if ((itsNChanChg || itsNBlChg) && narr != 4) { - THROW (Exception, - "Record/dict given to processNext() must contain DATA, FLAGS, " - "WEIGHTS, and UVW if the nr of channels or baselines changes"); - } - bool res = getNextStep()->process (itsBufOut); - itsTimer.start(); - return res; - } - - } //# end namespace -} - -// Define the function to make the PythonStep 'constructor' known. -void register_pythondppp() -{ - LOFAR::DPPP::DPRun::registerStepCtor ("pythondppp", - LOFAR::DPPP::PythonStep::makeStep); -} diff --git a/CEP/DP3/PythonDPPP/src/__init__.py b/CEP/DP3/PythonDPPP/src/__init__.py deleted file mode 100644 index afbd75d7c04..00000000000 --- a/CEP/DP3/PythonDPPP/src/__init__.py +++ /dev/null @@ -1,272 +0,0 @@ -# __init__.py: Top level .py file for python DPPP step -# Copyright (C) 2015 -# ASTRON (Netherlands Institute for Radio Astronomy) -# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -# -# This file is part of the LOFAR software suite. -# The LOFAR software suite is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# The LOFAR software suite is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -# -# $Id: __init__.py 23074 2012-12-03 07:51:29Z diepen $ - -from lofar.pythondppp._pythondppp import _DPStepBase -import numpy as np - - -class DPStep(_DPStepBase): - """ - The superclass for a python DPPP step. - An DPPP step implemented in Python must derive from this class. - An example can be seen in CEP/DP3/PythonDPPP/test/tPythonStep.py. - """ - - def __init__(self, parset): - """ This constructor must be called by the subclass """ - _DPStepBase.__init__(self) - self.itsParset = parset - - def _updateInfo(self, dpinfo): - """ Private function (called by C++ layer) to update the info. - - The dpinfo argument is a dict containing all fields in the - C++ DPInfo object. The names of the keys in the dict are the - DPInfo member names without their 'its' prefix. - - This function extracts the information telling the buffer sizes. - Thereafter it calls updateInfo to let a subclass extract and - optionally set the info. - Finally it extracts the information again to get the output sizes. - - """ - # Get the input sizes. - self.itsNCorrIn = dpinfo['NCorr'] - self.itsNChanIn = dpinfo['NChan'] - self.itsNBlIn = len(dpinfo['Ant1']) - # Default output size is the input size. - self.itsNCorrOut = self.itsNCorrIn - self.itsNChanOut = self.itsNChanIn - self.itsNBlOut = self.itsNBlIn - # Let the subclass extract and set info. - infoOut = self.updateInfo(dpinfo) - # Extract the output sizes (if defined). - if 'NCorr' in infoOut: - self.itsNCorrOut = infoOut['NCorr'] - if 'NChan' in infoOut: - self.itsNChanOut = infoOut['NChan'] - if 'Ant1' in infoOut: - self.itsNBlOut = len(infoOut['Ant1']) - return infoOut - - # The following functions can be overwritten in a subclass. - def updateInfo(self, dpinfo): - """ Extract and optionally set the DPInfo fields. - - This function must be implemented in a subclass. - - The dpinfo argument is a dict containing all fields in the - C++ DPInfo object. The names of the keys in the dict are the - DPInfo member names without their 'its' prefix. - - It must return a (possibly empty) dict containing values of the - same keys. Only the keys that have changed must be part of the - dict; other keys can be part of it. - - """ - raise ValueError("A class derived from DPStep must implement updateInfo") - - def needVisData(self): - """ Does the subclass need the visibility data? - - This function only needs to be implemented in a subclass - if it does not need the visibility data. - - """ - return True - - def needWrite(self): - """ Does the subclass change data to be written by DPPP? - - This function needs to be implemented in a subclass - if it changes data (visibility data, flags, weights, and/or UVW) - that needs to be written (or possibly updated) in the MS. - - """ - return False - - def process(self, time, exposure): - """ Process the data of the given time slot. - - This function must be implemented in a subclass. - it will need the functions getData, etc. to get the visibility data, - flags, etc.. - It should call processNext to process the next DPPP step on the - output of this step. - - """ - raise ValueError("A class derived from DPStep must implement process") - - def finish(self): - """ Finish the processing. - - This function must be implemented in a subclass if data were - buffered and the last buffers have not been (fully) processed yet. - In that case finish also has to call processNext. - - """ - pass - - def show(self): - """ Show the parset parameters. - - It should return a string (with newlines) that will be - printed by the C++ layer. - An empty string is not printed. - - This function does not need to be implemented. - The default implementation shows all parset keys. - """ - s = '' - for k,v in list(self.itsParset.items()): - if k not in ['type', 'python.class', 'python.module']: - s += ' %-15s %s\n' % (k+':', v) - return s - - def showCounts(self): - """ Show possible counts (e.g., nr of flags set). - - It should return a string (with newlines) that will be - printed by the C++ layer. - An empty string is not printed. - - This function does not need to be implemented. - """ - return '' - - def showTimings(self, elapsedDuration): - """ Show possible timings. - - It should return a string (with newlines) that will be - printed by the C++ layer. - An empty string is not printed. - - This function does not need to be implemented. - """ - return '' - - def addToMS(self, msname): - """ Add information to the output MeasurementSet. - - This function will only be needed in very special cases - where dedicated info needs to be added to the MS. - - """ - pass - - - # The following functions are to be called from Python. - def processNext(self, arraysDict): - """ Let the next step in the DPPP pipeline execute its process. - - If data (time, exposure, visibility, flags, weights, and/or UVW) - have been changed by the process function, they should be passed - using the arraysDict argument. - This is a dict that can contain 6 fields: TIME, EXPOSURE, DATA, - FLAGS, WEIGHTS, and UVW. - - If process does not buffer data, the dict only needs to contain - the changed data items. But if buffered and pocessNext is called - later, all data items have to be part of the dict. - """ - return self._processNext(arraysDict) - - def getData(self, nparray): - """ Get the visibility data into the given numpy array. - - The array must be a contiguous array of the complex64 data type and - the correct shape. - The array can be created with the makeDataArrayIn function. - - """ - if not nparray.flags.c_contiguous or nparray.size == 0: - raise ValueError("getData argument 'nparray' has to be a contiguous numpy a\ -rray") - return self._getData (nparray) - - def getFlags(self, nparray): - """ Get the flags into the given numpy array. - - The array must be a contiguous array of the boolean data type and - the correct shape. - The array can be created with the makeFlagsArrayIn function. - - """ - if not nparray.flags.c_contiguous or nparray.size == 0: - raise ValueError("getFlags argument 'nparray' has to be a contiguous numpy a\ -rray") - return self._getFlags (nparray) - - def getWeights(self, nparray): - """ Get the weights into the given numpy array. - - The array must be a contiguous array of the float32 data type and - the correct shape. - The array can be created with the makeWeightsArrayIn function. - - """ - if not nparray.flags.c_contiguous or nparray.size == 0: - raise ValueError("getWeights argument 'nparray' has to be a contiguous numpy a\ -rray") - return self._getWeights (nparray) - - def getUVW(self, nparray): - """ Get the UVW coordinates into the given numpy array. - - The array must be a contiguous array of the float64 data type and - the correct shape. - The array can be created with the makeUVWArrayIn function. - - """ - if not nparray.flags.c_contiguous or nparray.size == 0: - raise ValueError("getUVW argument 'nparray' has to be a contiguous numpy a\ -rray") - return self._getUVW (nparray) - - def getModelData(self, nparray): - """ Get the model data into the given numpy array. - - The array must be a contiguous array of the complex64 data type and - the correct shape. - The array can be created with the makeDataArrayIn function. - - """ - if not nparray.flags.c_contiguous or nparray.size == 0: - raise ValueError("getModelData argument 'nparray' has to be a contiguous numpy a\ -rray") - return self._getModelData (nparray) - - def makeArrayDataIn(self): - """ Make a numpy array for the visibility input data. """ - return np.empty([self.itsNBlIn, self.itsNChanIn, self.itsNCorrIn], dtype='complex64') - - def makeArrayFlagsIn(self): - """ Make a numpy array for the input flags. """ - return np.empty([self.itsNBlIn, self.itsNChanIn, self.itsNCorrIn], dtype='bool') - - def makeArrayWeightsIn(self): - """ Make a numpy array for the input weights. """ - return np.empty([self.itsNBlIn, self.itsNChanIn, self.itsNCorrIn], dtype='float32') - - def makeArrayUVWIn(self): - """ Make a numpy array for the input UVW coordinates. """ - return np.empty([self.itsNBlIn, 3], dtype='float64') - diff --git a/CEP/DP3/PythonDPPP/test/CMakeLists.txt b/CEP/DP3/PythonDPPP/test/CMakeLists.txt deleted file mode 100644 index e5af0b34e2f..00000000000 --- a/CEP/DP3/PythonDPPP/test/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -# $Id: CMakeLists.txt 26355 2013-09-04 11:51:07Z dijkema $ - -include(LofarCTest) - -lofar_add_test(tPythonStep) diff --git a/CEP/DP3/PythonDPPP/test/tPythonStep.py b/CEP/DP3/PythonDPPP/test/tPythonStep.py deleted file mode 100644 index 4bb03c8beed..00000000000 --- a/CEP/DP3/PythonDPPP/test/tPythonStep.py +++ /dev/null @@ -1,74 +0,0 @@ -# tPythonStep.py: Test python DPPP class -# Copyright (C) 2015 -# ASTRON (Netherlands Institute for Radio Astronomy) -# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -# -# This file is part of the LOFAR software suite. -# The LOFAR software suite is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# The LOFAR software suite is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -# -# $Id: __init__.py 23074 2012-12-03 07:51:29Z diepen $ - - - -from lofar.pythondppp import DPStep -from lofar.parameterset import parameterset - -class tPythonStep(DPStep): - def __init__(self, parsetDict): - # The constructor gets the subset of the NDPPP parset containing - # all keys-value pairs for this step. - # Note: the superclass constructor MUST be called. - DPStep.__init__(self, parsetDict) - parset = parameterset(parsetDict) - self.itsIncr = parset.getDouble('incr', 1) - - def updateInfo(self, dpinfo): - # This function must be implemented. - self.itsInfo = dpinfo - # Make the arrays that will get the input buffer data from - # the getData, etc. calls in the process function. - self.itsData = self.makeArrayDataIn() - self.itsFlags = self.makeArrayFlagsIn() - self.itsWeights = self.makeArrayWeightsIn() - self.itsUVW = self.makeArrayUVWIn() - # Return the dict with info fields that change in this step. - return {}; - - def process(self, time, exposure): - # This function must be implemented. - # First get the data arrays needed by this step. - self.getData (self.itsData); - self.getFlags (self.itsFlags); - self.getWeights (self.itsWeights); - self.getUVW (self.itsUVW); - # Process the data. - print("process tPythonStep", time-4.47203e9, exposure, self.itsData.sum(), self.itsFlags.sum(), self.itsWeights.sum(), self.itsUVW.sum()) - # Execute the next step in the DPPP pipeline. TIME,UVW are changed. - return self.processNext ({'TIME': time+self.itsIncr, 'UVW': self.itsUVW+self.itsIncr}) - - def finish(self): - # Finish the step as needed. - # This function does not need to be implemented. - # Note: finish of the next step is called by the C++ layer. - print("finish tPythonStep") - - def showCounts(self): - # Show the counts of this test. - # This function does not need to be implemented. - return " **showcounttest**" - - def addToMS(self, msname): - # Add some info the the output MeasurementSet. - # This function does not need to be implemented. - print("addToMS tPythonStep", msname) diff --git a/CEP/DP3/PythonDPPP/test/tPythonStep.run b/CEP/DP3/PythonDPPP/test/tPythonStep.run deleted file mode 100755 index 3d7416429f9..00000000000 --- a/CEP/DP3/PythonDPPP/test/tPythonStep.run +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# Set srcdir if not defined (in case run by hand). -if test "$srcdir" = ""; then - srcdir=`find ../../../../../.. -name PythonDPPP | grep -v build/ | grep -v /include/`/test -fi - -if test ! -f $srcdir/../../DPPP/test/tNDPPP.in_MS.tgz; then - return 3 # untested -fi - -# Get the test MS and rename it to be deleted automatically. -tar zxf $srcdir/../../DPPP/test/tNDPPP.in_MS.tgz -mv tNDPPP_tmp.MS tPythonStep_tmp.MS - -# Define the path for finding the library. -LD_LIBRARY_PATH=../src:$LD_LIBRARY_PATH -DYLD_LIBRARY_PATH=../src:$DYLD_LIBRARY_PATH -export LD_LIBRARY_PATH -export DYLD_LIBRARY_PATH - -# Run NDPPP with the test python step. -NDPPP msin=tPythonStep_tmp.MS msout=tPythonStep_tmp.msout msout.overwrite=T steps='[pystep,pystep2]' pystep.type=PythonDPPP pystep.python.module=tPythonStep pystep.python.class=tPythonStep pystep.somekey=somevalue pystep2.type=pythondppp pystep2.python.class=tPythonStep pystep2.incr=3.5 - diff --git a/CEP/DP3/PythonDPPP/test/tPythonStep.sh b/CEP/DP3/PythonDPPP/test/tPythonStep.sh deleted file mode 100755 index 4b2a0f3d7d0..00000000000 --- a/CEP/DP3/PythonDPPP/test/tPythonStep.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tPythonStep diff --git a/CEP/DP3/SPWCombine/CMakeLists.txt b/CEP/DP3/SPWCombine/CMakeLists.txt deleted file mode 100644 index dd56a319e4d..00000000000 --- a/CEP/DP3/SPWCombine/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -# $Id$ - -lofar_package(SPW_Combine 1.0 DEPENDS Common PLC) - -include(LofarFindPackage) -lofar_find_package(Casacore COMPONENTS casa ms tables REQUIRED) - -add_subdirectory(include/SPWCombine) -add_subdirectory(src) -#add_subdirectory(test) diff --git a/CEP/DP3/SPWCombine/include/SPWCombine/CMakeLists.txt b/CEP/DP3/SPWCombine/include/SPWCombine/CMakeLists.txt deleted file mode 100644 index 04c3c85ff94..00000000000 --- a/CEP/DP3/SPWCombine/include/SPWCombine/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -# $Id$ - -# List of header files that will be installed. -set(inst_HEADERS - CombinerProcessControl.h - SPWCombine.h) - -# Create symbolic link to include directory. -execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_BINARY_DIR}/include/SPWCombine) - -# Install header files. -install(FILES ${inst_HEADERS} DESTINATION include/${PACKAGE_NAME}) diff --git a/CEP/DP3/SPWCombine/include/SPWCombine/CombinerProcessControl.h b/CEP/DP3/SPWCombine/include/SPWCombine/CombinerProcessControl.h deleted file mode 100644 index 3b258afba99..00000000000 --- a/CEP/DP3/SPWCombine/include/SPWCombine/CombinerProcessControl.h +++ /dev/null @@ -1,91 +0,0 @@ -//# Copyright (C) 2007 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Adriaan Renting - -#ifndef LOFARCOMBINERPROCESSCONTROL_H -#define LOFARCOMBINERPROCESSCONTROL_H - -#include <PLC/ProcessControl.h> -#include <Common/ParameterSet.h> -#include <vector> - -/** -@author Adriaan Renting -*/ -namespace casacore -{ - class MeasurementSet; //foreward declaration -} - -namespace LOFAR -{ - namespace CS1 - { - class SPWCombine; //foreward declaration - - class CombinerProcessControl : public LOFAR::ACC::PLC::ProcessControl - { - private: - vector<std::string> itsInMS; - std::string itsOutMS; - vector<casacore::MeasurementSet*> inMS; - SPWCombine* itsCombiner; - public: - CombinerProcessControl(void); - - ~CombinerProcessControl(void); - // \name Command to control the processes. - // There are a dozen commands that can be sent to a application process - // to control its flow. The return values for these command are:<br> - // - True - Command executed succesfully. - // - False - Command could not be executed. - // - // @{ - - // During the \c define state the process check the contents of the - // ParameterSet it received during start-up. When everthing seems ok the - // process constructs the communication channels for exchanging data - // with the other processes. The connection are NOT made in the stage. - tribool define (void); - - // When a process receives an \c init command it allocates the buffers it - // needs an makes the connections with the other processes. When the - // process succeeds in this it is ready for dataprocessing (or whatever - // task the process has). - tribool init (void); - - // During the \c run phase the process does the work it is designed for. - // The run phase stays active until another command is send. - tribool run (void); - - tribool pause(const std::string&); - tribool release(void); - tribool quit(void); - tribool recover(const std::string&); - tribool reinit(const std::string&); - tribool snapshot(const std::string&); - std::string askInfo(const std::string&); - - }; //class CombinerProcessControl - } //namespace CS1 -}; //namespace LOFAR - -#endif diff --git a/CEP/DP3/SPWCombine/include/SPWCombine/SPWCombine.h b/CEP/DP3/SPWCombine/include/SPWCombine/SPWCombine.h deleted file mode 100644 index b4bc0aaef13..00000000000 --- a/CEP/DP3/SPWCombine/include/SPWCombine/SPWCombine.h +++ /dev/null @@ -1,64 +0,0 @@ -//# Copyright (C) 2007 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Adriaan Renting - -#ifndef LOFARSPWCOMBINE_H -#define LOFARSPWCOMBINE_H - -/** -@author Adriaan Renting -*/ -#include <iostream> -#include <cstdlib> -#include <string> -#include <casacore/ms/MeasurementSets.h> -#include <casacore/casa/Arrays.h> -#include <casacore/tables/Tables.h> -#include <casacore/tables/Tables/TableIter.h> - -namespace LOFAR -{ - namespace CS1 - { - using namespace casacore; - - class SPWCombine - { - private: - int itsNumAntennae; - int itsNumPairs; - - TableIterator CreateDataIterator(MeasurementSet& myMS); - - public: - SPWCombine(void); - ~SPWCombine(void); - int itsNumPolarizations; - int itsNumChannels; - int itsNumBands; - - void TableResize(TableDesc tdesc, IPosition ipos, std::string name, Table& table); - void GetMSInfo(MeasurementSet& myMS); - void Combine(vector<MeasurementSet*> inMS, MeasurementSet& myMS, std::string Data); - }; - } //namespace CS1 -}; //namespace LOFAR -#endif diff --git a/CEP/DP3/SPWCombine/src/CMakeLists.txt b/CEP/DP3/SPWCombine/src/CMakeLists.txt deleted file mode 100644 index 64a1f8d276f..00000000000 --- a/CEP/DP3/SPWCombine/src/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# $Id$ - -include(LofarPackageVersion) - -lofar_add_library(spwcombine - Package__Version.cc) - -lofar_add_bin_program(combinespw - SPWCombine.cc - Combiner.cc - CombinerProcessControl.cc) - -lofar_add_bin_program(versionspw_combine versionspw_combine.cc) diff --git a/CEP/DP3/SPWCombine/src/Combiner.cc b/CEP/DP3/SPWCombine/src/Combiner.cc deleted file mode 100644 index 44c542b2b50..00000000000 --- a/CEP/DP3/SPWCombine/src/Combiner.cc +++ /dev/null @@ -1,46 +0,0 @@ -//# Copyright (C) 2007 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Adriaan Renting - -#include <lofar_config.h> -#include <Common/lofar_iostream.h> -#include <Common/SystemUtil.h> -#include <Common/Exceptions.h> -#include <PLC/ACCmain.h> -#include <SPWCombine/CombinerProcessControl.h> - -using namespace LOFAR; - -// Use a terminate handler that can produce a backtrace. -Exception::TerminateHandler t(Exception::terminate); - -int main(int argc, char *argv[]) -{ - try { - INIT_LOGGER(LOFAR::basename(argv[0])); - LOFAR::CS1::CombinerProcessControl myProcess; - return LOFAR::ACC::PLC::ACCmain(argc, argv, &myProcess); - } catch(Exception& ex) { - cerr << ex << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/SPWCombine/src/CombinerProcessControl.cc b/CEP/DP3/SPWCombine/src/CombinerProcessControl.cc deleted file mode 100644 index 308f1b3be84..00000000000 --- a/CEP/DP3/SPWCombine/src/CombinerProcessControl.cc +++ /dev/null @@ -1,271 +0,0 @@ -//# Copyright (C) 2007 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Adriaan Renting - -#include <lofar_config.h> -#include <iostream> -#include <cstdlib> -#include <string> -#include <limits> -#include <casacore/tables/Tables.h> -#include <casacore/tables/TaQL/TableParse.h> -#include <casacore/ms/MeasurementSets.h> -#include <casacore/casa/Exceptions.h> - -#include <SPWCombine/CombinerProcessControl.h> -#include <SPWCombine/SPWCombine.h> - -#define COMBINER_VERSION "0.22" -// 0.10 Initial version based on DataSquasher -// 0.20 Ported additions and updates from DataSquasher -// 0.21 Fixed calculation of REF_FREQUENCY -// 0.22 Added handing of Measurementsets with different numbers of timesamples - -namespace LOFAR -{ - namespace CS1 - { - using namespace casacore; - //===============>>> CombinerProcessControl::CombinerProcessControl <<<=============== - CombinerProcessControl::CombinerProcessControl() - : ProcessControl() - { - itsCombiner = NULL; - } - - //===============>>> CombinerProcessControl::~CombinerProcessControl <<<============== - CombinerProcessControl::~CombinerProcessControl() - { - } - - //===============>>> CombinerProcessControl::define <<<============================== - tribool CombinerProcessControl::define() - { - ParameterSet* ParamSet = globalParameterSet(); - itsInMS = ParamSet->getStringVector("inms"); - itsOutMS = ParamSet->getString("outms"); - return true; - } - - //===============>>> CombinerProcessControl::run <<<================================= - tribool CombinerProcessControl::run() - { - try{ - std::cout << "Creating " << itsOutMS << ", please wait..." << std::endl; - unsigned int min_nrow = std::numeric_limits<unsigned int>::max(); - int sourceMS = 0; - for (unsigned int i = 0; i < itsInMS.size(); i++) // to search the shortest MS - { - if (inMS[i]->nrow() < min_nrow) - { - min_nrow = inMS[i]->nrow(); - sourceMS = i; - } - } - if (sourceMS > 0) - { cout << "Not all sources are the same lenght, using te shortest one." << endl; - } - - Table TempTable = tableCommand(string("SELECT UVW,FLAG_CATEGORY,WEIGHT,SIGMA,ANTENNA1,ANTENNA2,ARRAY_ID,DATA_DESC_ID,") + - string("EXPOSURE,FEED1,FEED2,FIELD_ID,FLAG_ROW,INTERVAL,OBSERVATION_ID,PROCESSOR_ID,") + - string("SCAN_NUMBER,STATE_ID,TIME,TIME_CENTROID,WEIGHT_SPECTRUM,FLAG FROM ") - + itsInMS[sourceMS] + string(" WHERE DATA_DESC_ID = 0")); - // Need FLAG to make it a valid MS - TempTable.deepCopy(itsOutMS, Table::NewNoReplace, true); - tableCommand(string("DELETE FROM ") + itsOutMS + string("/DATA_DESCRIPTION WHERE rownumber() > 1")); - tableCommand(string("DELETE FROM ") + itsOutMS + string("/SPECTRAL_WINDOW WHERE rownumber() > 1")); - - MeasurementSet outMS = MeasurementSet(itsOutMS, Table::Update); - int nchan = 0; - for (unsigned int i = 0; i < itsInMS.size(); i++) - { - itsCombiner->GetMSInfo(*(inMS[i])); - for (int j = 0; j < itsCombiner->itsNumBands; j++) - { nchan += itsCombiner->itsNumChannels; - } - } - TableDesc tdesc = inMS[sourceMS]->tableDesc(); - Vector<Int> temp(2); - temp(0) = itsCombiner->itsNumPolarizations; - temp(1) = nchan; - std::cout << "New number of channels: " << nchan << std::endl; - IPosition data_ipos(temp); - - itsCombiner->TableResize(tdesc, data_ipos, "DATA", outMS); - - //fix the FLAGS column - itsCombiner->TableResize(tdesc, data_ipos, "FLAG", outMS); - - //Fix the SpectralWindow values - IPosition spw_ipos(1, nchan); - //ugly workaround MSSpectral window does no allow deleting and then recreating columns - Table outSPW = Table(itsOutMS + "/SPECTRAL_WINDOW", Table::Update); - ScalarColumn<Int> channum(outSPW, "NUM_CHAN"); - channum.fillColumn(nchan); - - TableDesc SPWtdesc = outSPW.tableDesc(); - itsCombiner->TableResize(SPWtdesc, spw_ipos, "CHAN_FREQ", outSPW); - itsCombiner->TableResize(SPWtdesc, spw_ipos, "CHAN_WIDTH", outSPW); - itsCombiner->TableResize(SPWtdesc, spw_ipos, "EFFECTIVE_BW", outSPW); - itsCombiner->TableResize(SPWtdesc, spw_ipos, "RESOLUTION", outSPW); - - ArrayColumn<Double> outFREQ(outSPW, "CHAN_FREQ"); - ArrayColumn<Double> outWIDTH(outSPW, "CHAN_WIDTH"); - ArrayColumn<Double> outBW(outSPW, "EFFECTIVE_BW"); - ArrayColumn<Double> outRESOLUTION(outSPW, "RESOLUTION"); - ScalarColumn<Double> outREF_FREQUENCY(outSPW, "REF_FREQUENCY"); - - Vector<Double> new_FREQ(nchan, 0.0); - Vector<Double> new_WIDTH(nchan, 0.0); - Vector<Double> new_BW(nchan, 0.0); - Vector<Double> new_RESOLUTION(nchan, 0.0); - int total_channels = 0; - int total_bands = 0; - double ref_frequency = 0.0; - - for (unsigned int i = 0; i < itsInMS.size(); i++) - { - itsCombiner->GetMSInfo(*(inMS[i])); - int old_nchan = itsCombiner->itsNumChannels; - Vector<Double> old_temp(old_nchan, 0.0); - - MSSpectralWindow inSPW = inMS[i]->spectralWindow(); - - ROArrayColumn<Double> inFREQ(inSPW, "CHAN_FREQ"); - ROArrayColumn<Double> inWIDTH(inSPW, "CHAN_WIDTH"); - ROArrayColumn<Double> inBW(inSPW, "EFFECTIVE_BW"); - ROArrayColumn<Double> inRESOLUTION(inSPW, "RESOLUTION"); - ROScalarColumn<Double> inREF_FREQUENCY(inSPW, "REF_FREQUENCY"); - - for (unsigned int n = 0; n < inSPW.nrow(); n++) - { - for (int m = 0; m < old_nchan; m++) - { - inFREQ.get(n, old_temp); // could be outsid this loop - new_FREQ(total_channels + m) = old_temp(m); - - inWIDTH.get(n, old_temp); - new_WIDTH(total_channels + m) = old_temp(m); - - inBW.get(n, old_temp); - new_WIDTH(total_channels + m) = old_temp(m); - - inRESOLUTION.get(n, old_temp); - new_RESOLUTION(total_channels + m) = old_temp(m); - } - total_channels += old_nchan; - - double temp_freq; - inREF_FREQUENCY.get(n, temp_freq); - ref_frequency += temp_freq; - total_bands++; - } - outFREQ.put(0, new_FREQ); - outWIDTH.put(0, new_WIDTH); - outBW.put(0, new_BW); - outRESOLUTION.put(0, new_RESOLUTION); - outREF_FREQUENCY.put(0, ref_frequency/total_bands); - } - - //Do the real stuff - itsCombiner->Combine(inMS, outMS, "DATA"); - } - catch(casacore::AipsError& err) - { - std::cerr << "Aips++ error detected: " << err.getMesg() << std::endl; - return false; - } - return true; - } - - //===============>>> CombinerProcessControl::init <<<================================ - tribool CombinerProcessControl::init() - { - try { - using std::cout; - using std::cerr; - using std::endl; - - cout << string(COMBINER_VERSION) + string(" spw combine by Adriaan Renting for LOFAR CS1\n") + - string("This is experimental software, please report errors or requests to renting@astron.nl\n") + - string("Documentation can be found at: www.lofar.org/operations/doku.php?id=engineering:software:postprocessing_software\n"); - cout << string("Combining "); - for (unsigned int i = 0; i < itsInMS.size(); i++) - { - cout << itsInMS[i] << ", "; - } - cout << string(" into ") << itsOutMS << endl; - if (itsInMS.size() == 0 || itsOutMS == "") - { - cerr << " Error missing input" << endl; - return false; - } - inMS.resize(itsInMS.size()); - for (unsigned int i = 0; i < itsInMS.size(); i++) - { - inMS[i] = new MeasurementSet(itsInMS[i]); - } - itsCombiner = new SPWCombine(); - } - catch(casacore::AipsError& err) - { - std::cerr << "Aips++ error detected: " << err.getMesg() << std::endl; - return false; - } - return true; - } - - //===============>>> CombinerProcessControl::pause <<<=============================== - tribool CombinerProcessControl::pause(const std::string&) - { return false; - } - - //===============>>> CombinerProcessControl::quit <<<================================ - tribool CombinerProcessControl::quit() - { - return true; - } - - //===============>>> CombinerProcessControl::release <<<============================= - tribool CombinerProcessControl::release() - { return false; - } - //===============>>> CombinerProcessControl::recover <<<============================= - tribool CombinerProcessControl::recover(const std::string&) - { return false; - } - - //===============>>> CombinerProcessControl::reinit <<<============================== - tribool CombinerProcessControl::reinit(const std::string&) - { return false; - } - - //===============>>> CombinerProcessControl::askInfo <<<============================= - std::string CombinerProcessControl::askInfo(const std::string&) - { return std::string(""); - } - - //===============>>> CombinerProcessControl::snapshot <<<============================ - tribool CombinerProcessControl::snapshot(const std::string&) - { return false; - } - } //namespace CS1 -}; //namespace LOFAR diff --git a/CEP/DP3/SPWCombine/src/SPWCombine.cc b/CEP/DP3/SPWCombine/src/SPWCombine.cc deleted file mode 100644 index 3f946f6d04c..00000000000 --- a/CEP/DP3/SPWCombine/src/SPWCombine.cc +++ /dev/null @@ -1,166 +0,0 @@ -//# Copyright (C) 2007 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id$ -//# -//# @author Adriaan Renting - -#include <lofar_config.h> -#include <SPWCombine/SPWCombine.h> - -namespace LOFAR -{ - namespace CS1 - { - using namespace casacore; - - //===============>>> SPWCombine::SPWCombine <<<=============== - - SPWCombine::SPWCombine(void) - { - } - - //===============>>> SPWCombine::~SPWCombine <<<=============== - - SPWCombine::~SPWCombine(void) - { - } - - //===============>>> SPWCombine::GetMSInfo <<<=============== - - void SPWCombine::GetMSInfo(MeasurementSet& myMS) - { - //Number of channels in the Band - MSSpectralWindow spectral_window = myMS.spectralWindow(); - ROScalarColumn<Int> NUM_CHAN_col(spectral_window, "NUM_CHAN"); - itsNumChannels = NUM_CHAN_col(0); - - //Number of polarizations - MSPolarization polarization = myMS.polarization(); - ROScalarColumn<Int> NUM_CORR_col(polarization, "NUM_CORR"); - itsNumPolarizations = NUM_CORR_col(0); - - //Number of Bands - itsNumBands = NUM_CHAN_col.nrow(); - - //Number of Antennae - MSAntenna antennae = myMS.antenna(); - itsNumAntennae = antennae.nrow(); - - //calculate number of baselines. - itsNumPairs = (itsNumAntennae) * (itsNumAntennae + 1) / 2; //Triangular numbers formula - } - - //===============>>> SPWCombine::CreateDataIterator <<<=============== - - TableIterator SPWCombine::CreateDataIterator(MeasurementSet& myMS) - { - Block<String> ms_iteration_variables(4); - ms_iteration_variables[0] = "TIME_CENTROID"; - ms_iteration_variables[1] = "DATA_DESC_ID"; - ms_iteration_variables[2] = "ANTENNA1"; - ms_iteration_variables[3] = "ANTENNA2"; - - return TableIterator(myMS, ms_iteration_variables); - } - - //===============>>> SPWCombine::TableResize <<<=============== - - void SPWCombine::TableResize(TableDesc tdesc, IPosition ipos, string name, Table& table) - { - ColumnDesc desc = tdesc.rwColumnDesc(name); - desc.setOptions(0); - desc.setShape(ipos); - desc.setOptions(4); - if (table.tableDesc().isColumn(name)) - { table.removeColumn(name); - } - table.addColumn(desc); - } - - //===============>>> SPWCombine::Combine <<<=============== - - void SPWCombine::Combine(vector<MeasurementSet*> inMS, MeasurementSet& myMS, std::string Data) - { - int nrMS = inMS.size(); - vector<int> nrBands(nrMS); - vector<int> nrChannels(nrMS); - vector<TableIterator> myIters(nrMS); - - for (int i = 0; i < nrMS; i++) - { - GetMSInfo(*(inMS[i])); - nrBands[i] = itsNumBands; - nrChannels[i] = itsNumChannels; - myIters[i] = CreateDataIterator(*(inMS[i])); - } - - TableIterator iter = CreateDataIterator(myMS); - GetMSInfo(myMS); - int step = myMS.nrow() / 10 + 1; //not exact but it'll do - int row = 0; - while (!iter.pastEnd()) - { - Cube<Bool> myFlags(itsNumPolarizations, itsNumChannels, itsNumPairs); - Cube<Complex> myData(itsNumPolarizations, itsNumChannels, itsNumPairs); - - int bandMScounter = 0; - for (int i = 0; i < nrMS; i++) - { - for (int j = 0; j < nrBands[i]; j++) - { - for (int k = 0; k < itsNumPairs; k++) - { - Table oldTable = myIters[i].table(); - ROArrayColumn<Complex> Old(oldTable, Data); - Matrix<Complex> oldData(itsNumPolarizations, nrChannels[i]); - Old.get(0, oldData); - ROArrayColumn<Bool> OldFlags(oldTable, "FLAG"); - Matrix<Bool> oldFlags(itsNumPolarizations, nrChannels[i]); - OldFlags.get(0, oldFlags); - (myIters[i])++; - for (int m = 0; m < itsNumPolarizations; m++) - { - for (int n = 0; n < nrChannels[i]; n++) - { - myData(m, bandMScounter + n, k) = oldData(m, n); - myFlags(m, bandMScounter + n, k) = oldFlags(m, n); - } - } - } - bandMScounter += nrChannels[i]; - } - } - - for (int i = 0; i < itsNumPairs; i ++) - { - if (row++ % step == 0) // to tell the user how much % we have processed, - { std::cout << 10*(row/step) << "%" << std::endl; //not very accurate for low numbers of timeslots - } - - Table DataTable = iter.table(); - ArrayColumn<Bool> Flags(DataTable, "FLAG"); - ArrayColumn<Complex> New(DataTable, Data); - Flags.put(0, myFlags.xyPlane(i)); - New.put(0, myData.xyPlane(i)); - iter++; - } - } - } - } //namespace CS1 -}; //namespace LOFAR diff --git a/CEP/DP3/SPWCombine/test/SPWCombine.debug b/CEP/DP3/SPWCombine/test/SPWCombine.debug deleted file mode 100644 index 37f812a6cc6..00000000000 --- a/CEP/DP3/SPWCombine/test/SPWCombine.debug +++ /dev/null @@ -1,2 +0,0 @@ -Global 20 -Everything 20 diff --git a/CEP/DP3/SPWCombine/test/SPWCombine.parset b/CEP/DP3/SPWCombine/test/SPWCombine.parset deleted file mode 100644 index 37f812a6cc6..00000000000 --- a/CEP/DP3/SPWCombine/test/SPWCombine.parset +++ /dev/null @@ -1,2 +0,0 @@ -Global 20 -Everything 20 diff --git a/CEP/DP3/TestDynDPPP/CMakeLists.txt b/CEP/DP3/TestDynDPPP/CMakeLists.txt deleted file mode 100644 index 06f1f9e3b97..00000000000 --- a/CEP/DP3/TestDynDPPP/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# $Id: CMakeLists.txt 27640 2013-12-04 08:02:49Z diepen $ - -lofar_package(TestDynDPPP 0.1 DEPENDS DPPP) - -include(LofarFindPackage) -lofar_find_package(Casacore COMPONENTS casa ms tables REQUIRED) - -add_subdirectory(src) -add_subdirectory(test) diff --git a/CEP/DP3/TestDynDPPP/src/CMakeLists.txt b/CEP/DP3/TestDynDPPP/src/CMakeLists.txt deleted file mode 100644 index 01b4952ecf9..00000000000 --- a/CEP/DP3/TestDynDPPP/src/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -# $Id: CMakeLists.txt 30439 2014-11-19 15:04:34Z dijkema $ - -add_library(dppp_testdyndppp - TestDynStep.cc -) - -target_link_libraries (dppp_testdyndppp dppp) diff --git a/CEP/DP3/TestDynDPPP/src/TestDynStep.cc b/CEP/DP3/TestDynDPPP/src/TestDynStep.cc deleted file mode 100644 index ab532fb346d..00000000000 --- a/CEP/DP3/TestDynDPPP/src/TestDynStep.cc +++ /dev/null @@ -1,57 +0,0 @@ -//# TestDyn.cc: Test of a dynamically loaded DPPP step -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: Averager.h 30711 2015-01-15 14:36:28Z diepen $ -//# -//# @author Ger van Diepen - -// @file -// @brief Test of a dynamically loaded DPPP step - -#include <lofar_config.h> -#include "TestDynStep.h" -#include <DPPP/DPBuffer.h> -#include <DPPP/DPRun.h> - -namespace LOFAR { - namespace DPPP { - - TestDynStep::TestDynStep (DPInput* input, const ParameterSet& pset, - const std::string& prefix) - : Averager (input, pset, prefix) - {} - - TestDynStep::~TestDynStep() - {} - - DPStep::ShPtr TestDynStep::makeStep (DPInput* input, - const ParameterSet& pset, - const std::string& prefix) - { return DPStep::ShPtr(new TestDynStep(input, pset, prefix)); } - - } -} - -// Define the function to make the TestDynStep 'constructor' known. -// Its suffix must be the (lowercase) name of the package (library). -void register_testdyndppp() -{ - LOFAR::DPPP::DPRun::registerStepCtor ("TestDynDPPP", - LOFAR::DPPP::TestDynStep::makeStep); -} diff --git a/CEP/DP3/TestDynDPPP/src/TestDynStep.h b/CEP/DP3/TestDynDPPP/src/TestDynStep.h deleted file mode 100644 index 60ea8ab5de9..00000000000 --- a/CEP/DP3/TestDynDPPP/src/TestDynStep.h +++ /dev/null @@ -1,62 +0,0 @@ -//# TestDynStep.h: Test of a dynamically loaded DPPP step -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: Averager.h 30711 2015-01-15 14:36:28Z diepen $ -//# -//# @author Ger van Diepen - -#ifndef TESTDYNDPPP_TESTDYNSTEP_H -#define TESTDYNDPPP_TESTDYNSTEP_H - -// @file -// @brief Test of a dynamically loaded DPPP step - -#include <DPPP/DPStep.h> -#include <DPPP/Averager.h> -#include <DPPP/DPInput.h> -#include <Common/ParameterSet.h> - -namespace LOFAR { - namespace DPPP { - // @ingroup NDPPP - - // This class is a test (and an example) of a DPStep loaded - // dynamically from a shared library. - // To make test life easy it uses the Averager class underneath. - - class TestDynStep: public Averager - { - public: - TestDynStep (DPInput*, const ParameterSet&, const std::string&); - virtual ~TestDynStep(); - static DPStep::ShPtr makeStep (DPInput*, const ParameterSet&, - const std::string&); - }; - - - } -} - -// Define the function (without name mangling) to register the 'constructor'. -extern "C" -{ - void register_testdyndppp(); -} - -#endif diff --git a/CEP/DP3/TestDynDPPP/test/CMakeLists.txt b/CEP/DP3/TestDynDPPP/test/CMakeLists.txt deleted file mode 100644 index f0c471a411b..00000000000 --- a/CEP/DP3/TestDynDPPP/test/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -# $Id: CMakeLists.txt 26355 2013-09-04 11:51:07Z dijkema $ - -include(LofarCTest) - -# Do not use lofar_add_test, because libtestdyndppp should not be linked in. -add_executable (tTestDynStep tTestDynStep.cc) -target_link_libraries (tTestDynStep ${_libs} ${LOFAR_EXTRA_LIBRARIES}) -add_test (tTestDynStep ${CMAKE_SOURCE_DIR}/CEP/DP3/TestDynDPPP/test/tTestDynStep.sh) diff --git a/CEP/DP3/TestDynDPPP/test/tTestDynStep.cc b/CEP/DP3/TestDynDPPP/test/tTestDynStep.cc deleted file mode 100644 index 71ce22b953d..00000000000 --- a/CEP/DP3/TestDynDPPP/test/tTestDynStep.cc +++ /dev/null @@ -1,592 +0,0 @@ -//# tTestDynStep.cc: Test program for class TestDynStep -//# Copyright (C) 2015 -//# ASTRON (Netherlands Institute for Radio Astronomy) -//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -//# -//# This file is part of the LOFAR software suite. -//# The LOFAR software suite is free software: you can redistribute it and/or -//# modify it under the terms of the GNU General Public License as published -//# by the Free Software Foundation, either version 3 of the License, or -//# (at your option) any later version. -//# -//# The LOFAR software suite is distributed in the hope that it will be useful, -//# but WITHOUT ANY WARRANTY; without even the implied warranty of -//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//# GNU General Public License for more details. -//# -//# You should have received a copy of the GNU General Public License along -//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>. -//# -//# $Id: tAverager.cc 30718 2015-01-19 15:31:51Z diepen $ -//# -//# @author Ger van Diepen - -// This file is mostly a copy of DPPP/test/tAverager.cc. -// Only the way the average steps are created is different. -// Average is used underneath TestDynStep. - -#include <lofar_config.h> -#include <DPPP/DPBuffer.h> -#include <DPPP/DPInfo.h> -#include <DPPP/DPInput.h> -#include <DPPP/DPRun.h> -#include <Common/ParameterSet.h> -#include <Common/StringUtil.h> -#include <Common/LofarLogger.h> -#include <casacore/casa/Arrays/ArrayMath.h> -#include <casacore/casa/Arrays/ArrayLogical.h> -#include <casacore/casa/Arrays/ArrayIO.h> -#include <iostream> - -using namespace LOFAR; -using namespace LOFAR::DPPP; -using namespace casacore; -using namespace std; - - -// Simple class to generate input arrays. -// It can only set all flags to true or all false. -// Weights are always 1. -// It can be used with different nr of times, channels, etc. -class TestInput: public DPInput -{ -public: - TestInput(int ntime, int nbl, int nchan, int ncorr, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNTime) { - return false; - } - Cube<Complex> data(itsNCorr, itsNChan, itsNBl); - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - Cube<float> weights(data.shape()); - weights = 1.; - buf.setWeights (weights); - Cube<bool> flags(data.shape()); - flags = itsFlag; - buf.setFlags (flags); - // The fullRes flags are a copy of the XX flags, but differently shaped. - // They are not averaged, thus only 1 time per row. - Cube<bool> fullResFlags(itsNChan, 1, itsNBl); - fullResFlags = itsFlag; - buf.setFullResFlags (fullResFlags); - Matrix<double> uvw(3,itsNBl); - indgen (uvw, double(itsCount*100)); - buf.setUVW (uvw); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) - { - // Use timeInterval=5 - info().init (itsNCorr, itsNChan, itsNTime, 100, 5, string(), string()); - // Define the frequencies. - Vector<double> chanFreqs(itsNChan); - Vector<double> chanWidth(itsNChan, 100000.); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } - int itsCount, itsNTime, itsNBl, itsNChan, itsNCorr; - bool itsFlag; -}; - -// Class to check result of averaging TestInput. -class TestOutput: public DPStep -{ -public: - TestOutput(int ntime, int nbl, int nchan, int ncorr, - int navgtime, int navgchan, bool flag) - : itsCount(0), itsNTime(ntime), itsNBl(nbl), itsNChan(nchan), - itsNCorr(ncorr), itsNAvgTime(navgtime), itsNAvgChan(navgchan), - itsFlag(flag) - {} -private: - virtual bool process (const DPBuffer& buf) - { - int nchan = 1+(itsNChan-1)/itsNAvgChan; - int navgtime = std::min(itsNAvgTime, itsNTime-itsCount*itsNAvgTime); - // Fill expected result in similar way as TestInput. - Cube<Complex> data(itsNCorr,itsNChan,itsNBl); - Cube<float> weights(itsNCorr,itsNChan,itsNBl); - Cube<bool> fullResFlags(itsNChan,itsNAvgTime,itsNBl); - fullResFlags = true; // takes care of missing times at the end - weights = 0; - for (int j=itsCount*itsNAvgTime; j<itsCount*itsNAvgTime+navgtime; ++j) { - for (int i=0; i<int(data.size()); ++i) { - data.data()[i] += Complex(i+j*10,i-1000+j*6); - weights.data()[i] += float(1); - } - fullResFlags(Slicer(IPosition(3,0,0,0), - IPosition(3,itsNChan,navgtime,itsNBl))) = itsFlag; - } - Cube<Complex> result(itsNCorr,nchan,itsNBl); - Cube<float> resultw(itsNCorr,nchan,itsNBl); - resultw = 0; - // Average to get the true expected result. - for (int k=0; k<itsNBl; ++k) { - for (int i=0; i<itsNCorr; ++i) { - for (int j=0; j<nchan; ++j) { - int jc; - for (jc=j*itsNAvgChan; - jc<std::min((j+1)*itsNAvgChan, itsNChan); ++jc) { - result(i,j,k) += data(i,jc,k); - resultw(i,j,k) += weights(i,jc,k); - } - result(i,j,k) /= float(navgtime*(jc-j*itsNAvgChan)); - } - } - } - // Check the averaged result. - ASSERT (allNear(real(buf.getData()), real(result), 1e-5)); - ///cout << imag(buf.getData()) << endl<<imag(result); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-5)); - ASSERT (allEQ(buf.getFlags(), itsFlag)); - ASSERT (near(buf.getTime(), - 2+5*(itsCount*itsNAvgTime + (itsNAvgTime-1)/2.))); - ASSERT (allNear(buf.getWeights(), resultw, 1e-5)); - if (navgtime == itsNAvgTime) { - Matrix<double> uvw(3,itsNBl); - indgen (uvw, 100*(itsCount*itsNAvgTime + 0.5*(itsNAvgTime-1))); - ASSERT (allNear(buf.getUVW(), uvw, 1e-5)); - } - cout <<buf.getFullResFlags()<< fullResFlags; - ASSERT (allEQ(buf.getFullResFlags(), fullResFlags)); - ++itsCount; - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNChan); - ASSERT (int(info.nchan())==1+(itsNChan-1)/itsNAvgChan); - ASSERT (int(info.ntime())==1+(itsNTime-1)/itsNAvgTime); - ASSERT (info.timeInterval()==5*itsNAvgTime); - ASSERT (int(info.nchanAvg())==itsNAvgChan); - ASSERT (int(info.ntimeAvg())==itsNAvgTime); - } - - int itsCount; - int itsNTime, itsNBl, itsNChan, itsNCorr, itsNAvgTime, itsNAvgChan; - bool itsFlag; -}; - - -// More elaborate class which can set different flags and weights. -class TestInput3: public DPInput -{ -public: - TestInput3(int nrtime, int nrbl, int nrchan, int nrcorr) - : itsCount(0), - itsNrTime(nrtime), itsNrBl(nrbl), itsNrChan(nrchan), itsNrCorr(nrcorr) - { - itsFullResFlags.resize (itsNrChan,1,nrbl); - } -private: - virtual bool process (const DPBuffer&) - { - // Stop when all times are done. - if (itsCount == itsNrTime) { - return false; - } - Cube<Complex> data(itsNrCorr,itsNrChan,itsNrBl); - Cube<float> weights(itsNrCorr,itsNrChan,itsNrBl); - Cube<bool> flags(itsNrCorr,itsNrChan,itsNrBl); - int i = 0; - for (int ib=0; ib<itsNrBl; ++ib) { - for (int ic=0; ic<itsNrChan; ++ic) { - for (int ip=0; ip<itsNrCorr; ++ip) { - data.data()[i] = Complex(i+itsCount*10,i-1000+itsCount*6); - weights.data()[i] = (1 + (itsCount+ib+ic)%5) / 5.; - flags.data()[i] = ((itsCount+2*ib+3*ic) % 7 == 0); - i++; - } - itsFullResFlags(ic,0,ib) = ((itsCount+2*ib+3*ic) % 7 == 0); - } - } - DPBuffer buf; - buf.setTime (itsCount*5 + 2); //same interval as in updateAveragInfo - buf.setData (data); - buf.setWeights (weights); - buf.setFlags (flags); - Vector<uint> rownrs(1,itsCount); - buf.setRowNrs (rownrs); - getNextStep()->process (buf); - ++itsCount; - return true; - } - - virtual void getUVW (const casacore::RefRows&, double, DPBuffer& buf) - { - buf.getUVW().resize (3, itsNrBl); - indgen (buf.getUVW()); - } - virtual bool getFullResFlags (const casacore::RefRows&, DPBuffer& buf) - { - buf.getFullResFlags().assign (itsFullResFlags); - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo&) - { - // Use timeInterval=5 - info().init (itsNrCorr, itsNrChan, itsNrTime, 100, 5, string(), string()); - // Define the frequencies. - Vector<double> chanFreqs(itsNrChan); - Vector<double> chanWidth(itsNrChan, 100000.); - indgen (chanFreqs, 1050000., 100000.); - info().set (chanFreqs, chanWidth); - } - int itsCount, itsNrTime, itsNrBl, itsNrChan, itsNrCorr; - Cube<bool> itsFullResFlags; -}; - -// Class to check result of averaging TestInput3. -// All input must be averaged (in one or more steps) to a single value -// per corr/baseline. -class TestOutput3: public DPStep -{ -public: - TestOutput3(int nrtime, int nrbl, int nrchan, int nrcorr) - : itsNrTime(nrtime), itsNrBl(nrbl), itsNrChan(nrchan), itsNrCorr(nrcorr) - {} -private: - virtual bool process (const DPBuffer& buf) - { - Cube<Complex> result(itsNrCorr,1,itsNrBl); - Cube<float> weights(itsNrCorr,1,itsNrBl); - Cube<bool> flags(itsNrCorr,1,itsNrBl); - Cube<bool> fullResFlags(itsNrChan,itsNrTime,itsNrBl); - weights = float(0); - flags = true; - fullResFlags = true; - // Create data in the same way as in TestInput3. - for (int it=0; it<itsNrTime; ++it) { - int i = 0; - for (int ib=0; ib<itsNrBl; ++ib) { - for (int ic=0; ic<itsNrChan; ++ic) { - for (int ip=0; ip<itsNrCorr; ++ip) { - if ((it+2*ib+3*ic) % 7 != 0) { - float weight = (1 + (it+ib+ic)%5) / 5.; - result(ip,0,ib) += weight * Complex(i+it*10,i-1000+it*6); - weights(ip,0,ib) += weight; - /// cout << result(ip,0,ib) << weight << endl; - flags(ip,0,ib) = false; - fullResFlags(ic,it,ib) = false; - } - i++; - } - } - } - } - ASSERT (allNE(weights, float(0.))); - for (uint i=0; i<result.size(); ++i) { - result.data()[i] /= weights.data()[i]; - } - // Check the averaged result. - ///cout << real(buf.getData()) << endl<<real(result); - ASSERT (allNear(real(buf.getData()), real(result), 1e-5)); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-5)); - ASSERT (allEQ(buf.getFlags(), flags)); - ASSERT (near(buf.getTime(), 2.+5*(itsNrTime-1)/2.)); - ASSERT (allNear(buf.getWeights(), weights, 1e-5)); - Matrix<double> uvw(3,itsNrBl); - indgen (uvw); - ASSERT (allNear(buf.getUVW(), uvw, 1e-5)); - ///cout <<buf.getFullResFlags()<< fullResFlags; - ASSERT (allEQ(buf.getFullResFlags(), fullResFlags)); - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNrChan); - ASSERT (info.nchan()==1); - ASSERT (info.ntime()==1); - ASSERT (info.timeInterval()==5*itsNrTime); - ASSERT (int(info.nchanAvg())==itsNrChan); - ASSERT (int(info.ntimeAvg())==itsNrTime); - } - - int itsNrTime, itsNrBl, itsNrChan, itsNrCorr; -}; - -// Simple class to flag every step-th XX point. -class TestFlagger: public DPStep -{ -public: - TestFlagger(int step) - : itsCount(0), itsStep(step) - {} -private: - virtual bool process (const DPBuffer& buf) - { - DPBuffer buf2(buf); - int ncorr = buf2.getFlags().shape()[0]; - int np = buf2.getFlags().size() / ncorr; - bool* flagPtr = buf2.getFlags().data(); - for (int i=0; i<np; ++i) { - if ((i+itsCount)%itsStep == 0) { - ///cout << "flagged " <<itsCount <<' '<< i << endl; - for (int j=0; j<ncorr; ++j) { - flagPtr[i*ncorr + j] = true; - } - } - } - getNextStep()->process (buf2); - ++itsCount; - return true; - } - - virtual void finish() {getNextStep()->finish();} - virtual void show (std::ostream&) const {} - - int itsCount, itsStep; -}; - -// Class to check result of averaging and flagging TestInput3. -// First the data are averaged from 8,4 to 4,2, then every step-th point -// is flagged, and finally it is averaged to 1,1. -class TestOutput4: public DPStep -{ -public: - TestOutput4(int nrtime, int nrbl, int nrchan, int nrcorr, int step) - : itsNrTime(nrtime), itsNrBl(nrbl), itsNrChan(nrchan), itsNrCorr(nrcorr), - itsStep(step) - {} -private: - virtual bool process (const DPBuffer& buf) - { - Cube<Complex> result(itsNrCorr,1,itsNrBl); - Cube<float> weights(itsNrCorr,1,itsNrBl); - Cube<bool> flags(itsNrCorr,1,itsNrBl); - Cube<bool> fullResFlags(itsNrChan,itsNrTime,itsNrBl); - weights = float(0); - flags = true; - fullResFlags = true; - // Create data in the same way as in TestInput3. - for (int it=0; it<itsNrTime; ++it) { - int i = 0; - for (int ib=0; ib<itsNrBl; ++ib) { - for (int ic=0; ic<itsNrChan; ++ic) { - // TestFlagger flags every step-th point of 2x2 averaged data. - int tf = it/2; // same as itsCount in testFlagger - if (((ib*itsNrChan + ic)/2 + tf) % itsStep == 0) { - ///cout << "out4 flagged "<< tf<<' '<< i/itsNrCorr<<' ' <<ib<<' '<<ic/2 << endl; - i += itsNrCorr; - } else { - for (int ip=0; ip<itsNrCorr; ++ip) { - if ((it+2*ib+3*ic) % 7 != 0) { - float weight = (1 + (it+ib+ic)%5) / 5.; - result(ip,0,ib) += weight * Complex(i+it*10,i-1000+it*6); - weights(ip,0,ib) += weight; - /// cout << result(ip,0,ib) << weight << endl; - flags(ip,0,ib) = false; - fullResFlags(ic,it,ib) = false; - } - i++; - } - } - } - } - } - for (uint i=0; i<result.size(); ++i) { - if (!flags.data()[i]) { - result.data()[i] /= weights.data()[i]; - } - } - // Check the averaged result. - ///cout << real(buf.getData()) << endl<<real(result); - ASSERT (allNear(real(buf.getData()), real(result), 1e-5)); - ASSERT (allNear(imag(buf.getData()), imag(result), 1e-5)); - ASSERT (allEQ(buf.getFlags(), flags)); - ASSERT (near(buf.getTime(), 2.+5*(itsNrTime-1)/2.)); - ASSERT (allNear(buf.getWeights(), weights, 1e-5)); - Matrix<double> uvw(3,itsNrBl); - indgen (uvw); - ASSERT (allNear(buf.getUVW(), uvw, 1e-5)); - ///cout <<buf.getFullResFlags()<< fullResFlags; - ASSERT (allEQ(buf.getFullResFlags(), fullResFlags)); - return true; - } - - virtual void finish() {} - virtual void show (std::ostream&) const {} - virtual void updateInfo (const DPInfo& info) - { - ASSERT (int(info.origNChan())==itsNrChan); - ASSERT (info.nchan()==1); - ASSERT (info.ntime()==1); - ASSERT (info.timeInterval()==5*itsNrTime); - ASSERT (int(info.nchanAvg())==itsNrChan); - ASSERT (int(info.ntimeAvg())==itsNrTime); - } - - int itsNrTime, itsNrBl, itsNrChan, itsNrCorr, itsStep; -}; - - -// Execute steps. -void execute (const DPStep::ShPtr& step1) -{ - // Set DPInfo. - step1->setInfo (DPInfo()); - // Execute the steps. - DPBuffer buf; - while (step1->process(buf)); - step1->finish(); -} - -// Test simple averaging without flagged points. -void test1(int ntime, int nbl, int nchan, int ncorr, - int navgtime, int navgchan, bool flag) -{ - cout << "test1: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " navgtime=" << navgtime - << " navgchan=" << navgchan << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset; - parset.add ("freqstep", toString(navgchan)); - parset.add ("timestep", toString(navgtime)); - DPStep::ShPtr step2 = DPRun::findStepCtor("TestDynDPPP")(in, parset, ""); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, - navgtime, navgchan, flag)); - step1->setNextStep (step2); - step2->setNextStep (step3); - execute (step1); -} - -// Like test1, but the averaging is done in two steps. -void test2(int ntime, int nbl, int nchan, int ncorr, bool flag) -{ - cout << "test2: ntime=" << ntime << " nrbl=" << nbl << " nchan=" << nchan - << " ncorr=" << ncorr << " navgtime=2" - << " navgchan=4" << endl; - // Create the steps. - TestInput* in = new TestInput(ntime, nbl, nchan, ncorr, flag); - DPStep::ShPtr step1(in); - ParameterSet parset1, parset2; - parset1.add ("freqstep", "4"); - parset2.add ("timestep", "2"); - DPStep::ShPtr step2a = DPRun::findStepCtor("TestDynDPPP")(in, parset1, ""); - DPStep::ShPtr step2b = DPRun::findStepCtor("TestDynDPPP")(in, parset2, ""); - DPStep::ShPtr step3(new TestOutput(ntime, nbl, nchan, ncorr, 2, 4, flag)); - step1->setNextStep (step2a); - step2a->setNextStep (step2b); - step2b->setNextStep (step3); - execute (step1); -} - -// Do tests with weighting and some flagged points. -void test3(int nrbl, int nrcorr) -{ - { - cout << "test3: ntime=2 nrbl=" << nrbl << " nchan=2 ncorr=" << nrcorr - << endl; - cout << " navgtime=2 navgchan=2" << endl; - // Create the steps. - TestInput3* in = new TestInput3(2, nrbl, 2, nrcorr); - DPStep::ShPtr step1(in); - ParameterSet parset1; - parset1.add ("freqstep", "2"); - parset1.add ("timestep", "2"); - DPStep::ShPtr step2a = DPRun::findStepCtor("TestDynDPPP")(in, parset1, ""); - DPStep::ShPtr step3(new TestOutput3(2, nrbl, 2, nrcorr)); - step1->setNextStep (step2a); - step2a->setNextStep (step3); - execute (step1); - } - { - cout << "test3: ntime=4 nrbl=" << nrbl << " nchan=8 ncorr=" << nrcorr - << endl; - cout << " [navgtime=2 navgchan=4], [navgtime=2 navgchan=2]" << endl; - // Create the steps. - TestInput3* in = new TestInput3(4, nrbl, 8, nrcorr); - DPStep::ShPtr step1(in); - ParameterSet parset1, parset2; - parset1.add ("freqstep", "4"); - parset1.add ("timestep", "2"); - parset2.add ("freqstep", "2"); - parset2.add ("timestep", "2"); - DPStep::ShPtr step2a = DPRun::findStepCtor("TestDynDPPP")(in, parset1, ""); - DPStep::ShPtr step2b = DPRun::findStepCtor("TestDynDPPP")(in, parset2, ""); - DPStep::ShPtr step3(new TestOutput3(4, nrbl, 8, nrcorr)); - step1->setNextStep (step2a); - step2a->setNextStep (step2b); - step2b->setNextStep (step3); - execute (step1); - } -} - -// Do tests with averaging and flagging steps to see if the flags are -// promoted to the FULLRES flags. -void test4(int nrbl, int nrcorr, int flagstep) -{ - { - cout << "test4: ntime=4 nrbl=" << nrbl << " nchan=8 ncorr=" << nrcorr - << endl; - cout << " [navgtime=2 navgchan=2], [flagstep=" << flagstep - << "] [navgtime=2 navgchan=4]" << endl; - // Create the steps. - TestInput3* in = new TestInput3(4, nrbl, 8, nrcorr); - DPStep::ShPtr step1(in); - ParameterSet parset1, parset2; - parset1.add ("freqstep", "2"); - parset1.add ("timestep", "2"); - parset2.add ("freqstep", "4"); - parset2.add ("timestep", "2"); - DPStep::ShPtr step2a = DPRun::findStepCtor("TestDynDPPP")(in, parset1, ""); - DPStep::ShPtr step2b(new TestFlagger(flagstep)); - DPStep::ShPtr step2c = DPRun::findStepCtor("TestDynDPPP")(in, parset2, ""); - DPStep::ShPtr step3(new TestOutput4(4, nrbl, 8, nrcorr, flagstep)); - step1->setNextStep (step2a); - step2a->setNextStep (step2b); - step2b->setNextStep (step2c); - step2c->setNextStep (step3); - execute (step1); - } -} - - -int main() -{ - try { - test1(10, 3, 32, 4, 2, 4, false); - test1(10, 3, 30, 1, 3, 3, true); - test1(10, 3, 30, 1, 3, 3, false); - test1(11, 3, 30, 2, 3, 3, false); - test1(10, 3, 32, 4, 1, 32, false); - test1(10, 3, 32, 1, 1, 1, false); - test2(10, 3, 32, 2, true); - test2(10, 3, 32, 2, false); - test3(1, 1); - test3(10, 4); - test4(1, 4, 3); - test4(20, 4, 5); - } catch (std::exception& x) { - cout << "Unexpected exception: " << x.what() << endl; - return 1; - } - return 0; -} diff --git a/CEP/DP3/TestDynDPPP/test/tTestDynStep.run b/CEP/DP3/TestDynDPPP/test/tTestDynStep.run deleted file mode 100755 index 2987402091e..00000000000 --- a/CEP/DP3/TestDynDPPP/test/tTestDynStep.run +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -# Define the path for finding the library. -LD_LIBRARY_PATH=../src:$LD_LIBRARY_PATH -DYLD_LIBRARY_PATH=../src:$DYLD_LIBRARY_PATH -export LD_LIBRARY_PATH -export DYLD_LIBRARY_PATH - -./tTestDynStep diff --git a/CEP/DP3/TestDynDPPP/test/tTestDynStep.sh b/CEP/DP3/TestDynDPPP/test/tTestDynStep.sh deleted file mode 100755 index 6f59e84345d..00000000000 --- a/CEP/DP3/TestDynDPPP/test/tTestDynStep.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./runctest.sh tTestDynStep diff --git a/CEP/DP3/doc/package.dox b/CEP/DP3/doc/package.dox deleted file mode 100644 index 3dd5595671b..00000000000 --- a/CEP/DP3/doc/package.dox +++ /dev/null @@ -1,7 +0,0 @@ -// \ingroup CEP - -// \defgroup DP3 DP3 -// DP3 contains the packages for the pre-processing pipeline. It consists of -// a collection of flaggers, and a data squasher. -// Furthermore it contains a program to combine multiple spectral -// windows and MeasurementSets into a single one. -- GitLab