Skip unused distributions in entropy-weighting bisection - #14
Skip unused distributions in entropy-weighting bisection#14kevinmoran1988 wants to merge 1 commit into
Conversation
eweight_target_f() and eweight_target_exp_f() call p7_ParameterEstimation(), which reparameterizes match/insert/delete transitions and both emission distributions. Only hmm->mat is read, by p7_MeanMatchRelativeEntropy(); the other four are discarded on every root-finder iteration (~10-15 per model). Add p7_ParameterEstimation_MatchOnly() and call it from both callbacks. Cuts esl_mixdchlet_MPParameters() calls in the bisection from ~5M to ~M per iteration. bathbuild over 5232 dipteraODB12 alignments, serial: 859.6s -> 778.3s (1.10x). Output byte-identical on that corpus and across the build/weighting/prior option matrix.
|
Thanks for the PRs. I've reviewed both, and the changes seem reasonable. One request before merging: this PR's branch (stable) holds two commits, 7593192 (the entropy-weighting change described here) and 9742af0, a copy of the bathalign/--nofs commit that is also PR #15. As filed, merging this PR would pull in both changes. Could you rebase stable down to just 7593192 so the two PRs are independent? Additionally, a comment: this commit contains essentially no context (who you are, why you're making the change, whether an LLM was involved), and comes from an account that isn't connected in an obvious way to a human and that has very little activity. It's nice that you're making useful changes, but I think recipients of those changes will be a lot happier if they know who you are and what role you played in creating the code. |
9742af0 to
7593192
Compare
|
Apologies, I should have led with this rather than dropping patches from a cold account. I'm Kevin Moran. I'm developing a phylogenomics pipeline that recovers orthologous gene sets for downstream phylogenetics from either high-throughput sequencing reads or genome assemblies. The account is quiet because most of my work lives in that one repo. It's private because it's unpublished work. I can provide access if desired. Why I'm here. The pipeline depends on both BATH and HMMER. BATH does translated search and replaced a per-frame What I can and can't cache. References are sampled per taxon, so search HMMs can't be cached across taxa to begin with, and the alignment HMMs are a second, separate rebuild on top of that. Folding alignment into BATH would let me build once per gene and use the same model for both across a first-pass run. Two places would still have to build on the spot:
Models built at those two points are alignment-only and never consulted for frameshift statistics. Thus why I added the Where the time goes. The build/align split inverts depending on the dataset shape.
Disclosure on how these were written
|
eweight_target_f() and eweight_target_exp_f() call p7_ParameterEstimation(), which reparameterizes match/insert/delete transitions and both emission distributions.
Only hmm->mat is read, by p7_MeanMatchRelativeEntropy(); the other four are discarded on every root-finder iteration (~10-15 per model).
Add p7_ParameterEstimation_MatchOnly() and call it from both callbacks. Cuts esl_mixdchlet_MPParameters() calls in the bisection from ~5M to ~M per iteration.
bathbuild over 5232 dipteraODB12 alignments, serial: 859.6s -> 778.3s (1.10x). Output byte-identical on that corpus
and across the build/weighting/prior option matrix.