Friday, December 3, 2021

Flow cytometry I: Compensation

Put simply, as long as we don't find fluorochromes with absolute fidelity (i.e. very narrow emission peaks), we simply have to compensate raw readings from a flow cytometer. Let's start wth just two fluorochromes in two channels, 

1. Phycoerythrin (PE) in FL1 detector (red)

2. Fluorescein isothiocynate (FITC) in FL2 detector (yellow)

From a purely theoretical physics perspective, FITC and PE show a consistent and reproducible  overlap in their emission spectrum (from Spectra analyser; https://www.biolegend.com/en-us/spectra-analyzer)

Looking at the two emission spectrum (X axis is wavelength in nm), one can calculate how much FITC emission overlaps with PE, and vice versa; it is evident that FITC has a significant component where PE peak (red) is located, but PE does not have much of a tail where FITC (yellow) peaks

Usually flow cytometers have detector which detect light within a band of wavelengths, and they are calibrated to detect certain peaks. For example, a flow cytometer might have a red detector (FL1) and a yellow detector(FL2).
By simple eyeballing, one can guess that 15% of the red peak is contributed by the yellow tail, which is very close to the correct figure

Looking at the graph, we can guess that the emission peak of PE is augmented by 15% because of 'spillover' from FITC. This percentage is quite invariant in the abstract, ideal world of theoretical physics. In such an ideal world, for each cell which is interrogated by the flow cytometer, we can deduce the 'true' PE emission by the equation:
PEreal = PEobserved - (0.15 x FITCobserved)

The graph also shows a 1% contribution of PE in FITC peak (the remnant of the red tail in the yellow band). Thus,

FITCreal = FITCobserved - 0.01 x PEobserved

The two equations are simultaneous, i.e. they have two unknown variables PEreal and FITCreal, and thus can be solved (the flow cytometer has already provided you with PEobserved and FITCobserved). In general, for n fluorochromes to be detected by n bands, you will have n such equations; with a little linear algebra, you can manually solve them all (or ask your favorite Flow Cytometry analyser software to do it for you!). All you need is a ready made compensation matrix, which is an assortment of the correction factors in the form of an n x n table.
FITCPE
FITC10.15
PE0.011

Is that it?

Unfortunately, no. Flow cytometers are real instruments who measure real cells with real lasers and detectors, which are prone to voltage fluctuations, dead cell artifacts, and errors which simply can not be traced to a particular cause. Plus, each flow cytometer can have a different detector and different band pass. Thus, using the blanket values 15% & 1% is not advised. It is now routine to determine these values every time.
Now how do you do that? Spectrometry is not everyone's cup of tea. Fortunately, we can make an assumption that will make the task simpler: fluorescence intensity in a channel is the sum of contributions from all fluorochromes, in the same ratio in which their emission spectra overlap. That is to say, if I get an intensity x in the FL1 channel and y in FL2 channel, I can be sure that some fixed fraction of x is always contributing to y.
Determination of this correction factor, now, becomes a matter of designing an experiment. We prepare 
  1. a set of cells (C1) stained only with FITC combined with a diffusely positive marker (CD3)
  2. another set of cells (C2) stained only with PE tagged to the same CD3
Now let's run C1 in our flow cytometer, and plot FITC vs PE. Ensure that
  1. No part of the negative population does not go off the left of the chart, i.e. it must fully stay within the chart (adjust the voltage if necessary)
  2. The positive population is at least as positive as you would expect cells to be in your eventual experiment
  3. You don't use different cell lines (i.e. don't put lymphocytes in C1 and monocytes in C2; in such cases, better to use custom made beads which bind all IgG kappa antibodies for this purpose)
In this uncompensated graph, find the median fluorescence intensity (MFI) of both FITC and PE channel (although you haven't actually put PE in this tube, just FITC; whatever PE is showing is due to spill from FITC)

For example, let's say 
  • MFI_FITC_Pos = 80
  • MFI_FITC_Neg = 10
  • MFI_PE_Pos = 30
  • MFI_PE_Neg = 5

You can now make a few simple calculations
  • Let x = (MFI_PE_Pos - MFI_PE_Neg) = (30-5) = 25, which represents the effective MFI in PE channel
  • Let y = (MFI_FITC_Pos - MFI_FITC_Neg) = (80-10) = 70, which is the effective MFI in FITC channel
Now the factor x/y = 25/70 = 35% is the correction factor for spill of FITC into PE. You can now similarly calculate correction factor for spill of PE into FITC from the C2 tube.
Note that after compensation, the width of the FITC positive population will increase slightly; this is because the FITC information is now coming from two sources, both FITC and PE, thus increasing its error (degree of freedom); however, the median PE negative line (blue) must remain the same through both populations

With n fluorochromes, one can try n tubes with cells/ beads, each having a single fluorochrome, and acquire and plot them, and do the maths by hand, to come up with a compensation matrix. Or, you know, just let your favorite software do it magically.

Next generation sequencing: Part 1

 Imagine solving a puzzle with 100 pieces, each piece a centimeter in size, something like this: The genome is considerably larger than this...