美文网首页RNASeq 数据分析
把bam文件读入R,并且转为grange对象

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

作者: 因地制宜的生信达人 | 来源:发表于2018-12-25 18:50 被阅读21次

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

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

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

    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

    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)))
    

    得到对象如下:

    image

    关于 grange对象

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

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

    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

    相关文章

      网友评论

        本文标题:把bam文件读入R,并且转为grange对象

        本文链接:https://www.haomeiwen.com/subject/mhhqlqtx.html