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 ...
随机推荐
- 迷你商城后台管理系统————stage1需求分析
PS:迷你商城后台管理系统---需求分析.docx下载~click me 迷你商城后台管理系统-- 需求分析 1. 引言 作为互联网热潮的崛起,消费者们的普遍差异化,实体商城要想在互联网的浪潮中继续发 ...
- 使用Kerberos进行Hadoop认证
使用Kerberos进行Hadoop认证 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Kerberos是一种网络身份验证协议.它旨在通过使用秘密密钥加密为客户端/服务器应用程序提 ...
- python蟒蛇绘制的代码以及目前还不知道怎么用的RGB颜色对照表
#PythonDraw.py import turtle#引入海龟库 turtle.setup(650,350,200,200)#确定窗口大小,长650,高350,确定窗口位置,距离电脑左上角200, ...
- DeferredResult使用方式和场景
为什么使用DeferredResult? API接口需要在指定时间内将异步操作的结果同步返回给前端时: Controller处理耗时任务,并且需要耗时任务的返回结果时: 当一个请求到达API接口,如果 ...
- 堆(python)
# -*- coding:utf-8 -*- class Array(object): def __init__(self, size=32): self._size = size self._ite ...
- java的一些代码阅读笔记
读了一点源码,很浅的那种,有些东西觉得很有趣,记录一下. ArrayList的本质是Object[] public ArrayList(int initialCapacity) { if (initi ...
- Redis-3.2.1集群内网部署
摘要: Redis-3.2.1集群内网部署 http://rubygems.org国内连不上时的一种Redis集群部署解决方案.不足之处,请广大网友指正,谢谢! 一. 关于redis cluster ...
- django 第四天模板渲染
今日内容 一.模板渲染 语法 {{ 变量 }} {% 逻辑 %} 1.变量 取列表中的第几个元素,用索引 <p>{{ namelist.2 }}</p> 取字典中的第几个元素用 ...
- Openwrt路由器上常用的操作
换了好些固件,大体上都差不多. 只能用opkg下载安装,不能用apt-get安装. 1.tcpdump和nano是我必备的,个人觉得nano比vi好用 opkg install tcpdump opk ...
- 多路选择器,加法器原理及verilog实现
1.数据选择器是指经过选择,把多个通道的数据传到唯一的公共数据通道上.实现数据选择功能的逻辑电路称为数据选择器,它的作用相当于多个输入的单刀多掷开关.本例程以四选一数据选择器(电平触发)为例. 四选一 ...