lofar-astron / DP3

DP3: streaming processing pipeline for radio interferometric data
GNU General Public License v3.0
15 stars 10 forks source link

DPPP tries to open MS for write even when no changes will be made to it. #314

Open gmloose opened 4 years ago

gmloose commented 4 years ago

DPPP tries to open an MS for read/write, even when the MS will not be modified. Here's an example:

DPPP \
    msin.datacolumn=DATA \ 
    msout=. \
    steps=[solve] \
    solve.type=ddecal \
    solve.mode=scalarphase \
    solve.usebeammodel=True \
    solve.beammode=array_factor \
    solve.onebeamperpatch=True \
    solve.antennaconstraint=[[CS001HBA0,CS002HBA0,CS003HBA0,CS004HBA0,CS005HBA0,CS006HBA0,CS007HBA0,CS011HBA0,CS013HBA0,CS017HBA0,CS021HBA0,CS024HBA0,CS026HBA0,CS028HBA0,CS030HBA0,CS031HBA0,CS032HBA0,CS101HBA0,CS103HBA0,CS201HBA0,CS301HBA0,CS302HBA0,CS401HBA0,CS501HBA0,CS001HBA1,CS002HBA1,CS003HBA1,CS004HBA1,CS005HBA1,CS006HBA1,CS007HBA1,CS011HBA1,CS013HBA1,CS017HBA1,CS021HBA1,CS024HBA1,CS026HBA1,CS028HBA1,CS030HBA1,CS031HBA1,CS032HBA1,CS101HBA1,CS103HBA1,CS201HBA1,CS301HBA1,CS302HBA1,CS401HBA1,CS501HBA1]] \
    solve.h5parm=/storage/data/rapthor/working/HBA_short/pipelines/calibrate_1/fast_phase_3.h5parm \
    solve.maxiter=50 \ 
    msin=/storage/data/rapthor/data/HBA_short/allbands.ms \
    solve.nchan=10 \
    msin.ntimes=12 \
    numthreads=0 \
    solve.propagatesolutions=True \
    solve.smoothnessconstraint=5000000.0 \
    solve.solint=4 \
    solve.sourcedb=/storage/data/rapthor/working/HBA_short/pipelines/calibrate_1/calibration_skymodel.sourcedb \
    msin.starttime=21Dec2017/07:15:52.306 \
    solve.stepsize=0.2 \
    solve.tolerance=0.001 \
    solve.uvlambdamin=80.0 
std exception detected: Table /storage/data/rapthor/data/HBA_short/allbands.ms cannot be opened for read/write

The problem is that msout=. indicates that input and output MS are the same. You would like to be able to indicate that you do not want to generate output, but that's currently not possible. Below is the relevant part of the Slack discussion on this topic (in Dutch):

Tammo Jan Dijkema 5:15 PM Eh ja, dat zou wel kunnen... Er zou een truuk moeten zijn om te zeggen 'ik wil geen output'. Ik geloof niet dat die er nu is. Misschien wel met een workaround, maar daar moet ik even over nadenken. André Offringa 5:26 PM betekent dit dat de output nog steeds geschreven wordt? zou wel een mooie performance improvement kunnen gegeven als dat schrijven overgeslagen wordt (edited) Tammo Jan Dijkema 8:39 AM Nee, de output wordt niet geschreven; dat wordt overgeslagen als needswritedata uitstaat (en alleen stappen die iets met de data doen zetten dat). Ik ben het ermee eens dat dit ongewenst gedrag is, de oplossing kan op twee niveaus: MSUpdater zo optimaliseren dat als needsWriteData en needsWriteFlag enzo uit staan, dat hij dan helemaal niks doet; of in de DPRun-logica zorgen dat er in dit geval helemaal geen MSUpdater komt. Lars Krombeen 5 days ago ik vind het oplossen ind e DPRun wel mooi, want dat is gelijk een feature die je wel zou willen toch? :slightly_smiling_face: Tammo Jan Dijkema 5 days ago Precies. Maar dit zou ik wel op een backward-compatible manier willen.