LimaGroup issueshttps://gitlab.esrf.fr/groups/limagroup/-/issues2018-09-21T16:34:03+02:00https://gitlab.esrf.fr/limagroup/Lima-tango-python/-/issues/1bpm-device2018-09-21T16:34:03+02:00Aitor Henrybpm-devicehttps://gitlab.esrf.fr/limagroup/Lima-camera-basler/-/issues/5Manage frame error for B/W camera and continuous acq frame2019-03-20T10:14:31+01:00Laurent ClaustreManage frame error for B/W camera and continuous acq frameA bug has been introduced by not managing the soft buffers when pylon cannot a valid acquire an image (e.g due to lost packets).
The buffer is re-queued to pylon queue letting lima with an invalid image (or the previous one) in the buf...A bug has been introduced by not managing the soft buffers when pylon cannot a valid acquire an image (e.g due to lost packets).
The buffer is re-queued to pylon queue letting lima with an invalid image (or the previous one) in the buffer memory. That create a decrepency between indexes, for instance, if pylon failed at image num 1 and image 2 is ok, image 2 is available in buffer 2 but newFrameReady is fired for image 1, so a client appli requesting image 1 will get buffer 1 where there is a fake image or the previous image due to ring buffer...
We propose to add intermediate small buffer of 2 images, and let pylon only filling the small buffer, then memcopy valid image to the lima bufferv1.8.1Laurent ClaustreLaurent Claustrehttps://gitlab.esrf.fr/limagroup/Lima-camera-marccd/-/issues/1cmake last flavor missing2019-03-13T10:04:21+01:00Laurent Claustrecmake last flavor missingDue to missing YAT SDK to test, this camera plugin was not clean and port to the final version of the cmake pipelineDue to missing YAT SDK to test, this camera plugin was not clean and port to the final version of the cmake pipelinev1.8Laurent ClaustreLaurent Claustrehttps://gitlab.esrf.fr/limagroup/Lima-camera-basler/-/issues/8add TestImage control2019-03-20T10:11:58+01:00Laurent Claustreadd TestImage controlIn Pylon sdk TestImageSelector can be used to acquire an fake image. Depending of the camera up to 7 different test image can be selectedIn Pylon sdk TestImageSelector can be used to acquire an fake image. Depending of the camera up to 7 different test image can be selectedv1.8.1Laurent ClaustreLaurent Claustrehttps://gitlab.esrf.fr/limagroup/lima2/-/issues/60Define the Frame type2020-09-01T11:31:35+02:00Samuel DebionneDefine the Frame typeFrame type should be camera specific and specialized with:
- The pixel types supported the camera (already the case)
- Some camera specific metadata (fpga_frame_idx, bunch_id) from the SDK
I suggest to start with something like:
```c...Frame type should be camera specific and specialized with:
- The pixel types supported the camera (already the case)
- Some camera specific metadata (fpga_frame_idx, bunch_id) from the SDK
I suggest to start with something like:
```c++
template< typename Pixel, typename Metadata, bool IsPlanar = false, typename Alloc=std::allocator<unsigned char> >
class frame :
public image<Pixel, IsPlanar, Alloc>
{
...
}
```
`frame` is derived from `boost::gil::image`.
`Alloc` is in charge of doing the proper memory management.
`Metadata` is the customization point for plugin metadata.v0.1.0Samuel DebionneSamuel Debionnehttps://gitlab.esrf.fr/limagroup/lima2/-/issues/22I/Os2020-04-28T15:06:44+02:00Samuel DebionneI/OsI/Os are standard processes that can be inserted in the processing pipeline:
* [x] Saving to file (HDF5)
* [ ] Saving to buffer
* [ ] Streaming (MPI Streams, ZMQ)
* [ ] Object storage (Memcached)I/Os are standard processes that can be inserted in the processing pipeline:
* [x] Saving to file (HDF5)
* [ ] Saving to buffer
* [ ] Streaming (MPI Streams, ZMQ)
* [ ] Object storage (Memcached)v0.1.0Samuel DebionneSamuel Debionne2020-04-24https://gitlab.esrf.fr/limagroup/lima2/-/issues/29License and Copyright2020-05-06T08:41:24+02:00Laurent ClaustreLicense and CopyrightI propose to use a LGPLv3 license. The copyright is not intended to be held by staff members but ESRF (or BCU/ESRF), you can add a AUTHORS file if you want to be mentioned as developer. We could have a CONTRIBUTORS files as well.I propose to use a LGPLv3 license. The copyright is not intended to be held by staff members but ESRF (or BCU/ESRF), you can add a AUTHORS file if you want to be mentioned as developer. We could have a CONTRIBUTORS files as well.v0.1.02020-05-15https://gitlab.esrf.fr/limagroup/lima2/-/issues/50Legacy (lima1) Processing Pipeline2020-09-29T16:23:54+02:00Samuel DebionneLegacy (lima1) Processing PipelineA Lima1-like pipeline with the following processing:
```
-> ImageAcquired
| Intensity reconstruction->Free Hw Buffer
| Binning->Free Hw Buffer
| ROI
| Flip
| Rotation
| PartialAssemble->Free Hw Buffer
| Buffer(queue_node)
| Imag...A Lima1-like pipeline with the following processing:
```
-> ImageAcquired
| Intensity reconstruction->Free Hw Buffer
| Binning->Free Hw Buffer
| ROI
| Flip
| Rotation
| PartialAssemble->Free Hw Buffer
| Buffer(queue_node)
| Image Assemble(multifuncion_node)
->ImageAssembled
| Accumulation
: SaturationMask: Given an intensity threshold
->Image with Nb of saturations per pixel per Accumulated image
: SaturationCallback: Given a threshold on the nb of pixels
->Event when the number of saturated pixels is above the threshold
->BaseImageReady
| Background - Substraction
| Flatfield - Correction
| Mask
| User - Transformation
->ImageReady
+ Saving
->ImageSaved
+ VideoImage
+ RoiCounters
+ Roi2Spectrum
+ BeamCalculations
+ User - Calculation
->CountersReady
```
### TBB nodes
- [ ] Intensity correction node (low priority)
- [ ] Image assembly nodes: geometry (flip, rotation, roi), see #18
- [ ] Saving node, see #22
- [ ] Event node (e.g. ImageAcquired, ImageReady)v0.1.0Alejandro Homs PuronAlejandro Homs Puronhttps://gitlab.esrf.fr/limagroup/lima2/-/issues/18Image Assembly2022-04-04T13:42:55+02:00Samuel DebionneImage AssemblyThe most generic approach to image assembly (reconstruction) is the definition by the HW plugin of a (set of) function(s) performing the task(s), to be called in dedicated processing node(s).
The system can then provide helpers that imp...The most generic approach to image assembly (reconstruction) is the definition by the HW plugin of a (set of) function(s) performing the task(s), to be called in dedicated processing node(s).
The system can then provide helpers that implement the function(s) based on:
* [ ] Detector Layout description in camera plugin
Low priority tasks:
* [ ] HW geometric transformation (i.e. flip, roi, bin)Alejandro Homs PuronAlejandro Homs Puronhttps://gitlab.esrf.fr/limagroup/lima2/-/issues/15Python Binding2020-04-17T17:48:30+02:00Samuel DebionnePython BindingSIP has three major drawbacks:
- Requires a preprocessor (sip -> cpp) that complicates the build system
- Uses a python module at runtime that poses all gkind of compatibility issues
- Verbose SIP files with duplicated C++ code
* ...SIP has three major drawbacks:
- Requires a preprocessor (sip -> cpp) that complicates the build system
- Uses a python module at runtime that poses all gkind of compatibility issues
- Verbose SIP files with duplicated C++ code
* [x] Evaluate pybind11
* [ ] Provide a generic binding for every camerasv0.1.0Samuel DebionneSamuel Debionnehttps://gitlab.esrf.fr/limagroup/lima2/-/issues/14Hardware Interface2020-04-17T17:21:25+02:00Samuel DebionneHardware InterfaceThe hardware interface should be split into control and acquisition interfaces.
* [ ] Survey on the SDKs for cameras that should be supported in distributed mode
* [ ] API for the control part of the Hardware Interface
* [ ] API for the...The hardware interface should be split into control and acquisition interfaces.
* [ ] Survey on the SDKs for cameras that should be supported in distributed mode
* [ ] API for the control part of the Hardware Interface
* [ ] API for the acquisition part of the Hardware InterfaceSamuel DebionneSamuel Debionnehttps://gitlab.esrf.fr/limagroup/Lima-camera-slsdetector/-/issues/18Diagnostic the flow control failure on ID10 / ID02 Eiger-500k2020-04-01T14:17:16+02:00Samuel DebionneDiagnostic the flow control failure on ID10 / ID02 Eiger-500kTest the hardware script sent by Martin.Test the hardware script sent by Martin.Alejandro Homs PuronAlejandro Homs Puronhttps://gitlab.esrf.fr/limagroup/Processlib/-/issues/9Split CMakeLists into core and tasks.2019-02-20T18:29:29+01:00Samuel DebionneSplit CMakeLists into core and tasks.```
add_subdirectory(core)
add_subdirectory(tasks)
``````
add_subdirectory(core)
add_subdirectory(tasks)
```v2Samuel DebionneSamuel Debionnehttps://gitlab.esrf.fr/limagroup/lima2/-/issues/167Add XPCS processing2023-07-24T10:58:46+02:00Samuel DebionneAdd XPCS processingXPCS processing would sparsify (remove 0 photon data) and save the data in the same sparse format than the one used for saving the peaks in the SMX processing. The format we use is basically 3 vectors:
```cpp
pixel_t pixel_value; // int...XPCS processing would sparsify (remove 0 photon data) and save the data in the same sparse format than the one used for saving the peaks in the SMX processing. The format we use is basically 3 vectors:
```cpp
pixel_t pixel_value; // intensity
int pixel_idx; // 1D index in the image
int frame_idx; // index of the beginning of the image in pixel_idx
```
An empty frame is just one entry in the `frame_idx` vector:
```
frame_idx = [0, 25, 36, 36, 54, 98... ]
^
frame #3 is an empty frame (same pixel index as the previous one)
```
**TODO**
- [ ] The `writer_sparse` needs to be refactored for this use case -the current implementation is too specific to SMX. The SMX specific part would be moved to the SMX processing.
- [ ] A sparsifier algorithm / node needs to be implemented. Implementations already exist in the benchmarks.
- [ ] A `sparse_frame`, similar to the one designed for SMX but without background, needs to be implemented. Refactoring needed.https://gitlab.esrf.fr/limagroup/lima2/-/issues/32Static Code Analysis2020-01-08T16:32:27+01:00Samuel DebionneStatic Code AnalysisMany options available these days:
* [clang-tidy](http://clang.llvm.org/extra/clang-tidy/): is a clang-based C++ “linter” tool. Its purpose is to provide an extensible framework for diagnosing and fixing typical programming errors, lik...Many options available these days:
* [clang-tidy](http://clang.llvm.org/extra/clang-tidy/): is a clang-based C++ “linter” tool. Its purpose is to provide an extensible framework for diagnosing and fixing typical programming errors, like style violations, interface misuse, or bugs that can be deduced via static analysis. clang-tidy is modular and provides a convenient interface for writing new checks.
* [iwyu](https://include-what-you-use.org/) (include what you use) : This parses C++ source files and determines the exact include files required to compile that file, no more no less.
* lwyu (link what you use): This is a built in CMake feature that uses options of ld and ldd to print out if executables link more libraries than they actually require.
* [cpplint](https://github.com/cpplint/cpplint): a C++ style checker following Google’s C++ style guide.
* [cppcheck](http://cppcheck.sourceforge.net/): a static analysis tool for C/C++ code. Cppcheck primarily detects the types of bugs that the compilers normally do not detect. The goal is to detect only real errors in the code (i.e. have zero false positives).
They are all pretty well integrated with CMake:
* `<LANG>_CLANG_TIDY` can be set with cache variable `CMAKE_<LANG>_CLANG_TIDY`
* `<LANG>_CPPCHECK` can be set with cache variable `CMAKE_<LANG>_CPPCHECK`
* `<LANG>_CPPLINT` can be set with cache variable `CMAKE_<LANG>_CPPLINT`
* `<LANG>_INCLUDE_WHAT_YOU_USE` can be set with cache variable `CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE`
* `LINK_WHAT_YOU_USE` can be set with cache variable `CMAKE_LINK_WHAT_YOU_USE`
## Clang Tidy
* [x] Agree on a `.clang-tidy` configuration
* [x] Add a CMake option to enable `clang-tidy` on demand
* [ ] Apply clang-tidy suggestions to the codebase when sensible
## Include-what-you-use
* [ ] Add a CMake option to enable `iwyu` on demand
* [ ] Apply iwyu suggestions to the codebase when sensibleSamuel DebionneSamuel Debionnehttps://gitlab.esrf.fr/limagroup/lima2/-/issues/37Processing in Python2020-06-08T19:00:32+02:00Samuel DebionneProcessing in PythonEnable processing tasks to be written in python.
There are multiple options to consider:
- embed the python interpreter in the processing C++ executable
- write the processing in python (using `mpi4py` and/or Boost.MPI python binding)...Enable processing tasks to be written in python.
There are multiple options to consider:
- embed the python interpreter in the processing C++ executable
- write the processing in python (using `mpi4py` and/or Boost.MPI python binding)
* [ ] Check if Python interpreter can be called from multiple (TBB) threadsSamuel DebionneSamuel Debionne2020-06-15https://gitlab.esrf.fr/limagroup/lima2/-/issues/30SmartPix Camera Plugin2020-04-17T17:29:40+02:00Samuel DebionneSmartPix Camera Plugin* [x] Conda package for libsmpx
* [x] Implement `smpx` class, a the low level API to hide dance commands details (mapping command one-to-one)
* [x] Implement camera plugin with slow "controller image transfer"
* [ ] Implement camera ...* [x] Conda package for libsmpx
* [x] Implement `smpx` class, a the low level API to hide dance commands details (mapping command one-to-one)
* [x] Implement camera plugin with slow "controller image transfer"
* [ ] Implement camera plugin with fast RASHPA image transferSamuel DebionneSamuel Debionne2020-07-01https://gitlab.esrf.fr/limagroup/lima2/-/issues/59Update FSM2020-10-27T11:36:45+01:00Samuel DebionneUpdate FSMSome improvements of the FSM transition table:
* [x] Add `reset` action
* [ ] Add `arm` and `soft_trigger` event
* [ ] Add unhandled expection event `exceptions<>`
```c++
make_transition_table(
*"idle"_s + event<event> / [] { throw s...Some improvements of the FSM transition table:
* [x] Add `reset` action
* [ ] Add `arm` and `soft_trigger` event
* [ ] Add unhandled expection event `exceptions<>`
```c++
make_transition_table(
*"idle"_s + event<event> / [] { throw std::runtime_error{"error"}; }
,*"error_handler"_s + exception<std::runtime_error> = X
, "error_handler"_s + exception<std::logic_error> = X
, "error_handler"_s + exception<> / [] { cleanup...; } = X // any exception
);
```v0.1.0Samuel DebionneSamuel Debionnehttps://gitlab.esrf.fr/limagroup/lima2/-/issues/62Refactor with the Frame and Metadata2022-04-05T18:25:55+02:00Samuel DebionneRefactor with the Frame and MetadataFollowing up #60 and #61, refactor
* [x] The HW Interface
* [x] The Simulator and the other plugins
* [x] The processing part that now depends on the `camera::frame_t`Following up #60 and #61, refactor
* [x] The HW Interface
* [x] The Simulator and the other plugins
* [x] The processing part that now depends on the `camera::frame_t`v0.1.0https://gitlab.esrf.fr/limagroup/lima/-/issues/71Python cleanup2018-11-16T16:15:31+01:00Samuel DebionnePython cleanupI was checking this [PR #81](https://github.com/esrf-bliss/Lima/pull/81) on Github and could not find what `module_helper.py` is for. It does not look like it is installed. In the same vein `python\__init__.py` has code that is never exe...I was checking this [PR #81](https://github.com/esrf-bliss/Lima/pull/81) on Github and could not find what `module_helper.py` is for. It does not look like it is installed. In the same vein `python\__init__.py` has code that is never executed.Samuel DebionneSamuel Debionne