距離に基づく手法は、その優れた速度、スケーラビリティ、理論的保証により、さまざまな用途で系統樹を再構築する際によく用いられている。しかし、従来のde novoアルゴリズムは立方時間(cubic time)と二次メモリ(quadratic memory)の計算量に制約されており、数百万の配列を含む新しいデータセットには実用的ではない。最近の配置(placement)ベースの代替手法は、アルゴリズム上のスケーラビリティは向上しているが、進化距離の計算コストが高く、メモリ使用量も多いため、実際の大規模データへの適用には課題がある。さらに、現行のツールは現代のCPUおよびGPUアーキテクチャの並列処理能力を十分に活用していない。本研究では、DIPPERという新しい距離ベース系統解析ツールを提案する。DIPPERはGPU上での超高速かつ超大規模な系統樹再構築を可能にし、高い精度と低メモリ使用量を維持するよう設計されている。DIPPERは、ランタイムとメモリ計算量を大幅に改善する「分割統治(divide-and-conquer)戦略」、「配置(placement)戦略」、および「オンザフライ距離計算器(on-the-fly distance calculator)」など、いくつかの新しい技術革新を導入している。これにより、DIPPERはN個の系統群(taxa)に対して、ランタイム計算量O(N log N)、メモリ計算量O(N)を達成できる。分割統治戦略により、DIPPERは系統群の数に依存せずGPU上で低いメモリ使用量を維持できる。DIPPERは速度、精度、メモリ効率のいずれにおいても既存手法を一貫して上回り、既存ツールの限界を1〜2桁上回るサイズの系統樹にも対応できる。単一のNVIDIA RTX A6000 GPUを用いることで、DIPPERは1,000万件の未整列配列(unaligned sequences)から7時間未満で系統樹を再構築でき、この規模と効率で動作する唯一の距離ベース手法となる。DIPPERのコードはMITライセンスの下で自由に利用可能であり、https://github.com/TurakhiaLab/DIPPERで入手できる。DIPPERのドキュメントはhttps://turakhia.ucsd.edu/DIPPERで参照できる。
インストール
配布されているdockerイメージを使ってテストした(GPU)。
依存
- Docker
- Git
#dockerhub (link)
docker pull swalia14/dipper:latest
$ docker run -it --gpus all --rm swalia14/dipper:latest
> dipper --help
DIPPER Command Line Arguments:
Required Options:
-i [ --input-format ] arg Input format:
d - distance matrix in PHYLIP format
r - unaligned sequences in FASTA format
m - aligned sequences in FASTA format
-I [ --input-file ] arg Input file path:
PHYLIP format for distance matrix
FASTA format for aligned or unaligned sequences
-O [ --output-file ] arg Output file path
Optional Options:
-o [ --output-format ] arg Output format:
t - phylogenetic tree in Newick format
(default)
d - distance matrix in PHYLIP format (coming
soon)
-m [ --algorithm ] arg Algorithm selection:
0 - default mode
1 - force placement
2 - force conventional NJ
3 - force divide-and-conquer
-K [ --K-closest ] arg Placement mode:
-1 - exact mode
10 - default
-k [ --kmer-size ] arg K-mer size:
Valid range: 2-15 (default: 15)
-s [ --sketch-size ] arg Sketch size (default: 1000)
-d [ --distance-type ] arg Distance type to calculate:
1 - uncorrected
2 - JC (default)
3 - Tajima-Nei
4 - K2P
5 - Tamura
6 - Jinnei
-a [ --add ] Add query to backbone using k-closest placement
-t [ --input-tree ] arg Input backbone tree (Newick format), required
with --add option
-h [ --help ] Print this help message
-v [ --version ] Print DIPPER version
実行方法
1、De novo系統再構築
未整列のFASTA配列かは整列済み配列、もしくは 距離行列(PHYLIP) に対応している。デフォルトでは
< 30,000 個のシーケンス:通常の NJ(Neighbor-Joining)を使用
< 1,000,000 個未満:placement 技術を自動使用
>= 1,000,000 個の場合:divide-and-conquer 技術を優先
となっている。-mでモードは指定できる。
入出力ファイル、入出力フォーマット、それぞれを指定して実行する。docker立ち上げ時は--gpus allを指定してGPUを認識できるようにする。
#カレントパスをマウントするようにして立ち上げる
docker run -itv $PWD:/data -w /data --gpus all --rm swalia14/dipper:latest
#未整列配列
dipper -i r -o t -I t2.unaligned.fa -O tree.nwk
#整列(MSA)済み配列
dipper -i m -o t -d 2 -I t1.aligned.fa -O tree.nwk
- -i Input format:
d - distance matrix in PHYLIP format
r - unaligned sequences in FASTA format
m - aligned sequences in FASTA format - -I Input file path:
- -O Output file path
- -o Output format:
t - phylogenetic tree in Newick format (default)
d - distance matrix in PHYLIP format (coming soon) - -m Algorithm selection:
0 - default mode
1 - force placement
2 - force conventional NJ
3 - force divide-and-conquer
コメント
レポジトリにいくつかの使用例が書かれています。確認してみてください。
引用
Ultrafast and Ultralarge Distance-Based Phylogenetics Using DIPPER
Sumit Walia, Zexing Chen, Yu-Hsiang Tseng, Yatish Turakhia
bioRxiv, Posted August 12, 2025.