Whatβs new?ο
Spectral Unmixing changelogο
See here for a detailed list of changes made in each release of Spectral Unmixing. Please, also refer to the Repository Releases page.
Each release is also archived on Zenodo for long-term preservation and citation purposes: https://doi.org/10.5281/zenodo.20933784
π spectral-unmixing v0.0.4ο
June 29, 2026
PICASSO source-sink refinement release for spectral-unmixing.
This release provides:
PICASSO source-sink-N improvementsο
Refined the
source_sink_nblind-unmixing implementation to follow the PICASSO napari pluginβs source-sink formulation more closely while remaining free oftorchand neural-MINE dependencies.Changed the default source-sink optimization strategy from greedy pairwise fitting to joint optimization of all modeled sources contributing to a given sink.
Added optional optimization of one small background-offset parameter per modeled source-sink relation.
Added multi-start optimization for the source-sink workflow to improve robustness against poor local minima.
Preserved the older greedy strategy as an explicit fallback via configuration.
API and reproducibilityο
Extended
unmix_picasso(...)with newsource_sink_noptions:source_sink_optimize_backgroundsource_sink_max_backgroundsource_sink_n_restartssource_sink_joint_optimization
Extended the PICASSO JSON sidecar reports to record the learned source-sink background parameters and the new optimization settings.
Scripts and documentationο
Updated the public 2-color, 3-color, and 5-color PICASSO example scripts so their
source_sink_nexample cells expose the new optimization options directly.Updated the README, overview page, and PICASSO tutorials to describe the refined
source_sink_nformulation mathematically and operationally.Clarified in the documentation that the current
source_sink_nimplementation is histogram-MI-based and napari-plugin-inspired, but not a neural or MINE-based reimplementation of the plugin.
π spectral-unmixing v0.0.3ο
June 28, 2026
Documentation, dataset, and API refinement release for spectral-unmixing.
This release provides:
Unmixing API refinementο
Changed the default
unmix(...)behavior from an implicitalpha_mode="fixed"toalpha_mode=None.Added automatic alpha-mode resolution for
unmix(...):if
alphais provided, the effective mode becomesfixedif
alphais omitted andmethod="manual", the pipeline now raises a clear errorif
alphais omitted andmethod!="manual", the effective mode becomesreference_twithalpha_reference_t=0
Preserved explicit user intent:
explicitly setting
alpha_mode="fixed"still requires a user-providedalphaexplicitly setting
alpha_mode="reference_t"oralpha_mode="per_t"still behaves exactly as requested
Extended the JSON sidecar report with the requested and effective alpha-mode information to make this default resolution reproducible.
Documentationο
Added a full Sphinx / Read the Docs documentation tree for the package.
Expanded the overview and functionality pages with more complete mathematical and workflow descriptions.
Added a broad tutorial collection covering:
standard two-channel unmixing
full
TZCYXsynthetic-stack unmixingbidirectional unmixing
PICASSO-family blind unmixing for 2-channel, 3-channel, and 5-channel examples
filtering, registration, histogram matching, and projection helper workflows
Improved tutorial style and consistency across the interactive scripts and the corresponding documentation pages.
Added dataset provenance and license documentation for the public tutorial datasets.
Public tutorial datasetsο
Published a dedicated public example-dataset release on Zenodo for reproducing the tutorials:
Musacchio, F. (2026). Example datasets for the spectral-unmixing pipeline [Data set]. Zenodo. https://doi.org/10.5281/zenodo.20984021
Added transparent dataset-level README files for:
Gockel_Nieves_Rivera_2026PICASSO_examplessynthetic_data
Packaging and CIο
Added
docs/requirements.txtso that Read the Docs builds can install the documentation dependencies correctly.Added and corrected a GitHub Actions test workflow for automated tests and Codecov integration.
Testing and docs synchronizationο
Updated unit tests to cover the new
alpha_mode=Nonedefault behavior.Updated the documentation to describe the new default behavior consistently for both
T=1andT>1stacks.
π spectral-unmixing v0.0.2ο
June 26, 2026
PyPI and archival release of spectral-unmixing.
This release contains no code changes relative to v0.0.1.
It was created to:
publish the package on PyPI via
pip install spectral-unmixingcreate a follow-up GitHub release suitable for Zenodo archiving and citation
align the public release metadata with the first official package publication
π spectral-unmixing v0.0.1ο
June 26, 2026
First public main release of spectral-unmixing.
This initial release provides:
Core unmixingο
A reusable
unmix(...)pipeline for spectral bleed-through correction of microscopy TIFF stacks read with OMIO.Canonical
TZCYXstack validation and processing throughout the main workflow.One-direction linear unmixing with correction of a user-selected target channel from a user-selected source channel.
Optional bidirectional two-channel unmixing via inversion of the corresponding 2x2 linear mixing model.
JSON sidecar reports written next to output TIFF files for reproducibility of parameters and estimated coefficients.
Verbose terminal reporting during processing runs.
Alpha estimationο
Fixed-alpha mode for user-supplied bleed-through coefficients.
reference_talpha mode to estimate one coefficient from a selected reference time point using all z-slices.per_talpha mode to estimate one coefficient per time point.Multiple alpha-estimation methods:
manualmean_ratiolinear_fitcorr_minmi_min
Shared optional preprocessing for alpha estimation, including percentile-based background subtraction and clipping.
Optional reverse-direction parameter set for bidirectional unmixing, including inherited defaults when reverse values are omitted.
PICASSO-family blind unmixingο
A separate
unmix_picasso(...)workflow for multi-channel blind unmixing.matlab_3cimplementation as a Python port of the original MATLAB 3-channel PICASSO workflow.matlab_nimplementation as an explicit N-channel generalization of the MATLAB 3-channel workflow.source_sink_nimplementation for direct source-sink multi-channel unmixing inspired by the napari PICASSO plugin.Support for explicit
source_sink_matrixdefinitions.Support for higher-level
sink_channelsandneutral_channelsconfiguration to auto-build source-sink relations without writing matrices manually.
Filtering, projection, and registration add-onsο
apply_filters(...)with median and Gaussian filtering forTZCYXstacks.Support for applying multiple filters sequentially.
Support for per-time-point filter strengths and optional alternate filtering settings for channel 2.
match_histograms_across_time(...)for time-wise histogram matching against thet=0reference stack.max_z_project(...)with optionalzrangeselection and safe out-of-bounds clamping.register_stack(...)for time registration using eitherpystackregorphase_cross_correlation.correct_intra_stack_z_drift(...)for optional within-stack z-drift correction.
I/O and visualizationο
OMIO-based TIFF reading and writing helpers.
Output-path reconciliation for OMIO-written TIFF files, including
.ome.tifedge cases.Shared napari viewer helpers for visualizing unmixed results without opening duplicate viewers on repeated calls.
Configurable source and target colormaps in napari display helpers.
Examples and tutorialsο
Interactive example scripts for:
standard two-channel unmixing
bidirectional unmixing
PICASSO 2-channel, 3-channel, and 5-channel examples
filtering, projection, and registration workflows
Synthetic example generation for full
TZCYXtest data with controlled bleed-through.
Packaging, docs, and testingο
GPL-3.0 licensing.
A package layout prepared for open-source distribution and future PyPI publication.
Public README documentation focused on the core unmixing workflow, mathematical model, and available estimation methods.
Publishable docstrings across the pipeline intended to integrate cleanly with future Sphinx / Read the Docs API documentation.
Unit tests covering estimation, unmixing, filtering, registration, viewer reuse, and OMIO output handling.