RcisTarget转录因子分析学习

文摘   2024-12-04 15:33   广东  

RcisTarget 是一个用于基因调控网络构建和转录因子分析的R包。它可以从一组基因中识别潜在的转录因子(Transcription Factors, TFs)调控网络,并通过 motif 分析 推测转录因子的作用机制。该包主要被应用于转录调控研究,特别是基因共表达网络或差异表达基因集的上游调控因素预测。

RcisTarget 的功能主要集中在以下几个方面:

  1. 识别潜在的调控转录因子:从输入的基因列表中推测哪些转录因子可能调控这些基因。基于转录因子结合位点(motif)及其基因组范围内的保守性得分,确定相关的转录因子。
  2. 基于motif的富集分析:检测输入基因集中哪些 motif 富集。将 motif 与已知的转录因子绑定位点数据库进行匹配,从而预测调控基因的转录因子。
  3. 跨物种保守性分析:考虑基因调控区域在不同物种中的保守性,提高分析结果的可信度。
  4. 调控网络构建:构建转录因子与目标基因之间的调控网络。输出网络图或相关性矩阵,便于后续分析。

分析流程

1.导入
rm(list = ls())
library(RcisTarget)
library(tidyverse)

load("GSE118719_DEG.Rdata")
head(DEG3)
#               logFC  AveExpr         t      P.Value    adj.P.Val         B change
# SOX4       3.348391 6.934971  13.50756 6.378815e-09 0.0002187806 10.790602     UP
# MPP3       3.256332 3.969735  12.04834 2.478566e-08 0.0003780535  9.063578     UP
# C12orf42  -3.361817 2.410388 -11.75646 3.306783e-08 0.0003780535  8.881726   DOWN
# BCAS4     -2.162093 3.827227 -10.65018 1.044466e-07 0.0005934485  8.106005   DOWN
# CHMP7     -1.346611 6.477619 -10.40073 1.372057e-07 0.0005934485  7.996820   DOWN
# C14orf182 -2.611292 3.660219 -10.52694 1.194378e-07 0.0005934485  7.972491   DOWN
2.数据预处理

motifRanking数据:hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather官网提示是cisTarget(R)使用rankings,同时建议使用TSS+/-10kb范围的。Motifs 注释数据:motifAnnotations_hgnc

  1. motif:表示该行数据对应的转录因子结合位点(motif)。它可能来源于某个 motif 数据库(如 JASPAR 或 HOMER)。
  2. TF: 与 motif 相关联的转录因子。即,预测该 motif 是哪个转录因子的结合位点。
  3. directAnnotation: 是否直接注释到转录因子。如果为 TRUE,说明该 motif 在数据库中直接标注为与某个转录因子相关联。如果为 FALSE,可能是通过其他方式推断的关联(如同源性分析)。
  4. inferred_Orthology: 是否通过同源性推断的注释。如果为 TRUE,表示该 motif 是通过与其他物种的转录因子结合位点的同源性推断得到的。如果为 FALSE,说明注释方式不是基于同源性。
  5. inferred_MotifSimil: 是否通过 motif 相似性推断的注释。如果为 TRUE,说明该 motif 是通过与已知 motif 的相似性分析(如序列比对或评分)推断出的。如果为 FALSE,说明注释方式不是基于 motif 相似性。
  6. annotationSource: 注释的来源方式。表示该 motif 是如何被注释到转录因子的,常见的值可能包括:directAnnotation: 直接注释。inferredBy_Orthology: 通过同源性推断。inferredBy_MotifSimilarity: 通过 motif 相似性推断。
  7. description: 提供更详细的注释信息,
  8. keptInRanking: 是否在结果排名中被保留。如果为 TRUE,说明该 motif 被保留在最终的分析结果中(通常是经过某种过滤或排序后的显著结果)。如果为 FALSE,说明该 motif 未进入最终显著结果。
# 纳入分析的genelists
upgenes <- sample(rownames(DEG3[DEG3$change=="UP",]),20)
downgenes <- sample(rownames(DEG3[DEG3$change=="DOWN",]),20)
genelists <- list("upgenes"= upgenes,"downgenes"=downgenes)
genelists
# $upgenes
#  [1] "TNFRSF10B"     "RP11-114F10.3" "RP11-274J7.2"  "EXTL3-AS1"     "RP11-460B17.3" "MEDAG"        
#  [7] "VSNL1"         "AC005042.2"    "MAMLD1"        "RP11-402J6.1"  "CTD-2523D13.2" "FBP2"         
# [13] "HOMER1"        "TMEM97"        "RNU6-579P"     "AC027612.4"    "MTSS1L"        "RP11-120D5.1" 
# [19] "ANKRD50"       "ADAM5"        

# $downgenes
#  [1] "KDELC1P1"      "CTC-265F19.3"  "SLC5A5"        "PYHIN1"        "CTC-782O7.1"   "MIR361"       
#  [7] "RP11-113K21.1" "MIR4306"       "CTD-2535I10.1" "RP4-594I10.3"  "GRIN2B"        "CUBNP2"       
# [13] "CTD-2207O23.3" "SLC38A1"       "HNRNPA1P17"    "LINC00381"     "IGHD4-11"      "SELL"         
# [19] "PPM1M"         "RNU6-1245P"  

# motif ranking文件
# Gene-motif rankings: 提供了每个motif的所有基因的排名/得分
motifRankings <- importRankings("./database/cisTarget_databases/hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather")
motifRankings 
# Rankings for RcisTarget.
#   Number of genes: 27090 (27090 available in the full DB)
#   Number of MOTIFS: 5876

#  [Source file: hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather]

# motif的注释
data(motifAnnotations_hgnc)
motifAnnotations[1:3,1:6]
# Key: <motif, TF>
#               motif     TF directAnnotation inferred_Orthology inferred_MotifSimil     annotationSource
#              <char> <char>           <lgcl>             <lgcl>              <lgcl>               <fctr>
# 1: bergman__Stat92E STAT5A            FALSE               TRUE               FALSE inferredBy_Orthology
# 2: bergman__Stat92E STAT5B            FALSE               TRUE               FALSE inferredBy_Orthology
# 3: bergman__Stat92E  STAT6            FALSE               TRUE               FALSE inferredBy_Orthology
3.cisTarget分析
两种方式:一步法
motifEnrichmentTable_wGenes <- cisTarget(genelists, 
         motifRankings,
         motifAnnot=motifAnnotations,
         highlightTFs = NULL,
         nesThreshold = 3,
         geneErnMethod = "iCisTarget",  # aprox
         geneErnMaxRank = 5000,
         nCores = 4,
         verbose = TRUE)
两种方式:多步法

motif富集分析

motifs_AUC <- calcAUC(genelists, motifRankings, nCores=8)
motifs_AUC
# AUC for 2 gene-sets and 5876 motifs.

# AUC matrix preview:
#           bergman__Su_H_ bergman__croc bergman__pho bergman__tll c2h2_zfs__M0369
# upgenes       0.04908867     0.0759253            0            0      0.00000000
# downgenes     0.00196802     0.0000000            0            0      0.04194342

# 识别显著富集的motif:AUC值高于阈值的 motif 通常被认为是显著的
par(mfrow = c(1,2))
pdf("auc.pdf",width = 9,height = 7)
for(i in c("upgenes",'downgenes')){
auc <- getAUC(motifs_AUC)[i,]
hist(auc, main=i, xlab="AUC histogram",
     breaks=100, col = "#0000ff50", border = "darkblue"
nes3 <- (3*sd(auc)) + mean(auc) # 计算阈值,阈值设置为均值加上3倍标准差
abline(v=nes3, col="tomato")
}
dev.off()

查看motif的auc分布,超过阈值的motif通常被认识是显著的motif-TF注释

# xSelect significant motifs and/or annotate motifs to genes or transcription factors. The motifs are considered significantly enriched if they pass the the Normalized Enrichment Score (NES) threshold.
# 显著性motif的选择是基于归一化富集评分( Normalized Enrichment Score,NES)进行的。每个motif的NES是根据基因集中所有基序的AUC分布[(x-mean)/sd]计算。那些通过给定阈值(默认为3.0)的motifs 被认为是重要的。
motifEnrichmentTable <- addMotifAnnotation(motifs_AUC, nesThreshold=3,
                                           motifAnnot=motifAnnotations,
                                           highlightTFs = NULL)
                                           # highlightTFs=list(upgenes="RFX5",downgenes='ZNF274'))
head(motifEnrichmentTable[,-"TF_lowConf", with=FALSE])
#    geneSet                                                  motif   NES   AUC highlightedTFs TFinDB                         TF_highConf
#     <char>                                                 <char> <num> <num>         <char> <char>                              <char>
# 1: upgenes                                      metacluster_174.5  5.74 0.183           RFX5        ZNF671; ZNF671 (directAnnotation). 
# 2: upgenes                                     metacluster_155.27  5.46 0.175           RFX5           ZFX; ZNF667 (directAnnotation). 
# 3: upgenes            dbtfbs__ZNF660_HEK293_ENCSR283DOU_merged_N1  5.15 0.166           RFX5                ZNF660 (directAnnotation). 
# 4: upgenes                                   transfac_pro__M06089  5.08 0.164           RFX5                 ZNF26 (directAnnotation). 
# 5: upgenes taipale_tf_pairs__TEAD4_CLOCK_NCACGTGNNNNNNNCATWCC_CAP  5.07 0.163           RFX5          CLOCK; TEAD4 (directAnnotation). 
# 6: upgenes                                   transfac_pro__M05767  5.04 0.163           RFX5                 ZNF77 (directAnnotation). 

找出每个基序富集最佳的基因

motifEnrichmentTable_wGenes <- addSignificantGenes(motifEnrichmentTable,
                      rankings=motifRankings, 
                      geneSets=genelists)
motifEnrichmentTable_wGenes[1:4,1:4]
#    geneSet                                       motif   NES   AUC
#     <char>                                      <char> <num> <num>
# 1: upgenes                           metacluster_174.5  5.74 0.183
# 2: upgenes                          metacluster_155.27  5.46 0.175
# 3: upgenes dbtfbs__ZNF660_HEK293_ENCSR283DOU_merged_N1  5.15 0.166
# 4: upgenes                        transfac_pro__M06089  5.08 0.164

上述两种方法都可以获得一个motifEnrichmentTable_wGenes文件

4.获得基因集注释后的TF列表

anotatedTfs <- lapply(split(motifEnrichmentTable_wGenes$TF_highConf,
                            motifEnrichmentTable$geneSet),
                      function(x) {
                        genes <- gsub(" \\(.*\\). ""; ", x, fixed=FALSE)
                        genesSplit <- unique(unlist(strsplit(genes, "; ")))
                        return(genesSplit)
                        })
anotatedTfs
# $downgenes
#   [1] "ZNF358"  "HOMEZ"   "MSX2"    "NPAS2"   "CLOCK"   "MEF2A"   "ZSCAN16" "ZNF135"  "ZNF26"  
#  [10] "ZNF564"  "ZNF623"  "GCM2"    "TBX21"   "ZNF84"   "ZNF776"  "ZNF189"  "ONECUT2" "TFAP2C" 
#  [19] "E2F1"    "NR1I2"   "RXRA"    "HINFP"   "ZNF880"  "RFX1"    "RFX2"    "RFX3"    "RFX4"   
#  [28] "RFX6"    "RFX8"    "ERF"     "TEAD4"   "ATF6"    "ZNF787"  "ZNF485"  "ZNF721"  "ETV5"   
#  [37] "HOXB13"  "NKX2-8"  "ETV2"    "GCM1"    "BHLHA15" "ZNF778"  "GTF2B"   "TBPL2"   "GATA3"  
#  [46] "HOXD12"  "LHX8"    "STAT1"   "ZNF454"  "SOX10"   "ZEB1"    "WT1"     "ZNF585B" "ZNF467" 
#  [55] "ZNF549"  "TBX2"    "TBX4"    "TBX5"    "TBXT"    "ZNF616"  "ZNF599"  "YEATS4"  "FOS"    
#  [64] "JUN"     "PRDM15"  "NR4A1"   "ZNF534"  "ZNF544"  "FOXI1"   "PRDM1"   "EOMES"   "MZF1"   
#  [73] "ELK1"    "ZNF547"  "ZNF470"  "ELF3"    "ZNF136"  "ZNF573"  "ZNF571"  "ZNF384"  "ZNF366" 
#  [82] "HOXA13"  "SPI1"    "ZBTB4"   "ATF1"    "DRGX"    "ZNF382"  "ZNF775"  "ZNF697"  "ZNF134" 
#  [91] "ZNF154"  "ZNF256"  "ZNF304"  "ZNF418"  "ZNF419"  "ZNF480"  "ZNF548"  "ZNF552"  "ZNF561" 
# [100] "ZNF562"  "ZNF584"  "ZNF586"  "ZNF587B" "ZNF610"  "ZNF772"  "ZNF773"  "ZNF792"  "ZNF793" 
# [109] "ZNF837"  "ZNF184"  "CEBPA"   "CEBPB"   "CEBPD"   "CEBPE"   "CEBPG"   "DBP"     "EP300"  
# [118] "GATAD2A" "HES2"    "MAF"     "ETS1"    "ELK3"    "ETV4"   

# $upgenes
#   [1] "ZNF319"  "ZNF671"  "ZFX"     "ZNF667"  "ZNF26"   "ZNF260"  "ZNF516"  "ZNF791"  "ZNF814" 
#  [10] "OSR1"    "FOXH1"   "ZNF8"    "OVOL2"   "CCNT2"   "GATA1"   "GATA2"   "NCOA1"   "TAL1"   
#  [19] "ZNF823"  "GATA3"   "ELF1"    "FOXJ3"   "TFE3"    "ZNF660"  "ZBTB5"   "CLOCK"   "TEAD4"  
#  [28] "ZNF77"   "ZNF256"  "GTF2B"   "STAT6"   "E2F1"    "SOX17"   "ZNF420"  "ZNF251"  "HESX1"  
#  [37] "MYNN"    "CEBPA"   "CEBPB"   "CEBPD"   "CEBPE"   "CEBPG"   "FOXL1"   "ARID5A"  "CDX1"   
#  [46] "CDX2"    "ERF"     "ONECUT2" "CTNNB1"  "ZNF367"  "TEAD3"   "ZNF585A" "ZNF530"  "ZNF2"   
#  [55] "ZFP1"    "ZNF471"  "ZNF568"  "ZKSCAN2" "FOXO1"   "POU5F1"  "MAX"     "GABPA"   "ZNF398" 
#  [64] "ZNF34"   "ZNF394"  "ZNF781"  "NFATC1"  "NFATC2"  "NFATC3"  "NFATC4"  "EOMES"   "TBR1"   
#  [73] "TBX1"    "TBX2"    "TBX20"   "TBX21"   "TBX3"    "TBXT"    "ZNF211"  "OVOL1"   "GZF1"   
#  [82] "HSFY2"   "SMAD4"   "ZBTB20"  "NR3C1"   "PGR"     "HNF4A"   "HNF4G"   "NR2F1"   "NR2F2"  
#  [91] "BATF3"   "FLI1"    "ZNF586"  "ZNF470"  "ZNF205"  "PARP1"   "ARNTL"   "ARNTL2"  "ASCL1"  
# [100] "BHLHE40" "BHLHE41" "HAND1"   "HAND2"   "MITF"    "MNT"     "MXD1"    "MXD3"    "MXD4"   
# [109] "MXI1"    "MYC"     "MYCN"    "MYF5"    "MYF6"    "MYOD1"   "MYOG"    "NHLH1"   "NPAS2"  
# [118] "TAL2"    "TCF12"   "TCF3"    "TCF4"    "TFEB"    "TFEC"    "USF1"    "USF2"    "DLX3"   
# [127] "ZNF202"  "HOXB13"  "FOXC1"   "FIGLA"   "GATA4"   "GATA6"   "ZNF708"  "RFX3"    "SREBF2" 
# [136] "ZNF875"  "VENTX"   "ZNF468"  "ZNF675"  "ELK1"    "HOXA3"   "ETV4"    "WT1"     "ZNF257" 
# [145] "ZNF224"  "MEIS1"   "ZNF716"  "ZNF443"  "RBAK"    "ZNF445" 

5.可视化

DT
motifEnrichmentTable_wGenes_wLogo <- addLogo(motifEnrichmentTable_wGenes)

# 可以把后面的[1:10]去掉
resultsSubset <- motifEnrichmentTable_wGenes_wLogo[1:10,]

library(DT)
datatable(resultsSubset[,-c("enrichedGenes""TF_lowConf"), with=FALSE], 
          escape = FALSE# To show the logo
          filter="top", options=list(pageLength=5))
  1. logo: 序列标识图(sequence logo),用于展示每个 motif 的特征。图中的碱基高度表示在该位置上的信息熵大小(即保守性)。碱基高度越高,说明该位置的序列保守性越强。
  2. geneSet: 分析的基因集合。这里显示为 upgenes,表示这些 motif 是在上调基因中富集的结果。
  3. motif: Motif 的具体 ID(例如 metacluster_172.12)。通常用来唯一标识一个 motif 的序列特征。
  4. NES: Normalized Enrichment Score,标准化富集评分。该值表示 motif 在基因集合中的富集程度,数值越高说明富集越显著。一般来说,NES > 3 被认为是显著富集。
  5. AUC: Area Under the Curve,富集分析的曲线下面积。表示 motif 和目标基因集合之间的关系强度,范围通常在 [0, 1],数值越大说明关联性越强。
  6. TF_highConf: Motif 对应的高置信度转录因子(TF)。比如:ZNF319 是直接注释的 (directAnnotation),同时通过同源注释 (inferredBy_Orthology) 验证。多个 TF 表示该 motif 可以被多个转录因子识别。
  7. nEnrGenes: Motif 参与调控的基因数量。表示有多少个基因的上游区域与该 motif 匹配并被认为是显著富集的。
  8. rankAtMax: 目标基因中排名最高的基因的位置(motif 在排名中的位置)。数值越小说明该 motif 对最重要的基因调控效果越强。
网络图
# ----network, cache=FALSE, eval=FALSE-----------------------------------------
signifMotifNames <- motifEnrichmentTable$motif[1:3]
par(mfrow=c(1,3))
incidenceMatrix <- getSignificantGenes(genelists$upgenes,
                                        motifRankings,
                                        signifRankingNames=signifMotifNames,
                                        plotCurve=TRUE, maxRank=5000,
                                        genesFormat="incidMatrix",
                                        method="iCisTarget")$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]))
genes <- unique(as.character(edges[,2]))
nodes <- data.frame(id=c(motifs, genes),
       label=c(motifs, genes),
       title=c(motifs, genes), # tooltip
       shape=c(rep("diamond", length(motifs)), rep("elypse", length(genes))),
       color=c(rep("purple", length(motifs)), rep("skyblue", length(genes))))

visNetwork(nodes, edges) %>% visOptions(highlightNearest = TRUE,
                                         nodesIdSelection = TRUE) %>%
visExport(type = "pdf", name = "network_image", label = "Export as PDF"# 添加导出按钮

既往推文:

  1. GENIE3转录组转录因子分析学习
  2. pySCENIC报错、解决和完整流程(IOS系统)
  3. 基因调控网络(gene regulatory network-GRN)分析基础概念

一些可能需要了解的概念,如有不正确的内容,请尽管指出

关于RcisTarget数据库中的Gene based和Region based数据区别:

这两者的差别在于数据分析的注释方式和分析的搜索范围,分别侧重于基因区域(Gene based)或基因组区域(Region based)。

Region based
  1. 定义: 分析基于基因组中的具体区域(Region),而不是特定基因。这些区域通常是由用户指定的,比如围绕转录起始位点(TSS)的上下游区域,或者某些基因组区域的增强子、启动子等。
  2. 特征: 分析对象: 基因组上某一特定区域,例如:TSS 上游 500 bp。某些基因的增强子区域。范围灵活: 可以分析基因上下游区域或其他用户定义的范围(如基因间区域、非编码区域)。与基因的直接关联较弱: 区域可能包含多个基因,也可能不属于任何基因。
  3. 适用场景: 调控元件分析: 在某些基因组区域中寻找调控元件(如 motif)。非编码区域分析: 分析与基因无直接关联的非编码区域的功能或调控作用。自定义区域分析: 针对用户感兴趣的区域(如 GWAS 研究中发现的遗传位点)进行调控分析。
2. Gene based
  1. 定义: 基于基因为单位进行分析,每个基因有明确的调控区域注释(如 TSS、启动子、增强子等)。
  2. 特征: 分析对象: 以基因为中心,分析与基因直接关联的调控区域(例如围绕基因 TSS 的上下游 5 kb)。范围固定: 调控区域通常是标准化的范围(例如每个基因的 TSS 上下游 5 kb 或 10 kb)。与基因的直接关联强: 所有分析结果都会直接映射到特定的基因。
  3. 适用场景: 基因调控分析: 从基因列表出发,推测这些基因的上游调控因素。差异表达基因分析: 分析差异表达基因集的调控网络,确定潜在的转录因子。功能性基因组学研究: 探讨特定功能基因(如疾病相关基因)的调控机制。

Region based 数据库: 通常基于基因组坐标,注释区域包括增强子、启动子或其他非编码区域。数据库注释的重点在于区域内的 motif 和调控元素,而不依赖于明确的基因信息。

Gene based 数据库: 数据库基于基因注释(如 RefSeq 或 Ensembl),每个基因都关联到标准化的调控区域。数据库直接映射到特定基因,便于生成基因调控网络。

————————————————————————————

保守性的含义

hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather等的motif ranking文件中存在7或者10物种的区别,一般会建议使用10物种的,这里面就涉及到多物种的保守性问题。

保守性指的是一个基因、序列、调控元件或结构在多个物种中保持相似或不发生显著变化的程度。这通常反映该序列在进化过程中受到了自然选择的保护,可能具有重要的生物学功能。

在motif分析中的保守性含义

在本文段落中,保守性主要是指调控区域或motif在不同物种中是否存在相似性或一致性。具体来说:

  1. 调控区域: 调控区域(如启动子、增强子)在基因表达调控中扮演重要角色。如果一个调控区域的序列在多个物种中未发生显著变化(即高度保守),表明该区域对基因表达调控至关重要,可能是关键的转录因子结合位点。
  2. Motif: Motif 是短的核酸序列,通常是转录因子结合的特定序列。如果某个 motif 的序列在不同物种中都存在并未发生显著变化,说明该 motif 很可能具有普遍的重要功能,如调控基因表达。
为什么保守性重要?
  1. 进化压力的标志: 高度保守的区域通常受到强烈的进化压力,任何突变可能会导致不利的后果,因此这些区域在长期进化中被保留。保守性低的区域通常变异较多,可能功能性较低或进化中对生物体的影响较小。
  2. 功能的重要性: 高度保守的 motif 往往与核心的生物学功能(如基因调控)相关。它们通常涉及关键的细胞过程,如发育、代谢调节或疾病发生。
  3. 跨物种的通用性: 一个保守的调控区域或 motif 在多个物种中表现出一致性,表明它可能对不同物种的类似功能起作用。
如何衡量保守性?
  1. 多序列比对(Multiple Sequence Alignment, MSA): 对目标物种的序列与其他物种的同源区域进行比对,计算序列的一致性。
  2. 得分指标: 如 conservation score(保守得分),衡量序列在多物种间的一致性。常用工具包括 PhastCons 和 GERP。
  3. 考虑的物种数量: 物种越多,结果越具有普遍性,但也可能增加背景噪声。
段落中的保守性具体意义
  1. 段落中的“保守性”强调在 7 或 10 个物种中对 motif 的保守性分析:7 个物种: 可能分析较近缘物种(如灵长类或哺乳动物),适合评估近期进化保守性。0 个物种: 包含更广泛的物种范围(如包含鱼类或鸟类),反映更远的进化保守性。保守性越高的 motif,越可能在这些物种中具有重要的调控作用,并被视为生物学功能更有意义的候选调控元件。

————————————————————————————

Scoring/search space 的含义

这里的 Scoring/search space是指在分析基因调控区域时,围绕 转录起始位点(TSS, Transcription Start Site) 定义的基因组范围,用于确定在什么位置寻找潜在的 调控元件(如转录因子结合位点或其他 motif)。

什么是 TSS(Transcription Start Site)?
  1. 定义: TSS 是基因转录过程开始的位置,即 RNA 聚合酶结合 DNA 并启动 RNA 合成的起点。
  2. 位置: 通常定义在基因的上游区域(启动子)以及一定范围的下游区域。
  3. 作用: 调控元件(如增强子、启动子中的转录因子结合位点)常出现在 TSS 的附近,对基因表达起关键调控作用。
搜索空间的范围及选项
  1. 分析工具会基于用户设置的搜索范围,评估该范围内是否存在重要的调控元件或 motif。
  2. 500 bp upstream the TSS: 搜索范围仅覆盖TSS上游500bp。适用场景: 通常适用于寻找核心启动子区域的调控元件,因为大多数关键调控元素集中在这一范围内。
  3. 5kbp around the TSS: 从TSS的上游5kb到下游 5 kb 的区域,总计10kb。适用场景: 更适合覆盖较大范围的基因调控区域,包括一些靠近 TSS 的增强子。
  4. 10kbp around the TSS: 从TSS的上游10kb到下游10kb 的区域,总计20kb。适用场景: 包含更多远距离调控元件,如增强子或长距离调控元件。
为什么需要定义搜索空间?
  1. 准确性: 较小的搜索空间可以更精确地定位核心调控区域,减少干扰。较大的搜索空间则可以覆盖更广的潜在调控区域,但可能增加噪声。
  2. 计算效率: 较大的搜索范围会显著增加计算复杂度和时间,尤其在全基因组水平的分析中。
  3. 调控元素的分布: 大部分调控元件集中在 TSS 附近,但某些增强子或其他调控区域可能位于较远的基因上游或下游。

参考资料:

  1. SCENIC: single-cell regulatory network inference and clustering. Nat Methods. 2017 Nov;14(11):1083-1086.
  2. bioconductor: https://bioconductor.org/packages/release/bioc/vignettes/RcisTarget/inst/doc/RcisTarget_MainTutorial.R
  3. motif2annotaion: https://rdrr.io/github/aertslab/RcisTarget/man/motifAnnotations.html
  4. github: https://github.com/aertslab/RcisTarget
  5. RcisTarget database: https://resources.aertslab.org/cistarget/
  6. 生信技能树:https://mp.weixin.qq.com/s/mBR3IwWvQDcTOXNwM_YCEg
  7. 单细胞天地:https://mp.weixin.qq.com/s/t71bpKKh4f84txt-i-85vg

致谢:感谢曾老师以及生信技能树团队全体成员。

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟

- END -


生信方舟
执着医学,热爱科研。站在巨人的肩膀上,学习和整理各种知识。
 最新文章