Spread is an inevitable consequence of multicolour fluorescence-based flow cytometry. When an excited fluorophore emits lower energy photons, they are released with a distribution of wavelengths. That distribution gives us uncertainty in the measurement. Whether we use compensation or spectral unmixing to separate the fluorophore emissions into defined channels, if there are any fluorophores where the emission signals overlap, we we observe spreading of the signals between them due to this overlap and hence uncertainty in the measurement. This spread can actually look worse when the data are compensated/unmixed because of the logarithmic scaling, so a spread of 1000 either side of zero looks like a lot, whereas it is hard to pick out when positioned at 10^4.
Image of uncompensated and compensated data, showing spread. Note that the data are not skewed to one side of the axis, but rather are centred around zero. The events become more positive and more negative as the signal increases. This is spread.
You'd be forgiven for thinking, therefore, that there's nothing we can do about spread and must accept it in our data. This is far from the truth. In this post, we'll look at how spread manifests in large panels, and ways of dealing with spread in panel design.
The first key to dealing with spread is remembering that spread is directly proportional to signal strength. This means we can control spread by limiting excess signals. I’m going to walk through this example of two fantastic but spready fluorophores, PE/Fire 640 and PE/Fire 700, to show you how you can manage spread to some extent.
As we can see from the spectral profiles, these PE tandems are excited by every laser to some extent. They will therefore have spread against any fluorophore in those areas of the spectrum. We'll start by looking at the spreading between the two directly.
By using different dilutions and staining conditions, I can achieve varying levels of brightness and spread. What we can see from this is that there is a range where the markers remain well separated while the spread has been reduced about five-fold from the peak staining here in the middle. In general, what I recommend then, is that you don’t make any of your signals brighter than necessary for good resolution. Excess signals cause spread that will reduce resolution in high parameter panels.
While these fluorophores might be suboptimal for use on gating markers such as shown here, the brightness makes them excellent choices for low expression markers where the signal and spread are limited. Less expression, less spread.
It's best to think about the total amount of spread in the panel, not just the spread being caused by a single marker. By this I mean that fluorophores causing spread should be placed on low expression markers or, preferably, rare cell types. If we are running a panel focused on B cells and we put a high spread marker on CD19 or IgM, we are going to have that spread on almost every cell we are interested in analysing. Not good.
Which fluorophores are low spread? This will depend on your instrument and your fluorophore combinations to some extent, but as a general rule, the fluorophore with the narrowest emission spectrum (first fluorophore) excited by each laser is a good bet. Low-spread fluorophores have clean profiles with limited secondary peaks. The University of Chicago has prepared a table that might help.
Which fluorophores are high spread and where will we find spread? Anything with excitation by multiple lasers (PE or PerCP-based fluorophores, for example) will have higher spread per unit signal than a fluorophore that is more specific to a single laser.
PerCP-Cy5.5 in blue, PE-AF700 in Red
You can expect to see spread from a fluorophore into the next channel down on the same laser, and to a lesser extent, the next channel up. For example, BV750 will spread into BV785 and a bit into BV711.
BV711, BV750 and BV785 moving from left to right
You'll also get spread across lasers at similar wavelengths (so if BUV496 emits at 496nm, we can expect interference with BV480 and AF488).
BUV496 in blue, BV480 in red, AF488 in green
We can determine roughly where spread will occur with any fluorophore by looking for regions of overlapping emission in the spectral profiles. In the case of PE/Fire 640 (below), the purple trace, we can see it is near PE-Cy5, and has secondary peaks in the same detectors where BUV661, BV650, BB660 and APC have their peak emissions. Consequently, we see spread versus these fluorophores, and the spread is generally proportional to the scale of the off-peak emission. Note that there is no staining in the x-axis channels below, just spread.
You might notice that the negative is highly distorted in the PE/Fire 640 vs PE-Cy5 plot. This is due to the spectral similarity of these fluorophores. We'll discuss the impact this has on panel design and data analysis in future posts.
Finally, how can we apply this in a large panel? If we have multiple cell types present, e.g., B and T cells, and we have a pair of fluorophores A and B that spread into each other, we can use Fluorophore A on a T-cell specific marker (e.g., CTLA-4) and Fluorophore B on a B cell marker (e.g., IgA). We can apply this strategy at scale, separating our fluorophores into sub-panels within the structure of the larger panel.
Example set of fluorophores for a full panel using only 3 lasers on the Aurora:
We can take a combination of fluorophores like this and separate them into groups so that the spillover signals are on different cell types from the on-target signals. We could split this set of fluorophores in two such that PerCP-eFluor710 and PE-Fire700 aren’t on the same cell type. We can repeat that for every interfering pair/triplet of fluorophores, assigning each one to sub-panel A or sub-panel B.
Above is an example of how that might work. The peaks or teeth in these examples are now better separated horizontally and the secondary peaks that cause spread are farther down or in channels only present on the other cell type. This sawtooth design approach may be helpful if you have multiple cell types in one panel.
A note on dealing with spread in existing data:
The spread discussed in this post is spread from positive signals and is present even when the data are compensated or unmixed properly. It manifests as increasing signal both above and below zero (or any other set point for a cell population), like in the example with B220 and CD11b. The diagnostic feature is a trumpet shape when the the data are plotted on a biexponential axis, as is standard. If, after reading this, you think you have spread in combinations of fluorophores that aren't overlapping or shouldn't have spreading, you may actually have unmixing or compensation error, or a mix of those with spread. I suggest reviewing the unmixing tips, which are relevant for spectral and conventional flow controls, and if you're using conventional flow, re-running the compensation with AutoSpill in FlowJo. Things that look like spread come from uncertainty in the data, and sometimes that uncertainty comes from poor compensation/unmixing. Most of the spectral data I have seen where the user thinks it looks bad but doesn't know why, that data has unmixing errors, and the resolution can be improved by re-running the unmixing with better controls.
To read more about spread:
The paper from Mario Roederer's group describing the Spillover Spread Matrix.
A paper on the Spread Quantification Index.
Documentation from FlowJo explaining how the spread matrix is calculated traditionally.
Documentation from FlowJo on how AutoSpill calculates the spread matrix.
A great article from the University of Chicago on spread in Aurora panel design.
A presentation by Zosia Maciorowski on spread in conventional flow.
The recent 50-color OMIP pre-print from Florian Mair and company includes some description of how fluorophore choice affects spreading in large spectral panels ("unmixing spreading error"), and mentions an upcoming publication about computationally automated optimisation of fluorophore choices. This will be very interesting to read!