CRAM

cramファイルにはマッピングされたリードデータが圧縮された状態で保存されています。
cramファイルはbamファイルより圧縮率が高いです。

このパイプラインではcramファイルは一時的にbamファイルに変換されます。
変換されたbamファイルをもとにマッピングより下流の解析が実行されます。

エンコーディング

圧縮するときはfastaファイルが必要です。
[username@gc016 ~]$samtools view -C -T Homo_sapiens_assembly38.fasta test.bam > test.cram
[username@gc016 ~]$samtools index test.cram

デコーディング

解凍するときもfastaファイルが必要です。
[username@gc016 ~]$samtools view -h -T Homo_sapiens_assembly38.fasta test.cram > test.sam

Note

M5とUR

cramが作成されるとき、cramのヘッダーにはM5タグとURタグが追加されます。
-T オプションが設定されていない場合は、$HOME/.cache/hts-ref/{x}/{y}/{z}を参照します。
({x}, {y}, {z}の文字列を連結したものがM5タグに記載されているハッシュ値と一致します。)
該当するファイルがない場合はfastaファイルに記載されているM5タグをもとに参照するデータを探索します。
該当するデータが見つからない場合はURタグに記載されているfastaファイルを参照します。

ユーザー環境が異なるとcramの処理に再現性がない場合もあるので気をつけてください。

詳しくは https://www.htslib.org/doc/samtools.html#REFERENCE_SEQUENCES を参考にしてください。