Currently, I am attempting to compensate for spillover across channels in mass cytometry datasets. However, whenever I attempt to do so with files that were manually cleaned to remove debris and aggregates, the spillover matrix that is generated appears to have values greater than 1. I have absolutely no idea why this would be the case even after looking at the source code and documentation for the computeSpillmat function and CATALYST, and consequently I would appreciate any and all assistance to resolving this issue.
library(CATALYST)
library(cowplot)
library(flowCore)
library(ggplot2)
library(SingleCellExperiment)
library(readxl)
library(FlowSOM)
listfcs=c("20220318_Yukako_Sample1_Cleaned.fcs", "20220325_Stimulation_Cleaned.fcs","March_30_Cleaned_sample_1.fcs","March_30_Cleaned_sample_2.fcs", "March_30_Cleaned_sample_3.fcs","March_30_Cleaned_sample_4.fcs",
"April_5_Cleaned_sample_1.fcs","April_5_Cleaned_sample_2.fcs", "April_5_Cleaned_sample_3.fcs","April_5_Cleaned_sample_4.fcs",
"April_11_Cleaned_sample_1.fcs","April_11_Cleaned_sample_2.fcs", "April_11_Cleaned_sample_3.fcs","April_11_Cleaned_sample_4.fcs")
realdata <- read.flowSet(files=listfcs, path="C:/Users/DWQ/OneDrive - Mass General Brigham/Documents/Raw data/Cleaned")
setwd("C:/Users/DWQ/OneDrive - Mass General Brigham/Documents")
panel <- "Panel_markers.xlsx"
barkey <- "Fluidigm_20plex_barcode_key.csv"
panel <- read_excel(panel)
head(data.frame(panel))
md <- "Cleaned_metadata.xlsx"
md <- read_excel(md)
md$condition <- factor(md$condition, levels = c("Ref", "Radiotherapy"))
md$sample_id <- factor(md$sample_id, levels = md$sample_id[order(md$condition)])
set.seed(1234)
sce <- prepData(realdata, panel, md, features = panel$fcs_colname)
bc_ms <- c(89,103,120, 127,131,133,138, 140:156, 158:176,191,193:195,198,208,209)
sce <- assignPrelim(sce, bc_ms, verbose = FALSE)
sce <- applyCutoffs(estCutoffs(sce))
# compute & extract spillover matrix
sce <- computeSpillmat(sce, assay="exprs")
sm <- metadata(sce)$spillover_matrix
sce <- compCytof(sce, sm, method = "nnls", overwrite = TRUE)
sce <- cluster(sce, features = "state",
xdim = 10, ydim = 10, maxK = 20, seed = 1234)
sce <- runDR(sce, "UMAP", cells = 1e3, features = "state")
sce <- runDR(sce, "TSNE", cells = 500, features = "state")
This is the resulting error:
> sce <- applyCutoffs(estCutoffs(sce))
Error in optim(startVec, opfct, hessian = TRUE, method = optMethod, control = list(maxit = maxIt, :
non-finite finite-difference value [3]
Error in optim(startVec, opfct, hessian = TRUE, method = optMethod, control = list(maxit = maxIt, :
non-finite finite-difference value [3]
Error in optim(startVec, opfct, hessian = TRUE, method = optMethod, control = list(maxit = maxIt, :
non-finite finite-difference value [3]
Error in optim(startVec, opfct, hessian = TRUE, method = optMethod, control = list(maxit = maxIt, :
non-finite finite-difference value [3]
> # compute & extract spillover matrix
> sce <- computeSpillmat(sce, assay="exprs")
> sm <- metadata(sce)$spillover_matrix
> sce <- compCytof(sce, sm, method = "nnls", overwrite = TRUE)
Error in .check_sm(x, isotope_list) :
The supplied spillover matrix is invalid as it contains entries greater than 1.
Valid spill values are non-negative and mustn't exceed 1.
This is a list of the packages I am using:
sessionInfo()
R version 4.2.1 (2022-06-23 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.utf8 LC_CTYPE=English_United States.utf8 LC_MONETARY=English_United States.utf8
[4] LC_NUMERIC=C LC_TIME=English_United States.utf8
attached base packages:
[1] stats4 stats graphics grDevices utils datasets methods base
other attached packages:
[1] FlowSOM_2.4.0 igraph_1.3.4 readxl_1.4.0 ggplot2_3.3.6
[5] flowCore_2.8.0 cowplot_1.1.1 CATALYST_1.20.1 SingleCellExperiment_1.18.0
[9] SummarizedExperiment_1.26.1 Biobase_2.56.0 GenomicRanges_1.48.0 GenomeInfoDb_1.32.2
[13] IRanges_2.30.0 S4Vectors_0.34.0 BiocGenerics_0.42.0 MatrixGenerics_1.8.1
[17] matrixStats_0.62.0
loaded via a namespace (and not attached):
[1] backports_1.4.1 circlize_0.4.15 drc_3.0-1 plyr_1.8.7
[5] ConsensusClusterPlus_1.60.0 splines_4.2.1 BiocParallel_1.30.3 scattermore_0.8
[9] scater_1.24.0 TH.data_1.1-1 digest_0.6.29 foreach_1.5.2
[13] viridis_0.6.2 fansi_1.0.3 magrittr_2.0.3 ScaledMatrix_1.4.0
[17] CytoML_2.8.0 cluster_2.1.3 doParallel_1.0.17 aws.signature_0.6.0
[21] ComplexHeatmap_2.12.0 RcppParallel_5.1.5 sandwich_3.0-2 flowWorkspace_4.8.0
[25] cytolib_2.8.0 jpeg_0.1-9 colorspace_2.0-3 ggrepel_0.9.1
[29] dplyr_1.0.9 crayon_1.5.1 RCurl_1.98-1.7 jsonlite_1.8.0
[33] hexbin_1.28.2 graph_1.74.0 survival_3.3-1 zoo_1.8-10
[37] iterators_1.0.14 glue_1.6.2 polyclip_1.10-0 gtable_0.3.0
[41] nnls_1.4 zlibbioc_1.42.0 XVector_0.36.0 GetoptLong_1.0.5
[45] DelayedArray_0.22.0 ggcyto_1.24.1 car_3.1-0 BiocSingular_1.12.0
[49] Rgraphviz_2.40.0 shape_1.4.6 abind_1.4-5 scales_1.2.0
[53] pheatmap_1.0.12 mvtnorm_1.1-3 DBI_1.1.3 rstatix_0.7.0
[57] Rcpp_1.0.9 plotrix_3.8-2 viridisLite_0.4.0 clue_0.3-61
[61] rsvd_1.0.5 httr_1.4.3 RColorBrewer_1.1-3 ellipsis_0.3.2
[65] pkgconfig_2.0.3 XML_3.99-0.10 farver_2.1.1 scuttle_1.6.2
[69] deldir_1.0-6 utf8_1.2.2 tidyselect_1.1.2 rlang_1.0.4
[73] reshape2_1.4.4 cellranger_1.1.0 munsell_0.5.0 tools_4.2.1
[77] cli_3.3.0 generics_0.1.3 broom_1.0.0 ggridges_0.5.3
[81] aws.s3_0.3.21 stringr_1.4.0 yaml_2.3.5 purrr_0.3.4
[85] RBGL_1.72.0 sparseMatrixStats_1.8.0 xml2_1.3.3 compiler_4.2.1
[89] rstudioapi_0.13 beeswarm_0.4.0 curl_4.3.2 png_0.1-7
[93] ggsignif_0.6.3 tibble_3.1.8 tweenr_1.0.2 stringi_1.7.8
[97] lattice_0.20-45 Matrix_1.4-1 vctrs_0.4.1 pillar_1.8.0
[101] lifecycle_1.0.1 GlobalOptions_0.1.2 BiocNeighbors_1.14.0 data.table_1.14.2
[105] bitops_1.0-7 irlba_2.3.5 colorRamps_2.3.1 R6_2.5.1
[109] latticeExtra_0.6-30 gridExtra_2.3 RProtoBufLib_2.8.0 vipor_0.4.5
[113] codetools_0.2-18 MASS_7.3-58 gtools_3.9.3 assertthat_0.2.1
[117] rjson_0.2.21 withr_2.5.0 multcomp_1.4-19 GenomeInfoDbData_1.2.8
[121] parallel_4.2.1 ncdfFlow_2.42.1 grid_4.2.1 beachmat_2.12.0
[125] tidyr_1.2.0 ggpointdensity_0.1.0 DelayedMatrixStats_1.18.0 carData_3.0-5
[129] Rtsne_0.16 ggpubr_0.4.0 ggnewscale_0.4.7 ggforce_0.3.3
[133] base64enc_0.1-3 ggbeeswarm_0.6.0 interp_1.1-3
Please let me know if you need any additional information.
Hi,
did you ever resolve the error? I am facing the same issue right now.
Best, Marlene