BRGenomics提供了几个功能,方便地导入和处理BAM、bigWig、bedGraph文件。

1导入BAM文件

import_bam ()函数提供了许多用于过滤和处理bam文件的选项。BRGenomics包含一个BAM文件示例,其中包含从所包含的PRO-seq数据中读取的少量数据。该文件的本地位置可以找到(在您的计算机上)如下:

库(BRGenomics)
Bfile <- system。文件(“extdata”、“PROseq_dm6_chr4。bam", package = "BRGenomics")

由于PRO-seq数据是在原始RNA分子的3 '到5 '方向上测序的,我们将使用revcomp选项,对所有输入读取进行反补。我们还将MAPQ分数设置为20:

ps_reads <- import_bam(bfile, mapq = 20, revcomp = TRUE, paired_end = FALSE) ps_reads
## seqnames ranges strand | score ##    |  ## [1] chr4 1270-1296 + | 1 ## [2] chr4 41411-41429 + | 1 ## [3] chr4 42556-42591 + | 1 ## [4] chr4 42559-42589 + | 1 ## [5] chr4 42559-42594 + | 3 ## ... ... ... ... . ...## [160] chr4 1307741-1307776 - | 1 ## [161] chr4 1316536-1316563 - | 1 ## [162] chr4 1318959-1318994 - | 1 ## [163] chr4 1319003-1319038 - | 1 ## [164] chr4 1319368-1319403 - | 1 ## ------- # seqinfo: 1870个来自未指定基因组的序列

默认情况下,import_bam ()将相同的读取组合到相同的范围,并且分数元数据列表示完全重叠对齐的数量。这意味着对齐的总数(读取)等于分数的总和:

(得分总和(ps_reads))
190

或者,您可以通过设置将每个读取值导入为自己的范围字段= NULL

reads_expanded <- import_bam(bfile, mapq = 20, revcomp = TRUE, field = NULL, paired_end = FALSE) ps_reads[1:8]
与8 # #农庄对象范围和1元数据列:# # seqnames范围链|得分# # < Rle > < IRanges > < Rle > | <整数> # # [1]chr4 1270 - 1296 + | 1 # # [2] chr4 41411 - 41429 + | 1 # # [3] chr4 42556 - 42591 + | 1 # # [4] chr4 42559 - 42589 + | 1 # # [5] chr4 42559 - 42594 + | 3 # # [6] chr4 42560 - 42594 + | 2 # # [7] chr4 42560 - 42595 + | 2 # # [8] chr4 42561 - 42596 + | 1  ## ------- ## seqinfo: 1870从一个未指明的基因组序列
reads_expanded [1:8]
## seqnames ranges序列##   

请注意,读取5-7现在是相同的,而不是合并成一个分数= 3的单一范围。

长度(reads_expanded) == sum(score(ps_reads))
##[1]真

许多BRGenomics功能有一个参数和设置字段= NULL将每个范围处理为单读。

1.1示例:在Basepair分辨率下导入PRO-seq BAM文件

我们可以用import_bam ()函数从BAM文件中提取感兴趣的位置。下面,我们为PRO-seq数据构造一个导入函数,该函数返回一个基对分辨率GRanges对象。

在PRO-seq中,进行“运行”反应,其中活跃的RNA聚合酶在新生RNA的3 '端结合生物素化的核苷酸。因此,我们感兴趣的碱基是RNA 3 '端之前的碱基,因为这是聚合酶活性位点的原始位置。

中的处理选项import_bam ()应用的顺序与文档页中列出的顺序相同。按照这个顺序,我们将应用选项:

  1. 过滤读取最小MAPQ分数
  2. 以反补语为例
  3. 移位读数向上移位1个基点
  4. 提取3 '基
ps <- import_bam(bfile, mapq = 20, revcomp = TRUE, shift = -1,修剪。to = "3p", paired_end = FALSE) ps
## seqnames ranges strand | score ##    |  ## [1] chr4 1295 + | 1 ## [2] chr4 41428 + b| 1 ## [3] chr4 42588 + | 1 ## [4] chr4 42590 + | 2 ## [5] chr4 42593 + | 5 ## ... ... ... ... . ...## [146] chr4 1307742 - | 1 ## [147] chr4 1316537 - | 1 ## [148] chr4 1318960 - | 1 ## [149] chr4 1319004 - | 1 ## [150] chr4 1319369 - | 1 ## ------- # seqinfo: 1870个来自未指定基因组的序列

注意,对于配对端的数据,import_bam ()将自动过滤不匹配的读对。

注意的范围的数量ps和for不一样吗ps_reads,其中我们导入了整个读长度:

长度(ps_reads) ##[1] 164长度(ps) ## [1] 150

这是因为应用处理选项后,相同的位置被折叠在一起。但是,我们可以检查是否表示了所有相同的读取:

总和(得分(ps)) = =(得分(ps_reads))和# #[1]真的

我们可以检查折叠相同的位置已经创建了一个基对分辨率的GRanges对象:

isBRG(ps) ## [1] TRUE

1.2预格式化输入函数

为了方便起见,我们为几种数据包含了几个具有默认选项的函数,包括import_bam_PROseq ()import_bam_PROcap (),import_bam_ATACseq (),后者校正了Tn5插入位点之间的9 bp偏移。1Jason D. Buenrostro, Paul G. Giresi, Lisa C. Zaba, Howard Y. Chang, William J. Greenleaf(2013)。天然染色质的转位用于开放染色质,dna结合蛋白和核小体位置的快速和敏感的表观基因组分析。10: 1213 - 1218。

1.3示例:将bam转换为bigwig

的导出函数rtracklayer包,我们可以使用上面描述的函数来编写一个后对齐管道,为PRO-seq数据生成bigWig文件:

# import bam,自动应用处理步骤PRO-seq ps <- import_bam_PROseq(bfile, mapq = 30, paired_end = FALSE) #分离链,并使负链分数负ps_plus <-子集(ps, strand == "+") ps_minus <-子集(ps, strand == "-") score(ps_minus) <- score(ps_minus) #使用rtracklayer导出bigWig文件导出。bw(ps_plus, "~/Data/PROseq_plus.bw")导出。bw (ps_minus“~ /数据/ PROseq_minus.bw”)

1.4性能考虑

对于单端bam文件,如果对bam文件进行排序和索引(即按samtools指数).

对于成对的文件,我们假设排序(samtools核对)或按名称排序更快。

此外,虽然单端文件通常可以“一次性”导入(特别是在排序和索引的情况下),但处理成对端数据需要占用更多内存,并且需要将文件分解成块进行处理。为此,使用yieldSize论点。

例如,要一次处理50万次读取,请设置yieldSize = 5e5

2导入床图和大人物

bedGraph和bigWig文件是高效和可移植的,但是是碱基对分辨率基因组数据的非链表示。

相比之下rtracklayer: import.bedGraph (), BRGenomics函数import_bedGraph ()将正链和负链文件作为单个对象导入,并具有过滤奇数染色体、线粒体染色体和性染色体的选项。

#包含bedGraph文件的本地路径。P <- system。文件(“extdata”、“PROseq_dm6_chr4_plus。bedGraph", package = "BRGenomics") bg。M <- system。文件(“extdata”、“PROseq_dm6_chr4_minus。bedGraph", package = "BRGenomics") import_bedGraph(bg.;p, bg。M,基因组= "dm6")
## seqnames ranges strand | score ##    |  ## [1] chr4 1270-1295 + | 1 ## [2] chr4 41411-41428 + b| 1 ## [3] chr4 42556-42590 + | 1 ## [4] chr4 42559-42588 + | 1 ## [5] chr4 42559-42593 + | 3 ## ... ... ... ... . ...## [160] chr4 1307742-1307776 - | 1 ## [161] chr4 1316537-1316563 - | 1 ## [162] chr4 1318960-1318994 - | 1 ## [163] chr4 1319004-1319038 - | 1 ## [164] chr4 1319369-1319403 - | 1 ## ------- # seqinfo: 1个来自dm6基因组的序列;没有seqlengths

import_bigWig ()函数提供了相同的附加功能rtracklayer: import.bw (),但也删除了运行长度压缩,并在默认情况下返回基对分辨率GRanges对象。

#包含bigWig文件的本地路径bw。P <- system。文件(“extdata”、“PROseq_dm6_chr4_plus。bw", package = "BRGenomics") bw。M <- system。文件(“extdata”、“PROseq_dm6_chr4_minus。bw", package = "BRGenomics") import_bigWig(bw。p, bw。M,基因组= "dm6")
## seqnames ranges strand | score ##    |  ## [1] chr4 1295 + | 1 ## [2] chr4 41428 + b| 1 ## [3] chr4 42588 + | 1 ## [4] chr4 42590 + | 2 ## [5] chr4 42593 + | 5 ## ... ... ... ... . ...## [146] chr4 1307742 - | 1 ## [147] chr4 1316537 - | 1 ## [148] chr4 1318960 - | 1 ## [149] chr4 1319004 - | 1 ## [150] chr4 1319369 - | 1 ## ------- # seqinfo:来自dm6基因组的1个序列

转换到基对分辨率GRanges对象可以通过设置关闭makeBRG = FALSE

3.合并GRanges数据

生物复制最适合用于独立复制和测量效果,因此我们通常希望分别处理它们。然而,在假设复制高度一致的情况下,有时组合复制可以允许更敏感的测量。

mergeGRangesData ()函数可以用来组合基对分辨率的GRanges对象。

我们将包含的PRO-seq数据分解为一个玩具数据集列表:

ps_list < -拉普(1:6,函数(i) ps (seq(长度(ps), 6)])名称(ps_list) < - c(“A_rep1”、“A_rep2”、“B_rep1”、“B_rep2”、“C_rep1”、“C_rep2”)
ps_list [1:2]
## seqnames ranges strand | score ##    |  ## [1] chr4 1295 + | 1 ## [2] chr4 42595 + b| 1 ## [3] chr4 42622 + | 2 ## [4] chr4 42718 + | 1 ## [5] chr4 42789 + | 1 ## ... ... ... ... . ...# # [21] chr4 1280795 - | 1 # # [22] chr4 1306469 - | 1 # # [23] chr4 1306713 - | 1 # # [24] chr4 1307115 - | 2 # # [25] chr4 1307301 - | 1  ## ------- ## seqinfo: 1870美元从一个未指明的基因组序列# # # # A_rep2 25 # #农庄组织对象与范围和1元数据列:# # seqnames范围链|得分# # < Rle > < IRanges > < Rle > | <整数> # # [1]chr4 41428 + | 1 # # [2] chr4 42596 + | 1 # # [3] chr4 42652 + | 3 # # [4] chr4 42733 + | 1 # # [5] chr4 42794 + | 2  ## ... ... ... ... . ...## [21] chr4 1280936 - | 1 ## [22] chr4 1306497 - | 2 ## [23] chr4 1306888 - | 1 ## [24] chr4 1307120 - | 1 ## [25] chr4 1307742 - | 1 ## ------- # seqinfo: 1870个序列来自一个未指定的基因组
名(ps_list)
# #[1]“A_rep1”“A_rep2”“B_rep1”“B_rep2”“C_rep1”“C_rep2”

我们可以直接传递GRanges对象列表作为参数:

合并grangesdata (ps_list, ncores = 1)
## seqnames ranges strand | score ##    |  ## [1] chr4 1295 + | 1 ## [2] chr4 41428 + b| 1 ## [3] chr4 42588 + | 1 ## [4] chr4 42590 + | 2 ## [5] chr4 42593 + | 5 ## ... ... ... ... . ...## [146] chr4 1307742 - | 1 ## [147] chr4 1316537 - | 1 ## [148] chr4 1318960 - | 1 ## [149] chr4 1319004 - | 1 ## [150] chr4 1319369 - | 1 ## ------- # seqinfo: 1870个来自未指定基因组的序列

或者我们可以传递任意数量的GRanges对象作为参数:

- mergeGRangesData(ps_list[[1]], ps_list[[2]], ps, ncores = 1
## seqnames ranges strand | score ##    |  ## [1] chr4 1295 + | 2 ## [2] chr4 41428 + b| 2 ## [3] chr4 42588 + | 1 ## [4] chr4 42590 + | 2 ## [5] chr4 42593 + | 5 ## ... ... ... ... . ...## [146] chr4 1307742 - | 2 ## [147] chr4 1316537 - | 1 ## [148] chr4 1318960 - | 1 ## [149] chr4 1319004 - | 1 ## [150] chr4 1319369 - | 1 ## ------- # seqinfo: 1870个来自未指定基因组的序列

注意输出也是一个基对分辨率的GRanges对象:

isBRG(merge_ps) ## [1] TRUE

3.1合并复制

mergeReplicates ()函数使组合复制变得特别简单:

合并副本(ps_list, ncores = 1)
## seqnames ranges strand | score ##    |  ## [1] chr4 1295 + | 1 ## [2] chr4 41428 + b| 1 ## [3] chr4 42595 + | 1 ## [4] chr4 42596 + | 1 ## [5] chr4 42622 + | 2 ## ... ... ... ... . ...# # [46] chr4 1306888 - | 1 # # [47] chr4 1307115 - | 2 # # [48] chr4 1307120 - | 1 # # [49] chr4 1307301 - | 1 # # [50] chr4 1307742 - | 1  ## ------- ## seqinfo: 1870因基因组序列# # # # $ B 50 # #农庄组织对象与范围和1元数据列:# # seqnames范围链|得分# # < Rle > < IRanges > < Rle > | <整数> # # [1]chr4 42588 + | 1 # # [2] chr4 42590 + | 2 # # [3] chr4 42601 + | 1 # # [4] chr4 42618 + | 1 # # [5] chr4 42657 + | 1  ## ... ... ... ... . ...# # [46] chr4 1307032 - | 1 # # [47] chr4 1307122 - | 1 # # [48] chr4 1307126 - | 1 # # [49] chr4 1316537 - | 1 # # [50] chr4 1318960 - | 1  ## ------- ## seqinfo: 1870因基因组序列C # # # # # # $ 50农庄组织对象与范围和1元数据列:# # seqnames范围链|得分# # < Rle > < IRanges > < Rle > | <整数> # # [1]chr4 42593 + | 5 # # [2] chr4 42594 + | 2 # # [3] chr4 42619 + | 2 # # [4] chr4 42621 + | 1 # # [5] chr4 42661 + | 1  ## ... ... ... ... . ...## [46] chr4 1307114 - | 1 ## [47] chr4 1307283 - | 1 ## [48] chr4 1307300 - | 1 ## [49] chr4 1319004 - | 1 ## [50] chr4 1319369 - | 1 ## ------- # seqinfo: 1870个序列来自一个未指定的基因组