GO,KEGG,DO 富集分析

what is Gene Ontology(GO)

基因“本体论” 对事物的分类描述,对基因的分类描述
对基因的描述

1、cellular component,CC(基因存在于细胞质还是细胞核,是线粒体还是其他细胞器)细胞组成
2、Biological process,BP(能够参与哪一个生物学过程,参与rna加工,复制等)生物学过程
3、Molecular function,MF(分子功能上,催化什么反应,什么样的酶)分子功能
基于以上三类,对基因进行分类
so,we will have a gene annotation information

一、RNA-Seq ctrl, treatment

ctrl gene expression distribution, 在1种条件下的基因表达谱
treatment gene expression distribution,在其他条件下的基因表达谱
ctrl v.s. treatment ->DEG 差异表达基因
DEG:differential expression genes (cuffdiff,比较两者差异基因)
cufflink 计算基因表达量

二、DEFG ->GO annotation(找到GO注释)

1、cellular component,CC(基因存在于细胞质还是细胞核)
2、Biological process,BP(能够参与哪一个生物学过程)
3、Molecular function,MF(分子功能上)

how to test if the GO is enriched? 如何去检测GO的富集
GO enrichment analysis(GO富集分析)
什么是GO注释?(为了给基因分配 go term)
如何拿到GO注释

model orgnism -> annotated databass(模式生物已经分配好了GO term)
non-model orgnism ->search database(非模式生物,需要自己去找,如果没有需要用blast办法?)
无参的生物(A)没有 reference ,找相近的有 reference 的生物(B)
用 A blast B ,A 里面的 gene1 比对到 B 的 gene2 ,然后找 gene2 的 term 或者 annotation 当作 A 的。(使用的软件 blast2GO 还有其他的 )

KEGG enrichment analysis?(代谢通路富集分析)
DO (disease)enrichment analysis? (疾病富集分析)[一般是临床使用]

###########################################################
# 2020/3/8  
# test GO analysis and KEGG pathway analysis
############################################################
rm(list = ls())

# 1、 RNAseq  fastq -> BAM (tophat2, hiast ,star)
# 2、 cufflink BAM
# 3、 cuffdiff BAM GTF

# 1. load cuffdiff result
cuffdiff_result = read.table(file="../Desktop/test_data/rnaseq_test_date/diff_out1/gene_exp.diff",header = T,sep = "\t")
cuffdiff_result$sample_1 = "ctrl"
cuffdiff_result$sample_2 = "treat"

#test_id 或者 gene_id 称为 gene samble = samble

# 2. select DEG
# Ⅰ. FPKM1 or FPKM2 >1
# Ⅱ. log2(fold change) >1 or < -1
# Ⅲ.  p_value <0.05
select_vector = (cuffdiff_result$value_1 > 1 | cuffdiff_result$value_2 > 1 ) & abs(cuffdiff_result$log2.fold_change.) >= 1 &  (cuffdiff_result$p_value < 0.05)
cuffdiff_result.sign = cuffdiff_result[select_vector,]


output.gene_id = data.frame(gene_id = cuffdiff_result.sign$gene_id)
write.table(output.gene_id , file = "../Desktop/test_data/GO,kegg(live7)/sign_gene_id_text",col.names = F ,row.names = F,sep = "\t",quote = F)

##################################
# 在R上做
# setup R package
###################################
library(clusterProfiler)
# 用来做富集分析
library(topGO)
# GO看图用
library(Rgraphviz)
# 调用上面两个包
library(pathview)
# 看 KEGG pathway
library(org.Hs.eg.db)
# 人的注释文件,去 bioconductor 可以搜其他的注释文件(模式生物都有)

###################################
# GO 分析
###################################
DEG.gene_symbol = as.character(output.gene_id$gene_id)
columns(org.Hs.eg.db) #查看常用类型,用于下面 keyType 填写

DEG.entrez_id = mapIds(x = org.Hs.eg.db,
                      keys = DEG.gene_symbol,
                      keytype = "SYMBOL",
                      column = "ENTREZID") # 转化ID,一般用 ENTREZID ,其中会有转换不成功的NA
DEG.entrez_id = na.omit(DEG.entrez_id)  #剔除NA


######## GO.BP
enrich.go.bp = enrichGO(gene = DEG.entrez_id,
                        OrgDb = org.Hs.eg.db,
                        keyType = "ENTREZID",
                        ont = "BP",
                        pvalueCutoff = 0.01,
                        qvalueCutoff = 0.05,
                        readable = T) #pvaluecutoff 是 pvalue 的阈值,富集的统计显著性要小于0.01, q 是 p 的修正值

######### GO.CC
enrich.go.cc = enrichGO(gene = DEG.entrez_id,
                        OrgDb = org.Hs.eg.db,
                        keyType = "ENTREZID",
                        ont = "CC",
                        pvalueCutoff = 0.01,
                        qvalueCutoff = 0.05,
                        readable = T)

########## GO.MF
enrich.go.mf = enrichGO(gene = DEG.entrez_id,
                        OrgDb = org.Hs.eg.db,
                        keyType = "ENTREZID",
                        ont = "mf",
                        pvalueCutoff = 0.01,
                        qvalueCutoff = 0.05,
                        readable = T)


########## barblot, dotplot
barplot(enrich.go.bp)
barplot(enrich.go.cc)
barplot(enrich.go.mf)

dotplot(enrich.go.bp)

########## plotGOgraph (树形图)
pdf(file = "../Desktop/test_data/GO,kegg(live7)/enrich.go.bp.tree.pdf",width = 10,height = 15)  #直接保存成pdf文件
plotGOgraph(enrich.go.bp)
dev.off() # 关闭画图,与pdf一套



#########################
# KEGG pathway analysis
#########################
kegg.out = enrichKEGG(gene = DEG.entrez_id,
                      organism = "hsa",
                      keyType = "kegg",
                      pvalueCutoff = 0.05,
                      pAdjustMethod = "BH",
                      qvalueCutoff = 0.1)
barplot(kegg.out)




#############################
# 如果是非模式生物,但是有参考基因组
# 以番茄为例子
source("https://bioconductor.org/biocLite.R")
BiocManager::install("AnnotationHub")
BiocManager::install("biomaRt")

# 载入包
library(AnnotationHub)
library(biomaRt)

# 制作 OrgDb
hub <- AnnotationHub::AnnotationHub()

#使用query在我们制作的OrgDB --> hub里面找到番茄相关的database即org.Solanum_lycopersicum.eg.sqlite 注:Solanum_lycopersicum是番茄的拉丁名和它对应的编号AH59087

query(hub, "Solanum")  # Solanum番茄的拉丁名

# 下载下来
Solanum.OrgDb <- hub[["AH59087"]]
#此时,番茄的database就会赋值到变量Solanum.OrgDb

你可能感兴趣的:(GO,KEGG,DO 富集分析)