Runtime sequence selection
This MR implements a proposal for runtime sequence selection.
Sequences are detected by looking at the configuration/sequences
directory and assuming that all .py
files are a sequence. For each sequence a separate shared library is built (including GatherSelections.cu
). These libraries are built and installed in the directory sequences
relative to the location of libAllenLib.so
.
StreamWrapper
has been refactored into the abstract base class IStream
and for each processing thread a stream instance is created in Allen.cpp
At runtime, the location of libAllenLib.so
is determined and used to get the location of the sequences
directory. The correct shared library is then loaded and the factory function (create_sequence
) is retrieved from the library. This is wrapped in a lambda that returns a unique_ptr<IStream>
.
This feature is tested in all of the CI tests, because the sequence loading is always used. For the stack build, the feature is tested by running the Allen sequence without the GEC to calculate efficiencies in MooreAnalysis!34 (merged).
TODO:
-
Update configuration of RunAllen
in Moore to allow the name of the desired sequence to be configured from an options file; handled in Moore!792 (merged) -
Decide in which order this should be merged relative to !429 (merged) and !532 (closed)
Partially addresses #215 (closed); the TCK part will be a future MR
Should be tested together with Moore!792 (merged) and MooreAnalysis!34 (merged)