writer: missing data and lima mode
This MR provides:
-
an additional NOSAVING lima mode: images might be collected but will not be saved. Lima URI's cannot be derived from the stream event (Already provided by !3538 (merged)ImageNotSaved
exception). -
lima mode MANUAL: images might be collected and might be saved. Lima URI's can be derived from the stream event.Already provided by !3538 (merged) -
llima status events (affects Flint as well): trying to get the image URI's from a lima event raisesAlready provided by !3538 (merged)ImageNotSaved
when mode is NOSAVING. When mode is MANUAL, it tries to reconstruct the URI from the status event. -
Nexus writer: it no longer rejects lima events based on the mode. If it gets events, it will make links to the lima files, regardless of what the mode is and whether those files actually exist or not
-
Nexus writer: it will no longer create empty datasets. Empty datasets existed before when
- CTRL-C of the scan before some nodes could emit any data
- lima image when
scan_saving=False
It is arguably more convenient for data processing to have an empty dataset than a missing dataset. But as the writer cannot be absolutely sure whether lima data is expected or not, we can't create an empty dataset.
-
Nexus writer: when it thinks a channel should have data but does not have data, it adds a warning to the logs (not visible on the Bliss side)
-
Nexus writer: the NXdetector group is always created when lima is involved. It may miss the
data
(i.e. VDS to lima files) but it will contain the lima parameters. -
Nexus writer: softlinks in the measurement group are created just after the destination is created. If a channel has no data, no link will be created.
Note: all these changes make the writer more forgiving towards missing data. This does mean that it will not be immediately obvious, by looking at the file or the Bliss REPL, when data is missing (unless it is caused by an error in the writer itself). The writer saves what it gets and basta.