SAMからBAMへのバッチ変換

SAMからBAMに変換して、そのまま中間ファイルを作らずにBAMをソートする。それをバッチで処理するには。 SAMファイルの置いてあるディレクトリに移動(cd)してから、以下のようなスクリプトを実行。

1
2
3
4
5
6
7
8
#!/bin/sh
p=4
tmp=/tmp
for f in *.sam;
  do g="${f%.*}"
  echo $g
  samtools view -@ $p -bS $g.sam | samtools sort -@ $p -T $tmp/$g.$$ -o $g.bam  -
done

samtoolsの行の一番最後の-(マイナス記号)がポイント。これが標準入力から入力を受けることを示すコマンドで、これを忘れてはなりません。 また、環境によっては利用可能なthread数(-pオプション)とsortする際の一時ファイル(この例では/tmp下にファイルを作るようになっている)の指定を変更する必要があるかも。


Written by bonohu in misc on 木 27 4月 2017.