2016-05-14 6 views
1

tst.bamと呼ばれる多くのオブジェクトがサブフォルダのうちの3つにありますfolder1、folder2、folder3各サブフォルダにあるbamファイルをマージし、マージされたbamファイルの名前をサブフォルダ名(folder1.bam、folder2.bam、folder3.bam)に付けたいとします。 ParallelGCThreads = 5 する。-Djava.io.tmpdir = TMP /:複数のBAMファイルをマージするための複数のディレクトリにある各ファイルをループしてMergeSamFilesを適用する

コマンドは

java -jar picard.jar MergeSamFiles \ 
     I=input_1.bam \ 
     I=input_2.bam \ 
     O=merged_files.bam 

bam.dir<- c("folder1","folder2","folder3") 

for (i in 1:length(folder1)){ 
     all.bam.files <- list.files(folder1[i], pattern = "pairs.bam",full.names=T) 
     szFiles <- list.files(path = folder1[i],pattern = "_pairs.bam$",full.names = TRUE) 
     szNewFiles <- dQuote(szFiles) 
NszFiles <- paste(paste("I=", szNewFiles, sep =""),collapse = " ",sep ="") 
system(paste0("java -XX:ParallelGCThreads=5 -Djava.io.tmpdir=tmp/ -Xmx8g -jar picard.jar MergeSamFiles"), cat(c(NszFiles,"\n")), "O= ", paste(basename(folder1[i]),".bam", sep = "")) 
    } 

取得中にエラー

エラーシステム(中paste0(「Javaの-XXです-Xmx8g -jar.jar MergeSamFiles」)、 『インターン』 TRUEまたはFALSEにする必要があり

私はやって、そのない最善の方法を知っているが、elega見て熱望nt方法。

+0

この特定のエラー、' 'インターンが' TRUEまたはfalse'のでなければならない、 ''システム(paste0(内)起こっています... '' system'関数が 'cat(c(Nsz ...'を 'intern'引数として解釈しようとしています。 – bdemarest

答えて

3

Rを使用してbamファイルを処理する傾向があるようだから、Rsamtoolsに興味があるかもしれません。バックグラウンドでsamtoolsコンパイルされたCコードを実行しているので、samtoolsと同じくらい速いです。 https://bioconductor.org/packages/release/bioc/html/Rsamtools.html

たとえば:あなたは `時期尚早を持っているので、

library(Rsamtools) 

bam.dir <- c("folder1","folder2","folder3") 

for (dir in bam.dir) { 
    bam_files <- list.files(path=dir, pattern="bam$", full.names=TRUE) 
    new_file_name <- file.path(dir, "merged.bam") 
    mergeBam(files=bam_files, destination=new_file_name) 
} 
関連する問題