Draft: analysis development branch (do not merge)
This implements computation of an auto correlation function. This analysis is requested by Kartik to compute beam properties from short pulses of fluorescence scattering on the cooper disk.
The design:
- correction addon computes per frame auto-correlation functions and stores them in shared memory buffer (the same size as image data)
- the arbiter identifies frames with scattering from cooper disk but nor from stiffening ribs and generates the selection
- the group matchers computes the sum of images and auto-correlation functions according the selection from arbiter
- the group matchers sends downstream sums but do not send per frame auto-correlation functions
Interventions to the pipeline:
-
ShmemTrainMatcher
computes reduction operation on per-frame data according to instruction in thereduce.classes
andreduce.op
keys from the arbiter source:
-
reduce.classes
- is an boolean array[nclasses, nframes], where each row is a selection mask -
reduce.op
- is a list of strings, each element has format:<reduction operation>:<data key>:<index in classes array>:<result key>
. Result key is appended withaggtregate.
prefix
-
ShmemTrainMatcher
deletes the keys from output hash which is listen in thedeleteThese
key (vector of strings) from the same sources (correction devices source, each correction device contains its owndeleteThese
key) -
AgipdCorrection
accumulates thecalngShmemPaths
anddeteleThese
list from addons. It appends theimage.data
paths to thecalngShmemPaths
list instead to redefine it. -
The method
_initialization(self)
is added to theBaseCorrectionAddon
. It's called by the hostBaseCorrection
after it sets the_device
property of the addon class instance. This needed to have an access to the host device properties during the addon initialization. -
Refactor
FrameSelectionArbiter
to
- run multiple kernels and get partial selection
- calculate frame selection with expression using partial selections
- configure reduction operations and build reduction masks