最近のシーケンシング技術の進歩により、個々のゲノムを参照ゲノムの質に合わせて組み立てることが可能になった。同一種からの複数のゲノムを統合し、統合された表現を生物学者が利用できるようにするにはどうすればよいのかは、依然として未解決の課題である。ここでは、直線的なリファレンスゲノムの座標を維持しながら複数のゲノムを表現するためのグラフベースのデータモデルと関連するフォーマットを提案する。このアイデアをminigraphツールキットに実装し、パンゲノムグラフを効率的に構築し、現在のリファレンスゲノムから欠落している何万もの構造変異をコンパクトにエンコードできることを実証した。
Minigraphはシーケンスからグラフへのマッパーであり、グラフのコンストラクタである。Minigraphは,シーケンスグラフ内の問い合わせシーケンスの近似位置を見つけ,既存のグラフから分岐した長い問い合わせ部分シーケンスで既存のグラフを増分的に拡張する。Minigraphはminimap2から多くのアイデアとコードを借りている。かなり効率的で、24CPUコアを使って40のヒトアセンブリから半日でグラフを構築することができる。ベースアライメントがないこともあり、minigraphは最適ではないマッピングやローカルグラフを生成することがあり得る。
2022/05/11
Minigraph v0.18 released with improved performance for species of higher diversity. https://t.co/7fHB8CtXCf
— Heng Li (@lh3lh3) 2022年5月9日
インストール
git clone https://github.com/lh3/minigraph
cd minigraph && make
#gfatools
git clone https://github.com/lh3/gfatools
cd gfatools && make
> ./minigraph
$ ./minigraph
Usage: minigraph [options] <target.gfa> <query.fa> [...]
Options:
Indexing:
-k INT k-mer size (no larger than 28) [15]
-w INT minizer window size [10]
Mapping:
-f FLOAT ignore top FLOAT fraction of repetitive minimizers [0.0002]
-U INT[,INT] choose the minimizer occurrence threshold within this interval [50,250]
-j FLOAT expected sequence divergence [0.1]
-g NUM stop chain enlongation if there are no minimizers in INT-bp [10000]
-F NUM max fragment length (effective with -xsr or in the fragment mode) [800]
-r NUM bandwidth used in chaining [2000]
-n INT[,INT] minimal number of minimizers on a graph/linear chain [3,2]
-m INT[,INT] minimal graph/linear chaining score [50,30]
-p FLOAT min secondary-to-primary score ratio [0.8]
-N INT retain at most INT secondary mappings [5]
-D skip self diagonal matches
Graph generation:
--ggen perform incremental graph generation
-q INT min mapping quality [5]
-l NUM min alignment length [100000]
-d NUM min alignment length for depth calculation [10000]
-L INT min variant length [50]
--call call the graph path in each bubble and output BED
Input/output:
-t INT number of threads [4]
-o FILE output mappings to FILE [stdout]
-K NUM minibatch size for mapping [500M]
-S output linear chains in * sName sLen nMz div sStart sEnd qStart qEnd
--vc output in the vertex coordinate
Preset:
-x STR preset []
- lr: noisy long read mapping (the default)
- asm: asm-to-ref mapping
- sr: short reads
- ggs: simple algorithm for graph generation
> ./gfatools
$ ./gfatools
Usage: gfatools <command> <arguments>
Commands:
view read a GFA file
stat statistics about a GFA file
gfa2fa convert GFA to FASTA
gfa2bed convert rGFA to BED (requiring rGFA)
blacklist blacklist regions
bubble print bubble-like regions (EXPERIMENTAL)
asm miniasm-like graph transformation
sql export rGFA to SQLite (requiring rGFA)
version print version number
実行方法
GFAフォーマットのリファレンスにサンプルのFASTA配列をマッピングして、グラフを拡張する。配列をグラフにマッピングするには、GFA フォーマット( 推奨はrGFA フォーマット)のリファレンスグラフファイルを用意する必要がある。
minigraph -x lr graph.gfa query.fa > out.gaf
グラフがない場合は、複数のサンプルの配列からグラフを生成することもできる。
#リファレンスに1サンプルの配列をマッピング
minigraph -x ggs -t16 ref.fa sample1.fa > sample1.gfa
#リファレンスに2サンプルの配列をマッピング
minigraph -x ggs -t16 ref.fa sample1.fa sample2.fa > out.gfa
#GFAのグラフに配列をマッピング
minigraph -x ggs -t16 ref.gfa sample.fa > out.gfa
minigraph GFAパーサーはFASTAをシームレスに解析するため、FASTA中の配列をリファレンスとして提供することができる。この場合、minigraphはminimap2のように動作するが、ベースレベルのアラインメントではないと説明されている。
テスト
2つの配列を用意して挙動を確認する。リファレンスの配列、その中央に6kbくらいのリファレンスにない配列を挿入した配列(変異リファレンス)の2つを用意した。
minigraphを実行して、その2つの配列からグラフを出力。
minigraph -xggs -t 12 -l 1k ref.fa mt.fa > output.gfa
- -l min alignment length [100000]
Bandageで視覚化した。想定通り、中央にバブルが発生している。
GFAファイル(link)
最初の3行が配列情報(S)、次の3行がリンク情報(L)。s1が正方向でそれぞれs2の正方向とs3の正方向とギャップなしで繋がる。s2の正方向がs3の正方向とギャップなしで繋がる。s1とs3についてもリンクの記述があれば、環状化して閉じた環になる。今回は線状配列を提供したので記載はない。
*リファレンスよりクエリの方が長い配列だとしても、完全にクエリにしかない領域はリファレンスンにアラインメントされず、出力されるグラフには表現されない。リファレンスに部分的にはアラインメントされ、途中で構造が違う領域だけがグラフに反映される。
FASTAに変換(lossy)
gfatools gfa2fa -s output.gfa > output.fa
SVコール
minigraph -xggs --call -l 1k ref.fa mt.fa > call.bed
出力はBEDライクなフォーマットになる。
引用
The design and construction of reference pangenome graphs with minigraph
Heng Li, Xiaowen Feng & Chong Chu
Genome Biology volume 21, Article number: 265 (2020)