前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「R」从gtf文件中抽取基因id和name

「R」从gtf文件中抽取基因id和name

作者头像
王诗翔呀
发布2020-07-03 12:10:46
4.8K2
发布2020-07-03 12:10:46
举报
文章被收录于专栏:优雅R

参考文章http://www.bioinfo-scrounger.com/archives/342计算FPKM值,发现计算完每个基因下所有外显子的总长度后,记录的都是ENSEMBL gene id,而我需要的是symbol。奇怪的是GenomicFeatures既然把GTF文件读取进去了还抽取基因id了,但它就是不提供抽gene symbol的功能。

尝试使用clusterProfiler包装的转换器进行转换,发现基因丢了一半,这可不行。谷歌了一波没有发现满意的答案,有个refGenome包好像可以做,但读取文件半天卡死了,特别奇怪。最后还是自己动手,完成了6万个gene feature的转换。

整个提取操作包装为函数了,输入可以是文件名或已经导入的gtf文件数据框(最好还是文件吧)。由data.table包支持,速度杠杠的!

代码语言:javascript
复制
get_map = function(input) {
  if (is.character(input)) {
    if(!file.exists(input)) stop("Bad input file.")
    message("Treat input as file")
    input = data.table::fread(input, header = FALSE)
  } else {
    data.table::setDT(input)
  }
  
  input = input[input[[3]] == "gene", ]
  
  pattern_id = ".*gene_id \"(ENSG[0-9]+)\";.*"
  pattern_name = ".*gene_name \"([^;]+)\";.*"
  
  gene_id = sub(pattern_id, "\\1", input[[9]])
  gene_name = sub(pattern_name, "\\1", input[[9]])
  
  data.frame(gene_id = gene_id,
             gene_name = gene_name,
             stringsAsFactors = FALSE)
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档