Questions about Channel Unmixing using Poisson NMF

Dear imagej/fiji experts and friends,
About an year ago I asked on the ImageJ mail list a question about Channel Unmixing with Poisson NMF, but received no answer. So I am reposting the questions here with the hope that someone might know what is going on.

“Dear community,
Recently I started experimenting with channel unmixing and more precisely my interest was caught by the plugin “Poisson NMF” as it allows to do blind as well as unmixing with known spectra , and even allows for mixed approach (using known spectra as starting point for the deconvolution or keeping known spectra constant and extracting unknown ). My first impressions from the plugin are very good - there is minimum user interaction and thus minimal bias, it’s reasonably fast and produces images of high quality.
I decided to try and extract autofluoresence from the images by adding it as unknown source of fluorescence in addition to all the known spectra I have. The idea was to create e.g. 4-channel image from a 3-channel set (the fourth beeing the autofluorescent portions of the image): I add the known spectra of the dyes as the first three sources and the autofluorescence as the fourth source. Then I specify the channel wavelength boundaries of the three initial channels. However the plugin returned an image with 4 channels but consisting of NaNs.
While experimenting to see what went wrong I figured out that this happens all the time when the sources do not match the number of the initial channels. It doesn’t matter how I will specify the sources spectra (manually, spectral library, ROI or Gaussian) nor if I keep some or all of the known spectra constant.
Have any of you encountered this behavior? Is this a bug or am i doing something wrong?”
Later I noticed that NaNs are returned sometimes even when the number of channels match the preselected number of spectra but could not figure out when this happens.
Best day,

Just for the record,

this is a cross-post from the ImageJ-list.


Hi @Stoyan_Pavlov,

As far as a I understand, you cannot get a new channel “for free” using channel unminxing (to be more specific, a new channel that is not just a linear combination of the other resulting channels, thus completely dependent). As such, the number of output channels must always be equal or less than the number of input channels. Otherwise the sistem would be underdetermined.
I haven’t tried the “Poisson NMF” plugin myself, but taking a quick look at the publication were the method is described, this seems to be the case.

Thus when you propose:

you would in fact be producing new information out of thin air.

I hope that this helps.


I don’t understand how I am producing “New information out of thin air”,
The information is there. We have three channels with very specific bands, and four fluorescing entities with specific and different spectra of fluorescence : background, Fluorophore1, Fluorophore2, Fluorophore3.
The behaviour of other algorithms is exactly the same, they require you to select background region , estimate background fluorescence spectrum and remove it from the signal. How is it possible to remove something that isn’t there?
Isn’t the channel unmixing is useful exactly for this reason: one can use multiple fluorophores with overlapping spectra and untangle them thanks to the different spectra?
Or the number of channels must correspond to the number of fluorescing entities? Then this is a limitation of the algorithm and not a matter of missing information.

Just for the record:
I know.

It is always a good idea to tell a community if a request is cross-posted and to give the corresponding link.

That said, my hint wasn’t meant for you, the cross-poster, but for this Forum.


Please excuse me! I didn’t mean to offend. Point taken and next time I will post the link together with the warning.