macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

配列をアセンブリグラフにマッピングしてグラフを拡張する minigraph

 

最近のシーケンシング技術の進歩により、個々のゲノムを参照ゲノムの質に合わせて組み立てることが可能になった。同一種からの複数のゲノムを統合し、統合された表現を生物学者が利用できるようにするにはどうすればよいのかは、依然として未解決の課題である。ここでは、直線的なリファレンスゲノムの座標を維持しながら複数のゲノムを表現するためのグラフベースのデータモデルと関連するフォーマットを提案する。このアイデアをminigraphツールキットに実装し、パンゲノムグラフを効率的に構築し、現在のリファレンスゲノムから欠落している何万もの構造変異をコンパクトにエンコードできることを実証した。

 

Github

Minigraphはシーケンスからグラフへのマッパーであり、グラフのコンストラクタである。Minigraphは,シーケンスグラフ内の問い合わせシーケンスの近似位置を見つけ,既存のグラフから分岐した長い問い合わせ部分シーケンスで既存のグラフを増分的に拡張する。Minigraphはminimap2から多くのアイデアとコードを借りている。かなり効率的で、24CPUコアを使って40のヒトアセンブリから半日でグラフを構築することができる。ベースアライメントがないこともあり、minigraphは最適ではないマッピングやローカルグラフを生成することがあり得る。

 

2022/05/11

 

インストール

Github

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で視覚化した。想定通り、中央にバブルが発生している。

f:id:kazumaxneo:20210207191738p:plain

GFAファイル(link)

f:id:kazumaxneo:20210207191557p:plain

最初の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)