前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >把bam文件读入R,并且转为grange对象

把bam文件读入R,并且转为grange对象

作者头像
生信技能树
发布2018-12-24 15:43:53
2.3K0
发布2018-12-24 15:43:53
举报
文章被收录于专栏:生信技能树生信技能树

假如你的Windows电脑有个bam文件,不想传输到linux服务器去使用samtools等命令行工具来探索它,就可以使用R语言!

有成熟的R包可以把bam文件读入R,比如Rsamtools,很简单的代码:

代码语言:javascript
复制
library(Rsamtools)
bamFile="alignResults.BAM"
quickBamFlagSummary(bamFile)
# https://kasperdanielhansen.github.io/genbioconductor/html/Rsamtools.html
bam <- scanBam(bamFile)
bam

值得注意的是,这里我虽然不再演示了,但是作为初学者的你,应该是知道

但是把读入的数据变成grange对象就需要一点点技巧,下面演示如何创建grange对象samtools等命令行工具有多复杂的功能和技巧, 那么这个R包就可以多复杂,如果你学习足够努力,那就发一个你比较Rsamtools和samtools命令行工具的心得笔记给我吧,我会给你惊喜的,我的邮箱是 jmzeng1314@163.com

代码语言:javascript
复制
names(bam[[1]])
tmp=as.data.frame(do.call(cbind,lapply(bam[[1]], as.character)))
tmp=tmp[tmp$flag!=4,] # 60885 probes
#  intersect() on two GRanges objects.
library(GenomicRanges)
my_seq <- with(tmp, GRanges(as.character(rname), 
                                 IRanges(as.numeric(pos)-60, as.numeric(pos)+60), 
                                 as.character(strand), 
                                 id = as.character(qname)))

得到对象如下:

关于 grange对象

三年前我在生信菜鸟团博客就多次强调过这个重点了,在R里面处理生物信息学数据是躲不过这个定义的,有点类似于各式各样的生物信息学文件格式,是一个标准。

对这个grange对象也会有很多很多的方法,假设有一个grange对象命名为exon_txdb,来自于代码

代码语言:javascript
复制
library("TxDb.Hsapiens.UCSC.hg19.knownGene")
txdb <- TxDb.Hsapiens.UCSC.hg19.knownGene
exon_txdb=exons(txdb)
genes_txdb=genes(txdb)

那么操作它的函数有:

  • seqnames(exon_txdb)返回一个class 'Rle' [package "S4Vectors"] with 4 slots,有93个染色体信息,以及每条染色体上面有多少个外显子信息
  • ranges(exon_txdb)返回外显子的起始终止位点,长度,以及其它信息,也是一个对象class 'IRanges' [package "IRanges"] with 6 slots
  • strand(exon_txdb)返回外显子的正负链信息,要么在正链要么在负链
  • mcols(exon_txdb)返回exon的id编号,1到27750个
  • seqlengths(exon_txdb)返回每条染色体的长度信息
  • names
  • length

GRanges对象还有很多其它类型的操作,非常好玩的,split,shift,resize,flank,reduce,gaps,disjoin,coverage 其它求交集并集和都可以用,union,intersect,setdiff,pintersect,psetdiff

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于 grange对象
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档