point source skymodel not handled correctly
steps/delay_cal_model.cwl
uses scripts/skynet.py
to create a point source skymodel for use in steps/delay_solve.cwl
. This skymodel is written to the input MS, after which it should be collected as an output.
Although the skymodel is created successfully, due to InplaceUpdateRequirement
CWL doesn't recognise it as a separate file. delay_solve
will then fail:
tjlv53@PHY-TJLV53:~/VLBI-cwl$ cat /tmp/m1jmxyji/delay_solve_err.log
cp: cannot stat '/tmp/rpt0vvnv/stgf2a246be-eac7-4660-b852-55178145228e/lofar_facet_selfcal/find_solint.py': No such file or directory
Traceback (most recent call last):
File "/tmp/rpt0vvnv/stgf2a246be-eac7-4660-b852-55178145228e/lofar_facet_selfcal/facetselfcal.py", line 8140, in <module>
main()
File "/tmp/rpt0vvnv/stgf2a246be-eac7-4660-b852-55178145228e/lofar_facet_selfcal/facetselfcal.py", line 7710, in main
inputchecker(args, mslist)
File "/tmp/rpt0vvnv/stgf2a246be-eac7-4660-b852-55178145228e/lofar_facet_selfcal/facetselfcal.py", line 1928, in inputchecker
raise Exception('Cannot find skymodel, file does not exist')
Exception: Cannot find skymodel, file does not exist
One possible resolution could be to set inplaceupdate: false
(reported by @tikk3r, but I can't reproduce this). I think a cleaner approach is to modify skynet.py
slightly, such that it writes the skymodel to the working directory (some other legacy logic can then be removed as well, e.g. sky
). This would allow for delay_cal_model.cwl
to be simplified more and is, I think, more in line with the philosophy of CWL.
It is interesting to note that this bug seems to be tied to a bug in CWL itself that has since been resolved. This bug can be found in FLoC versions (and the versions of the CWL runners contained in them):
- 4.3.1
- 4.4.0
In FLoC 4.0.1 and 4.2.2 this bug does not appear.