Skip to content

Releases: ComPWA/tensorwaves

TensorWaves 0.3.0

24 Jun 14:29
673d1f3
Compare
Choose a tag to compare

See all documentation for this version here.

💡 New features

Implemented FitResult.count_number_of_parameters (#291 and #297)

Closes #290

Added a method FitResult.count_number_of_parameters()

Constructor arguments of FitResult are now validated (#291)
Mapping of parameters values/errors in FitResult are now 'pretty printed' (#291)
FitResult(
minimum_valid=True,
execution_time=2.9841978549957275,
function_calls=166,
estimator_value=-7579.247627538372,
parameter_values={
'm_f(0)(980)': 0.989885368944097,
'Gamma_f(0)(980)': 0.060228379644260165,
},
parameter_errors={
'm_f(0)(980)': 0.0010628340144144574,
'Gamma_f(0)(980)': 0.0016523232241513362,
},
)

⚠️ Interface

Module interfaces has been renamed to interface (#293)
Removed ReactionInfo from data interface (#294)

Removes AmpForm/QRules's ReactionInfo from the main interface. This makes generate_phsp and generate_data a bit more clumsy in usage, but the benefit is that ampform is not imported into TensorWaves's interface module.

Remove physics module (#299)

Use HelicityModel.sum_components instead.

TensorWaves now requires AmpForm v0.10.x (#296)

🔨 Internal maintenance

Switched to type alias ParameterValue where possible (#291)

Using type alias ParameterValue where possible instead of Union[...].

📝 Documentation

AIC and BIC example provided in documentation (#291)
Documentation now shows how to generate a deterministic sample (#295)

Show how to generate a deterministic data and phase space sample in step 2 of the documentation.

TensorWaves 0.2.8

10 Jun 18:30
ad6d775
Compare
Choose a tag to compare

See all documentation for this version here.

💡 New features

A time estimate is now provided when generating data (#286)

Fixes the tqdm progress bar so that it gives a time estimate when calling generate_phsp and generate_data.

🐛 Bug fixes

Analytic continuation can now be activated safely when using JAX as backend (#284)

Implementation of TR-001. Requires ComPWA/ampform#75 and AmpForm v0.9.2 (upcoming).

🖱️ Developer Experience

Milestone are automatically closed when a matching release is published (#282)
A new notebook show how to activate analytic continuation (#285)

TensorWaves 0.2.7

01 Jun 20:09
44fc055
Compare
Choose a tag to compare

See all documentation for this version here.

💡 New features

Larger SymPy expressions that take a long time to lambdify can now be lambdified faster (order of 10-100x) with split_expression(), optimized_lambdify(), and the max_complexity argument.
https://tensorwaves.rtfd.io/en/0.2.7/usage/faster-lambdify.html

TensorWaves 0.2.6

28 May 15:23
743b05b
Compare
Choose a tag to compare

See all documentation for this version here.

💡 New features

Constructing an Estimator from a Function (#272)

If the amplitude model is complicated, it can take over an hour to lambdify it to a Model. So it's annoying to have to do that twice if you use the same backend for data generation and fitting. This PR allows reusing a LambdifiedFunction for fitting.

Data can now be generated with JAX as well (#271)

Simple fix: just casts ScalarSequence back into a numpy array so that a lambdified Function can handle it.

Python 3.9 and TensorFlow 2.5 are now supported (#275)

Many thanks to @mayou36 for releasing phasespace v1.3!

TensorWaves 0.2.5

10 May 12:23
66e24e0
Compare
Choose a tag to compare

Added support for analytic continuation. See all documentation for this version here.

💡 New features

Upgrade to AmpForm v0.9.x (#270)

Adds support for analytic continuation in particular.

🐛 Bug fixes

Lambdify to numpy, not numpy.__dict__ (f0cbcaa)

Lambdifying to with modules=numpy.__dict__ does not work with conditionals (sympy.Piecewise). If using numpy.dict, Piecewise is lambdified to if-else (which doesn't worky with numpy arrays), while it should convert to numpy.select.

🖱️ Developer Experience

Run notebooks with pytest (982aa21)
Simplified usage examples to speed up CI (0737f49)

TensorWaves 0.2.4

02 May 20:49
f6feb1d
Compare
Choose a tag to compare

See all documentation for this version here.
(Maintenance release: mainly improves mobile version of the website.)

⚠️ Interface

Optional dependency section "extras" has been renamed to "all" (6ff7ecc)

🔨 Internal maintenance

Switch to first (non pre-)release of qrules and ampform (#265)

In addition, extract pytest configuration to pytest.ini and define testpaths there. Since b9b72ed, it is become impossible to run tests through VSCode. Defining testpaths fixes this. In addition, it removes the last 'non-tox' section from the tox.ini file (see 7eb3866)

🖱️ Developer Experience

Move dependency definitions back back to setup.cfg (#264)

With the release of pip-tools v6.1.0, pip-compile now correctly handles extras_require. This allows for a big clean-up of the set-up introduced by ComPWA/expertsystem#412.

Advantages:

  • Easier for the user and developer! Just run: pip install -e .[dev] to get started developing, pip install -e .[dev] -U to try out upgrades, and pip install -c .constraints/py3.8.txt -e .[dev] -U in case you exactly want to reproduce the dependencies for some commit.
  • The upgrade jobs become significantly faster: bit over 1min versus almost 3min
  • All requirements, their version domains, and the dependencies between each of the requirement sections can be nicely overseen and maintained within setup.cfg
  • Git diffs for pull requests that affect dependencies become easier to oversee
  • Less complexity and fewer changes per commit
Add PR template + GitPod extensions (#266)
Annotations in API are abbreviated if they are links (#267)

Makes it easier to understand function signatures.

Doctests are now verified through pytest (b9b72ed)
Updated installation instructions (8f94021)

Added references to requirement pinning

Added more flake8 plugins and fixed identified issues (feefdfb)

Also cleans up the .pylintrc config file

Split all config files for dev tools (7eb3866)

Better to only keep tox job definitions in the tox.ini file. Note that config files are only extracted if their respective tools supports a config file name that starts with a dot

TensorWaves 0.2.3

07 Apr 15:50
bff8a03
Compare
Choose a tag to compare

See all documentation for this version here.

🔨 Internal maintenance

TensorWaves 0.2.2

01 Apr 11:48
f76663e
Compare
Choose a tag to compare

See all documentation for this version here.

💡 New features

Added the option to cache constant sub-expressions in SympyModels (#247 and #260)

Closes #100

⚠️ Interface

Optimize result is returned as a FitResult class (#254)

Wrapped the optimize dict output in a FitResult class. It's a rather simple attr data container that wraps what was previously in a dict form. Optimizer-specific info has been put under a specifics attribute.

🐛 Bug fixes

YAMLSummary callback correctly handles complex values (#252)
YAMLSummary now also dumps the final fit result at on_optimize_end, not only for each optimize step (#252)
Complex parameter values are now correctly loaded from CSV (#253)

The csv.DictReader crashes when there are complex values (and using QUOTE_NONNUMERIC). This was not spotted, because the tests only work with float parameters. Now one additional (complex) parameter is set free and the bug has been fixed. To speed up the tests, the UnbinnedNLL fixture uses Jax now.

🔨 Internal maintenance

Upgraded to expertsystem v0.7.1-2, which renders StateTransitionGraphs more nicely (#259)

📝 Documentation

Added install cells in Jupyter notebooks for Google Colab (#250 and #251)

See ComPWA/expertsystem#535

🖱️ Developer Experience

Added cspell, pyright, and ComPWA/meta pre-commit hooks (#256)

TensorWaves 0.2.1

24 Mar 18:14
9c38c96
Compare
Choose a tag to compare

See all documentation for this version here.

💡 New features

  • Added ScipyMinimizer adapter as an interface to scipy.optimize.minimize (#231, #235, and #241)
  • Added more initialize stage and end stages to the Callback interface (#234)
  • New façade functions in the physics module help extracting intensity components from the amplitude model (#244)
  • Added support for lambdifying to tensorflow (#245)
    (The resulting function is not efficient yet. This may have to wait until TF v2.5 is out or other improvements to the lambdifying are implemented, like #100.)

⚠️ Interface

  • New abstracts for the Callback interface: .on_optimize_start() and .on_optimize_end() (#234)
  • There's a new top module: physics (#244)

🔨 Internal maintenance

📝 Documentation

  • New example notebook: generate data and optimize for an arbitrary model (#232)
  • Added a SciPy example fit to usage notebook (#235)
  • Improved the optimize process plots (#242)
  • Figures are now rendered as SVG (#243)

🖱️ Developer Experience

  • Added collapsible_headings for Jupyter Lab (#233)
  • Packages listed under extras_require are now also pinned through the developer dependencies (#240)

Contributors since 0.2.0

@redeboer and @spflueger

TensorWaves 0.2.0

15 Mar 17:05
f9c955e
Compare
Choose a tag to compare

See all documentation for this version here.

⚠️ Interface

Several breaking changes!
All physics (amplitude, dynamics, and kinematics modules) has been moved to the expertsystem, where the amplitude model is now formulated in terms of SymPy (see v0.7.0). TensorWaves is now more abstract: the core has become a template Model class that can be 'lambdified' into a Function with different computational backends. The esimator and data modules are still there, but changed slightly because of the intermediate Model layer.

Since the responsibilities of tensorwaves have changed quite a bit and much code has been removed, the module structure has been changed drastically as well. The example workflow notebooks therefore changed as well.

The new workflow is described here.

Contributors since 0.1.5

@redeboer and @spflueger