Releases: DataLab-Platform/DataLab
v0.18.1
See DataLab roadmap page for future and past milestones.
DataLab Version 0.18.1
💥 Enhancements:
- FWHM computation now raises an exception when less than two points are found with zero-crossing method
- Improved result validation for array-like results by checking the data type of the result
🛠️ Bug fixes:
- Fixed Issue #106 - Analysis: coordinate shifted results on images with ROIs and shifted origin
- Fixed Issue #107 - Wrong indices when extracting a profile from an image with a ROI
- Fixed Issue #111 - Proxy
add_object
method does not support signal/image metadata (e.g. ROI) - Test data plugin / "Create 2D noisy gauss image": fixed amplitude calculation in
cdl.tests.data.create_2d_random
for non-integer data types
📚 Documentation:
- Fixed path separators in plugin directory documentation
- Corrected left and right area descriptions in workspace documentation
- Updated Google style link in contributing guidelines
- Fixed various French translations in the documentation
v0.18.0
DataLab is available on all platforms:
- Conda package
- PyPI package
- Debian package, or Ubuntu package
- Windows installer (see download links below)
ℹ️ General information:
- PlotPy v2.7 is required for this release.
- Dropped support for Python 3.8.
- Python 3.13 is not supported yet, due to the fact that some dependencies are not compatible with this version.
💥 New features and enhancements:
-
New operation mode feature:
- Added "Operation mode" feature to the "Processing" tab in the "Settings" dialog box
- This feature allows to choose between "single" and "pairwise" operation modes for all basic operations (addition, subtraction, multiplication, division, etc.):
- "Single" mode: single operand mode (default mode: the operation is done on each object independently)
- "Pairwise" mode: pairwise operand mode (the operation is done on each pair of objects)
- This applies to both signals and images, and to computations taking N inputs
- Computations taking N inputs are the ones where:
- N(>=2) objects in give N objects out
- N(>=1) object(s) + 1 object in give N objects out
-
New ROI (Region Of Interest) features:
- New polygonal ROI feature
- Complete redesign of the ROI editor user interfaces, improving ergonomics and consistency with the rest of the application
- Major internal refactoring of the ROI system to make it more robust (more tests) and easier to maintain
-
Implemented Issue #102 - Launch DataLab using
datalab
instead ofcdl
. Note that thecdl
command is still available for backward compatibility. -
Implemented Issue #101 - Configuration: set default image interpolation to anti-aliasing (
5
instead of0
for nearest). This change is motivated by the fact that a performance improvement was made in PlotPy v2.7 on Windows, which allows to use anti-aliasing interpolation by default without a significant performance impact. -
Implemented Issue #100 - Use the same installer and executable on Windows 7 SP1, 8, 10, 11. Before this change, a specific installer was required for Windows 7 SP1, due to the fact that Python 3.9 and later versions are not supported on this platform. A workaround was implemented to make DataLab work on Windows 7 SP1 with Python 3.9.
🛠️ Bug fixes:
- Fixed Issue #103 -
proxy.add_annotations_from_items
: circle shape color seems to be ignored.
v0.17.1
DataLab is available on all platforms:
- Conda package
- PyPI package
- Debian package, or Ubuntu package
- Windows installer (see download links below)
ℹ️ PlotPy v2.6.2 is required for this release.
💥 New features and enhancements:
- Image View:
- Before this release, when selecting a high number of images (e.g. when selecting a group of images), the application was very slow because all the images were displayed in the image view, even if they were all superimposed on the same image
- The workaround was to enable the "Show first only" option
- Now, to improve performance, if multiple images are selected, only the last image of the selection is displayed in the image view if this last image has no transparency and if the other images are completely covered by this last image
- Clarification: action "Show first only" was renamed to "Show first object only", and a new icon was added to the action
- API: added
width
andheight
properties toImageObj
class (returns the width and height of the image in physical units) - Windows launcher "start.pyw": writing a log file "datalab_error.log" when an exception occurs at startup
🛠️ Bug fixes:
- Changing the color theme now correctly updates all DataLab's user interface components without the need to restart the application
ℹ️ Other changes:
- OpenCV is now an optional dependency:
- This change is motivated by the fact that the OpenCV conda package is not maintained on Windows (at least), which leads to an error when installing DataLab with conda
- When OpenCV is not installed, only the "OpenCV blob detection" feature won't work, and a warning message will be displayed when trying to use this feature
v0.17.0
ℹ️ PlotPy v2.6 is required for this release.
💥 New features and enhancements:
- Menu "Computing" was renamed to "Analysis" for both Signal and Image panels, to better reflect the nature of the features in this menu
- Regions Of Interest (ROIs) are now taken into account everywhere in the application where it makes sense, and not only for the old "Computing" menu (now "Analysis") features. This closes Issue #93. If a signal or an image has an ROI defined:
- Operations are done on the ROI only (except if the operation changes the data shape, or the pixel size for images)
- Processing features are done on the ROI only (if the destination object data type is compatible with the source object data type, which excludes thresholding, for instance)
- Analysis features are done on the ROI only, like before
- As a consequence of previous point, and for clarity:
- The "Edit Regions of interest" and "Remove all Regions of interest" features have been moved from the old "Computing" (now "Analysis") menu to the "Edit" menu where all metadata-related features are located
- The "Edit Regions of interest" action has been added to both Signal and Image View vertical toolbars (in second position, after the "View in a new window" action)
- Following the bug fix on image data type conversion issues with basic operations, a new "Arithmetic operation" feature has been added to the "Operations" menu for both Signal and Image panels. This feature allows to perform linear operations on signals and images, with the following operations:
- Addition:
obj3 = (obj1 + obj2) * a + b
- Subtraction:
obj3 = (obj1 - obj2) * a + b
- Multiplication:
obj3 = (obj1 * obj2) * a + b
- Division:
obj3 = (obj1 / obj2) * a + b
- Addition:
- Improved "View in a new window" and "ROI editor" dialog boxes size management: default size won't be larger than DataLab's main window size
- ROI editor:
- Added toolbars for both Signal and Image ROI editors, to allow to zoom in and out, and to reset the zoom level easily
- Rearranged the buttons in the ROI editor dialog box for better ergonomics and consistency with the Annotations editor ("View in a new window" dialog box)
- Application color theme:
- Added support for color theme (auto, light, dark) in the "Settings" dialog box
- The color theme is applied without restarting the application
🛠️ Bug fixes:
- Intensity profile / Segment profile extraction:
- When extracting a profile on an image with a ROI defined, the associated PlotPy feature show a warning message ('UserWarning: Warning: converting a masked element to nan.') but the profile is correctly extracted and displayed, with NaN values where the ROI is not defined.
- NaN values are now removed from the profile before plotting it
- Simple processing features with a one-to-on mapping with a Python function (e.g.
numpy.absolute
,numpy.log10
, etc.) and without parameters: fix result object title which was systematically ending with "|" (the character that usually precedes the list of parameters) - Butterworth filter: fix cutoff frequency ratio default value and valid range
- Fix actions refresh issue in Image View vertical toolbar:
- When starting DataLab with the Signal Panel active, switching to the Image View was showing "View in a new window" or "Edit Regions of interest" actions enabled in the vertical toolbar, even if no image was displayed in the Image View
- The Image View vertical toolbar is now correctly updated at startup
- View in a new window: cross section tools (intensity profiles) stayed disabled unless the user selected an image through the item list - this is now fixed
- Image View: "Show contrast panel" toolbar button was not enabled at startup, and was only enabled when at least one image was displayed in the Image View - it is now always enabled, as expected
- Image data type conversion:
- Previously, the data type conversion feature was common to signal and image processing features, i.e. a simple conversion of the data type using NumPy's
astype
method - This was not sufficient for image processing features, in particular for integer images, because even if the result was correct from a numerical point of view, underflow or overflow could be legitimately seen as a bug from a mathematical point of view
- The image data type conversion feature now relies on the internal
clip_astype
function, which clips the data to the valid range of the target data type before converting it (in the case of integer images)
- Previously, the data type conversion feature was common to signal and image processing features, i.e. a simple conversion of the data type using NumPy's
- Image ROI extraction issues:
- Multiple regressions were introduced in version 0.16.0:
- Single circular ROI extraction was not working as expected (a rectangular ROI was extracted, with unexpected coordinates)
- Multiple circular ROI extraction lead to a rectangular ROI extraction
- Multiple ROI extraction was no longer cropping the image to the overall bounding box of the ROIs
- These issues are now fixed, and unit tests have been added to prevent regressions:
- An independent test algorithm has been implemented to check the correctness of the ROI extraction in all cases mentioned above
- Tests cover both single and multiple ROI extraction, with circular and rectangular ROIs
- Multiple regressions were introduced in version 0.16.0:
- Overflow and underflow issues in some operations on integer images:
- When processing integer images, some features were causing overflow or underflow issues, leading to unexpected results (correct results from a numerical point of view, but not from a mathematical point of view)
- This issue only concerned basic operations (addition, subtraction, multiplication, division, and constant operations) - all the other features were already working as expected
- This is now fixed as result output are now floating point images
- Unit tests have been added to prevent regressions for all these operations
v0.16.4
DataLab Version 0.16.4
This is a minor maintenance release.
🛠️ Bug fixes:
- Requires PlotPy v2.4.1 or later to fix the following issues related to the contrast adjustment feature:
- A regression was introduced in an earlier version of PlotPy: levels histogram was no longer removed from
contrast adjustment panel when the associated image was removed from the plot - This is now fixed: when an image is removed, the histogram is removed as well and
the contrast panel is refreshed (which was not the case even before the regression)
- A regression was introduced in an earlier version of PlotPy: levels histogram was no longer removed from
- Ignore
AssertionError
in config_unit_test.py when executing test suite on WSL
📚 Documentation:
- Fix class reference in
Wrap11Func
documentation
v0.16.3
See DataLab roadmap page for future and past milestones.
DataLab Version 0.16.3
🛠️ Bug fixes:
- Fixed Issue #84 - Build issues with V0.16.1:
signal
name conflict, ...- This issue was intended to be fixed in version 0.16.2, but the fix was not complete
- Thanks to @rolandmas for reporting the issue and for the help in investigating the problem and testing the fix
- Fixed Issue #85 - Test data paths may be added multiple times to
cdl.utils.tests.TST_PATH
- This issue is related to Issue #84
- Adding the test data paths multiple times to
cdl.utils.tests.TST_PATH
was causing the test data to be loaded multiple times, which lead to some tests failing (a simple workaround was added to V0.16.2: this issue is now fixed) - Thanks again to @rolandmas for reporting the issue in the context of the Debian packaging
- Fixed Issue #86 - Average of N integer images overflows data type
- Fixed Issue #87 - Image average profile extraction:
AttributeError
when trying to edit profile parameters - Fixed Issue #88 - Image segment profile: point coordinates inversion
v0.16.2
See DataLab roadmap page for future and past milestones.
DataLab Version 0.16.2
This release requires PlotPy v2.4.0 or later, which brings the following bug fixes and new features:
-
New constrast adjustment features and bug fixes:
- New layout: the vertical toolbar (which was constrained in a small area on the
right side of the panel) is now a horizontal toolbar at the top of the panel,
beside the title - New "Set range" button: allows the user to set manually the minimum and maximum
values of the histogram range - Fixed histogram update issues when no image was currently selected (even if the
an image was displayed and was selected before) - Histogram range was not updated when either the minimum or maximum value was set
using the "Minimum value" or "Maximum value" buttons (which have been renamed to
"Min." and "Max." in this release) - Histogram range was not updated when the "Set full range" button was clicked, or
when the LUT range was modified using the "Scales / LUT range" form in "Properties"
group box
- New layout: the vertical toolbar (which was constrained in a small area on the
-
Image view context menu: new "Reverse X axis" feature
ℹ️ Minor new features and enhancements:
- Image file types:
- Added native support for reading .SPE, .GEL, .NDPI and .REC image files
- Added support for any
imageio
-supported file format through configuration file (entryimageio_formats
may be customized to complement the default list of supported formats: see documentation for more details)
🛠️ Bug fixes:
-
Image Fourier analysis:
- Fixed logarithmic scale for the magnitude spectrum (computing dB instead of natural logarithm)
- Fixed PSD computation with logarithmic scale (computing dB instead of natural logarithm)
- Updated the documentation to explicitly mention that the logarithmic scale is in dB
-
Fixed Issue #82 - Macros are not renamed in DataLab after exporting them to Python scripts
-
ResultProperties
object can now be added toSignalObj
orImageObj
metadata even outside a Qt event loop (because the label item is no longer created right away) -
Progress bar is now automatically closed as expected when an error occurrs during a long operation (e.g. when opening a file)
-
Difference, division, ...: dialog box for the second operand selection was allowing to select a group (only a signal or an image should be selected)
-
When doing an operation which involves an object (signal or image) with higher order number than the current object (e.g. when subtracting an image with an image from a group below the current image), the resulting object's title now correctly refers to the order numbers of the objects involved in the operation (e.g., to continue with the subtraction example mentioned above, the resulting object's title was previously referring to the order number before the insertion of the resulting image)
-
Added support for additional test data folder thanks to the
CDL_DATA
environment variable (useful for testing purposes, and especially in the context of Debian packaging)
v0.16.1
DataLab Version 0.16.1
Since version 0.16.0, many validation functions have been added to the test suite.
The percentage of validated compute functions has increased from 37% to 84% in this release.
NumPy 2.0 support has been added with this release.
ℹ️ Minor new features and enhancements:
- Signal and image moving average and median filters:
- Added "Mode" parameter to choose the mode of the filter (e.g. "reflect", "constant", "nearest", "mirror", "wrap")
- The default mode is "reflect" for moving average and "nearest" for moving median
- This allows to handle edge effects when filtering signals and images
🛠️ Bug fixes:
-
Fixed Canny edge detection to return binary image as
uint8
instead ofbool
(for consistency with other image processing features) -
Fixed Image normalization: lower bound was wrongly set for
maximum
method -
Fixed
ValueError
when computing PSD with logarithmic scale -
Fixed Signal derivative algorithm: now using
numpy.gradient
instead of a custom implementation -
Fixed SciPy's
cumtrapz
deprecation: usecumulative_trapezoid
instead -
Curve selection now shows the individual points of the curve (before, only the curve line width was broadened)
-
Windows installer: add support for unstable releases (e.g., 0.16.1.dev0), thus allowing to easily install the latest development version of DataLab on Windows
-
Fixed Issue #81 - When opening files, show progress dialog only if necessary
-
Fixed Issue #80 - Plotting results: support for two use cases
- The features of the "Computing" menu produce results (scalars): blob detection (circle coordinates), 2D peak detection (point coordinates), etc. Depending on the feature, result tables are displayed in the "Results" dialog box, and the results are also stored in the signal or image metadata: each line of the result table is an individual result, and each column is a property of the result - some results may consist only of a single individual result (e.g., image centroid or curve FHWM), while others may consist of multiple individual results (e.g., blob detection, contour detection, etc.).
- Before this change, the "Plot results" feature only supported plotting the first individual result of a result table, as a function of the index (of the signal or image objects) or any of the columns of the result table. This was not sufficient for some use cases, where the user wanted to plot multiple individual results of a result table.
- Now, the "Plot results" feature supports two use cases:
- "One curve per result title": Plotting the first individual result of a result table, as before
- "One curve per object (or ROI) and per result title": Plotting all individual results of a result table, as a function of the index (of the signal or image objects) or any of the columns of the result table
- The selection of the use case is done in the "Plot results" dialog box
- The default use case is "One curve per result title" if the result table has only one line, and "One curve per object (or ROI) and per result title" otherwise
v0.16.0
DataLab Version 0.16.0
💥 New features and enhancements:
-
Major user interface overhaul:
- The menu bar and toolbars have been reorganized to make the application more
intuitive and easier to use - Operations and processing features have been regrouped in submenus
- All visualization-related actions are now grouped in the plot view vertical toolbar
- Clarified the "Annotations" management (new buttons, toolbar action, ...)
- The menu bar and toolbars have been reorganized to make the application more
-
New validation process for signal and image features:
- Before this release, DataLab's validation process was exclusively done from the
programmer's point of view, by writing unit tests and integration tests, thus
ensuring that the code was working as expected (i.e. that no exception was raised
and that the behavior was correct) - With this release, a new validation process has been introduced, from the user's
point of view, by adding new validation functions (marked with the
@pytest.mark.validation
decorator) in the test suite - A new "Validation" section in the documentation explains how validation is done
and contains a list of all validation functions with the statistics of the
validation process (generated from the test suite) - The validation process is a work in progress and will be improved in future versions
- Before this release, DataLab's validation process was exclusively done from the
-
"Properties" group box:
- Added "Scales" tab, to show and set the plot scales:
- X, Y for signals
- X, Y, Z (LUT range) for images
- Added "Scales" tab, to show and set the plot scales:
-
View options:
- New "Show first only" option in the "View" menu, to show only the first curve
(or image) when multiple curves (or images) are displayed in the plot view - New (movable) label for FWHM computations, additional to the existing segment annotation
- New "Show first only" option in the "View" menu, to show only the first curve
-
I/O features:
- Added support for reading and writing .MAT files (MATLAB format)
- Create a new group when opening a file containing multiple signals or images (e.g. CSV file with multiple curves)
-
Add support for binary images
-
Signal ROI extraction: added new dialog box to manually edit the ROI lower and upper bounds after defining the ROI graphically
ℹ️ New Signal operations, processing and computing features:
Menu | Submenu | Features |
---|---|---|
New | New signal | Exponential, pulse, polynomial, experimental (manual input) |
Operations | Exponential, Square root, Power | |
Operations | Operations with a constant | +, -, *, / |
Processing | Axis Transformation | Reverse X-axis |
Processing | Level Adjustment | Offset correction |
Processing | Fourier analysis | Power spectrum, Phase spectrum, Magnitude spectrum, Power spectral density |
Processing | Frequency filters | Low-pass, High-pass, Band-pass, Band-stop |
Processing | Windowing (Hanning, Hamming, Blackman, Blackman-Harris, Nuttall, Flat-top, ...) | |
Processing | Fit | Linear fit, Sinusoidal fit, Exponential fit, CDF fit |
Computing | FWHM (Zero-crossing method), X value @ min/max, Sampling period/frequency, Dynamic parameters (ENOB, SNR, SINAD, THD, SFDR), -3dB bandwidth, Contrast |
ℹ️ New Image operations, processing and computing features:
Menu | Submenu | Features |
---|---|---|
Operations | Exponential | |
Operations | Intensity profiles | Profile along a segment |
Operations | Operations with a constant | +, -, *, / |
Processing | Level Adjustment | Normalization, Clipping, Offset correction |
Processing | Fourier analysis | Power spectrum, Phase spectrum, Magnitude spectrum, Power spectral density |
Processing | Thresholding | Parametric, ISODATA, Li, Mean, Minimum, Otsu, Triangle, Yen |
🛠️ Bug fixes:
- Fixed a performance issue due to an unnecessary refresh of the plot view when adding a new signal or image
- Fixed Issue #77 - Intensity profiles: unable to accept dialog the second time
- Fixed Issue #75 - View in a new window: curve anti-aliasing is not enabled by default
- Annotations visibility is now correctly saved and restored:
- Before this release, when modifying the annotations visibility in the separate plot view, the visibility was not saved and restored when reopening the plot view
- This has been fixed upstream in PlotPy (v2.3.3)
v0.15.1
See DataLab roadmap page
for future and past milestones.
DataLab Version 0.15.1
🛠️ Bug fixes:
- Fixed Issue #68 - Slow loading of even simple plots:
- On macOS, the user experience was degraded when handling even simple plots
- This was due to the way macOS handles the pop-up windows, e.g. when refreshing the
plot view ("Creating plot items" progress bar), hence causing a very annoying
flickering effect and a global slowdown of the application - This is now fixed by showing the progress bar only after a short delay (1s), that
is when it is really needed (i.e. for long operations) - Thanks to @marcel-goldschen-ohm for the
very thorough feedback and the help in testing the fix
- Fixed Issue #69 - Annotations should be read-only in Signal/Image View
- Regarding the annotations, DataLab's current behavior is the following:
- Annotations are created only when showing the signal/image in a separate window
(double-click on the object, or "View" > "View in a new window") - When displaying the objects in either the "Signal View" or the "Image View", the
annotations should be read-only (i.e. not movable, nor resizable or deletable)
- Annotations are created only when showing the signal/image in a separate window
- However, some annotations were still deletable in the "Signal View" and the
"Image View": this is now fixed - Note that the fact that annotations can't be created in the "Signal View" or the
"Image View" is a limitation of the current implementation, and may be improved in
future versions
- Regarding the annotations, DataLab's current behavior is the following:
DataLab Version 0.15.0
🎁 New installer for the stand-alone version on Windows:
- The stand-alone version on Windows is now distributed as an MSI installer (instead
of an EXE installer) - This avoids the false positive detection of the stand-alone version as a
potential threat by some antivirus software - The program will install files and shortcuts:
- For current user, if the user has no administrator privileges
- For all users, if the user has administrator privileges
- Installation directory may be customized
- MSI installer allows to integrate DataLab's installation seemlessly in an
organization's deployment system
💥 New features and enhancements:
- Added support for large text/CSV files:
- Files over 1 GB (and with reasonable number of lines) can now be imported
as signals or images without crashing the application or even slowing it down - The file is read by chunks and, for signals, the data is downsampled to a
reasonable number of points for visualization - Large files are supported when opening a file (or dragging and dropping a file
in the Signal Panel) and when importing a file in the Text Import Wizard
- Files over 1 GB (and with reasonable number of lines) can now be imported
- Auto downsampling feature:
- Added "Auto downsampling" feature to signal visualization settings (see "Settings"
dialog box) - This feature allows to automatically downsample the signal data for visualization
when the number of points is too high and would lead to a slow rendering - The downsampling factor is automatically computed based on the configured
maximum number of points to display - This feature is enabled by default and may be disabled in the signal visualization
settings
- Added "Auto downsampling" feature to signal visualization settings (see "Settings"
- CSV format handling:
- Improved support for CSV files with a header row (column names)
- Added support for CSV files with empty columns
- Open/save file error handling:
- Error messages are now more explicit when opening or saving a file fails
- Added a link to the folder containing the file in the error message
- Added "Plugins and I/O formats" page to the Installation and Configuration Viewer
(see "Help" menu) - Reset DataLab configuration:
- In some cases, it may be useful to reset the DataLab configuration file to its
default values (e.g. when the configuration file is corrupted) - Added new
--reset
command line option to remove the configuration folder - Added new "Reset DataLab" Start Menu shortcut to the Windows installer
- In some cases, it may be useful to reset the DataLab configuration file to its
🛠️ Bug fixes:
- Fixed Issue #64 - HDF5 browser does not show datasets with 1x1 size:
- HDF5 datasets with a size of 1x1 were not shown in the HDF5 browser
- Even if those datasets should not be considered as signals or images, they are now
shown in the HDF5 browser (but not checkable, i.e. not importable as signals or images)
Full Changelog: v0.15.0...v0.15.1