Linear unmixing from lambda stack

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Linear unmixing from lambda stack

Michael Doube-3
Hi all,

I have 32-channel lambda stacks (8.7 nm / channel) and would like to
apply linear unmixing, given 'n' reference spectra.

The typical approach if I understand correctly, is to generate unit
vectors (one per reference spectrum) from the reference spectra images,
then do a singular value decomposition using the lambda data from a
single pixel (over lambda) and the unit vectors. The result is
eigenvalues, one per reference spectrum per pixel, which then represent
the values to put into the pixel in each unmixed channel.

I have found a couple of unmixing plugins, but they seem to be designed
to correct bleedthrough in multi-channel images, rather than unmixing
from a lambda stack. Zeiss has an implementation in their Zen software,
but this is locked to a per-machine licence. Does anyone know of a
plugin that can do this already?

Regards,

Michael
Reply | Threaded
Open this post in threaded view
|

Re: Linear unmixing from lambda stack

Unruh, Jay-2
Micheal,

If you just want to linear unmix with known reference spectra, you don't need to do singular value decomposition (SVD).  You essentially just do linear least squares at each pixel.  There is  a plugin for that:

http://rsbweb.nih.gov/ij/plugins/spectral-unmixing.html

I'm not entirely sure what you mean by bleedthrough from multi-channel images.  A lambda stack is essentially a multichannel image and the linear unmixing does remove bleedthrough.  

Perhaps you are referring to Zeiss's automatic component extraction which is a method for spectral discovery in an image based on principle component analysis (essentially SVD).  It's a bit more complicated than pure SVD because typically the average intensity at each wavelength is subtracted for SVD.  As a result, one can get negative spectra.  You then need to find which pixels correspond most closely to the found spectra and average a certain number of them to get the actual spectra.   If this is the method you want, I have recently added a plugin called pca spectral unmixing jru v1 to my website:

http://research.stowers.org/imagejplugins/

I also have a linear unmixing plugin there as well once you have the spectra.  Note that PCA and SVD have major issues with data that are strongly mixed (few pixels with one label or another).  I have had great success with the PoissonNMF plugin found here:

http://www.mh-hannover.de/cellneurophys/poissonNMF/

This plugin has some built in assumptions (read their paper for more details) that tend to be generally true for experimental spectra (quasi-gaussian form, some spectral overlap, etc...).  In general, blind spectral unmixing is a lot like deconvolution--it is good to compare several methods and perform the appropriate controls to make sure you are not seeing artifacts of the unmixing process.

Jay



-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Michael Doube
Sent: Wednesday, September 21, 2011 4:03 AM
To: [hidden email]
Subject: Linear unmixing from lambda stack

Hi all,

I have 32-channel lambda stacks (8.7 nm / channel) and would like to apply linear unmixing, given 'n' reference spectra.

The typical approach if I understand correctly, is to generate unit vectors (one per reference spectrum) from the reference spectra images, then do a singular value decomposition using the lambda data from a single pixel (over lambda) and the unit vectors. The result is eigenvalues, one per reference spectrum per pixel, which then represent the values to put into the pixel in each unmixed channel.

I have found a couple of unmixing plugins, but they seem to be designed to correct bleedthrough in multi-channel images, rather than unmixing from a lambda stack. Zeiss has an implementation in their Zen software, but this is locked to a per-machine licence. Does anyone know of a plugin that can do this already?

Regards,

Michael
Reply | Threaded
Open this post in threaded view
|

Re: Linear unmixing from lambda stack

Michael Doube-3
Hi Jay,

> I'm not entirely sure what you mean by bleedthrough from
> multi-channel images.  A lambda stack is essentially a multichannel
> image and the linear unmixing does remove bleedthrough.
I suppose a lambda stack is really an extreme example of bleedthrough -
the channels are much smaller than the emission spectrum of most dyes,
so each spectrum should be represented in more than one channel. The
resulting image after unmixing should have only one channel per dye, though.

The docs for Joachim's plugin do state that you can have any number of
dyes and channels (now that I take a closer look).

> I have
> recently added a plugin called pca spectral unmixing jru v1 to my
> website:
>
> http://research.stowers.org/imagejplugins/
Thanks! I'll check it out.

> I have had
> great success with the PoissonNMF plugin found here:
>
> http://www.mh-hannover.de/cellneurophys/poissonNMF/
>
> This plugin has some built in assumptions (read their paper for more
> details) that tend to be generally true for experimental spectra
> (quasi-gaussian form, some spectral overlap, etc...).
Thanks again, I'll have a look at this one too. The biggest spectral
artifact we see is a drop in signal corresponding to the main beam
splitter's notches pulling out laser lines from the emission spectra.

Michael