Spectral unmixing in Napari

3 minute read

If you haven’t installed Napari, please do so before proceeding with this tutorial. If you just want to practice this tutorial, install the following minimal installation:

conda create -n napari_bioimage_analysis -y python=3.9 mamba
conda activate napari_bioimage_analysis
mamba install -y napari napari-PICASSO

What is bleed-through?

Bleed-through is a phenomenon that occurs when the emission spectra of two fluorophores overlap and recorded in one channel. This makes it difficult to separate them. There are several image processing techniques available to reduce the bleed-through effect, in both supervised and unsupervised manners. These methods are generally referred to as spectral unmixing. In this tutorial, we will use the unsupervised method called “PICASSO”.

png Sketch depicting bleed-through: Emission of the green fluorophore can emit into the signal/channel of the yellow fluorophore if the two channels are a) not cleanly separated (range around the target wavelength is selected too large) or because b) two target wavelengths are too close together.

png Example 3-channel-recording of cells in the mouse spinal cord. The green channel contains GFAP labeled cells, the yellow channel contains LMNB1 labeled cells, and the magenta channel a non-specified flurophor. The image is taken from the PICASSO sample image dataset and is also provided in the data folder of this tutorial. Unfortunately, no further information about the sample is available.

png Example image from above, split into the three channels, with GFAP on the left, LMNB1 in the middle and the non-specified flurophor on the right. The bleed-through effect is visible in the green channel, where the LMNB1 (yellow) signal is also present, exemplarily indicated by the red arrow.

Spectral unmixing with PICASSO

PICASSO is an algorithm by Seo et al. (2022) designed to eliminate fluorescence bleed-through by reducing the mutual information between so-called sink and source images. The Napari plugin employs a neural network (MINE) to estimate and minimize the mutual information between sink and source image pairs. This is accomplished using stochastic gradient descent with GPU acceleration for improved performance.

To perform the spectral unmixinig, the individual channels of the corresponding multi-channel image have to be split into single-channel layers (right-clicking on the image and selecting Split Stack if not already done; the provided sample images are already split). From the Plugins menu, choose PICASSO to open the PICASSO widget. Add minimum one sink channel and specify it by selecting the corresponding layer in the occuring drop-down menu:

png The PICASSO widget in Napari with the sink channel selected. The sink channel is the channel/layer that is affected by the bleed-through effect from the source channel/layer. In this example, the GFAP channel is selected as sink and the LMNB1 channel as source.

The sink channels are the channels that are causing the bleed-through. After adding the sink channel, verify that the correct source channel is selected by clicking on source (right from skin channel setting). Here the choose the GFAP channel/layer as sink and the LMNB1 channel/layer as source as the latter is the source of the bleed-through in the GFAP layer. If the bleed-through would be apparent in other channels as well, you can more sink-source pairs (however, this is not the case in our example). When you’re done selecting the right channels, simply hit the run button and wait until the unmixing is done. The resulting unmixed sink image will appear as a new layer in the layer list.

png The bleed-through affected channel (left) and the result of the spectral unmixing (right).

Further readings

Acknowledgements

The image used in this tutorial is taken from the PICASSO sample image dataset.

updated: