レポジトリより
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を使ってインストールした。
#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
関連