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