R包clusterProfiler: 转换ID、GO/KEGG富集分析
简单介绍一下几种常用的ID:
Ensemble id
:一般以ENSG开头,后边跟11位数字。如TP53基因:ENSG00000141510
Entrez id
:通常为纯数字。如TP53基因:7157
Symbol id
:为我们常在文献中报道的基因名称。如TP53基因的symbol id为TP53
Refseq id
:NCBI提供的参考序列数据库:可以是NG、NM、NP开头,代表基因,转录本和蛋白质。如TP53基因的某个转录本信息可为NM_000546
1 转换ID
1.1 载入包library(clusterProfiler)
org.Hs.eg.db
是人类基因组注释,如果需要其他物种的注释信息,可以去bioconductor这里获得
1.2. keytypes()
查看注释包中支持的ID转换类型,基本包括了所以常用的ID类型
1.3. bitr()
函数转换ID
函数全部内容如下
geneID
:输入待转换的geneID
fromType
:输入的ID类型
toType
:希望输出的ID类型
OrgDb
:注释对象的信息
drop
:drop = FALSE 保留空值
以TP53
为例,希望输出’ENTREZID’,’ENSEMBL’,’REFSEQ’
1.4. bitr_kegg()
函数进行基因ID与蛋白质ID的转换
函数全部内容如下,与bitr()
类似
在参数这里与
bitr()
有些区别!
geneID
:输入待转换的geneID
fromType
:输入的ID类型只能是kegg
(与entrez id
相同),ncbi-geneid
,ncbi-proteinid
oruniprot
中的一个
toType
:希望输出的ID类型,也只能是kegg
(与entrez id
相同),ncbi-geneid
,ncbi-proteinid
oruniprot
中的一个
organism
:hsa
,代表人类,其他的物种名称可以参考kegg的网站
drop
:去除空值与否
TP53
的entrez id
为7157
报错了,所以一次应该只能进行一种转换!
改成这样↓
转换为uniprot
去UniProt网站上查询一下为什么会有三个:
P04637显示的是TP53基因的蛋白质表达水平,级别是Reviewed,就是其来源为UniProtKB/Swiss-Prot。
K7PPA8显示的是转录本水平的表达,级别是Unreviewed,就是其来源为UniProtKB/TrEMBL
Q53GA5显示的是转录本水平的表达,级别是Unreviewed,就是其来源为UniProtKB/TrEMBL
一般ID转换仅仅为开始的准备工作,将自己的数剧转换好之后可以进行后续的分析。
另外,利用clusterProfiler包可以进行许多丰富的下游分析,比如GO分析
、KEGG分析
等等
2 富集分析
参考这篇
最常用的基因注释工具是GO和KEGG注释,这基本上是和差异基因分析一样,必做的事,GO可在BP(生物过程),MF(分子功能),CC(细胞组分)三方面进行注释GO中的注释信息
有很多在线(DAVID、Gather、GOrilla,revigo)或者客户端版的工具(IPA(IPA不是用的GO和KEGG数据库)和FUNRICH)可以用来分析差异基因,我主要实践一下clusterProfiler
clusterProfiler提供有两种富集方式:
① ORA(Over-Representation Analysis)差异基因富集分析(不需要表达值,只需要gene name)
② FCS,它的代表就是GSEA,即基因集(gene set)富集分析(不管有无差异,需要全部genes表达值)
① ORA 差异基因富集分析(不需要表达值,只需要gene name)
1) 先读进来差异基因
2) GO富集
参数意义:
keyType 指定基因ID的类型,默认为ENTREZID
OrgDb 指定该物种对应的org包的名字
ont 代表GO的3大类别,BP, CC, MF,也可是全部ALL
pAdjustMethod 指定多重假设检验矫正的方法,有“ holm”, “hochberg”, “hommel”, “bonferroni”, “BH”, “BY”, “fdr”, “none”中的一种
cufoff 指定对应的阈值
readable=TRUE 代表将基因ID转换为gene symbol。
barplot() #富集柱形图
dotplot() #富集气泡图
cnetplot() #网络图展示富集功能和基因的包含关系
emapplot() #网络图展示各富集功能之间共有基因关系
heatplot() #热图展示富集功能和基因的包含关系
3) barplot()
作图显示,依赖于ggplot2包
4) 或者是KEGG
分析
输入的gene
要为vector
格式的entrezid
,可以用is.vector()
判断是否是vector
格式
但是这样产生的kk
几乎都是Na
,更别提画图了
于是我去看了Y叔的手册,发现需要使用DOSE
构建,改成
就可以了,继续往下进行
② GSEA 基因集(gene set)富集分析(不管有无差异,需要全部genes表达值)
这篇为网页版操作
好处:可以发现被差异基因舍弃的genes可能参与了某重要生理过程或信号通路
要点:用所有差异基因来跑GSEA,而不是按筛选条件筛选出来的,否则GSEA就失去了意义
1)读入全部差异基因数据
2) 提取出gene_id
和 log2FoldChange
列
3) 可以看到这时gene_id
还不是整数形式,所以对这列gsub()
取整,命名为symbol
列添加到ensemblid_log2fdc
中
4)转换id:将ENSEMBLID
转为ENTREZID
5)因为6)中merge
需要相同列名,所以将symbol
列列名改为ENSEMBL
6)ensemblid_log2fdc
和 entrezid
拼接到一起,依靠的是它们具有相同列名的列——ENSEMBL
7) 提取entrezid
和log2fdc
列
8) 用arrange()
按log2fdc
排序,desc()
表示降序
9) 构建一下要GSEA分析的数据
10) 进行GSEA分析,需要entrezid
,因此我前面才会进行ID转化
11)画出GSEA图
3 可视化
1.GO富集分析结果可视化
barplot
barplot(ego, showCategory = 10) #默认展示显著富集的top10个,即p.adjust最小的10个
dotplot
dotplot(ego, showCategory = 10)
DAG有向无环图
plotGOgraph(ego) #矩形代表富集到的top10个GO terms, 颜色从黄色过滤到红色,对应p值从大到小。
igraph布局的DAG
goplot(ego)
GO terms关系网络图(通过差异基因关联)
emapplot(ego, showCategory = 30)
GO term与差异基因关系网络图
cnetplot(ego, showCategory = 5)
2.Pathway富集分析结果可视化
barplot
barplot(kk, showCategory = 10)
dotplot
dotplot(kk, showCategory = 10)
pathway关系网络图(通过差异基因关联)
emapplot(kk, showCategory = 30)
pathway与差异基因关系网络图
cnetplot(kk, showCategory = 5)
pathway映射
browseKEGG(kk, “hsa04934”) #在pathway通路图上标记富集到的基因,会链接到KEGG官网
25人点赞

还没有人赞赏,支持一下
点击数:0