macでインフォマティクス

macでインフォマティクス

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

パンゲノム用の全ゲノムアライナー wfmash

 

レポジトリより

wfmashはパンゲノム用のアライナーで、効率的な相同性マッピングと塩基レベルのアライメントを組み合わせている。MashMap 3.5を使用して配列間の近似マッピングを求め、WFA (Wave Front Alignment)を適用して塩基レベルのアラインメントを得る。MashMap 3.5はminmersを採用している。minmersはminimizersを一般化したもので、不偏的なJaccard類似度推定を行い、マッピング精度を向上させる。

wfmashは、全ゲノムアラインメントを簡単に行えるように設計されている。適度な計算ノードであれば、配列のダイバージェンスにもよるが、ギガベーススケールのゲノムの全ゲノムアラインメントを数分から数時間で行うことができる。wfmashは、入力配列間の平均塩基同一性が70%と低い場合も扱うことができる。

wfmashはpggb(the PanGenome Graph Builder)の主要なアルゴリズムであり、パンゲノムグラフの基本構造を定義する入力ゲノムの全ゲノムアラインメントを行うために適用される。数百のヒトゲノムのall-to-allアラインメントをサポートするように拡張することができる。

プロセス
デフォルトでは、wfmashはクエリ配列をオーバーラップしないセグメント(デフォルト:1kb)に分割し、MashMapとminmerスケッチを用いてマッピングする。minmerはminimizerを一般化したもので、ウィンドウごとに最小のk-merを複数選択し、不偏的なJaccard類似度推定を可能にする。チェーンギャップ(デフォルト:2kb)未満で分離された連続するマッピングはマージされる。

 

インストール

ubuntu24にcondaを使ってインストールした。

Github

#conda
mamba create -n wfmash -y
conda activate wfmash
mamba install -c bioconda wfmash -y
mamba install -c bioconda samtools -y

>wfmash 

wfmash [target.fa] [query.fa] {OPTIONS}

 

  target.fa                        target sequences (required, default: self-map)

  query.fa                         query sequences (optional)

  Indexing:

    -W[FILE], --write-index=[FILE]   build and save index to FILE

    -I[FILE], --read-index=[FILE]    use pre-built index from FILE

    -b[SIZE], --batch=[SIZE]         target batch size for indexing [4G]

    -w[INT], --sketch-size=[INT]     sketch size for MinHash [auto]

    -k[INT], --kmer-size=[INT]       k-mer size [15]

  Mapping:

    -m, --approx-mapping             output approximate mappings (no alignment)

    -p[FLOAT], --map-pct-id=[FLOAT]  minimum mapping identity [70]

    -n[INT], --mappings=[INT]        number of mappings to keep per segment [1]

    -s[INT], --segment-length=[INT]  segment length for mapping [1k]

    -l[INT], --block-length=[INT]    minimum block length [3*segment-length]

    -o, --one-to-one                 Perform one-to-one filtering

    -L, --lower-triangular           Only compute the lower triangular for all-vs-all mapping

    -Y[C], --group-prefix=[C]        map between sequence groups with different prefix [#]

    -G, --disable-grouping           disable sequence grouping and exclude self mappings

    -X, --self-maps                  enable self mappings (overrides -G)

    -T[pfx], --target-prefix=[pfx]   use only targets whose names start with this prefix

    -R[FILE], --target-list=[FILE]   file containing list of target sequence names to use

    -Q[pfxs], --query-prefix=[pfxs]  filter queries by comma-separated prefixes

    -A[FILE], --query-list=[FILE]    file containing list of query sequence names

    -N, --no-split                   map each sequence in one piece

    -c[INT], --chain-gap=[INT]       chain gap: max distance to chain mappings [2k]

    -S[G,L,D], --scaffolding=[G,L,D] homology scaffolding [100k,10k,100k]

    -P[INT], --max-length=[INT]      target mapping length [50k, 'inf' for unlimited]

    -O[FLOAT], --overlap=[FLOAT]     max overlap with better mappings (1.0=keep all) [1.0]

    -f, --no-filter                  disable mapping filtering

    -M, --no-merge                   disable merging of consecutive mappings

    -J[FLOAT], --kmer-cmplx=[FLOAT]  minimum k-mer complexity threshold

    --hg-filter=[numer,ani-Δ,conf]   hypergeometric filter params [1.0,0.0,99.9]

    -H[INT], --l1-hits=[INT]         minimum number of hits for L1 filtering [auto]

    -F[FLOAT], --filter-freq=[FLOAT] filter minimizers occurring > FLOAT of total [0.0002]

  Alignment:

    -i[FILE], --align-paf=[FILE]     input PAF file for alignment

    -E[INT], --target-padding=[INT]  padding around target sequence [0]

    -g[vals], --wfa-params=[vals]    scoring: mismatch, gap1(o,e), gap2(o,e) [3,4,2,24,1]

  Output Format:

    -a, --sam                        output in SAM format (PAF by default)

    -d, --md-tag                     output MD tag

    -q, --no-seq-sam                 omit sequence field in SAM output

  System:

    -t[INT], --threads=[INT]         number of threads [1]

    -B[PATH], --tmp-base=[PATH]      base directory for temporary files [pwd]

    -Z, --keep-temp                  retain temporary files

    -v, --version                    show version number and github commit hash

    -h, --help                       display this help menu

 

 

実行方法

1、indexing

実行するにはfastaのindexが必要(リファレンスとクエリ両方)。生のfastaも扱えるが、bgzipで圧縮したゲノムをindexingする場合

bgzip -@ 16 ref.fa
samtools faidx ref.fa.gz

ref.fa.gz,faiとref.fa.gz,gziができる。

 

2、mapping

wfmash [target.fa] [query.fa] {OPTIONS}の順番で指定する

 

リファレンスゲノムに対してクエリ配列をマッピング

wfmash reference.fa query.fa -t 8 > aln.paf
  • -t     number of threads [1]

wfmashは完了までの時間を見積もる進捗ログを出力する。出力はデフォルトではPAF形式。

 

SAM形式で書き出し

wfmash reference.fa query.fa -t 8 -a > aln.paf
  • -a    output in SAM format (PAF by default)

 

セルフマッピング(all versus all but removing self mappings from the report)

wfmash query.fa query.fa -X > aln.paf

#or
wfmash query.fa > aln.paf
  • -X     enable self mappings (overrides -G)

 

アライメントなし(-m)でより長い配列をマップするには、-mでsegmentとmax lengthの値を大きくする。

wfmash reference.fa query.fa -m -s 50k -P 500k > approximate.mappings.paf
  • -m      output approximate mappings (no alignment) 
  • -s  <INT   segment length for mapping [1k]
  • -P <INT>     target mapping length [50k, 'inf' for unlimited]

アライメントなしなのでsam出力(-a)は無効になる。

 

 

その他(レポジトリより)

  • -s[N], --segment-length=[N] は、マッピングシード長を定義する(デフォルト:1k)。

  • c[N]、--chain-gap=[N]は、N以下の塩基で区切られている場合、連続するセグメントマッピングの最良のペアがマージされる。

  • -l[N], --block-length-min=[N]は、マージされるマッピングのシードマッピングの合計がN以上(デフォルトは5kb)になるようにする。

  • -p[%], --map-pct-id=[%] は、マッピング・ステップにおける同一性のパーセンテージの最小値を定義する。

  • -n[N], --n-secondary=[N]は、-block-length-min以上の各セグメントについて報告するマッピング(およびアラインメント)の最大数を定義する(セグメント長より短い配列のマッピング数は-S[N], --n-short-secondary=[N]で定義され、デフォルトは1)。

  • デフォルトでは、WFAの高次バージョンをマッピングに適用することで、ベースレベルのアラインメントを得る。様々な設定がペアワイズアラインメントの動作に影響を与えるが、一般的にアラインメントパラメータはマッピングされた部分配列間の予想される発散に基づいて調整される。

  • マッピング長はデフォルトで50kbに制限されており、WFAを用いた効率的なベースレベルアライメントを可能にしている。同じ分岐のパーセンテージでより長い配列は、劇的に多くの計算時間を必要とするため。
  • 近似マッピング:m, --approx-mapを指定すると、アラインメントの前に停止して近似マッピングを得ることができる(-cなしのminimap2に近い)。

  • 計算機クラスタ環境で非常に大きな配列を大量にアラインメントする場合、クラスタ全体に計算を分散ためのsplit_approx_mappings_in_chunks.pyが用意されている、これは近似マッピング.pafを類似の難しいアラインメント問題のチャンクに分割して計算する。
  • nf-core/pangenomeでも実行できる。クラスタ環境でもワンライナーで実行可能(レポジトリ参照)

 

引用

https://github.com/waveygang/wfmash

 

関連