鮭とばとコーヒー

四度目の正直ブログ

ab1ファイルを読み込みたい(1)

タイトルの通り。
最終的には、GUI複数の塩基配列の混ざり物を読み込んで解析できるようにしたい。
複数回に分けて記事を書くつもり。個人的なメモのつもりだけど、誰かの何かしらの助けになれば幸いですな。

Applied BiosystemsのWebサイトに、ABIFなる規格のファイルの仕様書があるので、これを参考に。

ここからは全て仕様書に書いてあること。
ab1ファイルをバイナリエディタなんかで開いたり、UNIXならターミナルから

od -ax hoge.ab1 | less

とでもしながら作業すると便利。

ファイルの先頭には、128 Byteのヘッダが格納されている。今回はヘッダの内容についてメモ。

初めの4 Byteは"ABIF"という文字列になっている。
基本的にはビッグエンディアンで書き出されているが、仕様上はリトルエンディアンも許されているとのことだ。
この4 Byteの並び順でエンディアンを判別すればよい。't', 'd', 'i', 'r'の順に並んでいればビッグエンディアンである。

5バイト目はバージョン情報。 16進数のIntで、100の位がメジャーバージョン、1の位がマイナーバージョンである。
殆どのシーケンサーが吐き出したファイルでは、101になっていると思う。
マイナーバージョンについてはあまり気にしなくてもよいが、メジャーバージョンはこの先変更の可能性があって、後方互換性はバサバサ切り捨てられる可能性もあるので、チェックするに越したことはない。

その後、28 Byteからなる"ディレクトリ"が続く。
ディレクトリの構成とか、ヘッダ内のディレクトリの詳細については次回書こうかな。

開発にあたって、こことかを参考にした。
このblogより余程よくまとまってるし、サンプルコードとかも載ってるから急いでる人は見てみるといいかと思う。

初めにab1ファイルを読み込んだ時はエンディアンでハマった。
ちゃんと仕様書に書いてあったのに、まともに読んでなかった。
回線切って首吊りたい。