Post Mon Feb 15, 2021 4:36 pm

CytoSpill for mass cytometry spillover compensation

Hello everyone, first post here.

I was looking at trying out CytoSpill ( for spillover compensation as the dataset I am working with didn't have any single mass compensation beads run. I ran into some issues getting the package install in R so I thought I would post my work around to get it working in case anyone else has the same issues. I am using R 4.0.3

First, installing with the install_github tool fails. I think it might be a compatibility issue between R versions but I am not sure. Instead, I download the entire zip file and open CytoSpill as an R project.
When I try run the SpillComp command, it errors out due to "'list' object cannot be coerced to type 'double'". The fix to this problem is to open EstimateSpill.R and change line 199 to ' ms <- as.numeric(unlist(regmatches(chs, gregexpr("[0-9]+", chs))))'. Adding the 'unlist' command fixes the problem, at least for me. After this it seems to work without issue. I made a short loop in R to go through all the FCS files in a directory and run compensation on them. Oh, and make sure to 'source' the four R files in the CytoSpill project so it can call the functions properly.

I am really new to CyTOF (this is my undergraduate honors thesis so go easy on me) and I wanted to get some input on what channels would make most sense to run spillover compensation on. Would it make sense to compensate all channels (i.e., all markers plus your DNA intercalator and normalization beads)? Worried that compensation on the intercalator channels might cause problems for doublet identification. Maybe compensation should be done after singlet/doublet separation and live/dead separation?