BAMヘッダーのサイズが大きいとCufflinksでエラーが出る
このリンク先のSEQanswersの掲示板は2011年下旬のものなのですが,Cufflinks v2.0.1, v2.0.2 でも同様の現象を確認したので,ここにまとめます.
エラー
Cufflinksを実行したら,以下のようなエラーが出ました.
You are using Cufflinks v2.0.2, which is the most recent release. Warning: BAM header too large File ./accepted_hits.bam doesn't appear to be a valid BAM file, trying SAM... [16:47:02] Inspecting reads and determining fragment length distribution. SAM error on line 175: CIGAR op has zero length SAM error on line 177: CIGAR op has zero length SAM error on line 196: CIGAR op has zero length SAM error on line 218: CIGAR op has zero length SAM error on line 220: CIGAR op has zero length SAM error on line 267: CIGAR op has zero length ...
原因
Cufflinks のhits.cppにある以下の行によって,BAMのヘッダーが4MB以上の場合,BAMのパースができなくなるのだそうです.
static const unsigned MAX_HEADER_LEN = 4 * 1024 * 1024;
Cufflinks, BAM header problem solved... for the moment - SEQanswers
BAMのパースに失敗するとCufflinksは入力ファイルをSAMと判断して読もうとしますが,実際にはBAMなので,当然エラーが出て実行が停止します.
実際に自分のBAMのヘッダーのサイズを確認した所,11MBもありました.
samtools view -H hoge.bam > header.txt
ls -lsh header.txt
対策
- hits.cppの数字を書き換えて再コンパイル
- BAMをSAMに変換してCufflinksの入力ファイルとする
今回は面倒だったので,後者の方法をとることで解決しました.
samtools view -h hoge.bam > hoge.sam
教訓
ヒトやマウスを扱うことが多かったので,まさかBAMのヘッダーが4MBを越えているとは思いませんでした.
しかし,非モデル生物のドラフトゲノムではscafoldが1万から100万にもなるケースもあるので,今後このエラーにぶつかる方も増えると予想されます.