ゲノム座標の記法(1-based vs. 0-based)

先日、後輩から「UCSCからダウンロードした遺伝子の座標から塩基配列を取得するときに、ファイルに書かれた座標とゲノムブラウザでみた配列が1つずれてる」と言われました。
自分もかつて同じ問題にぶつかったのですが、意外と知らない人がいると思い、まとめました。

まず、座標の表現方法には 0-based と1-based があります。0-basedは配列の一番最初の座標を0として扱います。1-basedは配列の一番最初の座標を1とします。一般にバイオ系の人は1-based、インフォ系の人は0-basedをよく使う気がします。

UCSCゲノムブラウザでよくみる「chr1:111111-222222」などという表示は1-basedです。一方、プログラムで座標を扱う場合には、0-basedが便利だったりします。

実はUCSCのFAQにはこんなことが書いてあります(意訳)。

ウチのデータベースの内部表現は、startは0-based、endは1-basedなんだよ。ゲノムブラウザで表示するときは、1足しているんだよ。
なんで、そんなめんどくさいことするかって? そりゃあ、単純な計算で長さとかが計算できた方が便利だからだよ。

http://genome.ucsc.edu/FAQ/FAQtracks#tracks1

例えば、「chr1:111111-222222」という領域を表したい場合、UCSCのデータベースからダウンロードしたファイルではこのようになります。

chr1 111110 222222

なので、もしこの領域の塩基配列を取得したい時には、startに1を足して扱わなければなりません。


これは、遺伝子のstrandが(-)の場合でも変わりません。つまり、Watson strandからみたときのstartとendとして表示されているので、startが0-basedとなります。

chr1 111110 222222 +
chr1 111110 222222 -

これらは同じ領域(chr1:111111-222222)のWatson strand側とCrick strand側を表します。

BEDでも、0-based start & 1-based endになっています。GTFやGFFは、1-based start & 1-based endです。
種々のフォーマットにおける座標の扱いについてもUCSCのFAQに載ってます( http://genome.ucsc.edu/FAQ/FAQformat.html )。