内容

1介绍

1.1关于scTGIF

在这里,我们解释的概念scTGIF.单细胞RNA-Seq (scRNA-Seq)的分析存在一个潜在的难题;哪些数据对应什么样的单元格类型尚不清楚先天的

因此,在scRNA-Seq数据分析的起点,每个细胞都是“未着色”的(图1)。有一些方法可以支持用户推断细胞类型,如(1)已知标记基因表达,(2)blast样基因表达与参考DB的比较,(3)差异表达基因(DEGs)和过代表分析(ORA) (scRNA-tools).

第一种方法可能是最流行的方法,但该任务基于有关单元格类型的专家知识,并不总是通用的。第二种方法简单且可扩展,但当细胞类型未知或其他研究机构仍未测量时,这种方法仍有局限性。第三种方法也许可以用于任何情况,但模糊和耗时的任务;这项任务是基于集群标签和真实的集群结构,这是未知的,一些DEG方法必须在每个集群中执行,但最近的scRNA-Seq数据集有数十到数百种细胞类型。此外,scRNA-Seq数据集可能具有低质量的细胞和伪影(例如双态),但很难与真实的细胞数据区分。因此,在实际的数据分析情况下,伴随着细胞标签的改变,费力的试错周期是不可避免的(图1)。

scTGIF开发是为了减少这种试错周期;该工具直接将未标注的细胞与相关基因功能连接起来。由于该工具不使用参考DB,标记基因列表和聚类标签可以在任何情况下使用,不需要专家知识,不受细胞标签变化的影响。

图1:scTGIF的概念

scTGIF,需要三个数据;基因表达矩阵、细胞二维坐标(如t-SNE、UMAP)和MSigDB基因集。首先,将二维坐标分割为50 * 50的网格,并在每个网格级别总结基因表达(X1).接下来,基因与相关基因功能之间的对应关系被总结为基因-功能矩阵(X2).在这里,我们只支持常见的基因被用于X1而且X2.执行联合非负矩阵分解(jNMF)算法,该算法在nnTensor,共享潜在变量(W)对两个矩阵进行估计。

图2:联合NMF

该算法将网格集与相应的基因函数进行配对。低维(D)由网格矩阵H1作品作为注意力地图,帮助用户注意网格,并D通过函数矩阵H2显示了网格中丰富的基因功能。

图3:H1和H2矩阵

scTGIF还支持一些QC指标,以区分低质量的细胞和工件从真正的细胞数据。

2使用

2.0.1测试数据

的用法scTGIF的测试数据远端肺上皮

库("scTGIF")库(" singlecel实验")库("GSEABase")库("msigdbr")数据("DistalLungEpithelium")数据(" ca.DistalLungEpithelium")数据("label.DistalLungEpithelium")

尽管这些数据仍然是注释的,并且提供了单元格类型标签,scTGIF不依赖于此信息。

(问= FALSE)情节(pca相媲美。DistalLungEpithelium, col=label.DistalLungEpithelium, pch=16, main="Distal lung epithelium dataset", xlab="PCA1", ylab="PCA2", bty="n") text(0.1, 0.05, "AT1", col="#FF7F00", cex=2) text(0.07, -0.15, "AT2", col="#E41A1C", cex=2) text(0.13, -0.04, "BP", col="#A65628", cex=2) text(0.125, -0.15, "Clara", col="#377EB8", cex=2) text(0.09, -0.2, "Cilliated", col="#4DAF4A", cex=2)

结合基因表达和相关基因功能,我们假设将基因功能数据总结为对象GSEABase.该数据可以直接从MSigDB下载,并可以像gmt <- GSEABase::getGmt(" /YOURPATH/h.all.v6.0.entrez.gmt ")一样导入。

请注意,scTGIF目前只支持NCBI基因id (Entrez id)。当scRNA-Seq与人类无关时,情况就更加复杂了。这里,我们使用msigdbr包来检索鼠标MSigDB基因集,如下所示。

m_df = msigdbr(species = "Mus musculus", category = "H")[, c("gs_name", "entrez_gene")] hallmark = unique(m_df$gs_name) gsc <- lapply(hallmark, function(H){target = which(m_df$gs_name == H) geneIds = unique(as.character(m_df$entrez_gene[target])) GeneSet(setName= H, geneIds)}) gmt = GeneSetCollection(gsc) gmt = gmt[1:10] #为这个demo减少

2.0.2参数设置:settingTGIF

接下来,将数据矩阵转换为对象SingleCellExperiment包,并且2D坐标被注册为reducedDims插槽。

sce <- singlecel实验(assays = list(counts = DistalLungEpithelium)) reducedDims(sce) <- SimpleList(PCA= PCA .DistalLungEpithelium)

的默认模式scTGIF使用槽作为输入矩阵,还可以指定归一化的基因表达数据。在这种情况下,我们建议使用normcounts插槽来注册数据。

CPMED <- function(input){libsize <- colsum (input) median(libsize) * t(t(input) / libsize)} normcounts(sce) <- log10(CPMED(counts(sce)) + 1)

注册后的数据在南加州爱迪生公司settingTGIF将像下面这样工作。

settingTGIF(sce, gmt, reducedDimNames="PCA", assayNames="normcounts")

2.0.4HTML报告:reportTGIF

最后,reportTGIF生成HTML报告来总结jNMF的结果。

reportTGIF (sce、html。open=FALSE, title="scTGIF Report for DistalLungEpithelium dataset", author="Koki Tsuyuzaki")
# #指数。Rmd被创建…
# #指数。Rmd被编译为index.html…
##加载所需的包:ggplot2
## ##附加包:'plotly'
以下对象从'package:ggplot2'中屏蔽:## ## last_plot
下面的对象从'package:AnnotationDbi'中屏蔽:## ## select
下面的对象从'package:IRanges'屏蔽:## ## slice
下面的对象从'package:S4Vectors'中屏蔽:## ## rename
下面的对象从'package:stats': ## ##过滤器中屏蔽
下面的对象从'package:graphics'中屏蔽:## ## layout
##警告:textfont。color(还)不支持数据数组##警告:textfont。color(还)不支持数据数组##警告:textfont。color(还)不支持数据数组##警告:textfont。color(还)不支持数据数组##警告:textfont。color(还)不支持数据数组##警告:textfont。Color(目前)不支持数据数组
## ################################################ ## 数据文件保存在# # / tmp / RtmpoqVSWz  ## ################################################

由于这个函数需要一些时间,请输入示例(“reportTGIF”)取决于你自己的环境。

会话信息

## R正在开发中(不稳定)(2022-10-25 r83175) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 22.04.1 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.17-bioc/R/lib/libRblas。so ## LAPACK: /usr/lib/x86_64-linux-gnu/ LAPACK /liblapack.so.3.10.0 ## ## 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_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4 stats graphics grDevices utils datasets methods ##[8]基础## ##其他附加包:# # # # [1] plotly_4.10.0 ggplot2_3.3.6 [3] msigdbr_7.5.1 GSEABase_1.61.0 # # [5] graph_1.77.0 annotate_1.77.0 # # [7] xml_3.99 - 0.12 AnnotationDbi_1.61.0 # # [9] SingleCellExperiment_1.21.0 SummarizedExperiment_1.29.0 # # [11] Biobase_2.59.0 GenomicRanges_1.51.0 # # [13] GenomeInfoDb_1.35.0 IRanges_2.33.0 # # [15] S4Vectors_0.37.0 BiocGenerics_0.45.0 # # [17] MatrixGenerics_1.11.0 matrixStats_0.62.0 # # [19] scTGIF_1.13.0 BiocStyle_2.27.0 # # # #通过加载一个名称空间(而不是附加):## [1] RcppAnnoy_0.0.20 rTensor_1.4.8 splines_4.3.0 ## [7] tibble_3.1.8 polyclip_1.10-4 rpart_4.1.19 ## [10] lifecycle_1.0.3 tcltk_4.3.0 globals_0.16.1 ## [13] lattice_0.20-45 MASS_7.3-58.1 crosstalk_1.2.0 ## [19] plot3D_1.4 jquerylib_0.1.4 yaml_2.3.6 ## [22] httpuv_1.6.6 Seurat_4.2.0 sctransform_0.3.5 ## [28] spatstat.sparse_3.0-0 reticulate_1.26[40] RCurl_1.98-1.9 tweenr_2.0.2 misc3d_0.9-1 ## [43] GenomeInfoDbData_1.2.9 ggrepel_0.9.1 irlba_2.3.5.1 ## [46] listenv_0.8.0 spatstat.utils_3.0-1 schex_1.13.0 ## [52] parallelly_1.32.1 leiden_0.4.3 codetools_0.2-18 ## [55] DelayedArray_0.25.0 ggforce_0.4.1 tidyselect_1.2.0 ##[58] farver_2.1.1 viridis_0.6.2 jsonlite_1.8.3 ## [61] ellipsis_0.3.2 progressr_0.11.0 ggridges_0.5.4 ## [64] survival_3.4-0 systemfonts_1.0.4 tools_4.3.0 ## [67] ragg_1.2.4 tagcloud_0.6 ica_1.0-3 ## [70] Rcpp_1.0.9 glue_1.6.2 gridExtra_2.3 ## [73] mgcpp_1 . 1.8-41 xfun_0.34 dplyr_1.0.10 ## [76] withr_2.5.0 BiocManager_1.30.19 fastmap_1.1.0 ## [82] fansi_1.0.3 entropy_1.3.1 digest_0.3.6 ## [85] colorspace_2.0-3 scattermore_0.8 tensor_1.5 ## [88]spatstat.data_3.0-0 RSQLite_2.2.18 hexbin_1.28.2 ## [91] utf8_1.2.2 tidyr_1.2.1 generics_0.1.3 ## [94] data.table_1.14.4 httr_1.4.4 htmlwidgets_1.5.4 ## [97] uwot_0.1.14 pkgconfig_2.0.3 gtable_0.3.1 ## [100] blob_1.2.3 lmtest_0.9-40 XVector_0.39.0 ## [103] htmltools_0.5.3 dotCall64_1.0-2 bookdown_0.29 ## [106] SeuratObject_4.1.2 scales_1.2.1 png_0.1-7 ## [109] knitr_1.40 reshape2_1.4.4 nlme_1 . 160 ## [112] cachem_1.0.6 zoo1.8 -11 string_1 .4.1 ## [115] KernSmooth_2.23-20 concaveman_1.1.0parallel_4.3.0 ## [118] miniUI_0.1.1.1 pillar_1.8.1 grid_4.3.0 ## [121] vctrs_0.5.0 RANN_2.6.1 promises_1.2.0.1 ## [127] xtable_1. 7.3 cli_3.4.1 compiler_4.3.0 ## [130] rlang_1.0.6 crayon_1.5.2 future_apply_1.9.1 ## [133] labeling_0.4.2 plyr_1.8.7 stringi_1.7.8 ## [136] deldir_1.0-6 viridisLite_0.4.1 assertthat_0.2.1 ## [139] babelgene_22.9 munsell_0.5.0 Biostrings_2.67.0 ## [142] lazyeval_0.2.2 spatstat.geom_3. 3 Matrix_1.5-1 ## patchwork_1.1.2 nnTensor_1.1.8 bit64_4.0.5 ## [148] future_1.28.0 KEGGREST_1.39.0 shiny_1.7.3 ## [151] highr_0.9 ROCR_1.0-11 igraph_1.3.5 ## [154] memoise_2.0.1 bslib_0.4.0 bit_4.0.4