Skip to content

FEAT: find transitions at quantum-number level - #381

Open
grayson-helmholz wants to merge 1 commit into
facts-driven-solvingfrom
qn-transitions
Open

grayson-helmholz wants to merge 1 commit into
facts-driven-solvingfrom
qn-transitions

Conversation

@grayson-helmholz

@grayson-helmholz grayson-helmholz commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

✨ New features

  • find_qn_transitions() solves a QNProblemSetCollection purely at the quantum-number level. It runs the CSPSolver without completing the intermediate states from a particle database, so each intermediate state carries exactly the quantum numbers that the problem set declares as domains. Its result is a tuple of QNTransitions, the new alias for a FrozenTransition of quantum-number property maps.
  • collect_qn_transitions() is the counterpart of collect_reaction_info() for that workflow: it merges the initial facts into each solution and deduplicates the transitions, without consulting a particle database or constructing State objects.
  • strip_spin_projections() removes the spin projections of the initial and final state, the spin-projection domains of the intermediate edges, and the $L$ and $S$ projection domains of the interaction nodes from a collection of problem sets. Problem sets that become identical, such as the expansion over all spin-projection combinations, are deduplicated. Together with find_qn_transitions() this yields $J^{P(C)}$-level transitions, as needed for a Dalitz-plot decomposition.
  • strip_quantum_numbers() in qrules.solving is the general form of that operation for a single QNProblemSet. Conservation rules are deliberately kept: a rule that can no longer execute is skipped and reported through the solver's not-executed-rules mechanism, rather than silently disappearing.

⚙️ Enhancements

  • qrules.io.asdict() serializes sets as sorted lists and maps callable dictionary keys to their name, recursing into nested mappings. This is what makes a QNProblemSet serializable at all, since its settings are keyed by conservation rule.

Squash commit messages

* ENH: serialize rule mappings and sets in qrules.io
* FEAT: add strip_quantum_numbers function
* FEAT: add strip_spin_projections function

@redeboer
redeboer added this pull request to stack #386 September 15, 2026 14:29
@redeboer redeboer changed the title FEAT: generate quantum-number-only transitions without spin projections FEAT: find transitions at quantum-number level Sep 15, 2026
@redeboer redeboer added ✨ Feature New feature added to the package ⚙️ Enhancement Improvements and optimizations of existing features labels Sep 15, 2026
@redeboer
redeboer self-requested a review September 15, 2026 14:41
@redeboer redeboer added this to the 0.11.0 milestone Sep 15, 2026

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

⚙️ Enhancement Improvements and optimizations of existing features ✨ Feature New feature added to the package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Solve and collect transitions at the quantum-number level

2 participants