bowtie メモリー関連のエラー Warning: Exhausted best-first chunk memory for read

bowtieを–bestモードで実行したところ、メモリーに関するワーニング(警告)が大量に表示されました。エラーではないので処理は進んでいくのですが、「マッピング結果に影響を与えないか?」という点がとても気になりました。そこで、–chunkmbsオプションでメモリーの割り当てを増やして、bowtieを再実行しました。すると、ワーニングを1つも表示することなしに、マッピング処理を正常終了することができました。その解決方法についてまとめます。

bowtieでメモリー関連の警告が発生した場合の対処法 –bestモードと–chunkmbs

bowtieを実行する際、–bestオプションを指定すると品質の良い順に結果が並びます。更に、–best –strataと指定するとベストヒットが選出さます。これらのオプションは、bowtieを実行する際に必ずといって良いほど、よく指定されるオプションです。

しかし、–bestオプションを指定した場合に注意すべき点があります。動作は少し遅くなり、より多くのメモリを消費するようになります。設定に注意しないで実行すると、メモリーが不足して処理中に大量のワーニング(警告)が発生する場合があるからです。

bowtie –bestモードを指定した場合の挙動

–bestを指定すると、bowtieの結果は品質の良い順に並び替えられます。

–bestを指定しない場合 -a

全ての候補を表示します。

$ ./bowtie -a -v 2 e_coli --suppress 1,5,6,7 -c ATGCATCATGCGCCAT
-   gi|110640213|ref|NC_008253.1|   148810  10:A>G,13:C>G
-   gi|110640213|ref|NC_008253.1|   2852852 8:T>A
-   gi|110640213|ref|NC_008253.1|   4930433 4:G>T,6:C>G
-   gi|110640213|ref|NC_008253.1|   905664  6:A>G,7:G>T
+   gi|110640213|ref|NC_008253.1|   1093035 2:T>G,15:A>T

 Reporting Modes (新しいタブで開く)">Bowtie Manual > Reporting Modes より

–bestを指定した場合 -a –best

全ての候補を品質の良い順に表示します。

$ ./bowtie -a --best -v 2 e_coli --suppress 1,5,6,7 -c ATGCATCATGCGCCAT
-   gi|110640213|ref|NC_008253.1|   2852852 8:T>A
+   gi|110640213|ref|NC_008253.1|   1093035 2:T>G,15:A>T
-   gi|110640213|ref|NC_008253.1|   905664  6:A>G,7:G>T
-   gi|110640213|ref|NC_008253.1|   148810  10:A>G,13:C>G
-   gi|110640213|ref|NC_008253.1|   4930433 4:G>T,6:C>G

 Reporting Modes (新しいタブで開く)">Bowtie Manual > Reporting Modes より

ベストヒットの選出 -a –best –strata

ベストヒットを表示します。

$ ./bowtie -a --best --strata -v 2 --suppress 1,5,6,7 e_coli -c ATGCATCATGCGCCAT
-   gi|110640213|ref|NC_008253.1|   2852852 8:T>A

 Reporting Modes (新しいタブで開く)">Bowtie Manual > Reporting Modes より

bowtie –bestモードと一緒に–chunkmbsを設定する

bowtieを–bestモードで使用してメモリー関連の警告が表示された場合の解決法は、bowtieに大きめのメモリー確保をオプションで指示することです。

メモリーに関係する–chunkmbsオプションの説明を読むと、「–bestモードでチャンクメモリが使い果たされたことを示すエラーメッセージが表示された場合は、このパラメータを調整して、より多くのメモリを記述子に割り当ててみてください。」と、解決のアドバイスが書かれています。–chunkmbsオプションも一緒に指定すると、ワーニングが表示されなくなる場合があります。

bowtie -m 3 -a --sam --best --strata genome/hg19 -1 d1_1.fq,d2_1.fq -2 d1_2.fq,d2_2.fq --threads 16 --chunkmbs 1024 > data.sam

–chunkmbsを指定しない場合のデフォルト値は64です。もし、指定しないで警告が大量に発生する場合は、64より大きい整数値を指定します。使用可能なメモリーサイズにもよりますが、1024を使うケースが多いようです。状況に応じて、256, 512, 1024などを指定すると良いと思います。

bowtie メモリー関連のオプション –chunkmbs

--chunkmbs int

The number of megabytes of memory a given thread is given to store path descriptors in --best mode. Best-first search must keep track of many paths at once to ensure it is always extending the path with the lowest cumulative cost. Bowtie tries to minimize the memory impact of the descriptors, but they can still grow very large in some cases. If you receive an error message saying that chunk memory has been exhausted in --best mode, try adjusting this parameter up to dedicate more memory to the descriptors. Default: 64.

bowtie manualより