A small R Shiny app for base processing of flow cytometry samples. Main functions include:
- advanced acquisition of clean spectra from single-stains
- exporting and importing saved spectra in interoperable JSON format
- combining spectra in panels, calculating SNRs (and some other useful metrics) for the spectra combinations
- multicolor and spectral unmixing/compensation
The functionality is mostly cytometer- and method-agnostic, and should generally work with anything that produces FCS3 files. We have successfully applied this to data from several cytometer vendors (both spectral and the "traditional" multicolor).
PanelBuildeR was developed at the IOCB Prague and IHBT Prague, in cooperation with Liston Lab of the Babraham Institute. The development was supported by the Czech node of ELIXIR, the European infrastructure for life science.
- Spectra acquisition:
- cleaning spectra with non-linear regression (e.g.: remove harsh autofluorescence from a singlestain with dim antigen/fluorochrome combination)
- Theil-Sen etimation (extremely noise- and outlier-resistant)
- Panel quality estimation using signal-to-noise ratios
- Estimation of spectra of hypothetical singlestains from available data about antigen and fluorochrome brightness
- (Not yet implemented:) finding of optimal panel assignments
- Unmixing
- non-linear regression (the implemented variant is similar to non-negative least squares, but also supports non-negative residuals to better capture the incoming Poisson noise)
- OLS and several weighted variants thereof
- MAPE-like unmixing
- some useful data exported FCS files, e.g. unmixing RMSE and specific residuals
- simple post-unmixing compensation
You can install this using devtools directly from the GitHub repository. You will first need the unmixing package nougad:
devtools::install_github('exaexa/nougad')Check out the nougad
documentation for some
helpful hints about installation; in particular there might be very desirable
hardware-accelerated variants.
After that, install PanelBuildeR:
devtools::install_github('exaexa/panelbuilder')Once the package is installed, simply run the panelbuilder() function:
library(panelbuilder)
panelbuilder()You should get a browser window open with the PanelBuildeR UI running.
- Use the menu on the left side to navigate
- Import spectra from singlestains on the "Import" page. Take care with proper annotation of the spectra, you will need it later. Do not forget to measure the autofluorescence!
- On "Spectra" page, select spectra that you want to use. You will see them on "Panel" page.
- Panel design: If you imported multiple spectra that describe the same antigen, you may switch them on the "Panel" page now, trying you multiple variants of your panel. In some cases, the program may have enough information to estimate the spectra from singlestains that you did not import, which you can use too. This gives some estimate of how the panel will perform before you try it with real reagents and cells.
- Unmixing: You may use the imported singlestains on the "Unmixing" page, for unmixing/compensating any FCS file that contains matching channels. The unmixing will use the antigen/fluorochrome combination specified on the "Panel" page.
PanelBuildeR is designed for easy modification, so that we can quickly try
various new ideas and algorithms for processing the samples and spectra. To get
a "development" environment, clone the repository, and use test.R for
bootstrapping and running a local installation:
git clone https://github.com/exaexa/panelbuilder.git
cd panelbuilder
R -f test.RThe software is new, there may be bugs and compatibility problems. If anything looks fishy, feel free to open an issue!
