K-merとは? DNA/アミノ酸配列の部分配列のこと

k-merとは?

一言でいうと、「 長さkのDNAの部分配列のこと 」である。

例えば「GAACAAGCTCTGCGG」という配列があった場合、この配列の3-merは、

GAA, AAC, ACA, CAA, …. CGG となる。

図示すると以下となる。

Kmerとは?


k-merの活用方法

現状では大きくわけて以下の3つの活用方法がある。

  • 配列検索のためのフィルタリング

  • de Brujinグラフによるゲノムアセンブリ

  • 種の判別


# 配列検索のためのフィルタリング

BLASTなどの配列検索プログラムでは、配列の一部分が完全一致する部分を探し、そこからアライメントを開始する。

クエリ配列 => GAACAAGCTCTGCGG

DB配列 => CAATAACTCTACGAA

という配列をアライメントする際、

クエリ配列を k-merに分割する。(ここでは4-merに分割する。)

GAAC, AACA, ACAA, CAAG, …. GCGG

そして、これら4-merと一致する部分からアライメントを始めることとなる。

今回の場合、CTCT(クエリの8塩基目)からアライメントを始めることとなる。

こうすることで、アライメント領域の大幅な節約ができる。

なお、BLASTのデフォルトでは、DNAでは11-merを、アミノ酸では3-merを使用する。


# de Brujinグラフによるゲノムアセンブリ

以下のリンクなどに詳しい。そちらを参照されたし。

https://hoxo-m.hatenablog.com/entry/20100930/p1


# 種の判別

以下の2つのゲノム配列の類似度を求めたいとします。

ゲノムA:GAACAAGCTCTGCGG

ゲノムB:CAATAACTCTACGAA

通常ならばアライメントを取るだけですが、このゲノムの3-merをプロファイルを求めてみます。

AB
AAC1.01.0
AAG1.00.0
AAT0.01.0
ACA1.00.0
ACG0.01.0
ACT0.01.0
AGC1.00.0
ATA0.01.0
CAA1.01.0
CGA0.01.0
CGG1.00.0
CTA0.01.0
CTC1.01.0
CTG1.00.0
GAA1.01.0
GCG1.00.0
GCT1.00.0
TAA0.01.0
TAC0.01.0
TCT1.01.0
TGC1.00.0

そしてこのk-merのプロファイルを比較することで擬似的に配列同士の類似度を算出することができます。

BLASTなどの配列アライメントツールは基本的に遅いため、大量にアライメントを取る必要があるときは、Kmerによる簡易な比較を用いられることもあります。