Change log


Major changes to OrthoHMM are summarized here.

0.5.0 Sets Leiden CPM at resolution 0.1 as the default clustering path after head-to-head benchmarking across OrthoBench, QfO 2020, and Three Kingdoms. The default fixed setting is best for the highest-priority OrthoBench and QfO benchmarks. --cpm_resolution auto remains available for distant cross-kingdom inputs, where it improves Three Kingdoms substantially (F=0.907 vs 0.0003 for fixed 0.1). --clustering mcl remains available as an optional conservative fallback, but mcl is no longer required for the default pipeline.

0.4.2 --cpm_resolution auto now anchors γ on the smallest positive edge weight (excluding numerical-zero artifacts). The earlier formula (γ = 4 × strict-min) collapsed to γ ≈ 0 on the QfO 40M-edge graph and caused Leiden to segfault.

0.4.1 Refines --cpm_resolution auto to use γ = 4 × min(edge_weight), beating the v0.4.0 10th-percentile heuristic on both OrthoBench (F=65.9 vs 58.8) and Three Kingdoms (F=0.907 vs 0.821).

0.4.0 New --cpm_resolution auto flag. Auto-tunes γ to the post-RBNH edge-weight distribution so OrthoHMM no longer collapses to all-singletons on distantly-related inputs.

0.3.0 Replaced the external MCL binary with in-process Leiden CPM clustering via igraph + leidenalg. Both libraries are pip-installed wheels, so OrthoHMM no longer requires any external executable when run with defaults. Leiden CPM (resolution=0.1) beats MCL on the OrthoBench 2020 reference: F=65.7% vs MCL’s best F=62.4% (inflation=1.5) on the identical RBNH edge set. New flags: --clustering {leiden, mcl} and --cpm_resolution. Selecting --clustering mcl reverts to the prior MCL pipeline and re-introduces the external mcl requirement.

0.2.0 Added a built-in profile HMM + k-mer prefilter search engine that replaces the phmmer subprocess. The new engine is the default and substantially reduces wall time and memory on multi-proteome datasets (see the bacterial scaling table on the home page). HMMER is now optional — only required when opting into --search_mode phmmer. Also adds the WAG and LG substitution matrices, drops Python 3.9 support (now requires Python 3.10+), and adds optional C/AVX2 + CUDA kernels that are compiled at install time when a suitable toolchain is available; otherwise the runtime falls back to a Numba implementation transparently.

0.1.1 There is no longer a limit on the length of gene names for single-copy orthologous genes.

0.1.0 Modified how to handle phmmer multiprocessing, giving the user a parallelized experience. Specifically, if a user sets CPUs to 8, 8 runs of phmmer will run at the same time.