SAMtoolsとSambambaの比較: どちらのツールがBAMファイルをより速くソートできる?

NGSアライメントツールの性能は継続的に向上していますが、アライメントデータをソートするのにアライメントよりも多くの時間を要するようになりました。最近、SAMtoolsバージョン1.xでソートの並列処理がサポートされ、ソートにおける大きな飛躍が始まりました。

25Gbの未ソートのBAMファイルのソート速度をSAMtoolsとSambambaで比較しました。その結果、SambambaはSAMtoolsよりも2倍速伊ことが分かりました。以下のバイオリンプロットは、SAMtoolsが20分かかったのに対し、Sambamtaは同じファイルを10分でソートできたことを示しています。Sambamba のナロープロットは、そのパフォーマンスが SAMtools よりも予測しやすいことを示しています。

なぜSAMtoolsはSambambaの2倍の時間がかかるのか気になったので、両方のアプリケーションのCPUとメモリの使用量をプロットしてみました。

マルチスレッドをサポートしているにもかかわらず、SAMtoolsは並列化があまり得意ではありません。前半、SAMtoolsはシングルスレッドで、CPU使用率が時々急上昇しました。後半のCPU使用率は20%強でした。Sambambaは、前半は30-40%のCPUを使い、後半は90%以上のCPUを使いました。

SAMtoolsの方がメモリ使用率が高く、立ち上がり後、着実に~50Gbのメモリを消費しました。SAMtoolsを実行している間、我々は45Gb(30スレッドそれぞれに1.5Gb)しかプロビジョニングしなかったです。Sambambaは、最初の5分間は、我々が指定した45Gbのメモリに近いメモリを使用したが、その後、使用メモリは2Gbに減少しました。

これらのデータは、Sambambaが複数のプロセッサーをより上手に利用することにより、BAMファイルをより速くソートすることを示唆しています。

テスト方法

テストはAWSインスタンスc3.8xlarge(32コア、60Gb RAM)で実行し、ファイルはローカルストレージに保存しました。ソートされていないBAMファイルはSTARによって生成されました。

SAMtools(バージョン1.2)とSambamta(バージョン0.6.3)は、偏りを減らすために交互にそれぞれ10回ずつ実行しました。アプリケーションは以下のオプションで実行しました:

CPU、メモリ、ディスクの使用量は、dstatを使用して15秒間隔で収集しました。プロットはPythonのパッケージseabornまたはmatplotlibを用いて作成しました。

6サンプル フリートライアル 実施中

最大6つのサンプルを無料でアップロードして分析できます。アップロードされたサンプルに対する解析は無制限です。世界トップクラスの機関、研究室、製薬チームがBasepairを使用して、数千ドルを節約している理由をご覧ください。