LIMA Release Notes This is the release notes of LIMA, the library for image acquisition. You can find information related to new features and bug fixes. Some bug fix on new features can reference gitlab.esrf.fr merge requests as MR-XXX. Version v1.9.6 released on September 25th 2020 ---------------------------------------------- New features * lima_conda_build script: local Conda compilation with optimization for native architecture Bug fixes * MR-131: InvalidValue exception, roi-out-of-limits when applying rotation with an image_roi already defined fix computation of the max_roi according to the current binning and rotation Add equality operators for Size and their missing python bindings for Point, Size and FrameDim Add test for ROI computation for every bin / flip / rot * MR-130: continuous acquisition and hdf5 saving broken fix deadlock resulting in saving task stall and consequently AcqStatus being AcqRunning indefinitely fix _calcAcqStatus when acq_nb_frames == 0 * MR-120: stopAcq() destroying non empty allocator Do not destroy default Allocator until it's empty Camera updates * Maxipix 1.9.1: fixed latency_time calculation when in hardware trigger mode * Pilatus 1.9.1: * Bug Fix: IntTrigMult trigger mode, mode to software trig each image exposing, has been repaired, and can be use now to have faster software acquisition sequence * New Features: Tango: new properties to run the server on a slave computer, not only on the DCU computer: - tmpfs_path. default = /lima_data - host_name, default = localhost - host_port, default = 41234 - config_path, default = /home/det/p2_det/config/cam_data/camera.def * Simulator 1.9.2: * Fix EDF Parser (allow smaller header block of 512Kib) * Fix Prefetch mode (segfault and/or black images with some use cases) New cameras * Arinax: The OAV B-ZOOM is an On-Axis Video-microscope with a hybrid zoom system used for parallax free observation of micrometer sized crystals. It is optimized for MX crystallography beamlines and high throughput stations in Synchrotrons. * QHYccd: high-performance scientific grade CMOS and CCD cameras Version v1.9.5 released on July 23th 2020 ---------------------------------------- New features * HDF5 container: * new attributes "file_name" and "file_time" to keep track of the original file path and creation date. * adjust the image dataset size to the number of acquired frames * in manual saving, keep a contiguous frame dataset * Avoid Tango dead-lock timeout due to lengthy memory allocations Bug fixes * fix cmake find_package_handle_standard_args warning * fix conversion compiler warning when calling import_array macro. * HDF5 container: * Fix parallel saving: * Refactor SaveContainerHdf5::_File: * Add debug information when writing HDF5 Dataset chunk fails * Remove unused variables * Use AutoPtr for dynamically-allocated objects * Simplify initialization at _open * fixed bug with number of frames for last file. * adjust the image dataset to the real number of acquired frames * Fix bug in CtControl::unregisterImageStatusCallback and improve code: * Allow unregisterImageStatusCallback if acq is not Ready * Do not throw exception: it is called from cb destructor * Status can be AcqFault, which is perfectly legal to unregister * Cosmetics * ThreadUtils: remove obsolete declarations in ReadWriteLock Version v1.9.4 released on May 25th 2020 ---------------------------------------- New features * IntTrigMult: fix check of extra calls to CtControl::startAcq() * Protect if detector is Ready but has not injected yet the last image into Lima * HDF5: NXmeasurement does not exist, use NXcollection instead Bug fixes * remove (gcc) compiler warnings * memory leak in ImageZCompression (HDF5GZ) * CtSaving: fix thread synchronization issues * CtBuffer: wait for processing to finish before releasing all mapped buffers * CtSaving_Compression: refactoring of the ZBufferHelper class Camera news * Eiger (v1.9.4): Dectris Eiger camera submodule now support setting for http and stream port. Version v1.9.3 released on February 21th 2020 --------------------------------------------- New features * HDF5 schema has been simplified and now fits better with Nexus standard. Bug fixes * Fix HW saving when acq_nb_frames is not a multiple of FramesPerFile. * When stopping the acquisition, update the number of expected frame to save. camera news * Eiger (v1.9.3): Dectris Eiger2 now supported by the eiger camera submodule * Basler (v1.9.3): Fixed segfault with color models, Scout model does not support AcquisitionFrameCount. * Basler (v1.9.2): Fixed a segmentation fault error when Roi is set and camera is running in continuous mode (live mode)/ Version v1.9.2 released on February 17th 2020 --------------------------------------------- New features * CI pipeline on gitlab.esrf.fr has now downstream test on simulator camera submodule Bug fixes * check if hdf5 attribute exists before creating it * Resolve "saving statistic missed" * Flush statistic log file * Use more explicit variable name in CtControl::newImageSaved Version v1.9.1 released on September 13th 2019 ---------------------------------------------- New features * More conda packages for cameras are now supported: andor3, andor, basler, dexela, eiger, frelon, frelon, imxpad, maxipix, marccd, merlin, mythen3, pco, pilatus, pixirad, pointgrey, prosilica, simulator, slsdetector, ueye, v4l2, xh * Some refactoring and optimisation of the software buffer classes * Support added for Numa (non-uniform memory access) memory management Bug Fixes * CBF saving format now fits with miniCBF spec for Pilatus detectors * Video: fixed issue when taking 8/16-bit images and then changing to Accumulation New cameras * PCO usb * Frelon 16 Version v1.8.0 released on February 2nd 2019 -------------------------------------------- With this release we introduced the following new features: * Build system has been refactored to use CMake, a cross-platform build system (Windows and Linux) * Building camera either standalone or using Lima as master project * Better support for C++ developers (with CMake packages) * Install.(sh|bat) to ease build and installation for CMake averse :-) * Conda binary packages for processlib, LImA core and some cameras and pytango device server * Support for Python 3 * CI running on ESRF's Gitlab instance * Documentation improvements and migrated to ReadTheDocs (https://lima1.readthedocs.io) * Use semantic versionning * New HDF5 layout, direct chunk and bitshuffle LZ4 / gzip compression support * New BPM pytango plugin, Beam Position Monitor * Simulator improvements (new prefetch and read from files modes) ## New camera plugins * ZWO camera plugin (thanks to Jens Krueger) * SlsDetector (PSI Eiger) camera plugin (thanks to Alejandro Homs) * FLI (Finger Lake Instrument) camera plugin (thanks to Laurent Claustre) * Lambda (Quantum) camera plugin (thanks to Teresa Nunez) Stable branch core-1.7 ---------------------- core-1.7.2 2017-02-03 Bug Fixes * video: Fixed an inconsistency for scientific (monochrome) camera between getSupportedVideoMode() and getMode(). core-1.7.1 2017-01-06 Features * new tag 1.7.0 for cameras: andor/andor3/basler/dexela/espia/frelon/ maxipix/perkinelmer/pixirad/pointgrey/prosilica/roperscientific/simulator/ ueye/v4l2/xh Bug Fixes * maxipix: maxipix-1.7.1, Fixed for setFillMode, 2 reconstructionTask objects created one passed to HwInterface the other kept internally in Camera object * basler: basler-1.7.2, fixed monochrome vs. color mode * basler: basler.-1.7.1, fixed bug introduced in 1.7.0 for Roi increments * saving cbf: fixed Makefile + bison parser generation New patch version just for CBF compilation core-1.7.0 2017-04-01 Features * Makefile: Improve Makefile library dependency definitions for parallel build * tango: server with new saving statistics and with abort command * basler: for color camera added yuv422packed video format * saving header: add acquisiton and images parameters * saving: added statistics. We can now have saving, compression and incoming speed statistics changing cbf,edf,fits,hdf5,nxs and tiff to manage statistics * software operation: add possibility to force a copy for the first operation internals operation are normally done in place but it's not always safe with some type of memory. i.e: You can not memove on a memory map, this cause a crash. * saving: we can now write severals frames in parallel. To control saving concurrency, you have to change the number of writing task with method get/setMaxConcurrentWritingTask. This commit contains also a small fix for write statistics: As we recreate the container when changing saving type, thoses parameters were not keeped. We now set event callback in case of error when writing. * saving cbf: compession optimisation with CBFMiniHeader format. For now is only available for INT 32 images. * control: added abort acquisition method * basler: Pylon5 support and find proper pylon link flags Bug Fixes * video: fixed synchro to image when changing video mode. - WARNING: only applied when live is started on already running * saving cbf: fixed a bug in cbf header * image: fixed roi when software operation is activated (rotation,flip...) * image: fixed maximum roi Stable branch core-1.6 ---------------------- core-1.6.2 2016-09-29 Features * tango python: added support for edf.lz4 * basler: Merge pull request for new initialisation with serial number, user name or IP address. * pixirad: documentation updated, final cleanup of the code. Bug fixes * image: fixed getRoi, returns now full frame roi if no roi was set. core-1.6.1 2016-08-04 Features * maxipix: added initialization sequence in PriamSerial contructor in case of cold start. * andor: added enum type for BaselineClamp() * tango python andor: updated properties vs_speed/p_gain/adc_speed to DevString type as for the attributes Changed baseline_clamp property/attribute to DevString type Managed UNSUPPORTED enum for baseline_clamp/high_capacity/fan_mode property/attributes Removes label for all attributes (default is now label = attribute name) * Updated the doc/index.rst documentation for new/changed properties/attributes Bug fixes * core: buildfix on arm * andor: fixed inverted enum value for BaselineClamp * tango python: fix in LimaCCDs configStore() command, now it accepts a list of module names * andor: fixed a bug in getImageType() throwing exception in some conditions core-1.6.0 2016-05-23 Features * marccd: merged marccd from esrf * merlin: new plugin for Merlin camera family * pco: windows 64 version working * xapd: refactoring and new version delivered * sps: move Sps project to github.com * maxipix: c++ version delivered !! * spec: added a new hook for user macros (user2_) for add and remove of roicoutner, for further use like for zap pseudo counter. * core: accumulation, use sse register to sum 16 bits images (optimization) * core: prepare optimization, for linux just retrieved memory pages instead of clearing all memory. * pixirad: new camera plugin for Pixirad camera family * rayonixhs: a new readout mode been added, HDR16, thanks to the latest rayonix craydl sdk update. * dexela: linux version available * saving: add lz4 compression for edf format * saving: changed the buffer write size to optimize GPFS throughput, this optimization was done for cbf and edf * perkinelmer: new version to manage XRD_1611_CP3 * tango python: added tiff as saving format * core: Synchronize with ImageStatusCallbacks at the beginning of prepareAcq Added CtControl::set/getPrepareTimeout methods (default 2 sec) Include Simulator test_prepare_timeout.py script * frelon: added Frelon::Camera::DeadTimeChangedCallback to notify Lima (Sync) about changes in the detector-defined min_lat_time (valid_ranges) Added Frelon TimeCalc and Acc. Mode test Python scripts Added Frelon Readout & Charge-Transfer times by means of float registers * Frelon::SyncCtrlObj latency time now includes the detector dead time * core: support dynamic min_latency_time with Accumulation in CtAcquisition * andor3: compressed data (Mono12Packed) speed up acquisition and IntTrigMult trigger mode added * imxpad: stable version working with XpadServer version 3.0.X * background subtraction: add constant offset before subtraction to avoid data truncated to 0 * eiger: new version with stream and hardware saving tested * eiger: added camera module (hardware saving + stream) * saving: Could now disable the directory event feature add frames per file parameters in hardware saving * tango: split python and cpp server into two submodules * v4l2:f ixed pb when calling prepareAcq() several times now start in the native camera video mode. fixed setMode * ueye: patched for new sdk (4.61) * prosilica: new version with monitor mode * core: Manage monitor mode for cameras like prosilica or basler * imxpad: for server version 3.X * accumulation: enhanced Accumulation and acc_mode with new mode for threshold and/or offset correction. Updated Spec and Tango for that purpose too. * spec: add new accumulation mode for threshold and/or offset correction * simulator: add IntTrigMulti capability * saving: add timestamp in Nexus file * v4l2: new camera plugin v4l2 now managed. * CCfits and cfitsio: configure script will be called only once * accumulation: extend accumulation algorithm to be able to ignore noise lower than a threshold * added extr module type CameraPlugin for exception * added extra path for future maxipix_c++ in configure.py Bug Fixes * core: accumulation, fixed a memory allocation. * basler: external trigger fixed for ace,scout and pilot cameras * imxpad: camWaitAcqEnd remove from prepareAcq and startAcq, waiting time move to 1s for camWaitAcqEnd() SetModuleMask function added allowing to acquire smaller images, Abort fixed when images are transfered via TCP * marccd: Add Mutex to setImagePath/getImagePath/..., removed useless getNbAcquiredFrames() * merlin:check status for detector idle before startAcq, added image resizing & (image stacking - Soleil request) * pco: a lot of fixes !! * pilatus: extra delay removed due to wrong test in internal trigger * ueye: fixed image bytes depth for mono 12bits camera * spec:fixed pb when removing a roicounter, now update properly LIMA_ROI_SRV * Set the RunLevel to 5 to allow other tasks (mask/bgd/ff/..) to be applied before roicounter * rayonixhs: added missing callback function call for readout mode change in image_type (bpp16<-->bpp32) * core: ThreadUtils, moved thread id to protected * tango python: windows, fixed path issue * processlib: windows, fixed compilation issue * core: fixed CPU overload bug in ImageStatusThread after registering multiple ImageStatusCallbacks * core: fixed bug crashing when SyncCtrlObj is deleted before CtAcquisition * image: disable roi when equal to full size (optimization) * andor: fix for mt-safe in error exception handling * saving: fixed checkValid() missing #ifdef for TIFF, only 1 frame per file supported * image: fixed a infinite loop in checkDirectoryAccess() when dir is an empty string * image: fixed in reevalutation with _setHSRoi * andor3: fixed bugs with Bin/Roi, Bin can change the hw_roi with extra stride columns fixed bug with Bin enum. and bug with getBin * buffer: memory management, avoid allocating memory if hardware saving is activated (optimization) * image: reevaluate software roi when binning change * image: fixed bug with new monitor mode * sip: replaced tabs with blanks, otherwise will not work with python 3. * saving: take into account the frame id in the saving callback * xh:use int32_t instead of long remove polluting debug message correct sip for getMaxFrames (use str::string instead of string) added getMaxFrames * windows: fix export in ValidRangesCallback * espia: added Espia::BufferMgr::CamMultiFrameXferMode enumeration type * maxipix: fixed bug in Maxipix priam port number, now range from 1 to 5 * tango python: fixed again wizard mode * processlib: windows compilation + roi counters mask patch * prosilica: fixed a bug with non-color camera continuous acquisition * spec: fixed bug with getNames() call when server is stopped. * CCfits: fixed installation path * control: fixed deadlock in unregisterImageStatusCallback * video: fixing dead lock when stopping and changing expo time. * spec: limaroi_server_initarr: use only rois that are defined for the actual lima ccdname * accumulation: fixed memory allocation. Stable branch core-1.5 ---------------------- core-1.5.6 2015-12-21 Features * New tags for submodules: frelon-1.5.0/andor-1.5.0/pilatus-1.5.0 * Include Simulator test_prepare_timeout.py script * Include COMPILE_MYTHEN3 into list of exported vars in config.inc_default * frelon: Added Frelon native min_latency_time (Readout & Transfer) support * control: Support dynamic min_latency_time with Accumulation in CtAcquisition Bug Fixes * control: Synchronize with ImageStatusCallbacks at the beginning of prepareAcq * control: Added set/getPrepareTimeout methods (default 2 sec) core-1.5.5 2015-12-11 Features * New tags for submodules: spec-1.4.7/andor3.1.5.1/tango-camera-andor3-1.5.1 * andor3: Compressed data (Mono12Packed) and IntTrigMult trigger mode * tango python: andor3 updaded, no more destride attr * spec: andor3 updaded, no more destride option Bug Fixes * image: fixed checkValid() missing #ifdef for TIFF, only 1 frame per file supported * saving: Fixed a infinite loop in checkDirectoryAccess() when dir is an empty string * image: fixed in reevalutation with _setHSRoi * basler: external trigger fixes * image: reevaluate software roi when binning change core-1.5.4 2015-08-14 Features * New tags for submodules: Espia-1.5.1/maxipix-1.5.2/v4l2-1.5.3/ueye-1.5.0/tango-camera-andor3-1.5.0 Bug Fixes * hdf5: revert install in Makefile core.1.5.3 2015-08-12 Features * control: accumalation mode enhanced again core-1.5.2 2015-07-27 Features * New tag for andor3 needs core-1.5 for using accumulation mode * New tag for prosilica under core-1.5 * simulator: add IntTrigMulti capability * Updated camera/prosilica Bug Fixes * control: fixed deadlock in unregisterImageStatusCallback * video: fixing dead lock when stopping and changing expo time. core-1.5.1 2015-06-19 Features * New tags: v4l2, basler, tango/camera/v4l2. basler-1.5.1/tango-camera-v4l2-1.5.1/v4l2-1.5.1 * Enhanced Accumulation and acc_mode with new mode for threshold and/or offset correction. Updated Spec and Tango for that purpose too. * accumulation: extend accumulation algorithm to be able to ignore noise lower than a threshold