R获取指定GO term和KEGG pathway的gene list基因集
clusterProfiler没有显性的接口,但是可以直接扣取clusterProfiler里的函数。
核心函数就是get_GO_data
GO_DATA <- get_GO_data("org.Hs.eg.db", "BP", "SYMBOL")
可以看到输入的是GO数据库,选定类别,基因名字类型,输出的就是整个数据库。

但是想调用这个函数没那么简单,得导入一系列的基础函数。
一个常见的任务就是获取GO数据库里所有的cell cycle相关的基因,这需要从我们的基因集里移除。
有了这个函数,我们就可以这么做了,两句R代码搞定。
cellCycleGO <- names(GO_DATA$PATHID2NAME[grep("cell cycle|DNA replication|cell division|segregation", GO_DATA$PATHID2NAME)])
cellCycleGene <- unique(unlist(GO_DATA$PATHID2EXTID[cellCycleGO]))
print(length(cellCycleGene))
library(DOSE)
library(GOSemSim)
library(clusterProfiler)
library(org.Hs.eg.db)
#
get_GO_data <- function(OrgDb, ont, keytype) {
GO_Env <- get_GO_Env()
use_cached <- FALSE if (exists("organism", envir=GO_Env, inherits=FALSE) &&
exists("keytype", envir=GO_Env, inherits=FALSE)) { org <- get("organism", envir=GO_Env)
kt <- get("keytype", envir=GO_Env) if (org == DOSE:::get_organism(OrgDb) &&
keytype == kt &&
exists("goAnno", envir=GO_Env, inherits=FALSE)) {
## https://github.com/GuangchuangYu/clusterProfiler/issues/182
## && exists("GO2TERM", envir=GO_Env, inherits=FALSE)){ use_cached <- TRUE
}
} if (use_cached) {
goAnno <- get("goAnno", envir=GO_Env)
} else {
OrgDb <- GOSemSim:::load_OrgDb(OrgDb)
kt <- keytypes(OrgDb)
if (! keytype %in% kt) {
stop("keytype is not supported...")
} kk <- keys(OrgDb, keytype=keytype)
goAnno <- suppressMessages(
select(OrgDb, keys=kk, keytype=keytype,
columns=c("GOALL", "ONTOLOGYALL"))) goAnno <- unique(goAnno[!is.na(goAnno$GOALL), ]) assign("goAnno", goAnno, envir=GO_Env)
assign("keytype", keytype, envir=GO_Env)
assign("organism", DOSE:::get_organism(OrgDb), envir=GO_Env)
} if (ont == "ALL") {
GO2GENE <- unique(goAnno[, c(2,1)])
} else {
GO2GENE <- unique(goAnno[goAnno$ONTOLOGYALL == ont, c(2,1)])
} GO_DATA <- DOSE:::build_Anno(GO2GENE, get_GO2TERM_table()) goOnt.df <- goAnno[, c("GOALL", "ONTOLOGYALL")] %>% unique
goOnt <- goOnt.df[,2]
names(goOnt) <- goOnt.df[,1]
assign("GO2ONT", goOnt, envir=GO_DATA)
return(GO_DATA)
} get_GO_Env <- function () {
if (!exists(".GO_clusterProfiler_Env", envir = .GlobalEnv)) {
pos <- 1
envir <- as.environment(pos)
assign(".GO_clusterProfiler_Env", new.env(), envir=envir)
}
get(".GO_clusterProfiler_Env", envir = .GlobalEnv)
} get_GO2TERM_table <- function() {
GOTERM.df <- get_GOTERM()
GOTERM.df[, c("go_id", "Term")] %>% unique
} get_GOTERM <- function() {
pos <- 1
envir <- as.environment(pos)
if (!exists(".GOTERM_Env", envir=envir)) {
assign(".GOTERM_Env", new.env(), envir)
}
GOTERM_Env <- get(".GOTERM_Env", envir = envir)
if (exists("GOTERM.df", envir = GOTERM_Env)) {
GOTERM.df <- get("GOTERM.df", envir=GOTERM_Env)
} else {
GOTERM.df <- toTable(GOTERM)
assign("GOTERM.df", GOTERM.df, envir = GOTERM_Env)
}
return(GOTERM.df)
}
获取KEGG的通路和基因是一样的,也是用clusterProfiler
代码:
hsa_kegg <- clusterProfiler::download_KEGG("hsa")
names(hsa_kegg)
head(hsa_kegg$KEGGPATHID2NAME)
head(hsa_kegg$KEGGPATHID2EXTID)
PATH2ID <- hsa_kegg$KEGGPATHID2EXTID
PATH2NAME <- hsa_kegg$KEGGPATHID2NAME
PATH_ID_NAME <- merge(PATH2ID, PATH2NAME, by="from")
colnames(PATH_ID_NAME) <- c("KEGGID", "ENTREZID", "DESCRPTION")
# write.table(PATH_ID_NAME, "HSA_KEGG.txt", sep="\t")
library(biomaRt)
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
entrezgene <- PATH_ID_NAME$ENTREZID
# This step need some time
ensembl_gene_id<- getBM(attributes=c("ensembl_gene_id", "entrezgene"),
filters = "entrezgene",
values=entrezgene , mart= mart)
PATH_ID_NAME <- merge(PATH_ID_NAME, ensembl_gene_id, by.x= "ENTREZID",by.y= "entrezgene")
R获取指定GO term和KEGG pathway的gene list基因集的更多相关文章
- GO 和 KEGG 的区别 | GO KEGG数据库用法 | 基因集功能注释 | 代谢通路富集
一直都搞不清楚这两者的具体区别. 其实初学者搞不清楚很正常,因为它们的本质是相通的,都是对基因进行归类注释的数据库. 建议初学者自己使用一下这两个数据库,应该很快就能明白其中的区别. (抱歉之前没讲清 ...
- 倒排索引 获取指定单词的文档集合 使用hash去重单词term 提高数据压缩率的方法
倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址.由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inve ...
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...
- PHP 获取指定目录下所有文件(包含子目录)
PHP 获取指定目录下所有文件(包含子目录) //glob — 寻找与模式匹配的文件路径 $filter_dir = array('CVS', 'templates_c', 'log', 'img', ...
- 获取指定版本号svn
代码需求获取 svn update svnworkpath --username xxx --password xxx -r r464 r464 为指定版本号 可以获取指定版本号的代码 也 也可以在 ...
- BeautifulSoup获取指定class样式的div
如何获取指定的标签的内容是解析网页爬取数据的必要手段,比如想获取<div class='xxx'> ...<div>这样的div标签,通常有三种办法, 1)用字符串查找方法,然 ...
- 【百度地图API】如何调整结果面板的样式?如何获取指定页码的结果?
原文:[百度地图API]如何调整结果面板的样式?如何获取指定页码的结果? 摘要: 1.你是否想自定义查询后,结果面板的显示样式? 2.数据接口每次只返回10条结果,如何取到单独每一页的结果? ---- ...
- java正则表达式获取指定HTML标签的指定属性值
package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Mat ...
- 【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
获取指定url参数值 /* 获取某url中的某参数值 调用:GetUrlQueryString("[url地址]","[参数名]"); */ function ...
随机推荐
- hash文件-对文件进行数字签名
(一)windows自带hash命令: certutil -hashfile D:\1.exe MD5 # md5的hash值为32位certutil -hashfile ...
- vue_插槽的理解和使用
对于插槽的概念和使用,这是vue的一个难点,这需要我们静下心来,慢慢研究.以下是我这两天通过官网和其他资料的学习和使用总结出来的笔记,如有错误或者有不同见解的,欢迎留言,一起学习. 什么是插槽? 插槽 ...
- Linux下使用shell脚本自动备份和移动数据到大容量存储
自动备份数据库,并将备份前一天的数据移动拷贝到存储上. 需求来源是因为linux系统层的磁盘存储容量过小,数据库自动备份之后日积月累数据越来越多,而且还不想删除旧数据.那解决方法就是在linux系统主 ...
- springboot2.1.3+spring-session2.1.4分库处理
使用spring session框架来统一管理session,该框架支持jdbc.redis存储,使用非常简单,可以去官网查看文档一步步接入即可,官网文档如下:https://docs.spring. ...
- mysql查看当前实时连接数
静态查看: SHOW PROCESSLIST; SHOW FULL PROCESSLIST; SHOW VARIABLES LIKE '%max_connections%'; SHOW STATUS ...
- docker到底比LXC多了些什么
看似docker主要的OS级虚拟化操作是借助LXC, AUFS只是锦上添花.那么肯定会有人好奇docker到底比LXC多了些什么.无意中发现 stackoverflow 上正好有人问这个问题, 回答者 ...
- [daily] ssh通过私钥导出公钥
在使用key方式登录ssh服务的时候,我们知道ssh key是使用公钥ssh-keygen工具生成的. 有时候,我们只保存了私钥,但是并没有保存公钥.这个时候,可以使用如下方法, 从私钥中将公钥导 ...
- java基础(8)---接口和lambda
一.接口 接口定义: 接口抽象方法定义: 二.接口实现类的定义.创建.调用 接口需要一个实现类. 接口实现类的定义: 接口实现类的创建和调用: 接口的好处: 不好的写法: 推荐的写法: 接口实 ...
- 让Jupyter Notebook个性化
Win下更改jupyter主题 Themes地址 本人环境 Win+Conda 开始使用pip 安装,发现无法使用pip,修改环境变量,将D:\Program Files\Conda\Scripts ...
- Ffmpeg常用转码命令
H264视频转ts视频流 ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts H264视频转mp4 ffmpeg -i test.h264 -vcod ...