摘要
本教程将展示如何使用RcisTarget获得基因表上富集的转录因子结合基序。Vignette于2022年4月26日与RcisTarget一起构建版本1.17.0.
RcisTarget是一个r包,用于识别基因列表中过度表达的转录因子(TF)结合基序。
RcisTarget基于之前实现的方法i-cisTarget(网页界面,基于区域)和iRegulon(Cytoscape插件,基于基因)。
如果您在研究中使用RcisTarget,请引用:
Aibar等人(2017)SCENIC:单细胞调控网络推理和聚类。自然的方法。doi: 10.1038 / nmeth.4463
这个函数cisTarget ()
允许在基因列表上执行基序富集分析。主要输入参数是基因列表和基序数据库,根据生物和基因TSS周围的搜索空间选择。这是一个关于如何运行分析的示例(有关详细信息,请参阅以下部分):
加载要分析的基因集。例如:geneList1 <- read.table(file.path(system. path))file('examples', package='RcisTarget'), "hypoxiaGeneSet.txt"), stringsAsFactors=FALSE)[,1] geneLists <- list(geneListName=geneList1) # geneLists <- GSEABase::GeneSet(genes, setName="geneListName") # alternative #选择motif数据库使用(即生物和TSS周围的距离)data(motifAnnotations_hgnc) motifRankings <- importRankings("~/databases/hg19- TSS -centered-10kb-7species. mc9nrr .feather") # motif丰富分析:motifEnrichmentTable_wGenes <- cisTarget(geneLists, motiffrankings, motifAnnot=motifAnnotations_hgnc)
先进的使用:cisTarget ()
函数对于大多数简单的分析来说已经足够了。然而,为了进一步的灵活性(例如,在更大的分析中删除不必要的步骤),RcisTarget还提供了单独运行内部函数的可能性。运行cisTarget ()
相当于运行以下代码:
# 1。计算AUC motifs_AUC <- calcAUC(geneLists, motifRankings) # 2。选择重要的motif,添加TF注释并格式化为表motifenhmenttable <- addMotifAnnotation(motifs_AUC, motifAnnot=motifAnnotations_hgnc) # 3。识别每个motif的重要基因#(即来自排名靠前的基因集的基因)#注:方法'iCisTarget'而不是'aprox'更准确,但更慢motiftable_wgenes <- addSignificantGenes(motifmenttable, geneSets=geneLists, rankings=motifRankings, nCores=1, Method ="aprox")
RcisTarget使用特定于物种的数据库,这些数据库作为独立的r包提供。在运行RcisTarget之前,您需要下载并安装相关组织的数据库(详见“Motif数据库”部分)。
此外,可以安装一些额外的包来并行运行RcisTarget或运行本教程中的交互式示例:
如果(!requireNamespace("BiocManager", quiet =TRUE)) install.packages("BiocManager") #支持并行执行:BiocManager::install(c("doMC", "doRNG")) #对于本教程后续部分中的示例:BiocManager::install(c("DT", "visNetwork"))
在任何时候,记住你可以访问任何功能的帮助文件。cisTarget ?
),以及包中的其他教程,使用以下命令:
#在web浏览器中探索教程:browseVignettes(package="RcisTarget") #基于普通行的:vignette(package="RcisTarget") #列表vignette("RcisTarget") #打开
要生成带有自己的数据和注释的HTML报告,可以使用.Rmd文件
(即复制.Rmd文件,并将其编辑为R笔记本在RStudio)。
vignetteFile <- paste(file.path(system. path))file('doc', package='RcisTarget')), "RcisTarget. file('doc', package='RcisTarget')Rmd", sep="/") #复制编辑为markdown文件。复制(vignetteFile, ".") #替代方案:提取R代码Stangle(vignetteFile)
RcisTarget的主要输入是要分析的基因集。基因集可以作为“命名列表”提供,其中每个元素都是一个基因集(包含基因名称的字符向量)或作为GSEABase: GeneSet
.基因集名称将在以下步骤中用作ID。
library(RcisTarget) geneSet1 <- c("gene1", "gene2", "gene3") geneLists <- list(geneSetName=geneSet1) #或:# geneLists <- GSEABase::GeneSet(geneSet1, setName="geneSetName")
额外的帮助:
class(geneSet1) class(geneLists) geneSet2 <- c("gene2", "gene4", "gene5", "gene6") geneLists[["anotherGeneSet"]] <- geneSet2 names(geneLists) geneLists$anotherGeneSet长度(geneLists)
在本例中,我们将使用缺氧条件下MCF7细胞中上调的基因列表(PMID: 16565084).
原来的工作强调了缺氧诱导因子(hif1 - α或HIF1A)通路在缺氧下的作用。该基因列表也用于iRegulon的turorials (http://iregulon.aertslab.org/tutorial.html).
txtFile <- paste(file.path(system. path))file('examples', package='RcisTarget')), "hypoxiaGeneSet.txt", sep="/") genelist <- list(hypoxia=read. txt)table(txtFile, stringsAsFactors=FALSE)[,1]) head(geneLists$hypoxia)
##[1]“adm”“adora2b”“ahnak2”“ak4”“akap12”“aldoc”
为了分析基因列表,RcisTarget需要两种类型的数据库:基因基序排名:提供每个基序的所有基因的排名(~得分)。- 2。转录因子基序的注释。
每对基因基序的评分可以使用不同的参数进行。因此,我们提供多个数据库(motif-rankings,或其他选择:镜子),根据以下几种可能性:
如果您不知道选择哪个数据库,对于基因列表的分析,我们建议使用上游TSS 500bp,以及更大的搜索空间(例如:kbp TSS + / 5或kbp TSS + / -10),共有7种。当然,选择人类,老鼠或苍蝇取决于你输入的基因列表。
对于其他设置(例如:新物种),你可参阅有关如何使用的指南创建数据库.
每个数据库存储在一个.feather
文件。请注意,下载大小通常超过1GB(人类区域数据库为100GB),我们建议下载文件zsync_curl
’(见帮助下载).
例如,在R中下载:
featherURL <- "https://resources.aertslab.org/cistarget/databases/homo_sapiens/hg19/refseq_r45/mc9nr/gene_based/hg19-tss-centered-10kb-7species.mc9nr.feather" download。文件(羽毛url, destfile=basename(羽毛url)) #保存在当前目录
有了.feather文件之后,就可以加载它们了importRankings ()
:
#搜索空间:10k bp around TSS - HUMAN motifRankings <- importRankings("hg19- TSS - centric -10kb-7species. mc9nn .feather") #加载注释到人类转录因子数据(motifAnnotations_hgnc)
RcisTarget执行的所有计算都是基于主题的。然而,大多数用户将对可能调节基因集的tf感兴趣。motif与转录因子的关联在一个独立的文件中提供。除了由源数据库注释的主题(即。直接注释),我们也有推断出基于基序相似性和基因词形的进一步注释(例如,与其他基因的相似性注释到基序上)。这些注释通常与函数一起使用cisTarget ()
或addMotifAnnotation ()
.
对于排名的“mc9nr”版本中的motifs(24453个motifs),这些注释已经包含在RcisTarget包中,可以用命令加载:
#鼠标:# data(motifAnnotations_mgi) # human: data(motifAnnotations_hgnc) motifAnnotations_hgnc[199:202,]
## motif TF directAnnotation inferred_Orthology inferred_MotifSimil ## 1: bergman__tin NKX2-8 FALSE TRUE TRUE ## 2: bergman__tll DUX4 FALSE FALSE TRUE TRUE ## 3: bergman__tll NR2E1 FALSE TRUE FALSE ## 4: bergman__usp RXRA FALSE TRUE FALSE ##标注源## 1:inferredBy_MotifSimilarity_n_Orthology ## 2: inferredBy_MotifSimilarity ## 3: inferredBy_Orthology ## 4: inferredBy_Orthology ##描述## 1:该基因与D. melanogaster中的FBgn0261930同源(identity = 39%),该基因为相似基序bergman__vnd ('vnd';q-value = 0.000831) ## 2:基因为类似motif transfac_pro__M06988 ('V$DUX4_01: DUX4';q-value = 0.000745) ## 3:基因与D. melanogaster中直接标注motif的FBgn0003720 (identity = 41%)同源## 4:基因与D. melanogaster中直接标注motif的FBgn0003964 (identity = 45%)同源
对于其他版本的排名,函数importAnnotations
允许从源文件导入注释。
这些注释可以很容易地查询,以获得有关特定主题或tf的进一步信息:
motifAnnotations_hgnc[(directAnnotation==TRUE) & (TF %in% c("HIF1A")),]
## motif TF directAnnotation inferred_Orthology ## 1: cisbp__M3388 HIF1A TRUE FALSE ## 2: cisbp__M3389 HIF1A TRUE FALSE ## 3: cisbp__M3390 HIF1A TRUE FALSE ## 4: cisbp__M3391 HIF1A TRUE FALSE ## 5: cisbp__M6275 HIF1A TRUE FALSE ## 6: hocomoco__hif1a_human . h11o .0. c HIF1A TRUE FALSE ## 7: homer__TACGTGCV_HIF-1a HIF1A TRUE FALSE ## 8: swissregulon__hs__HIF1A。## 9: transfac_pro__M00797 HIF1A TRUE FALSE ## 11: transfac_pro__M00976 HIF1A TRUE FALSE ## 12: transfac_pro__m002012 HIF1A TRUE FALSE ## 13: transfac_pro__M02378 HIF1A TRUE FALSE ## 14: transfac_pro__M07043 HIF1A TRUE FALSE ## 15: transfac_pro__M07384 HIF1A TRUE FALSE ## inferred_MotifSimil注释源描述## 1:FALSE直接注释基因## 2:## 3:直接标注基因## 4:直接标注基因## 5:直接标注基因## 6:直接标注基因## 7:直接标注基因## 8:直接标注基因## 9:直接标注基因## 10:11:直接标注基因## 12:直接标注基因## 13:直接标注基因## 14:直接标注基因## 15:直接标注基因
除了数据库的完整版本(20k motifs),我们还提供了一个子集,只包含来自cisbp的4.6k motifs(仅限人类:RcisTarget.hg19.motifDBs.cisbpOnly.500bp).这些子集可在Bioconductor中用于演示目的。他们将为现有的图案提供相同的AUC评分。然而,我们强烈建议使用完整版本(~20k个motif)以获得更准确的结果,因为motif的归一化富集分数(NES)取决于数据库中motif的总数。
安装此包:
#来自Bioconductor if (!requireNamespace("BiocManager", quiet =TRUE)) install.packages("BiocManager") BiocManager::install(" rcistarget .hg19. motifdb . cisbponly .500bp")
对于这个小插图(演示目的),我们将使用这个数据库:
library(rcistarget .hg19. motifdb . cisbpony .500bp) #排行数据(hg19_500bpUpstream_motifRanking_cispbOnly) motifRankings <- hg19_500bpUpstream_motifRanking_cispbOnly motifRankings .500bp
## RcisTarget排名。##生物:人类(hg19) ##基因数量:22284(22285个完整数据库可用)## MOTIF数量:4687 ## **此数据库包括排名高达5050 ## ##子集(4.6k cisbp motifs)的人类数据库评分motifs上游500bp的TSS (hg19-500bp-upstream-7species.mc9nr)
#标注数据(hg19_motifAnnotation_cisbpOnly) motifAnnotations_hgnc <- hg19_motifAnnotation_cisbpOnly
一旦加载了基因列表和数据库,就可以使用它们cisTarget ()
.cisTarget ()
依次运行执行(1) motif富集分析,(2) motif-TF注释,和(3.)重要基因的选择。
也可以将这些步骤作为单独的命令运行。例如,要跳过用户对其中一个输出感兴趣的分析步骤,或者优化工作流以在多个基因列表上运行它(参见先进的详情请参阅章节)。
motifEnrichmentTable_wGenes <- cisTarget(geneLists, motiffrankings, motifAnnot=motifAnnotations_hgnc)
估计基因集上每个基序的过度表示的第一步是计算每对基序-基因集的曲线下面积(AUC)。这是根据基因集在motif排序上的恢复曲线计算的(基因的排序随着motif接近度的降低,如motifRanking数据库所提供的那样)。
motifs_AUC <- calcAUC(geneLists, motifRankings, nCores=1)
AUC是由GeneSets提供的motif矩阵。原则上,AUC主要是作为下一步的输入。然而,也可以探索分数的分布,例如在感兴趣的基因集中:
auc <- getAUC(motifs_AUC)["hypoxia",] hist(auc, main="hypoxia", xlab=" auc直方图",breaks=100, col="#ff000050", border="darkred") nes3 <- (3*sd(auc)) + mean(auc) abline(v=nes3, col="red")
重要图案的选择是基于归一化富集分数(NES)。NES是根据基因集所有基序的AUC分布计算的[(x-mean)/sd]。那些超过给定阈值(默认为3.0)的主题被认为是重要的。
此外,这一步还允许添加注释到主题的tf。
motifEnrichmentTable <- addMotifAnnotation(motifs_AUC, nesThreshold=3, motifAnnot=motifAnnotations_hgnc, highlightTFs=list(hypoxia="HIF1A"))
类(motifEnrichmentTable)
##[1] "数据。表”“data.frame”
暗(motifEnrichmentTable)
## [1] 17 8
头(motifEnrichmentTable[,“TF_lowConf”= FALSE))
## geneSet motif NES AUC highlightedTFs TFinDB ## 1:缺氧cisbp__M6275 4.41 0.0966 HIF1A ## 2:缺氧cisbp__M0062 3.57 0.0841 HIF1A ## 3:缺氧cisbp__M6279 3.56 0.0840 HIF1A ## 4:缺氧cisbp__M6212 3.49 0.0829 HIF1A ## 5:缺氧cisbp__M2332 3.48 0.0828 HIF1A ## 6:缺氧cisbp__M0387 3.41 0.0817 HIF1A ## TF_highConf ## 1: HIF1A (directAnnotation)。## 2: ## 3: HMGA1 (directAnnotation)。## 4: EPAS1 (directAnnotation)。## 5: ## 6:
被认为是高/低自信的文献可以用论点加以修改motifAnnot_highConfCat
而且motifAnnot_lowConfCat
.
由于RcisTarget在基因列表中搜索一个母题的富集,发现一个“富集”的母题并不意味着富集所有该基序在基因列表中的基因得分较高。通过这种方式,工作流程的第三步是识别(基因集中的)哪些基因对于每个重要基序是高排序的。
鉴定这些基因有两种方法:(1)与iRegulon和i-cisTarget中使用的方法相当(方法= " iCisTarget "
,如果运行时间不是问题,建议使用),以及(2)基于在每个秩上使用平均值的近似分布的更快实现(方法=“大约”
,用于扫描多个基因集)。
重要提示:确保motifRankings是同步骤1.
motifEnrichmentTable_wGenes <- addSignificantGenes(motifEnrichmentTable, rankings=motifRankings, geneSets=geneLists)
## [1] 5050
暗(motifEnrichmentTable_wGenes)
## [1] 17 11
一些主题的情节:
geneSetName <- "hypoxia" selectedMotifs <- c("cisbp__M6275", sample(motiftable $motif, 2)) par(mfrow=c(2,2)) getSignificantGenes(geneLists[[geneSetName]], motifRankings, signifRankingNames=selectedMotifs, plotCurve=TRUE, maxRank=5000, genesFormat="none", method="aprox")
## [1] 5050
RcisTarget的最终输出是data.table
包含主题丰富及其注释的信息,组织在以下字段:
motifmenttable_wgenes_wlogo <- addLogo(motifmenttable) results子集<- motifmenttable_wgenes_wlogo [1:10,] library(DT) datatable(results子集[,-c("enrichedGenes", "TF_lowConf"), with=FALSE], escape =FALSE, #显示logo filter="top", options=list(pageLength=5)))
## ' [.data]中的警告。table ' (results子集,,-c("enrichedGenes", "TF_lowConf"),: ##列(s)没有删除,因为没有找到:[enrichedGenes]
请注意,tf是基于主题注释提供的。它们可以作为选择相关基序或对某些tf进行优先排序的指导,但基序注释并不意味着表中出现的所有tf都调控基因列表。
anotatedTfs <- lapply(split(motifmenttable_wgenes $TF_highConf, motifmenttable $geneSet), function(x){基因<- gsub(" \\(.*\\)。“,”;", x, fixed=FALSE) genesSplit <- unique(unlist(strsplit(基因,";return(genesSplit)}) anotatedTfs$hypoxia
##[1]“hif1a”“hmga1”“epas1”“foxj1”“foxj2”“foxj3”“foxp1”“foxp2”“foxp3”##[10]“foxp4”“foxg1”
signifMotifNames <- motifmenttable $motif[1:3] incidenceMatrix <- getSignificantGenes(geneLists$hypoxia, motifRankings, signifRankingNames=signifMotifNames, plotCurve=TRUE, maxRank=5000, genesFormat="incidMatrix", method="aprox")$incidMatrix library(reshape2) edges <- melt(incidenceMatrix) edges <- edges[which(edges[,3]==1),1:2] colnames(edges) <- c("from","to")
未显示输出:
library(visNetwork) motifs <- unique(as.character(edges[,1]))基因<- unique(as.character(edges[,2])) nodes <- data.frame(id=c(motifs,基因),label=c(motifs,基因),title=c(motifs,基因),# tooltip shape=c(rep("diamond", length(motifs)), rep("elypse", length(基因)))),color=c(rep("purple", length(motifs)), rep("skyblue", length(基因))))visNetwork(nodes, edges) %>% visOptions(highlightNearest = TRUE, nodesIdSelection = TRUE)
这是的输出sessionInfo ()
在编译本文件的系统上:
日期()
##[1]“4月26日星期二17:34:40 2022”
sessionInfo ()
## R版本4.2.0 RC (2022-04-21 r82226) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.4 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.16-bioc/R/lib/libRlapack。所以## ## 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]stats graphics grDevices utils datasets methods基础## ##其他附加包:## [1]data.table_1.14.2 ## [2] DT_0.22 ## [3] rcistarget .hg19. motifdb . cisbpony .500bp_1.15.0 ## [4] RcisTarget_1.17.0 ## ##通过命名空间加载(且未附加):# # # # [1] MatrixGenerics_1.9.0 Biobase_2.57.0 [3] httr_1.4.2 sass_0.4.1 # # [5] bit64_4.0.5 jsonlite_1.8.0 # # [7] DelayedMatrixStats_1.19.0 R.utils_2.11.0 # # [9] bslib_0.3.1 shiny_1.7.1 # # [11] assertthat_0.2.1 highr_0.9 # # [13] stats4_4.2.0 blob_1.2.3 # # [15] GenomeInfoDbData_1.2.8 yaml_2.3.5 # # [17] AUCell_1.19.0 pillar_1.7.0 # # [19] RSQLite_2.2.12 lattice_0.20-45 # # [21] glue_1.6.2 digest_0.6.29 # # [23] GenomicRanges_1.49.0 promises_1.2.0.1 # # [25] XVector_0.37.0 htmltools_0.5.2 # # [27][37] tibble_3.1.6 annotate_1.75.0 ## [41] IRanges_2.31.0 ellipsis_0.3.2 ## [43] SummarizedExperiment_1.27.0 cachem_1.0.6 ## [45] BiocGenerics_0.43.0 cli_3.3.0 ## [47] magrittr_2.0.3 crayon_1.5.1 ## [49] mime_0.12 memoise_2.0.1 ## [51] evaluate_0.15 R.methodsS3_1.8.1 ## [53] fansi_1.0.3graph_1.75.0 # # [55] tools_4.2.0 lifecycle_1.0.1 # # [57] matrixStats_0.62.0 stringr_1.4.0 # # [59] S4Vectors_0.35.0 DelayedArray_0.23.0 # # [61] AnnotationDbi_1.59.0 Biostrings_2.65.0 # # [63] compiler_4.2.0 jquerylib_0.1.4 # # [65] GenomeInfoDb_1.33.0 rlang_1.0.2 # # [67] grid_4.2.0 rcurl_1.98 - 1.6 # # [69] htmlwidgets_1.5.4 crosstalk_1.2.0 # # [71] arrow_7.0.0 bitops_1.0-7 # # [73] rmarkdown_2.14 codetools_0.2-18 # # [75] DBI_1.1.2 R6_2.5.1 # # [77] zoo_1.8-10 knitr_1.38 # # [79] dplyr_1.0.8 fastmap_1.1.0## [81] bit_4.0.4 utf8_1.2.2 ## [83] stringi_1.7.6 Rcpp_1.0.8.3 ## [85] vctrs_0.4.1 png_0.1-7 ## [87] tidyselect_1.1.2 xfun_0.30 ## [89] sparseMatrixStats_1.9.0