draft: Lima `wait_frame_id` / `acq_nb_frames` improvement proposal
Problem
It is hard to understand what to give to acq_nb_frames
and wait_frame_id
for LimaAcquisitionMaster
.
Idea
To replace both parameters with a single one, that would make it clear about the sequence of frames to wait, and that would allow us to deduce the right number of frames without letting the user to specify it.
The keyword arg would be called frame_sequence
.
It would rely on helpers (classes? or namedtuples) to build a sequence.
Maybe more improvements could come:
- if we know frames are specified to be 'hardware triggered' or 'software triggered' we could infer params like
trigger_type
- maybe we could also infer params like
prepare_once
orstart_once
(not sure)
Example 1
Case of simple ascan, camera is hardware-triggered ; today we need to have acq_nb_frames = npoints
,
and wait_frame_id
= range(npoints)
:
lima_acq_obj = LimaAcquisitionMaster(lima_dev, ..., frame_sequence=FrameSequence(HwTriggeredFrames(npoints)))
Example 2
Case of mesh scan N frames x M; camera is hardware-triggered. Today we need to have acq_nb_frames = N*M
,
wait_frame_id = [N, 2*N, 3*N...N*M]
:
lima_acq_obj = LimaAcquisitionMaster(lima_dev, ..., frame_sequence=FrameSequence(HwTriggeredFrames(N), M))
Example 3
A scan that takes 3 frames, software triggered, then moves, then takes 3 frames again etc.
lima_acq_obj = LimaAcquisitionMaster(lima_dev, ..., frame_sequence=FrameSequence(SoftTriggeredFrame(3), N))
would generate the equivalent of acq_nb_frames=3*N
and wait_frame_id=[3,6,9..N+3]