在单细胞RNA-seq数据中检测隐藏的异质性

Donghyung Lee

2018年5月10日

IASVA软件包可用于检测大量或单细胞测序数据中隐藏的异质性。为了说明如何使用IASVA包进行异质性检测,我们使用了从人类胰岛样品获得的现实世界单细胞RNA测序(SCRNA-SEQ)数据(SCRNA-SEQ)数据(Lawlor等。Al。,2016年)。

负载软件包

图书馆(irlba)图书馆(Iasva)图书馆(SVA)图书馆(RTSNE)图书馆(pheatmap)图书馆(Corrplot)图书馆(Desctools)图书馆(rcolorbrewer)图书馆(总结性特征)set.seed((100color.vec < -brewer.pal((3,,,,“ set1”

加载胰岛单细胞RNA-seq数据

为了说明如何使用IA-SVA检测均质细胞群(即α细胞)中隐藏的异质性,我们使用来自健康(非糖尿病)受试者的α细胞计数(n = 101)。

counts_file < -system.file((“ Extdata”,,,,“ iasva_counts_test.rds”,,,,软件包=“ Iasva”#读取计数的矩阵,基因是行,样品是列计数< -readrds(counts_file)#样品注释/元数据的矩阵anns_file < -system.file((“ Extdata”,,,,“ iasva_anns_test.rds”,,,,软件包=“ Iasva”Anns < -readrds(anns_file)

计算几何库的大小,即,库截止读数计数的库大小。

众所周知,每个单元格中的几何库大小(即库转录读数计数的库大小)或表达基因的比例都解释了SCRNA-SEQ数据的一定很大的可变性(希克斯等。al。2015 Biorxiv,,,,McDavid等。al。2016年自然生物技术)。通常,对数转换的SCRNA-seq读数的第一个主要成分与几何库大小高度相关(r〜0.9)。在这里,我们计算了几何库大小向量,该库将用作IA-SVA算法中的已知因素。

geo_lib_size < -船柱((日志(计数+1))BARPLOT(geo_lib_size,xlab =“细胞”,,,,ylab =“几何自由大小”,,,,las =2

lcounts < -日志(计数+1#PC1和几何库大小相关pc1 < -irlba(LCOUNTS-行人(lcounts),1$v [,1这是给予的Cor(geo_lib_size,pc1)
## [1] -0.99716

运行IA-SVA

在这里,我们使用detter_id和geo_lib_size作为已知因素运行IA-SVA,并确定五个隐藏因素。SV以成对的方式绘制,以发现SV可以分开细胞类型。

set.seed((100detter_id < -$病人_idmod < -model.matrix((病人_id+geo_lib_size)#创建一个摘要的特殊类sums_exp < -总结性特征((测定=计数)iasva.res < -Iasva(sums_exp,mod [,-1],,冗长=错误的,,,,permute =错误的,,,,num.sv =5
## ia-sva运行...
## ## SV 1检测到!
## ## SV 2检测到!
## ## SV 3检测到!
## ## SV 4检测到!
## ## SV 5检测到!
## ###of大量代理变量:5
iasva.sv < -iasva.res$SV阴谋(iasva.sv [,1],iasva.sv [,2],,xlab =“ SV1”,,,,ylab =“ SV2”

cell_type < -as.factor(iasva.sv [,1这是给予的>-0.1水平(cell_type)< -C((“ cell1”,,,,“ cell2”桌子(cell_type)
## cell_type ## cell1 cell2 ## 6 95
#我们基于SV1鉴定了6个异常单元格成对(iasva.sv,main =“ IA-SVA”,,,,PCH =21,,,,col =color.vec [cell_type],bg =color.vec [cell_type],oma =C((4,,,,4,,,,6,,,,12))传奇((“正确的”,,,,水平(cell_type),填充=color.vec,bty =“ n”

阴谋(iasva.sv [,12],,main =“ IA-SVA”,,,,PCH =21,,,,xlab =“ SV1”,,,,ylab =“ SV2”,,,,col =color.vec [cell_type],bg =color.vec [cell_type])

Cor(geo_lib_size,iasva.sv [,1)))
## [1] -0.1469422
Corrplot((Cor(iasva.sv))

如上图所示,SV1清楚地将α细胞分为两组:6个离群细胞(以红色标记)和其余的α细胞(以蓝色标记)。##查找检测到的异质性(SV1)的标记基因。在这里,使用find_markers()函数,我们找到与SV1显着相关的标记基因(多个测试调整后的p值<0.05,默认显着性截止和R-squared值> 0.3,默认R-Squared cutoff)。

Marker.Counts < -find_markers(sums_exp,as.matrix(iasva.sv [,1)))
###of markers():33
##唯一标记的总#:33
nrow(Marker.Counts)
## [1] 33
隆起(Marker.Counts)
## [1]“ pmepa1”“ fam198b”“ flt1”“ eng”“ sox4”“ itga5” ## [7]“ pxdn”“ prdm1”“ prdm1”“ erg”“ erg”“ clic4” a2m“ a2m” a2m“” ppap2b,这是给予的"THBS1" "CLIC2" "S100A16" "STC1" "ACVRL1" "COL4A1" ## [19] "MSN" "TNFAIP2" "MMP2" "SERPINE1" "SPARC" "SPARCL1" ## [25] "ESAM" "KDR" "CD9" "CXCR4" "PODXL" "PLVAP" ## [31] "CALD1" "MMP1" "ADAMTS4"
anno.col < -data.frame((cell_type =cell_type)隆起(anno.col)< -Colnames(Marker.Counts)(anno.col)
## cell_type ## 4th-c63_s30 cell2 ## 4th-c66_s36 cell2 ## 4th-c18_s31 cell2 ## 4th-c57_s18 cell1 ## 4th c56_s17 cell2 ## 4th c68_ss41 cell22
pheatmap((日志(Marker.Counts+1),SHOW_COLNAMES =错误的,,,,clustering_method =“ ward.d2”,,,,cutree_cols =2,,,,Annotation_Col =anno.col)

运行TSNE检测隐藏的异质性。

为了进行比较,我们将TSNE应用于所有基因的读数,以识别隐藏的异质性。我们使用默认设置的RTSNE R软件包。

set.seed((100tsne.res < -RTSNE((t(lcounts),dims =2阴谋(tsne.res$是的main =“ tsne”,,,,xlab =“ tsne dim1”,,,,ylab =“ tsne dim2”,,,,PCH =21,,,,col =color.vec [cell_type],bg =color.vec [cell_type],oma =C((4,,,,4,,,,6,,,,12))传奇((“ Bottomirts”,,,,水平(cell_type),填充=color.vec,bty =“ n”

如上所示,TSNE无法检测到使用所有基因时IA-SVA鉴定的异常值。相同的颜色编码如上所述。

运行IA-SVA后的IA-SVA分析,即IA-SVA检测到的与SV1相关的标记基因上运行TSNE。

在这里,我们将TSNE应用于从IA-SVA获得的SV1的标记基因上

set.seed((100tsne.res < -RTSNE((独特的((t((日志(Marker.Counts+1)),dims =2阴谋(tsne.res$是的main =“ tsne post ia-sva”,,,,xlab =“ tsne dim1”,,,,ylab =“ tsne dim2”,,,,PCH =21,,,,col =color.vec [cell_type],bg =color.vec [cell_type],oma =C((4,,,,4,,,,6,,,,12))传奇((“ Bottomirts”,,,,水平(cell_type),填充=color.vec,bty =“ n”

使用SV1标记基因的TSNE更好地将这些我们的细胞分开。该分析表明,使用IA-SVA与TSNE分析相结合的基因选择可以是检测稀有细胞在单细胞基因表达数据中引入可变性的有力方法。

使用更快的IA-SVA实现(fast_iasva)

在这里,我们使用相同的已知因素(datient_id and geo_lib_size)运行IA-SVA的更快实现。当使用特别大的数据集时,此功能很有用。

iasva.res < -fast_iasva(sums_exp,mod [,-1],,num.sv =5
##快速IA-SVA运行...
## ## SV 1检测到!
## ## SV 2检测到!
## ## SV 3检测到!
## ## SV 4检测到!
## ## SV 5检测到!
## ###获得的替代变量:5

IA-SVA的调整参数

用于识别标记基因的R平方阈值(Find_markers)可以极大地影响1)鉴定的标记基因的数量和2)聚类结果的质量。使用student_r2()函数,用户可以可视化不同的R平方阈值如何影响这两个因素。

student_res < -student_r2(sums_exp,iasva.sv)
###of markers():274
##唯一标记的总#:274
###of markers():177
##唯一标记的总#:177
###of markers():123
##唯一标记的总#:123
###of markers():84
##唯一标记的总#:84
###of markers():54
##唯一标记的总#:54
###of markers():39
##唯一标记的总#:39
###of markers():30
##唯一标记的总#:30
###of markers():23
##唯一标记的总#:23
###of markers():7
##唯一标记的总#:7
###of markers():3
##唯一标记的总#:3
###of markers():0
##唯一标记的总#:0

该功能产生了所选基因数量和不同R平方值的群集质量(平均轮廓分数)的图。

会话信息

SessionInfo()
## R版本4.2.0 RC(2022-04-19 R82224)##平台:x86_64-pc-linux-gnu(64位)### blas:/home/biocbuild/bbs-3.15-bioc/r/lib/libblas.so ## lapack:/home/biocbuild/bbs-3.15-bioc/rib/lib/libb/librlapack.so ### ## ## locale:## [1] lc_ctype = en_us.utf-8 lc_numeric = c ## [3] lc_time = en_gb lc_collat​​e = c ## [5] lc_us.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_istientification = c ## ## ## ## ##附件:统计图形grdevices UTILS数据集方法## [8]基础## ##其他附件:## [1] summarizedExperiment_1.26.0 biobase_2.56.0 ## [3] genomicranges_1.48.0 genomeInfodb_1.1.1.1.32.0 ## [5] iranges_2.30.0.0.0.5]s4Vectors_0.34.0 ## [7] biocgenerics_0.42.0 matrixgenerics_1.8.0 ## [9] matrixstats_0.62.0 rcolorbrewer_1.1.1.1.1-x#[15] sva_3.44.0BioCparallel_1.30.0 ## [17] GeneFilter_1.78.0 MGCV_1.8-40 ## [19] NLME_3.1-157 Iasva_1.14.14.0 ## [21] IRLBA_2.3.3.3.3.3.3.3.3.5(并且未连接):## [1] BITOPS_1.0-7 BIT64_4.0.5 HTTR_1.4.2.1 ## [10] BIT_4.0.4 Compiler_4.2.0 CLI_3.3.0 ## [13] EXPM_0.999-6 DELADEREDARRAY_0.0.22.0 SASS_0.4.4.1.4.1 ## [16] SCALES_1.2.2.0 MVTNORM_1.1.1.1.1.1.1.1-3 PROXY_0.4-26## [19] stringr_1.4.0 digest_0.6.6.29 rmarkDown_2.14 ## [22] xvector_0.36.0 htmltools_0.5.5 Highr_0.9 ## [25] fastmap_1.1.1.1.1.1.0 limma_3.52.0 RSQLite_2.2.12 farver_2.1.0 ## [31] jquerylib_0.1.4 jsonlite_1.8.0 RCurl_1.98-1.6 ## [34] magrittr_2.0.3 GenomeInfoDbData_1.2.8 Rcpp_1.0.8.3 ## [37] munsell_0.5.0 lifecycle_1.0.1 stringi_1.7.6 ## [40] yaml_2.3.5 edgeR_3.38.0 rootSolve_1.8.2.3 ## [43] MASS_7.3-57 zlibbioc_1.42.0 grid_4.2.0 ## [46] blob_1.2.3 parallel_4.2.0 crayon_1.5.1 ## [49] lmom_2.8 lattice_0.20-45 Biostrings_2.64.0 ## [52] splines_4.2.0 annotate_1.74.0 KEGGREST_1.36.0 ## [55] locfit_1.5-9.5 knitr_1.38 boot_1.3-28 ## [58] gld_2.6.4 XML_3.99-0.9 evaluate_0.15 ## [61] data.table_1.14.2 png_0.1-7 vctrs_0.4.1 ## [64] gtable_0.3.0 cachem_1.0.6 xfun_0.30 ## [67] xtable_1.8-4 e1071_1.7-9 class_7.3-20 ## [70] survival_3.3-1 AnnotationDbi_1.58.0 memoise_2.0.1 ## [73] cluster_2.1.3