Python fitter package for multiple computational back-ends
APACHE-2.0 License
Bot releases are hidden (Show)
Published by redeboer over 2 years ago
See all documentation for this version here.
phasespace
(#447)Published by redeboer almost 3 years ago
See all documentation for this version here.
CSVSummary
was writing "estimator_type"
incorrectly (it was writing the optimizer type). This PR fixes that and adds the optimizer type as an additional entry, also to YAMLSummary
.
See cse
argument in sympy.lambdify()
. This fixes https://github.com/ComPWA/tensorwaves/pull/345#commitcomment-61398587.
Note that lambdified source code becomes significantly smaller in larger expressions. Finding common sub-expressions has a small hit in performance when lambdifying, but in larger expressions, this is overcome by the fact that the output source code is smaller.
Extracted all SymPy functionality under tensorwaves.model
into a separate sub-module tensorwaves.model.sympy
.
Closes #280
This means that doit()
has to be called on the expression first.
CSVSummary
was writing "estimator_type"
incorrectly (it was writing the optimizer type). This PR fixes that and adds the optimizer type as an additional entry, also to YAMLSummary
.
JAX and TensorFlow printing is forwarded to the NumPy printer, but with jax.numpy
and tensorflow.experimental.numpy
as Printer._module
respectively.
Other improvements:
find_function
and wrote a test for lambdifying AmpForm's ComplexSqrt
tensorflow.Tensor
with find_function
_backend
module to function
, because function
is most related to back-ends.Closes #322
The role of _backend_lambdify
and _sympy_lambdify
is now swapped:
_backend_lambdify
is now purely a wrapper around sympy.lambdify
._sympy_lambdify
offers a switch between _backend_lambdify
and optimized_lambdify
.These functions will change further in #292, but this is PR focuses only on the problem describe din #322.
All tests that require AmpForm have been seperated from proper unit tests (that require no additional dependencies). The folder structure under tests
is now:
tests
├── integration
└── unit
Additional improvements:
qrules.ReactionInfo
is parametrized with the canonica-helicity and helicity formalism.SympyModel
is constructed with and without max_complexity
argument in the constructor, so that optimized_lambdify
is tested as well.LambdifiedFunction.update_parameters
: over-defined parameters were computed incorrectly. In addition, the error message now prints the expected parameters.pathlib.Path
(previously only str
). This makes it possible to convert the output_dir
fixture into a Path
as well.#344 created a module tensorwaves.model.backend
with the intention to collect functions that handle back-ends. This PR moves _find_function_in_backend
(which was under tensorwaves.estimator
) there as well, moves the module to the top, and hides it altogether, as these functions are implementation details.
Additional fixes:
%%time
statement in the cell makes the error code of that cell return 'success'. The error has been fixed and a hidden test cell has been added to prevent such failures in the future.optimized_lambdify
now directly calls _backend_lambdify
is max_complexity
is higher than the number of nodes in the expression.Integration tests have become unstable since #349, see e.g. https://github.com/ComPWA/tensorwaves/actions/runs/1504632721, because the callback output is written to the same file when using optimized_lambdify
/ _backend_lambdify
.
Closes #135
Adds a test under the tests/unit
folder that fits a small model with all back-ends and optimizers plus a unit test for generate_data
. This also helped fishing out some bugs (see commit history).
Other improvements:
tensorwaves.optimizer
module, e.g.:
from tensorwaves.optimizer import Minuit2
instead of
from tensorwaves.optimizer.minuit import Minuit2
Loadable
callbacks.Import expensive modules inline to speed up importing tensorwaves
. This makes import tensorwaves
(and collecting tests) about 8x as fast. Profiling done with tuna as follows (see stackoverflow):
python3 -X importtime -c "import tensorwaves" 2> tw.log && tuna tw.log
Previously, if no callback was specified in the optimizer constructor, an empty CallbackList would be created and on_optimize_end etc were always called. This is (theoretically) slower.
Some other improvements:
attrs
next-generation API (see also https://github.com/ComPWA/compwa-org/issues/90).Added links to the 'fit result' objects in the iminuit
and SciPy APIs.
Fix-up to #349
Writing with a callback in a pytest fixture and then loading it back in a test led to instable CI. This PR should fix that.
Switch from pytest-notebook
to nbmake
. Now it's again possible to run specific notebooks from the terminal with e.g.:
pytest --nbmake docs/usage/basics.ipynb
Other small fixes:
fast_lambdify()
in Jupyter notebooks to speed up docs workflow.tuple
in ParametrizedBackendFunction
.Reorganise GitHub Action workflow for pytest. Extracted from #366 in order to identify potential performance issues. Notebooks slow after the changes introduced in #366, which may be caused by the changes to the callbacks.
Other changes;
nb
.Should speed up pre-commit job.
Import expensive modules in the tests inline so that pytest --collect-only
is faster.
Published by spflueger about 4 years ago
See all documentation for this version here.
RelativisticBreitWigner
. This change is triggered by the expertsystem 0.2.0 update, which does not specify decay dynamics anymore. One exception is the top node in a decay, which is still set exported as NonDynamic
by the expertsystem.Published by redeboer over 4 years ago