scRecover
R包是用来做什么的单细胞RNA-seq (scRNA-seq)数据的imputation.它将在scRNA-seq原始读计数矩阵中检测并输入辍学值保持实零不变.
因为在scRNA-seq数据中既有退出零又有实数零,所以imputation方法不应该把所有的零都归到非零值。为了区分辍学率和实数零,scRecover
采用零膨胀负二项式(zero - inflation Negative Binomial, ZINB)模型估计每个基因的退出概率,用积累曲线预测每个细胞的退出数。通过与scImpute, SAVER和MAGIC的结合,它不仅检测辍学和真正的零以更高的精度,但也改善下游聚类和可视化结果.
如果你使用scRecover
在已发表的研究中,请引用:
安装scRecover
从Bioconductor:
如果(!requireNamespace("BiocManager", quiet = TRUE)) install.packages("BiocManager")
安装发展版本从Bioconductor:
如果(!requireNamespace("BiocManager", quiet = TRUE)) install.packages("BiocManager") BiocManager::install("scRecover", version = "devel")
或安装发展版本从GitHub:
如果(!requireNamespace("BiocManager", quiet = TRUE)) install.packages("BiocManager") BiocManager::install(" miaozhu/screcover ")
加载scRecover
和其他需要的包的小插图在R:
库(scRecover)库(BiocParallel) suppressMessages(库(SingleCellExperiment))
scRecover
有两个输入:计数
其中一个Kcluster
或标签
.
输入计数
是一个scRNA-seq阅读数矩阵或者一个SingleCellExperiment
对象,该对象包含读取计数矩阵。矩阵的行是基因,列是细胞。
Kcluster
是一个整数,指定单元格子种群的数量。该参数可以基于先验知识或原始数据的聚类来确定。Kcluster
用于确定每个单元格的候选邻居,并且不需要非常精确。
标签
是一个字符/整数向量,指定原始计数矩阵中每个列的单元格类型。只需要当Kcluster =零
.每种细胞类型应至少有两个细胞用于插入。
用户可以加载测试数据scRecover
通过
数据(scRecoverTest)
测试数据计数
在scRecoverTest
是一个scRNA-seq读取计数矩阵,它有200个基因(行)和150个细胞(列)。
dim(counts) #> [1] 200 150 counts[1:6, 1:6] #> E3.46.3383 E3.51.3425 E3.46.3388 E3.51.3423 E3.46.3382 E3.51.3423 E3.46.3382 E3.49.3407 #> BTG4 22 0 12 26 00 0 #> GABRB1 00 00 00 #> IL9 00 00 00 #> TAPBPL 20 51 0 2 #> KANK4 00 00 00 #> CPSF2 12 0 95 0 5 115
的对象标签
在scRecoverTest
的列对应的,指定读计数矩阵中的单元格类型的整数向量吗计数
.
长度(标签)#>[1]150表(标签)#>标签#> 1 2 #> 50 100
的对象oneCell
在scRecoverTest
是细胞中每个基因的原始读取计数的载体。
head(oneCell) #> Vsx2_1a_F2 #> Itm2a 0 #> Gm26258 0 #> Sergef 149 #> Gm24106 0 #> Fam109a 0 #> Ssu72 60 length(oneCell) #> [1] 24538
下面是一个要运行的示例scRecover
读取计数矩阵输入:
#使用Kcluster指定的scRecover(counts = counts, Kcluster = 2, outputDir = ")运行scRecover。/ outDir_scRecover /”,verbose = FALSE) # > [1 ] "========================= 运行scImpute =========================" #> [ 1]“阅读原始数矩阵……”#>[1] "原始计数矩阵中的基因数量200" #>[1]"原始计数矩阵中的细胞数量150" #>[1]"读取完成!"#>[1]“责备开始…”#>[1] "搜索候选邻居…" #>[1] "推断细胞相似性…"#>[1] "降维…"#>[1]“计算细胞距离…”#>[1] "集群大小:" #>[1]92 54 #>[1]"类型1的估计退出概率…"#>[1]“搜索有效基因…” #> [1] "imputing dropout values for type 1 ..." #> [1] "estimating dropout probability for type 2 ..." #> [1] "searching for valid genes ..." #> [1] "imputing dropout values for type 2 ..." #> [1] "writing imputed count matrix ..." #> [1] "========================= scImpute finished ========================" #> #> Processing 1 of 2 cell clusters #> #> Processing 2 of 2 cell clusters #> #> [1] "======================== scRecover finished! ========================" #> [1] "The output files of scRecover are in directory:" #> [1] "./outDir_scRecover/" #> [1] "============================== Cheers! ==============================" # Or run scRecover with labels specified # scRecover(counts = counts, labels = labels, outputDir = "./outDir_scRecover/")
的SingleCellExperiment
类是一个广泛使用的S4类,用于存储单细胞基因组数据。scRecover
也可以把SingleCellExperiment
数据表示作为输入。
下面是一个要运行的示例scRecover
与SingleCellExperiment
输入:
#为scRecover数据加载测试数据(scRecoverTest) #将scRecover中的测试数据转换为singlecellexperexperiment数据表示sce <- singlecellexperexperiment (assays = list(counts = as.matrix(counts))) #运行scRecover with singlecellexperexperiment输入sce (Kcluster指定)scRecover(counts = sce, Kcluster = 2, outputDir = "。/ outDir_scRecover /”,verbose = FALSE) # > [1 ] "========================= 运行scImpute =========================" #> [ 1]“阅读原始数矩阵……”#>[1] "原始计数矩阵中的基因数量200" #>[1]"原始计数矩阵中的细胞数量150" #>[1]"读取完成!"#>[1]“责备开始…”#>[1] "搜索候选邻居…" #>[1] "推断细胞相似性…"#>[1] "降维…"#>[1]“计算细胞距离…”#>[1] "集群大小:" #>[1]92 54 #>[1]"类型1的估计退出概率…"#>[1]“搜索有效基因…”#>[1] "输入类型1的dropout值…" #> [1] "estimating dropout probability for type 2 ..." #> [1] "searching for valid genes ..." #> [1] "imputing dropout values for type 2 ..." #> [1] "writing imputed count matrix ..." #> [1] "========================= scImpute finished ========================" #> #> Processing 1 of 2 cell clusters #> #> Processing 2 of 2 cell clusters #> #> [1] "======================== scRecover finished! ========================" #> [1] "The output files of scRecover are in directory:" #> [1] "./outDir_scRecover/" #> [1] "============================== Cheers! ==============================" # Or run scRecover with SingleCellExperiment input sce (labels specified) # scRecover(counts = sce, labels = labels, outputDir = "./outDir_scRecover/")
函数estDropoutNum
在包中可以估计一个细胞中的辍学基因数或所有表达的基因数(即观察到的基因数加上辍学基因数):
#加载测试数据data(scRecoverTest) # Downsample oneCell set中10%的读取计数。down <- countsSampling(counts = oneCell, fraction = 0.1) #计算下采样细胞sum(oneCell. down)中groundtruth辍学基因数量。#通过estDropoutNum(sample = oneCell. down == 0 & oneCell != 0) #>[1] 2095 #通过estDropoutNum(sample = oneCell.)估算下采样细胞中的dropout基因数量。drop, depth = 10, return = "dropoutNum"
Blow表示由。预测的表达基因数estDropoutNum
当reads深度从0%到100%之间变化时,取10%的下采样reads和groundtruth表达的基因数。
的计算表达式矩阵scRecover
如果未指定,将保存在当前工作目录下指定的输出目录或以前缀' outDir_scRecover_ '命名的文件夹中。
scRecover
集成并行计算功能BiocParallel
包中。用户可以设置平行= TRUE
(默认)的函数scRecover
启用并行化,并将BPPARAM
参数。
#运行带有Kcluster的屏幕封面(counts = counts, Kcluster = 2, parallel = TRUE)
高级用户可以使用BiocParallelParam
对象从包BiocParallel
填写BPPARAM
参数指定要使用的并行后端及其配置参数。
Unix和Mac用户的最佳选择是使用MulticoreParam
配置多核并行后端。
#设置参数并注册要使用的后端param <- MulticoreParam(workers = 18, progressbar = TRUE) register(param) #运行18核的scRecover(counts = counts, Kcluster = 2, parallel = TRUE, BPPARAM = param) #运行18核的scRecover(counts = counts, labels = labels, parallel = TRUE, BPPARAM = param)
对于Windows用户,使用SnowParam
配置Snow后端是一个很好的选择:
#设置参数并注册要使用的后端param <- SnowParam(workers = 8, type = "SOCK", progressbar = TRUE) register(param) #运行8核的scRecover(counts = counts, Kcluster = 2, parallel = TRUE, BPPARAM = param) #运行8核的scRecover(counts = counts, labels = labels, parallel = TRUE, BPPARAM = param)
看到参考手册的BiocParallel
包的详细信息BiocParallelParam
类。
我们评估了SAVER, scImpute, MAGIC以及它们与scRecover版本的结合:SAVER+scRecover, scImpute+scRecover, MAGIC+scRecover对下采样scna -seq数据集的影响,该数据集是对SMART-seq2 scna -seq数据集的随机读取生成的(Petropoulos S等)。细胞,2016,https://www.ebi.ac.uk/arrayexpress/experiments/E-MTAB-3929/).
我们发现,与scRecover结合后,scImpute+scRecover、SAVER+scRecover和MAGIC+scRecover的精度分别高于scImpute、SAVER和MAGIC。
我们发现scImpute+scRecover, SAVER+scRecover和MAGIC+scRecover预测的退出数字比不结合scRecover更接近真实的退出数字。
我们将6种imputation方法应用于10X scRNA-seq数据集(https://support.10xgenomics.com/single-cell-gene-expression/datasets/3.0.0/heart_1k_v3).
然后,我们通过与数据集中生成的单元标签进行比较,并推导出它们的调整兰德指数(ARI)和Jaccard指数(越大越好),来衡量下游聚类和可视化结果。
我们发现在与scRecover结合后,SAVER, scImpute和MAGIC有明显的改善。
植入前后基因数:
接下来,我们将这6种imputation方法应用到SMART-seq scRNA-seq数据集(Chu L, et al。基因组生物学,2016年,https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE75748).
然后,我们通过与数据集中生成的单元标签进行比较,并推导出它们的调整兰德指数(ARI)和Jaccard指数(越大越好),来衡量下游聚类和可视化结果。
我们发现在与scRecover结合后,SAVER, scImpute和MAGIC有明显的改善。
植入前后基因数:
使用browseVignettes(“scRecover”)
看…的小片段scRecover
安装后在R。
使用R中的以下代码访问帮助文档scRecover
:
# scRecover的文档?scRecover的文档# estDropoutNum的文档?estDropoutNum的文档#计数的文档?计数的文档#采样的文档?规范化的文档#测试数据的文档?scRecoverTest ?计数?标签?oneCell
也欢迎您通过电子邮件联系作者寻求帮助。
sessionInfo() #> R version 4.2.0 RC (22-04-21 r82226) #>平台:x86_64-pc-linux-gnu(64位)#>运行在:Ubuntu 20.04.4 LTS #> #> Matrix products: default #> BLAS: /home/biocbuild/bbs-3.16-bio /R/lib/libRblas. #因此#> LAPACK: /home/biocbuild/bbs-3.16-bio /R/lib/libRlapack。so #> #> locale: #> [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# > [3] LC_TIME=en_GB LC_COLLATE= c# > [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 #> [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# > [9] LC_ADDRESS=C LC_TELEPHONE= c# > [11] LC_MEASUREMENT=en_US。utf - 8 LC_IDENTIFICATION = C # > # >附加基本包:# > [1]stats4统计图形grDevices跑龙套数据集方法# >[8]基地# > # >其他附加包:# > [1]SingleCellExperiment_1.19.0 SummarizedExperiment_1.27.0 # > [3] Biobase_2.57.0 GenomicRanges_1.49.0 # > [5] GenomeInfoDb_1.33.0 IRanges_2.31.0 # > [7] S4Vectors_0.35.0 BiocGenerics_0.43.0 # > [9] MatrixGenerics_1.9.0 matrixStats_0.62.0 # > [11] BiocParallel_1.31.0 scRecover_1.13.0 # > # >加载通过名称空间(而不是附加):#> [1] sass_0.4.1 jsonlite_1.8.0 splines_4.2.0 #> [4] foreach_1.5.2 here_1.0.1 bslib_0.3.1 #> [7] [7] assertthat_0.2.1 GenomeInfoDbData_1.2.8 yaml_2.3.5 #> [10] gamlss_5.4-3 numdriver_2016.8 -1.1 pillar_1.7.0 #> [13] lattice_0.20-45 glue_1.6.2 reticulate_1.24 #> [16] bbmle_1.0.24 digest_0.6.29 XVector_0.37.0 #> [19] bbmle_1.0.24 colorspace_2.0-3 htmltools_0.5.2 #> [22] Matrix_1.4-1 pkgconfig_2.0.3 zlibbioc_1.43.0 #> [25] purrr_0.3.4 mvtnorm_1.1-3 scales_1.2.0 #> [28] Rmagic_2.0.3 gamlls .data_6.0-2#> [31] generics_0.1.2 ggplot_2 .3.5 ellipsis_0.3.2 #> [34] cli_3.3.0 SAVER_1.1.2 survival_3. 1-1 #> [37] magrittr_2.0.3 crayon_1.5.1 evaluate_0.15 #> [40] fansi_1.0.3 doParallel_1.0.17 nlme_1 -157 #> [43] MASS_7.3-57 tools_4.2.0 lifecycle_1.0.1 #> [46] stringgr_1 .4.0 kernlab_0.9-30 munsell_0.5.0 #> [49] DelayedArray_0.23.0 gamnlab_6.0 -3 compiler_4.2.0 #> [52] jquerylib_0.1.4 rsvd_1.0.5 penalized_0.9-52 #> [55] rlang_1.0.2 grid_4.2.0 RCurl_1.98-1.6 #> [58] iterators_1.0.14rappdirs_0.3.3 bitops_1.0-7 #> [61] rmarkdown_2.14 gtable_0.3.0 codetools_0.2-18 #> [64] DBI_1.1.2 authentic_1 .1- 4 R6_2.5.1 #> [67] knitr_1.38 dplyr_1.0.8 bdsmatrix_1.3-4 #> [70] fastmap_1.1.0 utf8_1.2.2 rprojroot_2.0.3 #> [73] stringi_1.7.6 pscl_1.5.5 parallel_4.2.0 #> [76] Rcpp_1.0.8.3 vctrs_0.4.1 png_0.1-7 #> [79] tidyselect_1.1.2 xfun_0.30 . #