Releases: veg/hyphy
2.5.97
HyPhy v2.5.97: Performance Optimizations and Analysis Refinements.
Core Performance:
- Verified ARM Neon micro-architectural optimizations for matrix operations and tree evaluation.
- Optimized IsMaxElement using vector range masks for faster convergence checks.
- Implemented register blocking for 4x4, 4x2x4, and 4x4x2 dense matrix kernels.
- Optimized specialized pruning kernels with consolidated memory loads.
- Implemented unrolled protein (D=20) and vectorized codon (D=61) kernels.
- Tuned Scaling-and-Squaring heuristics for sparse/dense matrix exponentiation.
Analysis and Core Updates:
- RELAX: Added LF state restoration from snapshot in FitMainTestPair.
- MOLERATE: Upgraded to v0.0.2; added 'internal-only' branch labeling strategy and improved assertion messaging.
- Core: Bumped version to 2.5.97 in global_things.cpp.
- Core: Added boundary condition violation handling in likefunc2.cpp compute calls.
2.5.96
HyPhy Release Notes: Version 2.5.96
Overview
This release introduces B-STILL (Beta-STILL), a specialized selection analysis framework designed to identify site-level evolutionary stasis (invariance) using a Bayesian FUBAR-style approach.
New Features
-
B-STILL (Selection Analysis): A new method for detecting sites that exhibit significantly less variation than expected under neutral models.
- Implemented in
res/TemplateBatchFiles/SelectionAnalyses/B-STILL.bf. - Optimized for large-scale genomic datasets to identify highly conserved functional motifs.
- Added to
files.lstfor keyword-based invocation via the command line.
- Implemented in
-
Version Update: Updated internal version string to
2.5.96.
For more information on running B-STILL, use:
hyphy b-still --alignment <path> --tree <path>
2.5.94
Version 2.5.94: Core Fixes and Analysis Framework Enhancements
Summary
This release focuses on improving the stability of core analysis frameworks (PRIME, BUSTED, CORA) and addressing critical edge cases in ancestral reconstruction.
Key Changes
🧬 Analysis Frameworks (libv3)
- Ancestral Reconstruction: Fixed a critical bug in ancestral.bf where assertions would fail on constant sites with empty patterns (all-gap patterns) by relaxing the constraint in ComputeCompressedSubstitutionConstantSite from == 1 to <= 1.
- PRIME: Massive updates to the PRIME framework including hierarchical testing and property-specific selection detection.
- CORA Model: Introduced the CORA model implementation for advanced property-based selection analysis.
- BUSTED & BUSTED-PH: Various fixes and refactorings to improve stability and result reporting.
- MG_REV_PROPERTIES: Significant revisions and improvements to the property-based substitution model.
- Mathematical Utilities: Added new mathematical functions to convenience/math.bf.
- Miscellaneous: Minor stability and bug fixes in alignments.bf, IOFunctions.bf, and trim-label-tree.bf.
🚀 Core Engine
- Version Bump: Formalized version 2.5.94 in global_things.cpp.
2.5.93
Title
Version 2.5.93: Performance Optimizations, BUSTED v4.7, and Analysis Tweaks
Description
This release brings significant performance improvements to the core likelihood engine, including a modernized Simplex optimization method and SIMD (NEON) enhancements for matrix-vector products. It also updates BUSTED to version 4.7 with new advanced options for handling misalignment artifacts ("error sink"), and includes various tuning for selection analyses (FEL, MEME, Contrast-FEL).
Key Changes
🚀 Performance & Core Engine
- Simplex Optimizer: Major rewrite of the
SimplexMethodto use adaptive parameters (better for high dimensions) and O(N) centroid updates, resulting in faster and more robust convergence (d7e0aa56). - SIMD/NEON: Implemented optimized blocked (8x8) matrix-vector products using NEON intrinsics, improving likelihood calculation speed on ARM architectures (
d7e0aa56). - OpenMP: Tuned scheduling parameters for matrix exponentiation to better handle varying workload sizes (
d7e0aa56). - Math: Simplified loop bounds in formula processing and adjusted matrix exponentiation scaling (
3e92f6d3).
🧬 Analysis Updates
- BUSTED v4.7: Added an "error-sink" feature (and associated advanced settings) to capture misalignment artifacts by including a specific rate class (
d7e0aa56). - Selection Analyses:
- Tuned optimization precision and methods for FEL, MEME, and Contrast-FEL to improve stability and performance (
3e92f6d3,d7e0aa56). - Contrast-FEL: Fixed a variable name typo (
d7e0aa56).
- Tuned optimization precision and methods for FEL, MEME, and Contrast-FEL to improve stability and performance (
- Tree Tools: Updated
Trim Label Treeto support semicolon-separated exclusion lists and verify tip existence (d7e0aa56).
👷 CI/CD & Build
- WASM: Updated the WebAssembly build workflow to simplify artifacts and deployment (
208cd6d3). - SVE: Removed specific support/checks for SVE instructions (
d7e0aa56).
Commits Included
d7e0aa56- This and that (Simplex, NEON, BUSTED 4.7)3e92f6d3- 2.5.92 (Analysis tweaks, core fixes)208cd6d3- Workflow update (WASM)
2.5.92
2.5.91
Title
Version 2.5.91: BUSTED-PH Fixes and WASM CI Updates
Description
This release addresses an error in BUSTED-PH related to multi-hit (MH) models and improves effort reporting in CFEL. It also updates the Continuous Integration (CI) workflow for WebAssembly (WASM) builds to deploy artifacts directly to GitHub Pages.
Key Changes
🐛 Bug Fixes & Improvements
- BUSTED-PH: Fixed a multi-hit (MH) error (
cbdf8078). - CFEL: Improved reporting of computational effort (
cbdf8078).
👷 CI/CD
- WASM Workflow: Updated the WASM build workflow to deploy artifacts to GitHub Pages (
e173fa53).
Commits Included
cbdf8078- Fixing BUSTED-PH MH error; improving effort reporting in CFELe173fa53- CI: Update WASM workflow to deploy artifacts to GitHub Pages
2.5.90
Title
Version 2.5.90: Optimization improvements
Key Changes
⚙️ Core Engine & Optimization
- Boundary Variable Logic: Implemented changes in
likefunc.cppto "tinker" with boundary variables, likely refining how the optimization engine handles parameters near their limits (4ad0080c). Added logic to hanlde "core" changing variables to focus iteration on those parameters driving improvements.
Removing SVE logic
- Remove SVE code in
matrix_kernels. This was an AI-generated function which resulted in failing compilation on ARM architecture.
🧪 Testing
- Test Suite Calibration: Updated optimization baselines for
IntermediateProtein.bf,multi-part-codon.bf, andBUSTED.wbfto align with the changes in boundary variable handling (4ad0080c).
📦 Release Management
- Version Bump: Incremented version to 2.5.90 (
6a84a08d,29487037).
Commits Included
2948703- 2.5.906a84a08- 2.5.904ad0080- Tinkering with boundary variables
2.5.89
Description
The primary focus has been on refining the likelihood function optimization routines, specifically regarding gradient calculations and block processing. Additionally, this update addresses specific issues in the RELAX selection analysis.
Key Changes
🚀 Optimization & Core Engine
- Gradient Block Tweaks: Implemented multiple refinements to gradient block processing in
likefunc.cppto improve convergence stability and speed (98fff774,4f609813,10f06472). - Likelihood Function Refinements: General optimization improvements and tweaks within the core likelihood function logic (
839b418a,97072548). - Batch Language Helpers: Minor fixes in
batchlanhelpers.cppandglobal_things.cpp(42cf735b).
🧬 Analysis Methods
- RELAX: Addressed specific issues in
RELAX.bf, including updates toglobal_things.cppandlikefunc.cppto support these fixes (bab6fa8e).
🧪 Testing
- Test Suite Updates: Updated unit tests and standard analyses (BUSTED, mtDNA-code, multi-part-codon) to align with core changes and ensure stability (
bab6fa8e,97072548,4f609813,42cf735b).
Commits Included
bab6fa8- RELAX fixes and tweaks98fff77- Gradient block tweaks839b418- Tweaks4f60981- Optimization improvements9707254- Tweaks10f0647- Optimization tweaks42cf735- minor fixes
2.5.88
Version 2.5.88: SIMD Refactoring, Matrix Kernel Additions, and Optimization
Description
This version introduces a series of optimizations, refactoring, and bug fixes. Key changes include improvements to SIMD operations, the addition of missing matrix kernels, and updates to core formula evaluation logic.
Key Changes
🚀 Optimizations & Refactoring
- SIMD Enhancements: Implemented SIMD refactoring and AI-guided improvements to enhance performance (
e4a1c6f9). - Core Optimizations: General changes and optimizations in
associative_list.cppandglobal_things.cpp(1dec4eef,36322dc8). - Formula Evaluation: Significant updates to
formula.cppandformula.h, optimizing formula processing and evaluation (9dea386c).
🐛 Fixes & Maintenance
- Matrix Kernels: Added a missing matrix kernel to address computation gaps (
fedeee2e,574d80bb,0eff2de8). - Debug Cleanup: Removed extraneous MPI debug prints to clean up output logs (
fedeee2e,574d80bb,0eff2de8). - Reformatting: Code reformatting for better style consistency (
f03e65d0).
🧬 Template Batch Files
- Workflow Updates: Modifications to
CleanStopCodons.bfandSelectionAnalyses/RELAX.bf(9dea386c).
📦 Release
- Version Bump: Bumped version to 2.5.88 (
28f83598).
2.5.86
New Features & Enhancements:
Ancestral Sequence Reconstruction in RELAX: The RELAX analysis script now includes ancestral sequence reconstruction, providing deeper insights into selection pressures by mapping
substitutions on the phylogeny.
Enhanced Tree Manipulation:
The trees.ParentMap function now correctly identifies the root of the tree.
It's now possible to remove multiple nodes from a tree in a single operation, improving efficiency for large tree manipulations.
New Genetic Code Function: A new function, genetic_code.ComputeStringToInteger, has been added to map codon strings to their corresponding integer representations.
Bug Fixes & Stability:
FMA3 Build Fix: A compilation bug affecting systems with FMA3 support has been resolved, ensuring wider compatibility.
Improved Path Handling: HyPhy now more gracefully handles long directory paths, preventing crashes when the current working directory path exceeds the buffer size.
RELAX Analysis Updates: The RELAX script has received several patches to improve the reliability and clarity of its JSON output and progress messages.