查看原文
其他

R专题:使用R读取,处理BED格式的文件

qians 生信菜鸟团 2022-06-07

什么是BED?

BED的全称是Browser Extensible Data,是二代测序数据常见的数据格式,用来表述基因组区段位置及其附属信息,如果大家忘了,可以回顾 NGS数据格式之bed,需要注意两点:

1.bed文件一条染色体的起始位点是从0开始的,也就是txt文件转bed的时候起始位点要减1;

2.不管你把什么文件转成bed,都请严格按照bed格式转换,尤其是第六列代表链的正负,忘记的请点上面的链接;

使用R导入BED file

好了,理论看完了接下来就是实战了。既然BED文件很常见,那通往罗马的路肯定就不止一条,下面介绍几个可以读取bed文件的包:

1.BayesPeak

这是我们原始的测试文件test.bed

下载BayesPeak并读取bed文件,读取的test.bed文件如下:

source("https://bioconductor.org/biocLite.R")
biocLite("BayesPeak")
library(BayesPeak)
bedR <-read.bed("/home/qians/test.bed")

可以看到BayesPeak读取bed文件只包含了bed文件的chr, start, end 和strand四列,并且自动把对象转换成了GRanges格式,这个格式也是一些R包的输入格式,省去了我们用GRanges函数转换其他格式为GRanges的步骤,但是有时候也会遇到问题,如果我们不想对象转换成GRanges格式,可以用data.frame转换为数据框。


2.rtracklayer


source("https://bioconductor.org/biocLite.R")
biocLite("rtracklayer")
library(rtracklayer)
rtracklayer <- import("/home/qians/test.bed")
rtracklayer

下载rtracklayer包并读取test.bed,可以看到rtracklayer带的函数import读取也会自动转换成GRanges,但结果比BayesPeak更完整,除了chr, start, end 和strand,还包含了其他的信息,比如name, score。

如果大家足够细心,会发现rtracklayer和BayesPeak的GRanges对象strand属性是不一样的,BayesPeak中strand是character,rtracklayer中strand是Rle,也就是说:rtracklayer自动转换后的GRanges格式更标准。


3.TEQC


source("https://bioconductor.org/biocLite.R")
biocLite("TEQC")
library(TEQC)
teqc <- get.reads("/home/qians/test.bed",filetype = "bed")
teqc

下载安装TEQC,读取bed文件,TEQC读取的结果里信息最少的,只包含了chr, start和end三列

小结一下:这里只列举了三个,个人觉得能处理bed文件的包都是带了读入bed文件函数的,R里面最简单的read.csv, read.table等也可以把bed文件导入R,只要设置好分隔符就OK。


按染色体号提取BED序列

我们就以BayesPeak为例讲解,仔细阅读一下我们发现BayesPeak的函数read.bed其实很简单,就两个参数,第一个是文件路径,第二个指定染色体号:

这里我们只选择2L号染色体,结果如下:

指定了染色体号,就会只读取相应染色体的条目,这一点就非常方便。


可视化BED文件中的reads分布

我们先看一下测试文件:


读取测试文件,选择一段区域plot:

dir <- system.file("extdata", package="BayesPeak")
treatment <- file.path(dir, "H3K4me3reduced.bed")
bed <- read.bed(treatment)
plot.bed(bed, "chr16", 9.1E7, 9.4E7)
##选择区域chr16:91000000-94000000

可以看到bed文件中在chr16的91000000-94000000bp范围内reads的频率:

参考资料:

https://www.rdocumentation.org/packages/BayesPeak/versions/1.24.0


猜你喜欢

生信基础知识100讲

生信菜鸟团-专题学习目录(5)

生信菜鸟团-专题学习目录(6)

还有更多文章,请移步公众号阅读

▼ 如果你生信基本技能已经入门,需要提高自己,请关注下面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。

▼ 如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存