はじめに
リファレンスゲノム間の変換をするときには、Chain形式のファイルが必要になることがあります。この記事ではこのChain形式を理解します。
参考文献:UCSCの公式のリファレンス
Chain ファイルの一例
chain 4900 chrY 58368225 + 25985403 25985638 chr5 151006098 - 43257292 43257528 1
9 1 0
10 0 5
61 4 0
16 0 4
42 3 0
16 0 8
14 1 0
3 7 0
48
chain 4900 chrY 58368225 + 25985406 25985566 chr5 151006098 - 43549808 43549970 2
16 0 2
60 4 0
10 0 4
70
まず最初にヘッダー列があり、
chain 4900 chrY 58368225 + 25985403 25985638 chr5 151006098 - 43257292 43257528 1
それから、3つ組の数字が並んで
9 1 0
10 0 5
61 4 0
16 0 4
42 3 0
16 0 8
14 1 0
3 7 0
最後は
48
数字一つで終わっているのが見えると思います。前者はヘッダー行で、後者はアラインメントデータ行です。このヘッダー行とアラインメントデータ行のセットが繰り返されてChain形式のファイルは構成されています。
ヘッダー行
tはtarget(変換先), qはquery(問い合わせ元)を意味しています。
具体例:
chain 4900 chrY 58368225 + 25985403 25985638 chr5 151006098 - 43257292 43257528 1
chain score tName tSize tStrand tStart tEnd qName qSize qStrand qStart qEnd id
キーワード | 説明 | 配列 | 備考 |
---|---|---|---|
chain | ヘッダー行であることを示す | ||
score | chain score | ||
tName | 染色体 | 参照/ターゲット配列 | |
tSize | 染色体のサイズ | 参照/ターゲット配列 | |
tStrand | ストランド | 参照/ターゲット配列 | + または - |
tStart | アラインメントの開始位置 | 参照/ターゲット配列 | 0-base の半開区間 |
tEnd | アラインメントの終了位置 | 参照/ターゲット配列 | 0-base の半開区間 |
qName | 染色体 | クエリ配列 | |
qSize | 染色体のサイズ | クエリ配列 | |
qStrand | ストランド | クエリ配列 | + または - |
qStart | アラインメントの開始位置 | クエリ配列 | 0-base の半開区間 |
qEnd | アラインメントの終了位置 | クエリ配列 | 0-base の半開区間 |
id | chain ID |
注意が必要なのは、アラインメントの開始位置と終了位置は、0-base の半開区間 として表現されていることです。
バイオインフォマティックスの世界では、1-base と 0-base が混じり合って非常にややこしいですが、Chain形式は、0-base なので間違えないように注意する必要がありますね。
またChainファイルによっては、最後の chain ID とは名ばかりで、全部に 0 が入っていたりするケースもあるようです。
アラインメントデータの行
例
9 1 0
10 0 5
61 4 0
16 0 4
42 3 0
16 0 8
14 1 0
3 7 0
48
size dt dq
キーワード | 説明 | 備考 |
---|---|---|
size | ギャップのないアライメントのサイズ | |
dt | このブロックの末尾と次のブロックの先頭の差(参照/ターゲット配列) | |
dq | このブロックの末尾と次のブロックの先頭の差(クエリ配列) |
中国のZhongxu blogというサイトのliftover,crossmap进行坐标转换时用到的chain文件介绍というページにわかりやすい図が掲載されていたので転載します。
このようにして、ギャップのない配列の数、ターゲット配列のギャップの数、クエリ配列のギャップの数が、順番に記載されています。
最後のブロックには「次のブロック」というものがないので、一行に数字が1つだけになるようです。
まとめ
Chainがどのようなファイルフォーマットなのか概説しました。
非常に簡単なフォーマットなので、その気になれば、自分でLiftOverを行うスクリプトを書くこともできるような気がします。とはいえ、バイオインフォの世界では細かい例外が多いので、既存の信用できるツールを使って座標を変換するのが良いと思います。
この記事は以上です。