R包biomaRt: 转换ID、注释基因、GO通路

从我写的RNA-seq摸索:4. edgeR/limma/DESeq2差异基因分析→ggplot2作火山图→biomaRt转换ID并注释中提取出来这部分,方便以后修改补充

参考这篇

1 我们利用useMart()函数选择“ENSEMBL_MART_ENSEMBL”,并将其赋值给my_mart对象

library('biomaRt')
library("curl")

my_mart <-useMart("ensembl")

在ensembl数据库中包含了77个数据集,可用下面这样的方式查看

datasets <- listDatasets(my_mart)
View(datasets)
datasets

2 选择一个数据集datasset,这里选人类的

my_dataset <- useDataset("hsapiens_gene_ensembl",
                         mart = my_mart)

3 💥根据ensembl ID获取基因名、描述或染色体信息

💥💥💥这里前半部分有误!请一定往下看解决办法

my_newid <- getBM(attributes = c("ensembl_gene_id","external_gene_name","description","chromosome_name"),
                  filters = "ensembl_gene_id",
                  values = newinput,
                  mart = my_dataset)

image.png

💥这里一直报错,并且输出的为内容为0行
💥找到原因是:EBI数据库💥没有小数点💥,所以需要进一步替换为整数的形式。需要把小数点去掉!!这个很重要,所以需要加一个步骤

①还是将差异文件的行名提取出来

inputdata <- as.data.frame(row.names(deseq_res))

②这里将匹配到的.以及后面的数字连续匹配并替换为空,并重新赋值,一定要是data.frame格式

newinput <- as.data.frame(gsub("\\.\\d*", "", inputdata[,1]))

getBM()转换ID

1)attributes参数:用来指定输出的数据类型,就是你要什么,比如entrezgene,hgnc_id。忘记的话可以用listAttributes(你的dataset名字)查看
2)filters参数:用来指定数据的输入类型,比如你的原始信息是基因的ensembl ID,并且有这些基因的染色体位置信息,那么此处的filter就是ensembl_gene_idchromosome_name等。
3)values参数:就是你待转换ID的数据
4)mart参数:此前定义的数据库,此处就是my_dataset

那么在我这里:
attributes :我想要输出"ensembl_gene_id",转换后的"external_gene_name",转换后的"description"
filters:我的原始信息"ensembl_gene_id"
mart:之前建立的数据库

listAttributes(你的dataset) 可以查看可供选择的attributes
listAttributes(my_dataset)
my_result <- getBM(attributes = c("ensembl_gene_id","external_gene_name","description"),
                  filters = "ensembl_gene_id",
                  values = newinput,
                  mart = my_dataset)

ID转换成功后

这样就完成了对ensembl_id的转化和注释

4 最后需要把结果文件deseq_res和注释文件my_result两者merge起来

merge需要有相同的gene_id
💥但是一定要看看自己文件里的gene_id是不是一致,如果有一个为小数,就要再添加一列取整后的gene_id

deseq_resgene_id有小数点 所以再加一列变成new_deseq_res,新增加的列名为gene_new_id
new_deseq_res <- as.data.frame(deseq_res)
new_deseq_res$gene_new_id <- gsub("\\.\\d*", "", deseq_res$gene_id)
② 修改一下列名,把含有小数点的列命名为gene_all_id,取整后的为gene_id,这一步是为了方便merge
colnames(new_deseq_res) <- c('baseMean', 'log2FoldChange','lfcSE','stat','pvalue','padj','gene_all_id','gene_id')
new_deseq_res
merge两个文件,即new_deseq_resmy_resullt,生成final_res文件

by = intersect(names(x), names(y)) 为取两个文件所有列名中列名相同的那列!

final_res <- merge(my_result, new_deseq_res, by = intersect(names(my_result), names(new_deseq_res)))
write.table(final_res, 'C:/Users/wang/Desktop/final_result.txt',row.names = FALSE, sep = '\t', quote = FALSE)

结果文件

5 还可以找到某个基因所在的通路GO号

参考这篇

① 选出要查找的基因
#举个例子
entrez = c("673", "837")
② 利用ensembl构建my_martmy_dataset
my_mart <-useMart("ensembl") 

#`listDatasets()`可以查看可用的`datasets`
datasets <- listDatasets(my_mart)
View(datasets)

#构建`my_dataset`
my_dataset <- useDataset("hsapiens_gene_ensembl",
                         mart = my_mart)
③ 查看可输出的attributes
listAttributes(my_dataset)
④ 查找GOid
GOid <- getBM(attributes = c('entrezgene_id', 'go_id'),
              filters = 'entrezgene_id',
              values = entrez,
              mart = my_dataset)
结果

6 与5相反,可以通过所在的通路GO号找到某个基因

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

推荐阅读更多精彩内容