鮭とばとコーヒー

四度目の正直ブログ

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

Nitrous.IOがなかなかよくなってる

ひょんなことから簡単なサイト構築をすることになった(バイト)。

サンプルが欲しいとか言われたので、前に使ったことのあるNitrous.IO というサービスを利用することに。

前に使った時は通信環境が南アフリカ並だったので、全然使えないまま終わってしまったんだけど、改めて使ってみるとなかなかよかった。

ココから登録してもらえると、あなたも私もハッピー!です

_人人人人人人人_
> 突然の勧誘 <
 ̄YYYYYY

え?普通に登録するって?そんなあ!!

肝心のサービスの中身だけど、今のところRuby on Rails, Python/Django, node.js, そしてGoが使えるっぽい。

因みに僕はGoのマスコットを見るとサンドバッグにしたくて仕方が無くなる。

登録後はN2Oというポイント?のようなものが割り振られて、それをメモリとストレージに割り振る形になる。前述の登録用URLは勧誘用のもので、ユーザーを勧誘すると相手と自分にN2Oが割り振られる仕組みっぽい。

どこのソシャゲだよ。

pathが通ってなかったりすることもあった気がするけど、その辺はおいおい書こうと思っておる。 取り敢えずPython/Djangoフレームワークで遊んでみている。

少なくともDjangoに関しては最新バージョンがインストールされているようなので、気に入らなければ上書きなりなんなりすればよろし。

で、タイトルはどういうことやねん、というと

Nitrous Desktop
コレです。

こいつがなかなかスグレモノで、ローカルと同期が出来る。というかその為のものなんだけど。 "Sync Now"をクリックしてやるとWindows環境だと%HOMEPATH%の中にNitrousというディレクトリが作られて、中身がまるっと同期される。

f:id:nilesrumfoord:20140915231953j:plain

で、ローカルで編集してsyncすると、ローカルがウェッブ上にコピーされる。どうも最新のバージョンに同期されるっぽい。試してないので分からないが。

みんなNitrous.IOに登録して僕のN2Oを増やしてね!