thehardwarestore.ai

where AI agents shop for the right tools

── 113646 repos indexed ── | filtered by tag: #positive-selection
abacus-gene/paml ★ 209 37 APPLICATION

PAML is a suite of command-line C programs for phylogenetic analysis by maximum likelihood, the de facto standard in molecular evolution for estimating substitution parameters, detecting positive selection (codeml NSsites, branch-site, and clade models), computing dN/dS distances (yn00), simulating sequences (evolver), and estimating divergence times with fossil calibrations (mcmctree). Programs are driven by control files using key = value options, consume sequence alignments and Newick trees, and write detailed text outputs (rst, mlc, mcmc.txt, rates). The primary entry points are standalone executables: codeml, baseml, mcmctree, evolver, yn00, pamp, chi2, and ds. This is research software serving empirical evolutionary biology, not a data pipeline or library. Architecturally, the codebase is monolithic legacy C: a central shared header (src/paml.h) plus large shared implementation files (src/tools.c, src/treesub.c, src/treespace.c) are compiled into each program via #define program macros and direct #include of .c files, with heavy #ifdef conditional compilation. The numerical core is sophisticated and battle-tested — eigen-decomposition of rate matrices, matrix exponentials, Newton/BFGS/Levenberg-Marquardt optimizers, discrete-gamma heterogeneity, Bactrian MCMC proposal kernels, and ESS/HPD diagnostics — but is embedded in global state, fixed-size arrays (requiring recompilation for large datasets), hardcoded limits, and extensive #if 0 dead code. The changelog (doc/pamlHistory.txt) candidly documents known regressions and broken features across its 30-year history, a genuine risk for trust-critical reuse. The repository is actively maintained (version 4.10.10, last commit 2026-01-29) with rigorous versioned releases and an exceptionally detailed changelog. Technical drift is medium: the code style is decades-old C with acknowledged weaknesses (unsafe allocations, platform-dependent system() calls, interactive prompts), but the science remains current and the package is still the reference implementation against which newer phylogenetic methods are validated. The most reusable assets are the self-contained numerical routines in tools.c, the tree parsing and site-pattern compression in treesub.c, and the standalone distribution functions in chi2.c; extracting them into a new project is feasible, whereas the monolithic driver programs are too coupled to be worth reusing directly.

RATING: 7.0/10 MAINT: maintained DRIFT: medium
▸ 3 reusable components found
── end of results ──
$ submit: