Role for channels
A custom scan is a set of channels with relationship between them.
Some channels have a very specific kind and use.
For now i have identified 3 special kind, which i actually have to infer in flint
-
EPOCH
: an absolute timestamp in real -
DURATION
: a relative time since the beginning of the scan -
SCAN_HASHS
: a channel containing a list of scans hashs (used by the sequences)
Actually, a custom scan can expose multiple EPOCH
channels. One per chain, or more.
That information can be a convenient way to identify and align data together.
So we could allow scan designers or controllers to add such metadata in order to identify the EPOCH
used by each channels.
channels
time:epoch:
unit: s
kind: EPOCH
diode1:
unit: v
epoch: time:epoch
diode2:
epoch: time:epoch
time:duration:
unit: s
kind: DURATION
epoch: time:epoch
This also could be automatically extracted per acq obj, if supported.
devices:
diode_controller:
channels:
- diode1
- diode2
epoch: time:epoch
Actually flint request scan designers to specify a "group" per channels sharing the same clock. But defining an "epoch" sounds like a more meaningful way.
In Flint, this could be very used together with blissdata
- to display properly 2 chains with multiple epoch
- to display efficiently the data for very very long time scans
This could be automatically extracted by Flint for now (using user "group" and units, and channel names), but we could imagine to expose that to the scan designers, and to full or partially generate that metadata (at least for standard scans)