v1.0.0
See DataLab roadmap page for future and past milestones.
DataLab Version 1.0.0
This major release represents a significant milestone for DataLab with numerous enhancements across all areas. The changes are organized by category for easier navigation.
🎨 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)