Skip to content

Add deterministic kinetic seed extension mode - #254

Open
Alexander-Mitrofanov wants to merge 1 commit into
masterfrom
feat/kinetic-seed-extension
Open

Alexander-Mitrofanov wants to merge 1 commit into
masterfrom
feat/kinetic-seed-extension

Conversation

@Alexander-Mitrofanov

Copy link
Copy Markdown
Collaborator

Adds PredictorSeedExtensionKinetic, available exclusively as --model=X --mode=K. Each seed follows a deterministic greedy path: compare complete energy changes at both ends, accept only strictly downhill moves, and retain the actual visited structures for energy-ranked output and traceback.

--kineticScore=A|B|C selects thermodynamic (default), Manhattan-normalized or asymmetry-normalized ranking. Ties prefer left, smaller total gap, then smaller first-strand gap. Under --outNoLP, a loop-closing pair and its following stack are evaluated and committed together. The predictor respects GU restrictions, separate RNA loop/span limits, regions, output filtering and overlap settings, and validates explicit seed structures. It retains shorter valid prefixes for non-overlapping output and prevents rejected explicit seeds from returning as seed annotations.

The scientific scope and detailed implementation decisions are recorded in the design and implementation plan. This is a zippering-inspired energy heuristic, without calibrated transition rates, a time axis or a global-optimum guarantee. Equilibrium partition/probability requests are rejected rather than inferred from selected paths; ordinary energy trackers remain supported.

Loop-only energetic pruning is deliberately omitted: a Turner2004 loop costing +0.50 kcal/mol followed by a −3.30 kcal/mol stack gives a favorable complete move that the proposed bare-loop bound would reject. Terminal and both weighted dangling contributions also belong to the exact change. Feasible moves are evaluated exhaustively with the active energy model; no ED monotonicity or default Turner parameters are assumed. No performance improvement over existing predictors is claimed.

Validation:

  • GCC 14.4 release and debug builds, ViennaRNA 2.7.2, Boost 1.85, Kokkos mdspan backend.
  • Full make tests passed in both builds: 74,114 assertions in 59 API cases, and 5/5 test-suite entries (API plus all CLI scripts).
  • Independent absolute-endpoint/whole-chain oracle; exact Turner loop/stack rescue; strict stopping; A/B/C and tie order; macro denominators; asymmetric bounds and nonmonotone ED; full dangle-aware energy; transient GU recovery; invalid seeds; retained paths, annotations and non-overlapping prefixes; repeated calls and zero/boundary-only output.
  • CLI energy/coordinate expectations and independent reevaluation of predicted structures through --rri, including model/score/output validation.
  • Installation, standalone compilation of the installed new public header, and a compiled/linked/running installed-library consumer (with the documented Easylogging initialization and library).
  • git diff --check passed. Existing regression reference outputs were unchanged.

README, CLI help, distribution registration and ChangeLog are included. The full-path cache has memory proportional to the sum of retained path lengths; the design documents this tradeoff.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant