批量转换基因名

做通路富集分析常需要批量进行基因ID转换,总结了3种简便方法与大家分享。
方法1和2依赖于基因组注释R包,如果无相应物种R包就必须用方法3。好在的是常用物种人、小鼠、大鼠等都是有的,一般能满足需要。基因组注释R包全集在网站Bioconductor - 3.9 AnnotationData Packages查看,如我们能在里面找到人基因组注释R包 org.Hs.eg.db, 我们安装这个注释包,就能用方法1和2转换人种基因ID。
开始教程前先将所有需要的R包导入,并展示用于例子的数据。

library(org.Hs.eg.db)
library(clusterProfiler)
library(biomaRt)

# 例子数据选取了5个Ensembl基因名。
E_genes <- c("ENSG00000110514", "ENSG00000163467", "ENSG00000161021", "ENSG00000254694", "ENSG00000225108")

方法1:使用 select 函数从基因组注释R包选择基因名转换数据。
下面例子展示如何返回NCBI基因ID于SYMBOL

> gene_map <- select(org.Hs.eg.db, keys=E_genes, keytype="ENSEMBL", columns=c("ENTREZID", "SYMBOL"))
'select()' returned 1:1 mapping between keys and columns
> gene_map
          ENSEMBL ENTREZID SYMBOL
1 ENSG00000110514     8567   MADD
2 ENSG00000163467   128229  TSACC
3 ENSG00000161021     9794  MAML1
4 ENSG00000254694     <NA>   <NA>
5 ENSG00000225108     <NA>   <NA>

出现 NA 是正常的,不同数据库对基因定义有差异,无法一一对应。

方法2:使用 clusterProfiler 包的 bitr 函数。clusterProfiler 是通路富集常用 R 包,富集前顺带就用 bitr 把基因名转换。重要参数:

> gene_map <- bitr(geneID=E_genes, fromType="ENSEMBL", toType=c("ENTREZID", "SYMBOL"), OrgDb=org.Hs.eg.db)
'select()' returned 1:1 mapping between keys and columns
Warning message:
In bitr(geneID = E_genes, fromType = "ENSEMBL", toType = c("ENTREZID",  :
  40% of input gene IDs are fail to map...
> gene_map
          ENSEMBL ENTREZID SYMBOL
1 ENSG00000110514     8567   MADD
2 ENSG00000163467   128229  TSACC
3 ENSG00000161021     9794  MAML1

其中 NA 数据被丢弃了,使用 drop 参数控制这个行为。

点评:方法1和2本质是一样的。优点是可以本地操作(无联网行为)且很简单。缺点是数据依赖于基因组注释 R 包,无法保证处于最新状态。如果有需要用最新的基因名对照数据,切勿用这两方法。

方法3:使用 biomaRt 包从在线数据库请求。biomaRt 包让我们无需学习 SQL 语句就能便捷从在线数据库获取数据,这包很强大建议学习。
使用 biomaRt 转换基因名主要分2步,第一步选择需要的数据集,第二步发送请求取得结果。
第一步使用 useMart 函数选择需要的数据库于数据集,可用的在线数据库使用 listMarts 函数查看;选择数据库后,每个数据库都包含大量数据集,比如 Ensembl 每个物种都是一个数据集,使用 listDatasets 函数查看可用的数据集。如果知道了需要的数据集,那么反过来可以在 useMart 函数选择数据库的时候同时选择数据集。

# 查看可用数据库
> listMarts()
               biomart               version
1 ENSEMBL_MART_ENSEMBL      Ensembl Genes 97
2   ENSEMBL_MART_MOUSE      Mouse strains 97
3     ENSEMBL_MART_SNP  Ensembl Variation 97
4 ENSEMBL_MART_FUNCGEN Ensembl Regulation 97

# 选择在线数据库
> ensembl=useMart(biomart='ensembl')
> datasets <- listDatasets(ensembl)
> head(datasets, n=2)
                       dataset                           description
1 abrachyrhynchus_gene_ensembl Pink-footed goose genes (ASM259213v1)
2     acalliptera_gene_ensembl      Eastern happy genes (fAstCal1.2)
      version
1 ASM259213v1
2  fAstCal1.2

# 使用人基因数据集
ensembl = useDataset("hsapiens_gene_ensembl",mart=ensembl)
# 或者 useMart 直接指定
ensembl <- useMart("ensembl", dataset="hsapiens_gene_ensembl")

第二步使用 getBM 函数索引需要数据。getBM 是 biomaRt 最主要的请求函数。

> gene_map <- getBM(values=E_genes, filters="ensembl_gene_id", attributes=c("hgnc_symbol", "ensembl_gene_id", "entrezgene_id"), mart=ensembl)
> gene_map
  hgnc_symbol ensembl_gene_id entrezgene_id
1        MADD ENSG00000110514          8567
2       MAML1 ENSG00000161021          9794
3       TSACC ENSG00000163467        128229
4    ZBTB45P1 ENSG00000225108            NA
5             ENSG00000254694            NA

点评:方法3优点是保持数据最新和无需下载本地数据;缺点是依赖网络和操作更繁琐。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容