FEAT: implement cached.unfold
for amplitude models
#458
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implemented a convenience function,
cached.unfold()
, which does two things:model.intensity
and itsmodel.amplitudes
in one go.model.intensity
) and its definitions (likemodel.amplitudes
) efficiently by first callingdoit
on the top expression, then callingdoit
on all the expressions in the definitions, and finally combining them withxreplace
. This is more efficient than usingxreplace
and thendoit
on the whole result. The function also uses caching internally.Note that$\vec\alpha$ .
cached.unfold
takes either a single amplitude model or a top expression and a list of definitions. This is motivated by ComPWA/polarimetry, where instead of usingmodel.intensity
as the top expression, you use the polarimeter field definitionSee also this test
ampform/tests/sympy/test_cached.py
Lines 44 to 47 in 8bb9c07