See DataLab roadmap page for future and past milestones.
DataLab Version 1.0.1
This major release represents a significant milestone for DataLab with numerous enhancements across all areas. The changes are organized by category for easier navigation.
Note: Version 1.0.1 is a patch release that addresses Windows installer limitations in version 1.0.0, where it was not possible to install DataLab V1.0 alongside earlier major versions (V0.20 and earlier) despite the intended coexistence support. This release contains no new features or functional changes.
🎨 User Interface & Workflow
Menu reorganization:
- New "Create" menu: Separated object creation functionality from the "File" menu, placed between "File" and "Edit" menus for clearer organization
- All "File > New [...]" actions moved to "Create" menu
- Migration note: Find signal/image creation actions in the new "Create" menu
- New "ROI" menu: Dedicated menu for Region of Interest management, positioned between "Edit" and "Operations" menus
- New "Annotations" submenu: Consolidated annotation operations in the "Edit" menu
- New "Metadata" submenu: Grouped all metadata operations in the "Edit" menu
Interactive object editing:
- Interactive object creation: Creation parameters can be modified after object creation via new "Creation" tab in properties panel
- Apply changes without creating new objects, preserving subsequent processing
- Available for parametric generators (Gaussian, sine, etc.)
- Interactive 1-to-1 processing: Processing parameters can be adjusted and reapplied via new "Processing" tab
- Update result objects in-place with modified parameters
- Only for parametric operations (filters, morphology, etc.)
- Recompute feature: New "Recompute" action (Ctrl+R) to quickly reprocess objects with stored parameters
- Works with single or multiple objects
- Automatically updates results when source data changes
- Automatic ROI analysis update: Analysis results automatically recalculate when ROI is modified
- Works for all analysis operations (statistics, centroid, etc.)
- Silent background recomputation for immediate feedback
- Select source objects: Navigate to source objects used in processing via new "Edit" menu action
- Handles all processing patterns (1-to-1, 2-to-1, n-to-1)
- Shows informative messages if sources no longer exist
- Processing history: New "History" tab displays object processing lineage as hierarchical tree
- Shows complete processing chain from creation to current state
- Selectable text for documentation purposes
Multi-object property editing:
- Apply property changes to multiple selected objects simultaneously
- Only modified properties are applied, preserving unchanged individual settings
- Typical use case: Adjust LUT boundaries or colormap for multiple images at once
Dialog sizing improvements:
- Processing dialogs now intelligently resize based on main window size
- Never exceed main window dimensions for better user experience
Internal console indicator:
- Status bar indicator shows console status when hidden
- Turns red on errors/warnings to alert users
- Click to open console
🎬 New Object Creation Features
Parametric signal generators:
- Linear chirp, logistic function, Planck function
- Generate signals with Poisson noise
Parametric image generators:
- Checkerboard: Calibration pattern with configurable square size and light/dark values
- Sinusoidal grating: Frequency response testing with independent X/Y spatial frequencies
- Ring pattern: Concentric circular rings for radial analysis and PSF testing
- Siemens star: Resolution testing with radial spokes and configurable radius
- 2D sinc: Cardinal sine function for PSF modeling and diffraction simulation
- 2D ramp: New ramp image generator
- Poisson noise: Generate images with Poisson noise distribution
Signal/image creation from operations:
- Create complex-valued signal/image from real and imaginary parts
- Create complex-valued signal/image from magnitude and phase (closes Issue #216)
- Extract phase (argument) information from complex signals or images
🔬 Data Processing & Analysis
Signal processing:
- Enhanced curve fitting: Significantly improved parameter estimation for all curve types (Gaussian, Lorentzian, Voigt, exponential, sinusoidal, Planckian, asymmetric peaks, CDF)
- Smarter initial parameter guesses for robust convergence
- Locked parameter support: Lock individual parameters during optimization (requires PlotPy v2.8.0)
- X-array compatibility checking: Comprehensive validation for multi-signal operations with automatic interpolation options
- New configuration setting: Ask user or interpolate automatically
- Prevents unexpected results from incompatible signal arrays
- Zero padding enhancements: Support for prepending and appending zeros, default strategy now "Next power of 2"
- Ideal frequency domain filter: "Brick wall filter" for signals (closes Issue #215)
- Bandwidth at -3dB: Enhanced to support passband bandwidth
- Pulse features extraction: Comprehensive pulse analysis for step and square signals
- Automated shape recognition and polarity detection
- Measures amplitude, rise/fall time, FWHM, timing parameters, baseline ranges
- Frequency domain filters: Deconvolution and Gaussian filter (closes Issue #189, Issue #205)
- Coordinate transformations: Convert to Cartesian/polar coordinates
- X-Y mode: Simulate oscilloscope X-Y mode (plot one signal vs. another)
- Find operations: First abscissa at y=..., ordinate at x=..., full width at y=...
1/xoperation: Reciprocal operation with NaN handling for zero denominators
Image processing:
- 2D resampling: Resample images to new coordinate grids with multiple interpolation methods (closes Issue #208)
- Convolution: 2D convolution operation
- Erase area: Erase image areas defined by ROI (closes Issue #204)
- Horizontal/vertical projections: Sum of pixels along axes (closes Issue #209)
- Improved centroid computation: More accurate in challenging cases (truncated/asymmetric images) (see Issue #251)
- Flip diagonally: New geometric transformation
1/xoperation: Reciprocal operation for images
Cross-panel operations:
- Signals to image conversion: Combine multiple signals into 2D images
- Two orientation modes: as rows (spectrograms) or columns (waterfall displays)
- Optional normalization (Z-score, Min-Max, Maximum)
- Typical use cases: heatmaps, spectrograms, multi-channel data visualization
Common features:
- Standard deviation: Calculate across multiple signals/images (closes Issue #196)
- Add noise: Add Gaussian, Poisson, or uniform noise (closes Issue #201)
- Add metadata: Add custom metadata with pattern support (
{title},{index}, etc.) and type conversion
📐 ROI & Annotation Management
ROI features:
- ROI clipboard operations: Copy/paste ROIs between objects
- ROI import/export: Save/load ROIs as JSON files
- Individual ROI removal: Remove ROIs selectively via "Remove" submenu
- ROI title editing: Set titles during interactive creation and in confirmation dialog
- Create ROI grid: Generate grid of ROIs with configurable rows, columns, and spacing
- Import/export grid configurations
- Preview before creation
- Inverse ROI logic: Select area outside defined shapes (images only)
- Coordinate-based ROI creation: Manual input of coordinates for rectangular and circular ROIs
- Multi-object ROI editing: Edit ROIs on multiple objects simultaneously
Annotation features:
- Annotation clipboard: Copy/paste annotations between objects
- Edit annotations: Interactive editor dialog with PlotPy tools
- Import/export annotations: Save/load as .dlabann JSON files with versioning
- Delete annotations: Remove from single or multiple objects with confirmation
- Annotations independent from ROI: Can coexist on same object
Detection with ROI creation:
- All 7 detection algorithms now support automatic ROI creation:
- Peak detection, contour shape, blob detection (DOG/DOH/LOG/OpenCV), Hough circle
- ROI geometry choice: Rectangular or circular ROIs
- 2D peak detection: Option to choose ROI geometry (closes related requirements)
📊 Visualization & Display
Performance & display limits:
- Configurable result display limits: Prevent UI freezing with large result sets
max_shapes_to_draw(default: 1,000),max_cells_in_label(default: 100),max_cols_in_label(default: 15)- Settings documented with performance implications
- Faster contour rendering: Over 5x performance improvement for contour display
- Signal rendering optimization: Smart linewidth clamping for large datasets
- New setting: "Line width performance threshold" (default: 1,000 points)
- Prevents 10x slowdown from Qt raster engine limitation
Result visualization:
- Merged result labels: All analysis results consolidated in single read-only label
- Reduces visual clutter, auto-updates, horizontally divided results
- Result label visibility control: Toggle visibility via Properties panel checkbox
- Default visibility configurable in Settings
- Results group organization: Plot results automatically organized in dedicated "Results" group
- Comprehensive result titles: Include source object identifiers (e.g., "FWHM (s001, s002, s003)")
- Individual result deletion: Remove results selectively via Analysis menu
- Customizable shape/marker styles: Four new style configuration buttons in Settings
- Separate styles for signals and images
- Interactive editor with comprehensive options
- Persistent configuration with refresh on change
Enhanced profile extraction:
- Click directly on X/Y profile plots to switch extraction direction
- No need to open parameters dialog for direction changes
- Improves workflow efficiency (closes Issue #156)
DateTime signal support:
- Automatic datetime detection in CSV files
- Datetime axis formatting: Human-readable timestamps on X-axis
- Configurable formats: Separate formats for standard and sub-second units
- Supports various time units (seconds, milliseconds, microseconds, minutes, hours)
- Closes Issue #258
Settings:
- Autoscale margins: Configurable margins (0-50%) for signal/image plots
- Lock image aspect ratio: Option for 1:1 aspect ratio (default: use physical pixel size) (closes Issue #244)
- Show console on error: Configurable behavior (default: off)
Image extent parameters:
- New "Extent" group box showing computed Xmin, Xmax, Ymin, Ymax
- Automatically calculated from origin, pixel spacing, and dimensions
📁 Import/Export & File Handling
New file format support:
- FT-Lab signals and images: CEA binary formats (.sig, .ima) (closes Issue #211)
- Coordinated text files: Real and complex-valued images with error images (similar to Matris format)
- Automatic NaN handling, metadata with units and labels
Enhanced HDF5 support:
- Custom file extensions: Intelligent HDF5 detection by content (not just extension)
- Extension-based detection for dialogs, content-based for drag-and-drop
- "All files (*)" option in file dialogs
- HDF5 Browser improvements: Default collapsed tree view for better navigation
- Workspace clearing options: Configurable behavior with "Ignore" option (closes Issue #146)
Text file improvements:
- CSV delimiter handling: Better support for various whitespace separators
- Locale decimal separator: Support for comma as decimal separator (closes Issue #124)
- Encoding error tolerance: Ignore errors for files with special characters
- Header detection: Automatic detection and skipping of data headers
Other I/O features:
- Save to directory: New feature (closes Issue #227)
- Open from directory: Recursively open multiple files with folder drag-and-drop support
- File ordering: Consistent alphabetical sorting across platforms
🔧 Advanced Features
Non-uniform coordinate support:
- Images now support non-uniform pixel spacing
- "Set uniform coordinates" feature for conversion
- Polynomial calibration: Up to cubic order for X, Y, Z axes
- Creates non-uniform coordinates for X/Y, transforms values for Z
- HDF5 and text file formats preserve non-uniform information
Group management:
- Panel-specific short IDs:
gsprefix for signals,giprefix for images- Avoids ambiguity in cross-panel operations
- Fixed group numbering for new groups
Configuration:
- Version-specific folders: Major version coexistence (
.DataLab_v1,.DataLab_v2, etc.)- Allows v0.x and v1.x to run simultaneously
Public API & Remote Control:
- Enhanced metadata handling with function name context
add_group,add_signal,add_imagemethods withgroup_idandset_currentargumentsget_object_uuidswith optionalgroupfilter- Multiple API improvements for better programmability
Processing infrastructure (for developers):
- New
@computation_functiondecorator for computation functions - Renamed computation functions (removed "compute_" prefix)
- Refactored
BaseProcessormethods with clear naming:compute_1_to_1,compute_1_to_0,compute_1_to_n,compute_n_to_1,compute_2_to_1
- No backward compatibility maintained for these internal changes (closes Issue #180)
🛠️ Bug Fixes
Performance fixes:
- Switching between images with many results: Dramatic improvement (66s → <1ms) when navigating images with hundreds of shapes
- Plot cleanup robustness: Fixed errors when removing analysis results
- Critical fix: Result labels now properly excluded from cleanup to prevent disappearance
Cross-panel & group handling:
- Cross-panel computation groups: Fixed inconsistent group organization for image-to-signal operations
- File import ordering: Consistent alphabetical sorting across all platforms
Action state updates:
- Fixed action enable states not updating after annotation/metadata operations
- UI now immediately reflects current object state
Result management:
- Fixed result label deletion to permanently remove associated metadata
- Fixed duplicate results parameter metadata cleanup
- Result coordinate fixes: Corrected shifted results on images with ROIs and shifted origin (Issue #106)
- Profile extraction indices: Fixed wrong indices with ROI (Issue #107)
ROI-related fixes:
- Fixed multi-image ROI extraction not saving ROI in first object (Issue #120)
- Fixed AttributeError when extracting multiple ROIs on single image with multiple selections (Issue #121)
- Fixed mask refresh issues (Issue #122, Issue #123)
- Fixed ROI editor on multiple signals/images (Issue #135)
- Fixed ROI clearing affecting only first image (Issue #160)
- Fixed ROI editor showing first instead of last image (Issue #158)
Text Import Wizard:
- Fixed preservation of user-defined titles and units (Issue #239)
- Fixed preservation of data types (Issue #240)
- Fixed comma decimal separator support (Issue #186)
- Fixed trailing delimiter issue (Issue #238)
Curve fitting & analysis:
- Improved initial frequency estimate for sinusoidal fitting
- Fixed parameter display formatting for extreme values
- Fixed FWHM computation exception handling
- Fixed curve marker style changing unexpectedly (Issue #184)
- Fixed hard crash on zero signal with curve stats tool (Issue #233)
Image handling:
- Fixed aspect ratio not updating when switching images
- Fixed shape unpacking issues (Issue #246, Issue #247)
- Fixed colormaps not stored in metadata (PlotPy v2.6.3+ issue) (Issue #138)
- Fixed amplitude calculation for non-integer data types
Signal processing:
- Fixed ifft1d x-axis computation when shift=False (Issue #241)
- Fixed moving median crash on Linux with mirror mode (Issue #117) - SciPy bug
- Fixed magnitude spectrum with logarithmic scale (Issue #169)
- Fixed pairwise operation mode for asymmetric functions (Issue #157)
Analysis & results:
- Fixed NaN value handling in statistics and normalization (Issue #141, Issue #152, Issue #153)
- Fixed analysis results kept from original after processing (Issue #136)
- Fixed duplicate results with no ROI defined
- Fixed "One curve per result title" mode ignoring ROIs (Issue #132)
- Added result validation for array-like results
Plot & visualization:
- Fixed profile plots not refreshing when moving/resizing (Issue #172) - PlotPy fix
- Fixed empty average profile display outside image area (Issue #168) - PlotPy fix
- Fixed average profile extraction ValueError with oversized rectangle (Issue #144)
- Disabled generic "Axes" tab in parameter dialogs
Other fixes:
- Fixed proxy
add_objectmethod not supporting metadata (Issue #111) - Fixed RemoteClient method calls without optional arguments (Issue #113)
- Fixed KeyError when removing group after opening HDF5 (Issue #116)
- Fixed KeyError in "View in new window" with multiple images after HDF5 open (Issue #159)
- Fixed long object titles display (Issue #128)
- Fixed file name titles showing relative paths (Issue #165)
- Fixed unexpected group names in "Open from directory" (Issue #177)
- Fixed one group per folder expectation (Issue #163)
- Fixed unsupported files in recursive loading (Issue #164)
Removed features:
- Removed "Use reference image LUT range" setting (confusing behavior)
- Migration: Use multi-selection property editing instead
🔒 Security Fixes
- CVE-2023-4863: Fixed vulnerability in opencv-python-headless
- Updated minimum requirement from 4.5.4.60 to 4.8.1.78
- See DataLab security advisory
ℹ️ Other Changes
- Bumped minimum
plotpyrequirement to V2.8 - Bumped minimum
guidatarequirement to V3.13 - Using new
guidatatranslation utility based onbabel - Python 3.13 now supported (via scikit-image V0.25)