diff --git a/README.md b/README.md index 31812d2..8015925 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,8 @@ ## Introduction -DIPPER (**DI**stance-based **P**hylogenetic **P**lac**ER**) is a tool for ultrafast and ultralarge phylogenetic reconstruction on GPUs, designed to maintain high accuracy with a minimal memory footprint. DIPPER introduces several innovations, including a divide-and-conquer strategy, a new placement algorithm, and an on-the-fly distance calculator that dynamically enables selective distance computation. DIPPER supports tree reconstruction with zero violations even from non-additive distance matrices and a faster heuristic mode with significantly fewer violations than baseline tools. +DIPPER (**DI**stance-based **P**hylogenetic **P**lac**ER**) is a tool for ultrafast and ultralarge phylogenetic reconstruction on GPUs, designed to maintain high accuracy with a minimal memory footprint. DIPPER introduces several innovations, including a divide-and-conquer strategy, a new placement algorithm, and an on-the-fly distance calculator that dynamically enables selective distance computation. In addition, DIPPER addresses the common issue of evolutionary distance underestimation observed in earlier methods—significantly reducing it in its default mode and offering a strict mode that completely eliminates the underestimation. + ## Installation NOTE: DIPPER is currently supported on systems with NVIDIA GPUs only. Support for additional platforms, including AMD GPUs and CPU-only options for x86-64 and ARM64 architecture, will be added soon. Stay tuned! diff --git a/docs/index.md b/docs/index.md index f431a13..a7d8f8e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,16 +5,14 @@ ## Introduction ### Overview -DIPPER (**DI**stance-based **P**hylogenetic **P**lac**ER**) is an ultrafast tool designed to reconstruct ultralarge phylogenies. + +DIPPER (**DI**stance-based **P**hylogenetic **P**lac**ER**) is a tool for ultrafast and ultralarge phylogenetic reconstruction on GPUs, designed to maintain high accuracy with a minimal memory footprint. DIPPER introduces several innovations, including a divide-and-conquer strategy, a new placement algorithm, and an on-the-fly distance calculator that dynamically enables selective distance computation. In addition, DIPPER addresses the common issue of evolutionary distance underestimation observed in earlier methods—significantly reducing it in its default mode and offering a strict mode that completely eliminates the underestimation.
Figure 1: Overview of DIPPER algorithm
-### Key Features - -#### TBA ## Installation Methods @@ -115,7 +113,7 @@ cd bin | `-I`, `--input-file` | Input file path (required):
PHYLIP for distance matrix, FASTA for MSA or raw sequences | | `-O`, `--output-file` | Output file path (required) | | `-m`, `--algorithm` | Algorithm selection:
`0` - auto (default)
`1` - force placement
`2` - force NJ
`3` - divide-and-conquer | -| `-p`, `--placement-mode` | Placement mode:
`0` - exact
`1` - k-closest (default) | +| `-K`, `--K-closest` | Placement mode:
`-1` - exact
`10` - default | | `-k`, `--kmer-size` | K-mer size (Valid range: 2–15, default: 15) | | `-s`, `--sketch-size` | Sketch size (default: 1000) | | `-d`, `--distance-type` | Distance type:
`1` - uncorrected
`2` - JC (default)
`3` - Tajima-Nei
`4` - K2P
`5` - Tamura
`6` - Jinnei | diff --git a/src/tree_generation.cu b/src/tree_generation.cu index 3b78084..6d65542 100644 --- a/src/tree_generation.cu +++ b/src/tree_generation.cu @@ -64,10 +64,10 @@ void parseArguments(int argc, char** argv) " 2 - force conventional NJ\n" " 3 - force divide-and-conquer") - ("placement-mode,p", po::value(), + ("--K-closest,K", po::value(), "Placement mode:\n" - " 0 - exact mode\n" - " 1 - k-closest mode (default)") + " -1 - exact mode\n" + " 10 - default") ("kmer-size,k", po::value(), "K-mer size:\n" @@ -219,8 +219,8 @@ int main(int argc, char** argv) { try {algo = vm["algorithm"].as();} catch(std::exception &e){} - std::string placemode = "1"; - try {placemode = vm["placement-mode"].as();} + std::string placemode = "10"; + try {placemode = vm["K-closest"].as();} catch(std::exception &e){} bool add = false; @@ -376,7 +376,7 @@ int main(int argc, char** argv) { MashPlacement::msaDeviceArrays.allocateDeviceArrays(fourBitCompressedSeqs, seqLengths, numSequences, params); if(algo=="1"||algo=="0"&&numSequences>=placement_thr&&numSequences=placement_thr&&numSequences