一、舉例回顧
本節(jié)使用GSE1009數(shù)據(jù)集,已經(jīng)用limma包對(duì)數(shù)據(jù)集中的樣本進(jìn)行差異分析,現(xiàn)對(duì)差異基因(DEGs)做GO富集分析。
GSE1009數(shù)據(jù)集介紹:??
樣本量:共6個(gè)樣本,其中后3個(gè)為糖尿病腎病(DN)腎小球樣本,前3個(gè)為正常腎小球樣本。
使用芯片:Affymetrix Human Genome U95 Version 2 Array。
平臺(tái):GPL8300。
DEGs:共有66個(gè)DEGs(diffsig),22個(gè)上調(diào)(diffup),44個(gè)下調(diào)(diffDown)(詳見上兩章).
二、需要準(zhǔn)備的文件:
包含差異基因名字+logFC值的文本文件,命名為symbol(下面有介紹詳細(xì)做法。)
三、具體做法:
1. 整理symbol文件
在上一節(jié)中diffSig變量,用write.table函數(shù)保存為包含差異基因名字+logFC值等的文件,命名為diff。
保存好diff文件,是下面這樣的:
手動(dòng)給基因名加上列名,為gene,如下:
重點(diǎn):新建一個(gè)文本文件,取名為symbol,將第一列g(shù)ene和第二列l(wèi)ogFC復(fù)制symbol.
2.ID轉(zhuǎn)換(將基因名轉(zhuǎn)換為entrezID
setwd("D:\\Rfile")
rm(list = ls())
options(stringsAsFactors=F)
#老規(guī)矩,先設(shè)置工作目錄。
library("clusterProfiler")
library("org.Hs.eg.db")
library("enrichplot")
library("ggplot2")
#加載這些包,加載之前記得先安裝,已經(jīng)安裝過的復(fù)制代碼直接調(diào)用。
rt=read.table("symbol.txt",sep="\t",check.names=F,header=T) ???
#讀取symbol文件,并賦值給rt
genes=as.vector(rt[,1])
#取rt的第一列,即基因名字,將其轉(zhuǎn)換為向量,并賦值給genes變量
entrezIDs <- mget(genes, org.Hs.egSYMBOL2EG, ifnotfound=NA) ???
#找出基因?qū)?yīng)的id,未找到的賦值為NA
entrezIDs <- as.character(entrezIDs)
out=cbind(rt,entrezID=entrezIDs)
#將基因ID轉(zhuǎn)換為entrezIDs
write.table(out,file="id.txt",sep="\t",quote=F,row.names=F) ???#輸出結(jié)果,結(jié)果為id文本文檔
3.GO分析及繪圖
##讀取ID轉(zhuǎn)換后文件
rt=read.table("id.txt",sep="\t",header=T,check.names=F) ??????????#讀取id.txt文件
rt=rt[is.na(rt[,"entrezID"])==F,] ??????????????????????????????#去除基因id為NA的基因
gene=rt$entrezID?? #取entrezID賦值給gene變量
##GO分析
#GO富集分析
kk <- enrichGO(gene = gene,
???????????????OrgDb = org.Hs.eg.db,
???????????????pvalueCutoff =0.05,
???????????????qvalueCutoff = 0.05,
???????????????ont="all",
???????????????readable =T)
#p值和q值可以自己設(shè)置,我們這里都設(shè)置成0.05。這一步需要一點(diǎn)時(shí)間,耐心等待。
write.table(kk,file="GO.txt",sep="\t",quote=F,row.names = F) ??????????????
#保存GO富集結(jié)果
#1.GO柱狀圖
pdf(file="GO柱狀圖.pdf",width = 10,height = 8)
barplot(kk, drop = TRUE, showCategory =10,split="ONTOLOGY") + facet_grid(ONTOLOGY~., scale='free')
dev.off()
#pdf格式
png(file="GO柱狀圖.png",width = 800,height = 1000)
barplot(kk, drop = TRUE, showCategory =10,split="ONTOLOGY") + facet_grid(ONTOLOGY~., scale='free')
dev.off()
#保存為png格式,圖片保存格式只舉例這次,后面一樣的道理,也可以保存為tiff格式等
#2.GO點(diǎn)圖
pdf(file="GO點(diǎn)圖.pdf",width = 10,height = 8)
dotplot(kk,showCategory = 10,split="ONTOLOGY") + facet_grid(ONTOLOGY~., scale='free')
dev.off()
##3.GO浮動(dòng)氣泡圖
library(GOplot)
ego=read.table("GO.txt", header = T,sep="\t",check.names=F) ??????????
#讀取GO富集結(jié)果文件
go=data.frame(Category = ego$ONTOLOGY,ID = ego$ID,Term = ego$Description, Genes = gsub("/", ", ", ego$geneID), adj_pval = ego$p.adjust)
#讀取基因的logFC文件
id.fc <- read.table("id.txt", header = T,sep="\t",check.names=F)
genelist <- data.frame(ID = id.fc$gene, logFC = id.fc$logFC)
row.names(genelist)=genelist[,1]
circ <- circle_dat(go, genelist)
#繪制GO浮動(dòng)氣泡圖
pdf(file="GO氣泡圖.pdf",width = 10,height = 8)
GOBubble(circ, labels = 3,table.legend =F)
dev.off()
#4.繪制GO圓圈圖
pdf(file="GO圈圖.pdf",width = 14,height = 6)
GOCircle(circ,rad1=2.5,rad2=3.5,label.size=4,nsub=10) ??????????
#rad1外圈的注釋;nsub=10中10代表顯示GO的數(shù)據(jù),可修改
dev.off()
#5.繪制GO熱圖
termNum = 20 ????????????????????????????????????#限定term數(shù)目
geneNum = nrow(genelist) ????????????????????????#限定基因數(shù)目
chord <- chord_dat(circ, genelist[1:geneNum,], go$Term[1:termNum])
pdf(file="GO熱圖.pdf",width = 11,height = 5)
GOHeat(chord, nlfc =1, fill.col = c('red', 'white', 'blue'))
dev.off()
GO分析和GO的幾種圖就完了,大家可根據(jù)自身情況選擇一種圖,下一章是KEGG分析和繪圖。