目前网上的教程大多是模式植物,或者是非模式物种的重新构建的教程。
今天分享一个新的方法,对非模式植物研究中获得的基因(例如:GWAS、转录组差异基因等)进行转录因子富集分析气泡图和柱状图可视化。
教程如下:
利用plantTFDB对转录因子进行预测
1、准备差异基因序列
提取差异基因序列
faSomeRecords ../Trinity.gene.fasta DEG_ID_FC1.5FDR0.05.txt leaf_vs_fruit_FC1.5FDR0.05.fasta
faSomeRecords ../Trinity.gene.fasta DEG_ID_FC1.5FDR0.05.txt stem_vs_fruit_FC1.5FDR0.05.fasta
faSomeRecords ../Trinity.gene.fasta DEG_ID_FC1.5FDR0.05.txt stem_vs_leaf_FC1.5FDR0.05.fasta
http://plantregmap.gao-lab.org/index.php
2、打开PlantTFDB(5.0)
数据库链接如下:http://plantregmap.gao-lab.org/index.php
点击导航栏的Prediction按钮,即可打开预测页面。
3、TF预测
然后输入你的基因序列,比如差异基因序列,即可开始在线分析:
获得TF_and_best1_in_Ath.list文件
注意:在这一步点击下载选项不会直接下载文件,而是弹出结果页面。可以用wget命令通过服务器进行下载
这个分析的作用就是:判断你的哪些(差异)基因可能是转录因子。
4、go分析预测
将TF_and_best1_in_Ath.list中的第三列粘贴到框内
开始submit运行
对结果进行下载
5、转录因子富集分析
富集分析的原理
网上已有很多人介绍其原理,我们平时最常用的富集分析方法就是Over-Represence Analysis(ORA),本质上是一次不放回抽样的概率事件。在这里首推CJ大神写的推文:GO富集分析 从原理到实践 ~ 零基础掌握。大家可以自行阅读,熟悉一下富集分析的原理。
转录因子的富集分析
当你了解了富集分析背后的原理后,你就能明白:所谓转录因子富集分析,就是以全基因组各个家族的转录因子为背景,通过比较给定的基因中各个家族的转录因子的数量及比例来计算其显著性。为了达到这一目的,我们需要做的无非是三件事:
- 准备包含待研究物种的基因组内所有转录因子的文件;
- 准备个记录转录因子基因ID和家族的对应关系的文件;
- 准备待分析的转录因子的基因ID列表;
当然,我们还需要准备富集分析用到的软件,并根据软件要求将数据调整成恰当的格式。该富集分析需要用的软件包是Y叔开发的clusterProfile包,所以针对该包对数据的要求,上述提高的三个数据文件应遵循如下形式:
TF id和物种内所有转录因子基因ID的对应关系,其中TFid是人为规定的(TF2gene);
TF id和转录因子家族的对应关系(TF2term);
待分析的基因ID,比如某一时期处理A和对照B的所有差异基因ID (genelist)
整理文件如上述格式
输入文件:PlantTFDB网站对全基因组蛋白序列的鉴定结果
文件名:TF_and_best1_in_Ath.list(还是上面的那个转录因子预测文件)
文件内容如下:
library(tidyverse)
# 1.读取数据
df <- read_tsv('TF_and_best1_in_Ath.list', comment = '#', col_names = F)
# 只保留前两列
df <- select(df, X1:X2)
然后是获得TF id和转录因子家族的对应关系
TF2term <- df
TF2term <- df %>%
select(term = X2) %>%
mutate(TF = paste('TF', 1:nrow(TF2term), sep = '_')) %>%
select(TF, term)
以该文件为基础,给所有转录因子的基因ID分配TF id
TF2gene <- df %>%
left_join(TF2term, by = c('X2' = 'term')) %>%
select(TF, gene = X1)
富集分析
library(clusterProfiler)
options(stringsAsFactors = F)
genelist <- read.table('genelist.txt')$V1
TFenrich <- enricher(gene = genelist,
TERM2GENE = TF2gene,
TERM2NAME = TF2term,
pvalueCutoff = 1,
qvalueCutoff = 1,
pAdjustMethod = 'BH')
# plot
dotplot(TFenrich, showCategory = 20)
另外,你可以把富集结果转换成数据框输出或进一步绘图
TF_datafram <- as.data.frame(TFenrich)
write.table(TF_datafram, 'TF_enrich.result', sep = '\t', row.names = F, quota =F)
6、GO富集柱形图绘制
下载go_enrichment_full_all.txt文件
将go_enrichment_full_all.txt中的GO.ID、Annotated(Description)、Count(GeneNumber)和Aspect(type)四列手动提取出来,得到文件leaf_vs_fruit.csv
绘图
data=read.csv("leaf_vs_fruit.csv",header=T,stringsAsFactors = F)
1.按照qvalue升序排序,分别选出前20个BP,CC,MF的条目,由于enrichGO函数生成的数据框默认是按照qvalue升序排序,所以这里我们只用选取前二十个就行了
go_MF<-data[data$type=="molecular function",][1:20,]
go_CC<-data[data$type=="cellular component",][1:20,]
go_BP<-data[data$type=="biological process",][1:20,]
go_enrich_df<-data.frame(ID=c(go_BP$ID, go_CC$ID, go_MF$ID),
Description=c(go_BP$Description, go_CC$Description, go_MF$Description),
GeneNumber=c(go_BP$GeneNumber, go_CC$GeneNumber, go_MF$GeneNumber),
type=factor(c(rep("biological process", 20), rep("cellular component", 20),rep("molecular function",20)),levels=c("molecular function", "cellular component", "biological process")))
2.将GO_term设定为factor即可按照顺序输出
GO_term_order=factor(as.integer(rownames(go_enrich_df)),labels=go_enrich_df$Description)
library(ggplot2)
ggplot(data=go_enrich_df, aes(x=GO_term_order,y=GeneNumber, fill=type)) + geom_bar(stat="identity", width=0.8) + coord_flip() + xlab("GO term") + ylab("Num of Genes") + theme_bw() + theme_classic() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1))
参考
https://cloud.tencent.com/developer/article/1674672
https://mp.weixin.qq.com/s?__biz=Mzg5NDI0MDY0MA==&mid=2247494078&idx=1&sn=de2726a2554f7a77d6c689c28487e74d&chksm=c0203b51f757b2479e405c11b0cf5f93c10ab0759b867225406fb9dbf3ca732ca70f122f3b2f&mpshare=1&scene=1&srcid=0207YYqURmqQ0dOOxXE5PdcG&sharer_sharetime=1675733976691&sharer_shareid=131ce7013fe8cdac25e7cf500f2974d5&key=f4efb34f476d52d4e8e512ffce99e5285991d2700cc5232881e6a8f839c696e09488743c6d868614b7e6a490f93ddcb324821080b92075048667c7365b437703cf014889c5b17e5759d01ae2b1c0be8726907715c52a173310518dd8c65b19f9fe353ecfe64725be39c7a096ea43825ca0f69651ab7b4fdb44e3e7e80a34f54b&ascene=0&uin=MTc0MzUxMTczNQ%3D%3D&devicetype=Windows+10+x64&version=63090016&lang=zh_CN&exportkey=n_ChQIAhIQpr2JCT5bNGJr7Bh6JV4prxLgAQIE97dBBAEAAAAAAEGCDV0r%2BV8AAAAOpnltbLcz9gKNyK89dVj0qZAUrMe2LumFhOcDzy4pnUwAz3E%2BUnsQhlQKN4rlTmttVBEC12lY6wXgXBPxru6X22om%2BXCWNHNIU74erREKtOj70dtbDcRUT3TuxB4qD%2BHXfU63HuCINvXgQPQ8Xb%2FgjTJJLt3fHSTN%2BETSuP0%2F9oox1rJMb5BGMWV7pluhb6e6Ag%2F9hOJ0r3EVHLscvWOUVILbpx%2BcsUo51MK96Rjn5kI8hsmPoaVHBKUmAYsDdCwhcz%2FgI1eWE%2F%2FM&acctmode=0&pass_ticket=H5ZRnEVEy4hpgjMhkD4REt1GUwyi3%2BvGHPhe%2FgElV9PRtGDoxLJz%2FK8wJfOovLfUM4BL3cRCExrsES%2F%2Bh6%2F%2FXA%3D%3D&wx_header=1&fontgear=2
https://www.cnblogs.com/yanjiamin/p/12122215.html