SAM/BAMフォーマットは10年モノだっていう話

SAM/BAMといえばアライメントデータを格納するためのフォーマットとして一般的に使用されていますが、そもそもこのフォーマットはどういう経緯で生まれたのでしょう。
開発者であるHeng Li氏のブログにてその話があったため、読んでみました。サクッと読めます。

SAM/BAMの普及

2008年1月に1000 Genomes Projectが発表されてから、初期段階では限られたユースケースのための独自の入出力フォーマットを持つショートリードのアライナーと変異検出ツールのみが存在していました。

独自フォーマットが使われていると、プロジェクト参画者間のコラボレーションは生まれません。
このままではいかんということで現れたのが Sequence Alignment/Map format (SAM) でした。

2008年末にこのSAMフォーマットの仕様とそのバイナリであるBAM形式の詳細が発表されると、その扱いやすさと圧縮時のデータサイズから急速に普及していき、高スループットシーケンスデータの標準フォーマットとなりました。

htslibの登場

SAMエコシステムの進化に関する最も影響力のある決定の1つは、APIの分離でした。

samtoolsはSAM / BAMファイルを解析するためのAPIを提供していたが、他のインターフェースからの利用が困難という難点がありました。この問題に対処するために誕生したのが、みんな大好きhtslibです。
htslibは高スループットシーケンスで使用される一般的なデータ形式を処理するためのライブラリとして以下のような機能を持っていました。

  • マルチスレッドによる並列処理のサポート
  • PythonやRなどの他の一般的なプログラミング言語での扱いが可能
  • リモートHTTP / FTPサーバーまたはDropBox、GCP、AWSといったクラウドストレージ上のBAMファイルに直接アクセスが可能
  • htsgetにより、データセット全体をダウンロードすることなく、小領域の可視化が可能。
  • SAMのよりコンパクトなフォーマットであるCRAMv3)形式への変換のサポート

Htslib、samtools関連のライブラリは、過去10年間で300万回以上ダウンロードされています。

フォーマットとしてのSAM/BAM

SAMフォーマットは過去に何度も改訂されていますが、ほとんどすべての変更は下位互換性があり、初期のsamtools(v0.1.1)を使って最新のSAM/BAMファイルを処理することができます。

フォーマットとエコシステムを継続的に強化しないと、構造変異やロングリード配列への対応、クラウドコンピューティング、オンラインのゲノムブラウザなどが困難に、または不可能にさえなります。
今でもこれだけの利用者がいるのは、長期的にメンテナンスされてきた賜物といえるでしょう。

思ったこと

ユーザビリティを改善していくことでSAM/BAMは普及していったようです。

色々なツールを眺めていても、ドキュメントだったり環境構築の容易さだったり、ユーザビリティに配慮しているツールは広く使われるし、コミュニティが盛んになっています。

フォーマットでなくても、考え方としてこういうサービスだったりツールが作れたら嬉しいなと思うのでした。

参考

SAM/BAM/samtools is 10 years old