FORMAT COMPARISON
BAM vs CRAM
BAMはBGZFで圧縮したアラインメント表現です。CRAMは参照配列との差分などを使って圧縮し、設定により保持される情報が異なります。
BAMとCRAM、どちらを選ぶ?
広いツール互換性を重視するならBAM、参照の解決と保持設定を管理して容量を減らしたいならCRAMを検討します。 品質値やタグを残す要件を決め、実データで変換往復と解析結果を検証します。CRAMが常に小さい・速いとは断定しません。
BAM向き
大規模なシーケンスリードと参照アラインメントをバイナリで保管・交換する・座標順データを索引化して領域単位で解析する
- SAMに対応するヘッダー・レコード・タグを圧縮して保持する
- BGZFとBAI/CSI等の索引を使う対応ツールで読み取る
CRAM向き
配列アラインメントデータを参照配列差分圧縮で効率よく保存・交換する・設定を選んで品質値等を含む保持データを管理する
- 参照配列を識別・取得できる解析環境
- 容量と品質値等の保持方針を確認したアーカイブ
基本情報を比較
BAMとCRAMの主な違いを確認できます。
| 項目 | BAM | CRAM |
|---|---|---|
| 拡張子 | .bam | .cram |
| MIME Type | application/octet-stream | |
| 主な用途 | 大規模なシーケンスリードと参照アラインメントをバイナリで保管・交換する・座標順データを索引化して領域単位で解析する | 配列アラインメントデータを参照配列差分圧縮で効率よく保存・交換する・設定を選んで品質値等を含む保持データを管理する |
| 圧縮 | block_compressed | 非可逆/可逆 |
| 開く方法 | SAM/BAM対応ツールで開きます。ヘッダーの`@SQ`参照名・長さ・M5等、ソート順、リード件数と未マッピング件数、FLAG/CIGAR、品質や任意タグを確認します。領域照会にはファイルのソート状態に合うBAI/CSI等の索引を用意し、BAM本体と同じ版のまま管理してください。 | CRAM対応ツールを使います。ヘッダーの参照名・長さ・チェックサムやバージョン、作成ツール、保持設定の記録を確認し、必要な場合は一致する参照配列をローカルまたは信頼できるレジストリから取得します。領域照会には対象ファイルと一致するCRAI等の索引を用います。 |
| 書き出し・変換 | BAMからSAMへ変換すると読めるテキストになりますが、容量が大きくなることがあります。SAMからBAMへ戻す場合はヘッダー、フィールド、タグと並び順を検査します。CRAMへ変換する場合は参照配列への依存や品質保持設定を確認し、復号に必要な参照を管理してください。 | CRAMからBAM/SAMへ変換する際は、参照を正しく解決し、塩基品質・タグ・リード名などの対象データが維持されるか設定を確認します。元CRAMを残し、変換前後の件数・統計・代表レコードを比較してください。BAM/SAMからCRAMへの変換でも、参照版と損失を許す品質圧縮設定を明示的に確認します。 |
用途別の選び方
作りたいものや使う場面から選べます。
SAMに対応するヘッダー・レコード・タグを圧縮して保持する
大規模なシーケンスリードと参照アラインメントをバイナリで保管・交換する・座標順データを索引化して領域単位で解析する
BAM向きBGZFとBAI/CSI等の索引を使う対応ツールで読み取る
大規模なシーケンスリードと参照アラインメントをバイナリで保管・交換する・座標順データを索引化して領域単位で解析する
BAM向き参照配列を識別・取得できる解析環境
配列アラインメントデータを参照配列差分圧縮で効率よく保存・交換する・設定を選んで品質値等を含む保持データを管理する
CRAM向き容量と品質値等の保持方針を確認したアーカイブ
配列アラインメントデータを参照配列差分圧縮で効率よく保存・交換する・設定を選んで品質値等を含む保持データを管理する
CRAM向き確認ポイント 1
BAMの復号に通常、外部の参照塩基配列は不要です。 CRAMでは参照依存の符号化や参照埋込みを扱います。
使い分け確認ポイント 2
参照依存のCRAMでは正しい参照を復号時に用意します。外部参照の管理、埋込み、参照不要の設定を区別し、ファイルだけ渡せば十分とは考えないでください。
使い分け選ぶ理由を詳しく
- CRAMは可逆・非可逆の保持方針を取り得ます。領域取得には適切な整列とCRAI等、ツールが必要とする索引を用意します。
よくある質問
CRAMにすればすべての情報が必ず残りますか?
いいえ。書き出し設定とツールに依存します。品質値・任意タグ・参照情報・レコード数を検証し、元データを検証完了まで保持してください。