Releases: DataLab-Platform/Sigima
v1.0.0 - First Public Release
The sigima library is part of the DataLab open-source platform.
See DataLab roadmap page for future and past milestones.
sigima 1.0.0
💥 New features and enhancements:
-
Signals to image conversion: New feature to combine multiple signals into a 2D image
- New computation function
signals_to_image()insigima.proc.signal.arithmetic - Takes a list of signals and combines them into an image by stacking Y-arrays
- Two orientation modes:
- Rows: Each signal becomes a row in the image (default)
- Columns: Each signal becomes a column in the image
- Optional normalization:
- Supports multiple normalization methods (Z-score, Min-Max, Maximum)
- Normalizes each signal independently before stacking
- Useful for visualizing signals with different amplitude ranges
- Validates that all signals have the same size before combining
- New parameter class
SignalsToImageParamwith orientation and normalization settings - New enum
SignalsToImageOrientationfor specifying row/column orientation - Comprehensive validation tests for all combinations of parameters
- Ideal for creating spectrograms, heatmaps, or waterfall displays from signal collections
- New computation function
-
Non-uniform coordinate support for images: Added comprehensive support for non-uniform pixel coordinates
ImageObjnow supports both uniform and non-uniform coordinate systems:- Uniform coordinates: defined by origin (
x0,y0) and pixel spacing (dx,dy) - Non-uniform coordinates: defined by coordinate arrays (
xcoords,ycoords)
- Uniform coordinates: defined by origin (
- New methods for coordinate manipulation:
set_coords(): Set non-uniform X and Y coordinate arraysis_uniform_coords: Property to check if coordinates are uniform
- New computation function
set_uniform_coords(): Convert non-uniform to uniform coordinates- Automatically extracts uniform spacing from non-uniform arrays
- Handles numerical precision issues from linspace-generated arrays
- Preserves image data while transforming coordinate system
- Enhanced
calibration()function with polynomial support:- Now supports polynomial calibration up to cubic order:
dst = a0 + a1*src + a2*src² + a3*src³ - Parameter class changed from
a, b(linear) toa0, a1, a2, a3(polynomial) - Works on X-axis, Y-axis (creating non-uniform coordinates), and Z-axis (data values)
- Linear calibration is a special case with
a2=0, a3=0 - Automatically handles conversion between uniform and non-uniform coordinate systems
- Now supports polynomial calibration up to cubic order:
- Enhanced I/O support:
- HDF5 format now serializes/deserializes non-uniform coordinates
- Coordinated text files support non-uniform coordinate arrays
- All geometric operations updated to handle both coordinate types:
- Coordinate transformations preserve or create appropriate coordinate system
- ROI operations work seamlessly with both uniform and non-uniform coordinates
-
DateTime support for signal data: Added comprehensive datetime handling for signal X-axis data
- Automatic detection and conversion of datetime columns when reading CSV files
- Detects datetime values in the first or second column (handling index columns)
- Validates datetime format and ensures reasonable date ranges (post-1900)
- Converts datetime strings to float timestamps for efficient computation
- Preserves datetime metadata for proper display and export
- New
SignalObjmethods for datetime manipulation:set_x_from_datetime(): Convert datetime objects/strings to signal X data with configurable time units (s, ms, μs, ns, min, h)get_x_as_datetime(): Retrieve X values as datetime objects for display or exportis_x_datetime(): Check if signal contains datetime data
- Enhanced CSV export to preserve datetime format when writing signals with datetime X-axis
- New constants module (
sigima.objects.signal.constants) defining datetime metadata keys and time unit conversion factors - Comprehensive unit tests covering datetime conversion, I/O roundtrip, and edge cases
- Example test data file with real-world temperature/humidity logger data (
datetime.txt)
- Automatic detection and conversion of datetime columns when reading CSV files
-
New client subpackage: Migrated DataLab client functionality to
sigima.client- Added
sigima.client.remote.SimpleRemoteProxyfor XML-RPC communication with DataLab - Added
sigima.client.base.SimpleBaseProxyas abstract base class for DataLab proxies - Included comprehensive unit tests and API documentation
- Maintains headless design principle (GUI components excluded)
- Enables remote control of DataLab application from Python scripts and Jupyter notebooks
- Client functionality is now directly accessible:
from sigima import SimpleRemoteProxy
- Added
-
New image ROI feature: Added inverse ROI functionality for image ROIs
- Added
insideparameter toBaseSingleImageROIbase class, inherited by all image ROI types (PolygonalROI,RectangularROI,CircularROI) - When
inside=True, ROI represents the region inside the shape (inverted behavior) - When
inside=False(default), ROI represents the region outside the shape (original behavior) - Fully integrated with serialization (
to_dict/from_dict) and parameter conversion (to_param/from_param) - Signal ROIs (
SegmentROI) are unaffected as the concept doesn't apply to 1D intervals - Optimal architecture with zero code duplication - all
insidefunctionality implemented once in the base class - Individual ROI classes no longer need custom constructors, inheriting directly from base class
- Added
-
New image operation:
- Convolution.
-
New image format support:
- Coordinated text image files: Added support for reading coordinated text files (
.txtextension), similar to the Matris image format.- Supports both real and complex-valued image data with optional error images.
- Automatically handles NaN values in the data.
- Reads metadata including units (X, Y, Z) and labels from file headers.
- Coordinated text image files: Added support for reading coordinated text files (
-
New image analysis features:
- Horizontal and vertical projections
- Compute the horizontal projection profile by summing values along the y-axis (
sigima.proc.image.measurement.horizontal_projection). - Compute the vertical projection profile by summing values along the x-axis (
sigima.proc.image.measurement.vertical_projection).
- Compute the horizontal projection profile by summing values along the y-axis (
- Horizontal and vertical projections
-
New curve fitting algorithms: Complete curve fitting framework with
sigima.tools.signal.fittingmodule:- Core fitting functions: Comprehensive set of curve fitting algorithms for scientific data analysis:
linear_fit: Linear regression fittingpolynomial_fit: Polynomial fitting with configurable degreegaussian_fit: Gaussian profile fitting for peak analysislorentzian_fit: Lorentzian profile fitting for spectroscopyvoigt_fit: Voigt profile fitting (convolution of Gaussian and Lorentzian profiles)exponential_fit: Single exponential fitting with overflow protectionpiecewiseexponential_fit: Piecewise exponential (raise-decay) fitting with advanced parameter estimationplanckian_fit: Planckian (blackbody radiation) fitting with correct physics implementationtwohalfgaussian_fit: Asymmetric peak fitting with separate left/right parametersmultilorentzian_fit: Multi-peak Lorentzian fitting for complex spectrasinusoidal_fit: Sinusoidal fitting with FFT-based frequency estimationcdf_fit: Cumulative Distribution Function fitting using error functionsigmoid_fit: Sigmoid (logistic) function fitting for S-shaped curves
- Advanced piecewise exponential (raise-decay) fitting: Enhanced algorithm with:
- Standard piecewise exponential model:
y = a_left*exp(b_left*x) + a_right*exp(b_right*x) + y0 - Multi-start optimization strategy for robust convergence to global minimum
- Support for both positive and negative exponential rates (growth and decay components)
- Comprehensive parameter bounds validation to prevent optimization errors
- Standard piecewise exponential model:
- Enhanced asymmetric peak fitting: Advanced
twohalfgaussian_fitwith:- Separate baseline offsets for left and right sides (
y0_left,y0_right) - Independent amplitude parameters (
amp_left,amp_right) for better asymmetric modeling - Robust baseline estimation using percentile-based methods
- Separate baseline offsets for left and right sides (
- Technical features: All fitting functions include:
- Automatic initial parameter estimation from data characteristics
- Proper bounds enforcement ensuring optimization stability
- Comprehensive error handling and parameter validation
- Consistent dataclass-based parameter structures
- Full test coverage with synthetic and experimental data validation
- Core fitting functions: Comprehensive set of curve fitting algorithms for scientific data analysis:
-
New common signal/image feature:
- Added
phase(argument) feature to extract the phase information from complex signals or images. - Added operation to create complex-valued signal/image from real and imaginary parts.
- Added operation to create complex-valued signal/image from magnitude and phase.
- Standard deviation of the selected signals or images (this complements the "Average" feature).
- Generate new signal or image: Poisson noise.
- Add noise to the selected signals or images.
- Gaussian, Poisson or uniform noise can be added.
- New utility functions to generate file basenames.
- Deconvolution in the frequency domain.
- Added
-
New ROI features:
- Improved single ROI title handling, using default title based on the index of the ROI when no title is provided.
- Added
combine_withmethod to ROI objects (SignalROIandImageROI) to return a new ROI that combines the current ROI with another one (union) and handling duplicate ROIs. - Image ROI transformations:
- Before this change, image...
v0.2.0 - Preliminary release
Bump version to 0.2.0 and update development status to Beta
v0.1.0 - Preliminary release
sigima 0.1.0
This first version of the library is the result of the externalization of the signal and image processing features from the DataLab main repository.