RcisTarget 是一个用于基因调控网络构建和转录因子分析的R包。它可以从一组基因中识别潜在的转录因子(Transcription Factors, TFs)调控网络,并通过 motif 分析 推测转录因子的作用机制。该包主要被应用于转录调控研究,特别是基因共表达网络或差异表达基因集的上游调控因素预测。
RcisTarget 的功能主要集中在以下几个方面:
识别潜在的调控转录因子:从输入的基因列表中推测哪些转录因子可能调控这些基因。基于转录因子结合位点(motif)及其基因组范围内的保守性得分,确定相关的转录因子。 基于motif的富集分析:检测输入基因集中哪些 motif 富集。将 motif 与已知的转录因子绑定位点数据库进行匹配,从而预测调控基因的转录因子。 跨物种保守性分析:考虑基因调控区域在不同物种中的保守性,提高分析结果的可信度。 调控网络构建:构建转录因子与目标基因之间的调控网络。输出网络图或相关性矩阵,便于后续分析。
分析流程
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
motif:表示该行数据对应的转录因子结合位点(motif)。它可能来源于某个 motif 数据库(如 JASPAR 或 HOMER)。 TF: 与 motif 相关联的转录因子。即,预测该 motif 是哪个转录因子的结合位点。 directAnnotation: 是否直接注释到转录因子。如果为 TRUE,说明该 motif 在数据库中直接标注为与某个转录因子相关联。如果为 FALSE,可能是通过其他方式推断的关联(如同源性分析)。 inferred_Orthology: 是否通过同源性推断的注释。如果为 TRUE,表示该 motif 是通过与其他物种的转录因子结合位点的同源性推断得到的。如果为 FALSE,说明注释方式不是基于同源性。 inferred_MotifSimil: 是否通过 motif 相似性推断的注释。如果为 TRUE,说明该 motif 是通过与已知 motif 的相似性分析(如序列比对或评分)推断出的。如果为 FALSE,说明注释方式不是基于 motif 相似性。 annotationSource: 注释的来源方式。表示该 motif 是如何被注释到转录因子的,常见的值可能包括:directAnnotation: 直接注释。inferredBy_Orthology: 通过同源性推断。inferredBy_MotifSimilarity: 通过 motif 相似性推断。 description: 提供更详细的注释信息, 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))
logo: 序列标识图(sequence logo),用于展示每个 motif 的特征。图中的碱基高度表示在该位置上的信息熵大小(即保守性)。碱基高度越高,说明该位置的序列保守性越强。 geneSet: 分析的基因集合。这里显示为 upgenes,表示这些 motif 是在上调基因中富集的结果。 motif: Motif 的具体 ID(例如 metacluster_172.12)。通常用来唯一标识一个 motif 的序列特征。 NES: Normalized Enrichment Score,标准化富集评分。该值表示 motif 在基因集合中的富集程度,数值越高说明富集越显著。一般来说,NES > 3 被认为是显著富集。 AUC: Area Under the Curve,富集分析的曲线下面积。表示 motif 和目标基因集合之间的关系强度,范围通常在 [0, 1],数值越大说明关联性越强。 TF_highConf: Motif 对应的高置信度转录因子(TF)。比如:ZNF319 是直接注释的 (directAnnotation),同时通过同源注释 (inferredBy_Orthology) 验证。多个 TF 表示该 motif 可以被多个转录因子识别。 nEnrGenes: Motif 参与调控的基因数量。表示有多少个基因的上游区域与该 motif 匹配并被认为是显著富集的。 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") # 添加导出按钮
既往推文:
一些可能需要了解的概念,如有不正确的内容,请尽管指出
关于RcisTarget数据库中的Gene based和Region based数据区别:
这两者的差别在于数据分析的注释方式和分析的搜索范围,分别侧重于基因区域(Gene based)或基因组区域(Region based)。
Region based
定义: 分析基于基因组中的具体区域(Region),而不是特定基因。这些区域通常是由用户指定的,比如围绕转录起始位点(TSS)的上下游区域,或者某些基因组区域的增强子、启动子等。 特征: 分析对象: 基因组上某一特定区域,例如:TSS 上游 500 bp。某些基因的增强子区域。范围灵活: 可以分析基因上下游区域或其他用户定义的范围(如基因间区域、非编码区域)。与基因的直接关联较弱: 区域可能包含多个基因,也可能不属于任何基因。 适用场景: 调控元件分析: 在某些基因组区域中寻找调控元件(如 motif)。非编码区域分析: 分析与基因无直接关联的非编码区域的功能或调控作用。自定义区域分析: 针对用户感兴趣的区域(如 GWAS 研究中发现的遗传位点)进行调控分析。
2. Gene based
定义: 基于基因为单位进行分析,每个基因有明确的调控区域注释(如 TSS、启动子、增强子等)。 特征: 分析对象: 以基因为中心,分析与基因直接关联的调控区域(例如围绕基因 TSS 的上下游 5 kb)。范围固定: 调控区域通常是标准化的范围(例如每个基因的 TSS 上下游 5 kb 或 10 kb)。与基因的直接关联强: 所有分析结果都会直接映射到特定的基因。 适用场景: 基因调控分析: 从基因列表出发,推测这些基因的上游调控因素。差异表达基因分析: 分析差异表达基因集的调控网络,确定潜在的转录因子。功能性基因组学研究: 探讨特定功能基因(如疾病相关基因)的调控机制。
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在不同物种中是否存在相似性或一致性。具体来说:
调控区域: 调控区域(如启动子、增强子)在基因表达调控中扮演重要角色。如果一个调控区域的序列在多个物种中未发生显著变化(即高度保守),表明该区域对基因表达调控至关重要,可能是关键的转录因子结合位点。 Motif: Motif 是短的核酸序列,通常是转录因子结合的特定序列。如果某个 motif 的序列在不同物种中都存在并未发生显著变化,说明该 motif 很可能具有普遍的重要功能,如调控基因表达。
为什么保守性重要?
进化压力的标志: 高度保守的区域通常受到强烈的进化压力,任何突变可能会导致不利的后果,因此这些区域在长期进化中被保留。保守性低的区域通常变异较多,可能功能性较低或进化中对生物体的影响较小。 功能的重要性: 高度保守的 motif 往往与核心的生物学功能(如基因调控)相关。它们通常涉及关键的细胞过程,如发育、代谢调节或疾病发生。 跨物种的通用性: 一个保守的调控区域或 motif 在多个物种中表现出一致性,表明它可能对不同物种的类似功能起作用。
如何衡量保守性?
多序列比对(Multiple Sequence Alignment, MSA): 对目标物种的序列与其他物种的同源区域进行比对,计算序列的一致性。 得分指标: 如 conservation score(保守得分),衡量序列在多物种间的一致性。常用工具包括 PhastCons 和 GERP。 考虑的物种数量: 物种越多,结果越具有普遍性,但也可能增加背景噪声。
段落中的保守性具体意义
段落中的“保守性”强调在 7 或 10 个物种中对 motif 的保守性分析:7 个物种: 可能分析较近缘物种(如灵长类或哺乳动物),适合评估近期进化保守性。0 个物种: 包含更广泛的物种范围(如包含鱼类或鸟类),反映更远的进化保守性。保守性越高的 motif,越可能在这些物种中具有重要的调控作用,并被视为生物学功能更有意义的候选调控元件。
————————————————————————————
Scoring/search space 的含义
这里的 Scoring/search space是指在分析基因调控区域时,围绕 转录起始位点(TSS, Transcription Start Site) 定义的基因组范围,用于确定在什么位置寻找潜在的 调控元件(如转录因子结合位点或其他 motif)。
什么是 TSS(Transcription Start Site)?
定义: TSS 是基因转录过程开始的位置,即 RNA 聚合酶结合 DNA 并启动 RNA 合成的起点。 位置: 通常定义在基因的上游区域(启动子)以及一定范围的下游区域。 作用: 调控元件(如增强子、启动子中的转录因子结合位点)常出现在 TSS 的附近,对基因表达起关键调控作用。
搜索空间的范围及选项
分析工具会基于用户设置的搜索范围,评估该范围内是否存在重要的调控元件或 motif。 500 bp upstream the TSS: 搜索范围仅覆盖TSS上游500bp。适用场景: 通常适用于寻找核心启动子区域的调控元件,因为大多数关键调控元素集中在这一范围内。 5kbp around the TSS: 从TSS的上游5kb到下游 5 kb 的区域,总计10kb。适用场景: 更适合覆盖较大范围的基因调控区域,包括一些靠近 TSS 的增强子。 10kbp around the TSS: 从TSS的上游10kb到下游10kb 的区域,总计20kb。适用场景: 包含更多远距离调控元件,如增强子或长距离调控元件。
为什么需要定义搜索空间?
准确性: 较小的搜索空间可以更精确地定位核心调控区域,减少干扰。较大的搜索空间则可以覆盖更广的潜在调控区域,但可能增加噪声。 计算效率: 较大的搜索范围会显著增加计算复杂度和时间,尤其在全基因组水平的分析中。 调控元素的分布: 大部分调控元件集中在 TSS 附近,但某些增强子或其他调控区域可能位于较远的基因上游或下游。
参考资料:
SCENIC: single-cell regulatory network inference and clustering. Nat Methods. 2017 Nov;14(11):1083-1086. bioconductor: https://bioconductor.org/packages/release/bioc/vignettes/RcisTarget/inst/doc/RcisTarget_MainTutorial.R motif2annotaion: https://rdrr.io/github/aertslab/RcisTarget/man/motifAnnotations.html github: https://github.com/aertslab/RcisTarget RcisTarget database: https://resources.aertslab.org/cistarget/ 生信技能树:https://mp.weixin.qq.com/s/mBR3IwWvQDcTOXNwM_YCEg 单细胞天地:https://mp.weixin.qq.com/s/t71bpKKh4f84txt-i-85vg
致谢:感谢曾老师以及生信技能树团队全体成员。
注:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟
- END -