質問:
何百もの小さなBAMファイルを1つのBAMファイルにマージします
Scott Gigante
2017-05-19 10:50:24 UTC
view on stackexchange narkive permalink

私は100万を超える(長い)読み取りを処理し、それらを大きなゲノムにアラインメントしています。数十のコアで単一のジョブを実行するのではなく、数百のノードに水平に分散して、アライメントジョブを並行して実行することを検討しています。

さらにダウンストリーム分析のために、並べ替えられたBAMファイルをマージしたいと思います。 。有効なファイルヘッダーを維持し、入力bamファイルがすでに並べ替えられているという事実を利用しながらこれを行う最も効率的な方法は何ですか?

二 答え:
#1
+13
Devon Ryan
2017-05-19 12:06:36 UTC
view on stackexchange narkive permalink

samtools merge merged.bam * .bam は、入力ファイルがソートされているため、十分に効率的です。 sambambaやbiobambamを使用すると少し速くなりますが、通常はまだインストールされておらず、IOはすぐにボトルネックになります。

これがbamtoolsマージとどのように比較されるかについてのアイデアはありますか?
Samtoolsはリファレンス実装であるため、他のツールよりも少し遅くなる傾向があるため、bamtoolsの方が少し速いと思います。
Bamtoolsは、最適化されておらず、現在は保守されていないため、通常は低速です。サンバンバなどは、より速くなるという特定の目標を持って開発されています。
#2
+8
John Marshall
2017-05-19 12:18:49 UTC
view on stackexchange narkive permalink

並べ替えられたファイルのマージは線形操作であるため、それを実行する適切に実装されたツールは、ほぼ同じ効率でマージを実行します。したがって、 samtools merge (1.3.xおよび1.4.xバージョンでマージヘッダー処理が改善されているため、最新バージョンを使用)、 picard MergeSamFiles など。

これらのツールは、すべての入力BAMファイルを同時に開いたままにする必要があるため、入力ファイルの数によっては、開いているファイル記述子のシステム制限に遭遇する可能性があります。これを最初に最大化するには、 ulimit を使用します。それでも多すぎる場合は、最初の500ファイルをマージしてから、次の500ファイルをそのファイルにマージする必要があるかもしれません。Samtoolsはこれを内部的に行いません。他のマージ実装のいずれかが機能するかどうかはわかりません。

2番目の段落で述べたように段階的にマージすると、速度が向上するだけでなく、IOの制限に達しない可能性がありますか?
いいえ、一部のデータは現在複数回書き込まれているため、低速である必要があります。パイプとプロセス置換( `samtools merge…<(samtools merge…)…`)を巧妙に使用することで、これを最小限に抑え、ディスクへのヒットを回避できるため、速度の低下は簡単です(コアをさらにいくつか使用する必要があります)。


このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...