为多个输入文件设置多个目标文件 - sortBam

setting multiple destination files for multiple input files - sortBam

作为序言,我对使用 R 还很陌生。

我正在处理 Rsamtools 包,我正在尝试对 bam 文件进行排序。我正在使用 sortBam() 命令,它需要以下信息:

sortBam(file, destination, ...). 

我有一个包含 5 个 bamfile 的 R 对象:

bamfiles <- list.files(fileDir, pattern = "\.bam", full.names = TRUE)

其中 fileDir = 包含文件路径的对象。

我不知道如何设置目标文件,以便 5 个未排序的 bam 文件中的每一个都有自己的输出文件。例如。 file1.bam --> file1.sorted.bam ... file5.bam --> file5.sorted.bam。我一直在四处寻找,但没有找到(或知道)答案,因此我们将不胜感激。

感谢您的帮助

假设您在三个不同的目录中有 3 个 bam 文件。

bams <- list.files(".", patter="*.bam", full=T, recur=T)
bams
# [1] "./d1/100.bam" "./d2/11.bam"  "./d3/28.bam" 

由于sortBam一次只能排序一个bam文件,可以用for循环三个bam文件

首先,设置合适的目的地。

des <- gsub("bam", "sorted", bams)
des
# [1] "./d1/100.sorted" "./d2/11.sorted"  "./d3/28.sorted" 

排序部分:

for (i in 1:length(bams)) {
  sortBam(bams[i], des[i])
}

磁盘上的结果文件。

ll -htr *
d1:
total 72K
-rw-rw-r-- 1 35K Apr  8  2016 100.bam
-rw-rw-r-- 1 35K Apr  8  2016 100.sorted.bam

d2:
total 64K
-rw-rw-r-- 1 30K Apr  8  2016 11.bam
-rw-rw-r-- 1 31K Apr  8  2016 11.sorted.bam

d3:
total 80K
-rw-rw-r-- 1 40K Apr  8  2016 28.bam
-rw-rw-r-- 1 40K Apr  8  2016 28.sorted.bam