Recent Releases of tensorwaves

tensorwaves - TensorWaves 0.4.13

See all documentation for this version here.

✨ New features

  • implement git_friendly flag for YAMLSummary callback (#540)

⚠️ API changes

  • change to Apache license (#529)
  • define dev dependencies as dependency groups (#535)

πŸ”¨ Maintenance

  • update pip constraints and pre-commit (#526)
  • update pip constraints and pre-commit (#528)
  • test package on Python 3.12 (#506)
  • update pip constraints and pre-commit (#530)
  • autoupdate constraints and pre-commit config (#532)
  • drop Python 3.8 support due to EOL (#534)
  • define developer environment with uv (#533)
  • define dev dependencies as dependency groups (#535)
  • update lock files (#536)
  • update lock files (#537)
  • update lock files (#538)
  • update lock files (#539)

πŸ–±οΈ Developer Experience

  • define developer environment with uv (#533)
  • define dev dependencies as dependency groups (#535)
  • update lock files (#539)

The full changelog as commits can be found here.

- Python
Published by release-drafter[bot] about 1 year ago

tensorwaves - TensorWaves 0.4.12

See all documentation for this version here.

⚠️ API changes

  • Drop Python 3.7 support (#503)

πŸ› Bug fixes

  • Set correct generic parameter types for ParametrizedFunction and its implementations (#522)
  • Avoid jax import error for JAX >=0.4.19 (#504)

πŸ“ Documentation

  • Update link to pycompwa website (#513)
  • Update links to compwa.github.io (#514)
  • Remove .html from page URLs (#515)
  • Switch to source code link button (#516)
  • Fix typo in amplitude-analysis.ipynb (#520)
  • Support AmpForm v0.15.x (#519)

πŸ–±οΈ Developer Experience

  • Remove figure_formats = ["svg"] statement (#507)
  • Install Ruff and Git in Jupyter Lab (#508)
  • Define docnblive job in tox.ini (#510)
  • Switch to Ruff formatter (#518)

The full changelog as commits can be found here.

- Python
Published by github-actions[bot] almost 2 years ago

tensorwaves - TensorWaves 0.4.11

See all documentation for this version here.

⚠️ Enhancements and optimizations

  • Set data keys as first positional arguments (#488)

πŸ› Bug fixes

  • Improve documentation sidebar (#483)
  • Remove simplification step Abs of mass (#482)

πŸ“ Documentation

  • Improve documentation sidebar (#483)
  • Remove simplification step Abs of mass (#482)
  • Improve amplitude analysis tutorial (#489)
  • Add CITATION.cff (#494)
  • Show kinematic variable expressions (#497)
  • Switch to latest version of Sphinx Book Theme (dark mode)

πŸ”¨ Maintenance

  • Verify installation on Python 3.11 (#484)

πŸ–±οΈ Developer Experience

  • Colorize sphinx-build output (#481)
  • Enable language navigation on Jupyter Lab (#495)
  • Switch to Ruff as linter (#492)

The full changelog as commits can be found here.

- Python
Published by release-drafter[bot] over 2 years ago

tensorwaves - TensorWaves 0.4.10

See all documentation for this version here.

✨ New features

  • Added migrad_args option to Minuit2 optimizer (#476)
  • TensorWaves can now be installed on Python 3.11 and higher (#478)

πŸ–±οΈ Developer Experience

  • Implement GitHub Actions caching (#471)
  • GitHub workflows are now outsourced to ComPWA/actions (#477)

The full changelog as commits can be found here.

- Python
Published by github-actions[bot] about 3 years ago

tensorwaves - TensorWaves 0.4.9

See all documentation for this version here.

✨ New features

πŸ› Bug fixes

  • Allow generating empty phase space samples (#465)
  • Remove cast to numpy in UnbinnedNLL (#466)

πŸ–±οΈ Developer Experience

  • Activate and address pyright strict type checking (#467)
  • Switch to new VSCode Python extensions (#469)

- Python
Published by release-drafter[bot] over 3 years ago

tensorwaves - TensorWaves 0.4.8

See all documentation for this version here.

✨ New features

  • Support Python 3.10 (#459)
  • Support TensorFlow >v2.6 (#459)

- Python
Published by release-drafter[bot] over 3 years ago

tensorwaves - TensorWaves 0.4.7

See all documentation for this version here.

πŸ’‘ New features

  • Implemented a logging hierarchy so that logs can be enabled and disabled per module (#453)
  • UnbinnedNLL can now handle a phase space DataSample that carries a "weights" key (#458). This makes it possible to perform fits with importance-sampled phase space samples (#402).

⚠️ Interface

  • Merged WeightedDataGenerator into DataGenerator interface (#458)

πŸ”¨ Internal maintenance

πŸ“ Documentation

  • Updated Zenodo author list (#454)

- Python
Published by release-drafter[bot] over 3 years ago

tensorwaves - TensorWaves 0.2.9

See all documentation for this version here.

πŸ”¨ Internal maintenance

  • TensorWaves v0.2.9 can be installed with TensorFlow v2.6 and higher versions of phasespace (#447)

- Python
Published by redeboer over 3 years ago

tensorwaves - TensorWaves 0.4.6

See all documentation for this version here.

⚠️ Interface

  • Dropped Python 3.6 support (#431)
  • Version limit on phasespace has been removed (#445). If TensorWaves is installed with phasespace, TensorFlow is limited to below v2.7.

πŸ–±οΈ Developer Experience

  • Documentation is now built with sphinx-build only and cannot be built with make anymore (#433)
  • Documentation in EXECUTE_NB mode is now faster on second run due to MyST-NB caching (#433)

- Python
Published by release-drafter[bot] over 3 years ago

tensorwaves - TensorWaves 0.4.5

See all documentation for this version here.

πŸ› Bug fixes

  • Expressions that contain sympy.Indexed can now be lambdified (#427)

πŸ”¨ Internal maintenance

  • TensorWaves can now be installed with any version of AmpForm above v0.13.0 (#426)

πŸ“ Documentation

  • Extended API docstrings in the function module (#428)

πŸ–±οΈ Developer Experience

  • All dependencies are now also pinned on Read the Docs (#429)

- Python
Published by release-drafter[bot] almost 4 years ago

tensorwaves - TensorWaves 0.4.4

See all documentation for this version here.

πŸ› Bug fixes

  • Default weights in ChiSquared are now computed from observed_values (#421)

πŸ”¨ Internal maintenance

πŸ“ Documentation

- Python
Published by release-drafter[bot] almost 4 years ago

tensorwaves - TensorWaves 0.4.3

See all documentation for this version here.

πŸ”¨ Internal maintenance

  • TensorWaves can now be installed with AmpForm v0.13.x (#419)

- Python
Published by release-drafter[bot] almost 4 years ago

tensorwaves - TensorWaves 0.4.2

See all documentation for this version here.

πŸ’‘ New features

  • Added minuit_modifier constructor argument (#399)

πŸ› Bug fixes

  • Speed-up prepare_caching() with sympy.Basic.xreplace (#403)

πŸ”¨ Internal maintenance

Added support for AmpForm v0.12.3 (#406) AmpForm [v0.12.3](https://github.com/ComPWA/ampform/releases/tag/0.12.3) introduces a small change through https://github.com/ComPWA/ampform/pull/211: `BoostZ` etc becomes `BoostZMatrix`. This needs to be fixed in the TensorFlow printer.
Added support for AmpForm v0.12.4 (#417) Added TensorFlow printer instructions for `_BoostZMatrixImplementation` etc. See release notes [AmpForm v0.12.4](https://github.com/ComPWA/ampform/releases/tag/0.12.4).
Switched to new import attrs API (#414) See [`import attrs`](https://hynek.me/articles/import-attrs/#the-last-step-import-attrs) and [`attrs` TNG](https://www.attrs.org/en/21.4.0/names.html#attrs-tng).

πŸ“ Documentation

Added notebook button for Deepnote (#400) Closes https://github.com/ComPWA/repo-maintenance/issues/43 [![image](https://user-images.githubusercontent.com/29308176/149676020-8281cbb4-8cae-4e1a-a171-b451809ea993.png)](https://tensorwaves--400.org.readthedocs.build/en/400/usage.html)
Usage notebooks now show how to get a Hesse from FitResult.specifics (#401) Also fixes a small bug: callbacks that write to disk skip writing when computing the Hesse. Preview [here](https://tensorwaves--401.org.readthedocs.build/en/401/usage/basics.html#minuit2).
Improved docstrings of prepare_caching() and create_cached_function() (#403) Improved the docstrings of both functions, preview [here](https://tensorwaves--403.org.readthedocs.build/en/403/api/tensorwaves.estimator.html#tensorwaves.estimator.create_cached_function).
Code examples now automatically to APIs as if it's an IDE (#405) - All code examples are now clickable with links to corresponding reference documentation (also external links APIs) with [`sphinx-codeautolink`](https://sphinx-codeautolink.readthedocs.io). Closes https://github.com/ComPWA/compwa-org/issues/106 [![image](https://user-images.githubusercontent.com/29308176/151720171-5627f6dc-fef7-4471-88c8-366e61680988.png)](https://tensorwaves--405.org.readthedocs.build/en/405/usage.html#generate-and-transform-data) - Installed [`jupyterlab-myst`](https://github.com/executablebooks/jupyterlab-myst) - Updated to the first non-beta black release [22.1.0](https://github.com/psf/black/releases/tag/22.1.0). Most important style effect: [no space around power operator `**`](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#line-breaks-binary-operators).
Second level in left sidebar is unfolded by default (#407) Links to `graphviz`'s API are now also embedded correctly. Follow-up to #405.
Added Hypothesis and utterances overlay (#409) Closes https://github.com/ComPWA/compwa-org/issues/109 Preview [here](https://tensorwaves--409.org.readthedocs.build/en/409).
Explained how to pin dependencies with Conda (#411) Rewrote the installation page a bit so that it's clearer how to pin all dependencies with Conda. Preview [here](https://tensorwaves--411.org.readthedocs.build/en/411/install.html).
Illustrated how to use create_cached_function() in PWA notebook (#412) Added an example of how to use [`create_cached_function()`](https://tensorwaves--412.org.readthedocs.build/en/412/api/tensorwaves.estimator.html#tensorwaves.estimator.create_cached_function) in combination with an [`Estimator`](https://tensorwaves--412.org.readthedocs.build/en/412/api/tensorwaves.estimator.html#tensorwaves.estimator.Estimator). Preview [here](https://tensorwaves--412.org.readthedocs.build/en/412/amplitude-analysis.html#simplified-procedure-create-cached-function).
Added instructions how to install from Git repository with optional dependencies (#413) Added an additional install example that shows how to install a specific branch or tag with `pip` from Git _with optional dependencies_. Preview [here](https://tensorwaves--413.org.readthedocs.build/en/413/install.html#quick-installation).

πŸ–±οΈ Developer Experience

Change upgrade cron job to bi-weekly (#398 and #408) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action
Add notebook button for Deepnote (#400) Closes https://github.com/ComPWA/repo-maintenance/issues/43 [![image](https://user-images.githubusercontent.com/29308176/149676020-8281cbb4-8cae-4e1a-a171-b451809ea993.png)](https://tensorwaves--400.org.readthedocs.build/en/400/usage.html)
Type aliases in API are now abbreviated (#404) See https://github.com/ComPWA/ampform/pull/207 Compare API [v0.4.1](https://tensorwaves.rtfd.io/en/0.4.1/api/tensorwaves.interface.html) and [preview of this PR](https://tensorwaves--404.org.readthedocs.build/en/404/api/tensorwaves.interface.html).
Installed jupyterlab-myst (#405) See [`jupyterlab-myst`](https://github.com/executablebooks/jupyterlab-myst)
Tests can now be run with specific versions of dependencies (#410 and #416) Adds a [`workflow_dispatch` with inputs](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputs) that allows running all tests manually with the latest version of AmpForm installed. [![image](https://user-images.githubusercontent.com/29308176/152698999-b9df746d-8931-4398-bede-8c07ea80c11b.png)](https://github.com/ComPWA/tensorwaves/actions/workflows/ci-tests.yml) [![image](https://user-images.githubusercontent.com/29308176/155362608-11bc9605-2e57-4e04-9cd5-f85ed93bd58b.png)](https://github.com/ComPWA/tensorwaves/actions/workflows/ci-tests.yml)

- Python
Published by release-drafter[bot] almost 4 years ago

tensorwaves - TensorWaves 0.4.1

See all documentation for this version here.

πŸ’‘ New features

Implemented create_cached_function() (#397) Closes #358 Expression tree optimizations sketched [here](https://tensorwaves.readthedocs.io/en/0.4.0/amplitude-analysis.html#prepare-parametrized-function) have been bundled in a new function [`create_cached_function()`](https://tensorwaves--397.org.readthedocs.build/en/397/api/tensorwaves.estimator.html#tensorwaves.estimator.create_cached_function). A usage notebook can be previewed [here](https://tensorwaves--397.org.readthedocs.build/en/397/usage/caching.html).

⚠️ Interface

TensorFlow has become an optional dependency (#394) All computational backends are now optional dependencies (apart from NumPy). So for instance, to install TensorWaves with JAX, run: ```shell pip install tensorwaves[jax] ``` To do amplitude analysis, install with: ```shell pip install tensorwaves[jax,pwa] ```

πŸ› Bug fixes

Progress bar of domain generator is hidden in IntensityDistributionGenerator (#396) Closes #395 ```python import ampform import qrules from ampform.dynamics.builder import create_relativistic_breit_wigner_with_ff from tensorwaves.data import ( IntensityDistributionGenerator, TFPhaseSpaceGenerator, TFUniformRealNumberGenerator, ) from tensorwaves.data.transform import SympyDataTransformer from tensorwaves.function.sympy import create_parametrized_function reaction = qrules.generate_transitions( initial_state="J/psi(1S)", final_state=["gamma", "pi0", "pi0"], allowed_intermediate_particles=["f(0)"], allowed_interaction_types=["strong", "EM"], ) builder = ampform.get_builder(reaction) resonances = reaction.get_intermediate_particles() for p in resonances: builder.set_dynamics(p.name, create_relativistic_breit_wigner_with_ff) model = builder.formulate() intensity = create_parametrized_function( model.expression.doit(), parameters=model.parameter_defaults, backend="jax", ) helicity_transformer = SympyDataTransformer.from_sympy( model.kinematic_variables, backend="jax" ) phsp_generator = TFPhaseSpaceGenerator( initial_state_mass=reaction.initial_state[-1].mass, final_state_masses={i: p.mass for i, p in reaction.final_state.items()}, ) data_generator = IntensityDistributionGenerator( function=intensity, domain_generator=phsp_generator, domain_transformer=helicity_transformer, ) rng = TFUniformRealNumberGenerator(seed=0) phsp_momenta = phsp_generator.generate(1_000_000, rng) data_momenta = data_generator.generate(100_000, rng) ``` ![image](https://user-images.githubusercontent.com/29308176/148271814-2c0c19c6-949f-4d58-b2b0-3fd2d7b84337.png)

πŸ–±οΈ Developer Experience

Increased test coverage (#393) - Wrote some additional tests for the `tensorwaves.function` module - [`TYPE_CHECKING`](https://docs.python.org/3/library/typing.html#typing.TYPE_CHECKING) is now [ignored](https://coverage.readthedocs.io/en/latest/excluding.html#excluding-code-from-coverage-py) in test coverage

- Python
Published by release-drafter[bot] about 4 years ago

tensorwaves - TensorWaves 0.4.0

See all documentation for this specific version here.

TensorWaves v0.4 has a more general interface than v0.3. Major changes are the removal of the Model interface (#357) and generalization of the data module (#392). This affects the way in which computational backend functions are created and the way in which hit-and-miss distributions are generated.

Some examples of syntax changes for an AmpForm HelicityModel (model):

v0.4.x (new)

```python

create function and data transformer

from tensorwaves.function.sympy import createparametrizedfunction

intensity = createparametrizedfunction( expression=model.expression.doit(), parameters=model.parameterdefaults, backend="jax", ) helicitytransformer = SympyDataTransformer.fromsympy( model.kinematicvariables, backend="numpy" )

generate data

from tensorwaves.data import ( IntensityDistributionGenerator, SympyDataTransformer, TFPhaseSpaceGenerator, TFUniformRealNumberGenerator, )

phspgenerator = TFPhaseSpaceGenerator( initialstatemass=3.069, finalstatemasses={0: 0.0, 1: 0.135, 2: 0.135}, ) datagenerator = IntensityDistributionGenerator( domaingenerator=phspgenerator, function=intensity, domaintransformer=helicitytransformer, ) rng = TFUniformRealNumberGenerator(seed=0) phsp = phspgenerator.generate(100000, rng) data = datagenerator.generate(10000, rng) ```

Note that this works for general SymPy expressions: there is no AmpForm dependency. See this page.

v0.3.x (old)

```python from tensorwaves.model import LambdifiedFunction, SympyModel

create function and data transformer

sympymodel = SympyModel( expression=model.expression.doit(), parameters=model.parameterdefaults, ) intensity = LambdifiedFunction(sympymodel, backend="jax") helicitytransformer = HelicityTransformer(model.adapter)

generate data

from tensorwaves.data import TFUniformRealNumberGenerator, generatedata, generatephsp from tensorwaves.data.transform import HelicityTransformer

rng = TFUniformRealNumberGenerator(seed=0) phsp = generatephsp( size=100000, initialstatemass=3.069, finalstatemasses={0: 0.0, 1: 0.135, 2: 0.135}, randomgenerator=rng, ) data = generatedata( size=10000, initialstatemass=3.069, finalstatemasses={0: 0.0, 1: 0.135, 2: 0.135}, datatransformer=helicitytransformer, intensity=intensity, randomgenerator=rng, ) ```

πŸ’‘ New features

Implemented chi-squared estimator (#387) Also includes improvements to the documentation of `estimator` module.
Implemented get_source_code function (#378) Closes #323 - Added a convenience function `tensorwaves.function.get_source_code()` - Added read-only properties `function` and `argument_order` to `ParametrizedBackendFunction` (parallels `attrs`-decorated `PositionalArgumentFunction` class). - `PositionalArgumentFunction` is now used internally in `ParametrizedBackendFunction` (simplifies its `__call__()` method). - Symbols are not force-dummified anymore if `use_cse=False`
SciPy now works with TF (#360)
Import optimizers directly from the tensorwaves.optimizer module (#360) It's now possible to do ```python from tensorwaves.optimizer import Minuit2 ``` instead of ```python from tensorwaves.optimizer.minuit import Minuit2 ```

⚠️ Interface

Adapted implementation to AmpForm v0.12.x (#345) Adapts the `data` module implementation so that it can work with [AmpForm v0.12.x](https://github.com/ComPWA/ampform/releases/tag/0.12.0). Closes https://github.com/ComPWA/ampform/issues/182. Some major changes: - Keys in a `DataSample` are now `str` only, not `int`. This means that momentum samples have keys `"p0"`, `"p1"`, etc. instead of `0`, `1`. This is in accordance with the `Symbol` names used in AmpForm's `HelicityModel.kinematic_variables`. - Added a function `create_function()` that creates a `PositionalArgumentFunction`. This is a `Function` without parameters (compare `ParametrizedFunction`). The function and related class is used in the `DataTransformer` implementation, which doesn't need parameters. - Data conversion can now be done with different back-ends.
Removed Model interface (#357) This PR removes the `Model` interface and related implementations. The interface was introduced with the idea to implement different types of expression trees later on (see [ADR-001](https://compwa-org.readthedocs.io/en/stable/adr/001.html)), but this seems to be a premature optimisation. For now, the `Function` interface suffices: `Function` instances can be created through specific functions. Some major changes: - The `Model` interface and its implementation `SympyModel` have been removed - `tensorwaves.model` has been renamed to `tensorwaves.function` - There is no way to use `performance_optimize()` (for nowβ€”see #358) This means that the workflow becomes: ```python # helicity_model: ampform.helicity.HelicityModel function = create_parametrized_function( expression=helicity_model.expression.doit(), parameters=helicity_model.parameter_defaults, backend="numpy", ) ``` instead of ```python model = SympyModel( expression=helicity_model.expression.doit(), parameters=helicity_model.parameter_defaults, max_complexity=max_complexity, ) function = LambdifiedFunction(model, backend="numpy") ```
Created ParametrizedFunction interface (#353) The existing [`Function`](https://tensorwaves.readthedocs.io/en/0.3.7/api/tensorwaves.interface.html#tensorwaves.interface.Function) interface has too many responsibilities: it (1) converts a `DataSample` to an array or tensor and (2) distinguishes parameter variables from domain variables. This worked fine so far, because `Function` was only used when optimizing, where you need to tweak those parameters. In #345 though, we need to a `Function` that only does (1), for the conversion of one `DataSample` (four-momenta) to another `DataSample` (kinematic variables) with different back-ends. This PR creates a new [`ParametrizedFunction`](https://tensorwaves.readthedocs.io/en/latest/api/tensorwaves.interface.html#tensorwaves.interface.ParametrizeFunction) interface that does (1) and (2) and a 'bare' [`Function`](https://tensorwaves.readthedocs.io/en/latest/api/tensorwaves.interface.html#tensorwaves.interface.Function) interface that does only (1). The input and output types of the `Function` interface are generic, so that it can be used in different types of function-like interfaces. Related changes: - Renamed `LambdifiedFunction` to `ParametrizedBackendFunction`. - `DataTransformer.transform()` has become a `__call__` and `DataTransformer` derives from `Function`. - `Estimator` also derives from `Function`: it computes an estimator value for a set of parameters.
Generalized data generation interface (#392) Large refactoring of the `data` module with the aim to generalize its hit-and-miss mechanisms to general domain `DataSample` types. #### Interface changes - **Removed `generate_data()` and `generate_phsp()` faΓ§ade functions.** The new way to generate phase space and hit-and-miss data samples is: ```python from tensorwaves.data import IntensityDistributionGenerator from tensorwaves.data.phasespace import TFPhaseSpaceGenerator from tensorwaves.data.rng import TFUniformRealNumberGenerator # intensity: Function # helicity_transformer: SympyDataTransformer rng = TFUniformRealNumberGenerator(seed=0) phsp_generator = TFPhaseSpaceGenerator( initial_state_mass=3.0969, final_state_masses={0: 0.0, 1: 0.135, 2: 0.135}, ) data_generator = IntensityDistributionGenerator( domain_generator=phsp_generator, domain_transformer=helicity_transformer, function=intensity, ) phsp = phsp_generator.generate(100_000, rng) data = data_generator.generate(10_000, rng) ``` - `UniformRealNumberGenerator` -> `RealNumberGenerator` - `PhaseSpaceGenerator` -> `DataGenerator` - `PhaseSpaceGenerator.setup()` has been merged into the constructor (`DataGenerator.__init__()`) and removed from the interface. - Split old `TFPhaseSpaceGenerator` into an _unweighted_ `TFPhaseSpaceGenerator` (implements `DataGenerator`) and a `TFWeightedPhaseSpaceGenerator` (implements `WeightedDataGenerator`). `TFPhaseSpaceGenerator` can be used instead of the old `generate_phsp()` function. - Collected RNGs under a new sub-module `data.rng` #### New features - New interface: `DataGenerator`, which does not generate weights as opposed to `FourMomentumGenerator`. - `IntensityDistributionGenerator`, which should be used instead of `generate_data()` - `IdentityTransformer`, which is just the identity implementation of a `DataTransformer`. - `NumpyUniformRNG`
Simplified public backend signatures (#362) Only accepts a single `str` now.

πŸ› Bug fixes

Latest function call number is now also stored in Loadable callbacks (#360)
CSVSummary writes estimator value as float (#360)
use_cse argument is now correctly forwarded (#375) Fix-up to #374 Additional fixes: * Enforce specifying `use_cse` argument in hidden functions. * Remove `**kwargs` from lambdify functions. This helps mypy/pyright identify whether functions calls miss certain arguments.

πŸ”¨ Internal maintenance

Set minimal versions for sympy and pyyaml dependencies (#383) `sympy.lambdify()` doesn't work when SymPy is too old.

πŸ“ Documentation

Added GPU installation tips (#381) Preview here: https://tensorwaves--381.org.readthedocs.build/en/381/install.html [![image](https://user-images.githubusercontent.com/29308176/145199806-c583ab2d-cddb-4aca-aadf-c0ca1631c746.png)](https://tensorwaves--381.org.readthedocs.build/en/381/install.html) Additional improvements: - Check link anchors with [`linkcheck_anchors = True`](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-linkcheck_anchors). - Removed `typing-extensions` from requirements.
Illustrated binned and unbinned fit (#388) Follow-up to #387. Generalizes the documentation with more non-PWA examples.
Merged and isolated amplitude analysis notebooks (#389) All example notebooks for amplitude analysis have been isolated under [tensorwaves.rtfd.io/en/latest/amplitude-analysis](https://tensorwaves.rtfd.io/en/latest/amplitude-analysis). Examples under **usage** show more general expressions. Note that resource-intensive examples like the Scipy fit on an amplitude model and the fit anination have been substituted with simpler examples, which should speed up CI on the docs. Closes #379
Added tips for expression tree optimization (#390) The amplitude analysis notebook now shows how to optimize the expression tree with SymPy, so that the fit is much faster. This also allows showing a more complicated fit, with more free parameters and larger initial offset.

πŸ–±οΈ Developer Experience

Added fast optimize test (#360) 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](https://github.com/ComPWA/tensorwaves/pull/360/commits)).
Implemented benchmark monitoring (#368) Closes #103 Large improvements to the testing suite: - Added benchmark tests - If run on the main branch, the results are pushed to the [](https://github.com/ComPWA/tensorwaves/tree/benchmark-results) branch with the [continuous-benchmark](https://github.com/marketplace/actions/continuous-benchmark) action. - The performance results per commit are visualised on [compwa.github.io/tensorwaves](https://compwa.github.io/tensorwaves). - If run on pull request, a warning will be commented on any commit that decreases performance. Example: https://github.com/ComPWA/tensorwaves/commit/b5c1f075eff9f9b9c82e52faf22acbb81865fdc6#commitcomment-61330128 - Integration tests have been removed so that there are only unit tests (coverage of the unit tests is sufficient since #351). - Test folder structure has been simplified: `tests/unit` moved one folder up.

- Python
Published by release-drafter[bot] about 4 years ago

tensorwaves - TensorWaves 0.3.7

See all documentation for this version here.

πŸ’‘ New features

Optimizer and Estimator type are now written to callback output (#364) `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`.
Lambdify with common sub-expressions (#374) See `cse` argument in [`sympy.lambdify()`](https://docs.sympy.org/latest/modules/utilities/lambdify.html#sympy.utilities.lambdify.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.

⚠️ Interface

Sympy implementation is now isolated in a sub-module (#344) Extracted all SymPy functionality under `tensorwaves.model` into a separate sub-module `tensorwaves.model.sympy`.
Removed doit call from SympyModel (#347) Closes #280 This means that `doit()` has to be called on the expression first.

πŸ› Bug fixes

Correct estimator value is now written to callback output (#364) `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`.
ComplexSqrt can now lambdified to TensorFlow as well (#365) JAX and TensorFlow printing is forwarded to the NumPy printer, but with `jax.numpy` and `tensorflow.experimental.numpy` as `Printer._module` respectively. Other improvements: - Extended tests for `find_function` and wrote a test for lambdifying AmpForm's `ComplexSqrt` - Allow getting `tensorflow.Tensor` with `find_function` - Moved `_backend` module to `function`, because `function` is most related to back-ends.

πŸ”¨ Internal maintenance

Swapped optimized_lambdify() implementation (#348) 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.
Unit tests and integration tests are now split (#349) All tests that require AmpForm have been seperated from proper unit tests (that require no additional dependencies). The folder structure under `tests` is now: ```text tests β”œβ”€β”€ integration └── unit ``` Additional improvements: - Fixtures for the AmpForm tests have been parametrized: - `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. - Improved error message of `LambdifiedFunction.update_parameters`: over-defined parameters were computed incorrectly. In addition, the error message now prints the expected parameters. - Callbacks can now take `pathlib.Path` (previously only `str`). This makes it possible to convert the `output_dir` fixture into a `Path` as well.
Backend handling is now isolated in a sub-module (#350) #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.
Add unit tests for optimized_lambdify (#351) Additional fixes: - The faster-lambdify notebook was failing due to the interface change introduced by #348. This was not noticed, because the `%%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.
Callback output is written to separate files in the tests (#352) 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`.
Added unit tests for fast optimize (#360) 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](https://github.com/ComPWA/tensorwaves/pull/360/commits)). Other improvements: - Import optimizers directly from the `tensorwaves.optimizer` module, e.g.: ```python from tensorwaves.optimizer import Minuit2 ``` instead of ```python from tensorwaves.optimizer.minuit import Minuit2 ``` - CSVSummary writes estimator value as float (was complex by mistake) - Latest function call number is also stored in `Loadable` callbacks. - Scipy now works with TF
Importing tensorwaves is now about 8x as fast (#363) Import expensive modules inline to speed up importing `tensorwaves`. This makes `import tensorwaves` (and collecting tests) about 8x as fast. Profiling done with [tuna](https://github.com/nschloe/tuna) as follows (see [stackoverflow](https://stackoverflow.com/a/51300944)): ```shell python3 -X importtime -c "import tensorwaves" 2> tw.log && tuna tw.log ```
Callbacks are now not run during optimize() if unspecified (#366) 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: - Use [`attrs` next-generation API](https://www.attrs.org/en/stable/api.html#next-gen) (see also https://github.com/ComPWA/compwa-org/issues/90). - Avoid creating stream on creation of Loadable callback. - Fail pytest on warnings (this helped fishing out the above bug)
Generalized SymPy printer implementation (#371)

πŸ“ Documentation

Added API links to FitResult.specifics (#356) Added links to the 'fit result' objects in the `iminuit` and SciPy APIs.

πŸ–±οΈ Developer Experience

Pytest on GitHub Actions is now stable (#355) 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.
Notebooks can now be run with pytest (#359) Switch from [`pytest-notebook`](https://pypi.org/project/pytest-notebook) to [`nbmake`](https://pypi.org/project/nbmake). Now it's again possible to run specific notebooks from the terminal with e.g.: ```shell pytest --nbmake docs/usage/basics.ipynb ``` Other small fixes: - Avoid `fast_lambdify()` in Jupyter notebooks to speed up docs workflow. - Cast to `tuple` in `ParametrizedBackendFunction`.
Merge test jobs on GitHub Actions (#367) 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; - Treat warnings raised under pytest as errors. - Renamed tox job for testing notebooks to `nb`.
Reduced dependencies in style requirements (#369) Should speed up [pre-commit job](https://github.com/ComPWA/tensorwaves/actions/workflows/ci-style.yml).
Pytest collect is now faster (#370) Import expensive modules in the tests inline so that `pytest --collect-only` is faster.

- Python
Published by redeboer about 4 years ago

tensorwaves - TensorWaves 0.3.4

See all documentation for this version here.

πŸ”¨ Internal maintenance

Narrowed down type hints (#332) * Improved some of the type hints * Enforcing the use of [mypy error codes](https://mypy.readthedocs.io/en/stable/error_codes.html#silencing-errors-based-on-error-codes) (`# type: ignore[error-code]`) with [flake8-type-ignore](https://gitlab.com/jonafato/flake8-type-ignore).
TF2.7 is now supported (#338)

πŸ“ Documentation

Added back analytic continuation notebook (#312)
Added Zenodo DOI badge (#326) [![Zenodo DOI](https://zenodo.org/badge/doi/10.5281/zenodo.5526650.svg)](https://doi.org/10.5281/zenodo.5526650)
Added Conda install instructions and Conda badge (#333) [![Anaconda-Server Badge](https://anaconda.org/conda-forge/tensorwaves/badges/version.svg)](https://anaconda.org/conda-forge/tensorwaves)
Links to Binder and Colab now point to the branch that corresponds to the version of the documentation (#339) * docs: pin more intersphinx pages * fix: correct intersphinx links that were not previously checked * fix: exclude version 'module' from API * fix: move docstrings from __init__ to class definition * refactor: get intersphinx version through function * style: capitalize conf.py global vars that are no Sphinx options
Intersphinx pages now link to the pinned versions of dependency websites (#339)

πŸ–±οΈ Developer Experience

Embeded Zenodo metadata (#329)
Fixed comment syntax in .flake8 (#334) The `.flake8` config file was using not using the same comment style as described in https://flake8.pycqa.org/en/latest/user/configuration.html#project-configuration Consequence not all errors were identified anymore.
Removed redundant metadata from notebooks (#337 and #340)

- Python
Published by release-drafter[bot] over 4 years ago

tensorwaves - TensorWaves 0.3.3

See all documentation for this version here.

Release for first Zenodo DOI Zenodo DOI

πŸ’‘ New features

Upgraded to TensorFlow v2.6 (#320)

πŸ“ Documentation

Documentation pages are wider (#316) See ComPWA/ampform#104
Embeded GPLv3+ license file (#318) Some platforms like Zenodo and conda-forge require the license file to be packaged.
Extended package description in README (#319)
Added package description for PyPI (#324) Closes https://github.com/ComPWA/compwa-org/issues/61 Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

πŸ”¨ Internal maintenance

Removed mdit-py-plugins version limit (#313) See https://github.com/ComPWA/ampform/pull/147

πŸ–±οΈ Developer Experience

Switched to pre-commit.ci where possible (#321) See ComPWA/qrules#87 Note https://github.com/ComPWA/tensorwaves/pull/309#issuecomment-908152365. This comment is still relevant.

- Python
Published by release-drafter[bot] over 4 years ago

tensorwaves - TensorWaves 0.3.2

See all documentation for this version here.

πŸ› Bug fixes

Now using syntax for setting pip version constraints (#311) Fix-up to #310 https://github.com/ComPWA/tensorwaves/blob/57f6ec0f04e0afc0cebcc955783d20cde2646be6/setup.cfg#L44 resulted in version conflicts downstream. AmpForm is now also correctly updated: 626abe1.

- Python
Published by release-drafter[bot] over 4 years ago

tensorwaves - TensorWaves 0.3.1

See all documentation for this version here.

πŸ”¨ Internal maintenance

Allow installing AmpForm v0.11.x (#310) See AmpForm [v0.11.0](https://github.com/ComPWA/ampform/releases/tag/0.11.0) and [v0.11.1](https://github.com/ComPWA/ampform/releases/tag/0.11.1)

πŸ“ Documentation

Refer to compwa-org for contributing (#309) See https://github.com/ComPWA/PWA-pages/pull/111

- Python
Published by release-drafter[bot] over 4 years ago

tensorwaves - TensorWaves 0.3.0

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) ```python 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`](https://ampform.readthedocs.io/en/stable/api/ampform.helicity.html#ampform.helicity.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.

- Python
Published by release-drafter[bot] over 4 years ago

tensorwaves - TensorWaves 0.2.8

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](https://compwa-org.readthedocs.io/report/001.html). Requires https://github.com/ComPWA/ampform/pull/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)

- Python
Published by release-drafter[bot] over 4 years ago

tensorwaves - TensorWaves 0.2.7

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

- Python
Published by release-drafter[bot] over 4 years ago

tensorwaves - TensorWaves 0.2.6

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`](https://ampform.readthedocs.io/en/0.9.1/api/ampform.data.html#ampform.data.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](https://github.com/zfit/phasespace/releases/tag/1.3.0)!

- Python
Published by release-drafter[bot] almost 5 years ago

tensorwaves - TensorWaves 0.2.5

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)

- Python
Published by release-drafter[bot] almost 5 years ago

tensorwaves - TensorWaves 0.2.4

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](https://github.com/jazzband/pip-tools/releases/tag/6.1.0), `pip-compile` now correctly handles [`extras_require`](https://setuptools.readthedocs.io/en/latest/userguide/dependency_management.html#optional-dependencies). This allows for a big clean-up of the set-up introduced by https://github.com/ComPWA/expertsystem/pull/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](https://github.com/ComPWA/qrules/runs/2346236017?check_suite_focus=true) versus almost [3min](https://github.com/ComPWA/qrules/runs/2322145112?check_suite_focus=true) - 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

- Python
Published by release-drafter[bot] almost 5 years ago

tensorwaves - TensorWaves 0.2.3

See all documentation for this version here.

πŸ”¨ Internal maintenance

- Python
Published by release-drafter[bot] almost 5 years ago

tensorwaves - TensorWaves 0.2.2

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 https://github.com/ComPWA/expertsystem/pull/535

πŸ–±οΈ Developer Experience

Added cspell, pyright, and ComPWA/meta pre-commit hooks (#256) - No need to install [Pyright](https://github.com/microsoft/pyright) and [cSpell](https://github.com/streetsidesoftware/cspell/tree/master/packages/cspell) anymore (through `npm`), because they are now executed as a `pre-commit` hook. See [ComPWA/mirrors-cspell](https://github.com/ComPWA/mirrors-cspell) and [ComPWA/mirrors-pyright](https://github.com/ComPWA/mirrors-pyright). - Replaced scripts under `.pre-commit-hooks` with hooks from the [ComPWA/meta](https://github.com/ComPWA/meta) repository. Now the `tox -e sty` job works again.

- Python
Published by release-drafter[bot] almost 5 years ago

tensorwaves - TensorWaves 0.2.1

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

  • No dependency on pandas anymore: the CSVSummary callback uses csv.DictWriter instead (#239)
  • Upgraded to expertsystem v0.7.1 (#248)

πŸ“ 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

- Python
Published by release-drafter[bot] almost 5 years ago

tensorwaves - TensorWaves 0.2.0

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

- Python
Published by release-drafter[bot] almost 5 years ago

tensorwaves - TensorWaves 0.1.5

Release 0.1.5

See all documentation for this version here.

This is the final release before the switch to SymPy. See #222 and expertsystem v0.7.0a0.

πŸ› Bug fixes

  • Progress bar works better now in Jupyter notebook because of tqdm.autonotebook (#223)

πŸ”¨ Internal maintenance

πŸ“ Documentation

  • Visualization of modules with pydeps has been removed (#202)
  • Top of each sub-module API page has an import statement so that it is easier to see where the sub-module is located (#217)

πŸ–±οΈ Developer Experience

See also changes listed in expertsystem v0.6.10 - Certain GitHub Actions can now be started manually (#208) - CI runs on draft PR again (#210) - Preference is now given over intersphinx syntax links (#215) - Added infrastructure for generating custom stubs to the typing folder (#216) - pre-commit hooks are now automatically upgraded through GitHub Actions(#220) - Notebooks can now be run and rendered as HTML through tox -e doclive as well (#225)

Contributors since 0.1.4

@redeboer

- Python
Published by release-drafter[bot] almost 5 years ago

tensorwaves - TensorWaves 0.1.4

See all documentation for this version here.

πŸ’‘ New features

  • Upgraded from expertsystem 0.6.5 to expertsystem 0.6.8 (#199), see release notes 0.6.6, 0.6.7 and 0.6.8

⚠️ Interface

  • The Estimator now requires a phase-space sample for normalization and the constructor of the IntensityBuilder does not require one (#192)

πŸ› Bug fixes

  • Correctly import form factor in relativistic Breit-Wigner (#187)
  • Added mass*width factor to relativistic Breit-Wigner without form factor (#189)
  • Correctly throw invalid L error (#188)

πŸ–±οΈ Developer Experience

  • Issue templates have been improved (#190)
  • Added new issue label for interface changes (#193)
  • Added tests for the shape of a kinematics dataset (#194)
  • Removed the Python example workflow script (#197)

Contributors since 0.1.3

@redeboer and @spflueger

- Python
Published by release-drafter[bot] about 5 years ago

tensorwaves - TensorWaves 0.1.3

See all documentation for this version here.

πŸ’‘ New features

  • It's now possible to generate deterministic data samples. By default, generated samples are undeterministic (#168)
  • Fit results can be exported through Callbacks (see tensorwaves.optimizer.callbacks). This also allows the user to break off a fit and pick it up anytime from the dumped fit result. Callbacks also offer different ways of logging and monitoring the optimization process (#159)

πŸ”¨ Interface changes

  • Dynamics have to be configured through the expertsystem ― tensorwaves does not provide default dynamics anymore (#180)

πŸ“ Documentation

  • The develop/contribute page has been outsourced to the PWA pages (#175)

πŸ–±οΈ Internals

  • markdownlint is run as pre-commit hook, not only as a separate npm package (#178)
  • Angular distribution are now tested with a test structure similar to that of pycompwa (#182)
  • CUDA GPU devices has been disable on GitHub Actions (#183)
  • Developer requirements are pinned all the way to indirect dependencies and for each Python version. The corresponding requirements*.txt files are updated automatically for each PR and through a cron job (#185)

Contributors since 0.1.2

@redeboer, @sebastianJaeger and @spflueger

- Python
Published by release-drafter[bot] about 5 years ago

tensorwaves - TensorWaves 0.1.2

See all documentation for this version here.

πŸ› Bug fixes

  • Upgrade to expertsystem 0.6.3 to fix problems with canonical formalism (#150)
  • Upload wheel as well as source ditribution to PyPI (#149). This enables running tensorwaves on Google Colab again.

πŸ“ Documentation

  • Fix links to tensorwaves in documentation (#145). Was previously pointing to the expertsystem.
  • Upgrade to Sphinx Book Theme 0.39 (#145)

πŸ–±οΈ Internals

  • Limit to Python < 3.9 in Conda environment definition (#145)

Contributors since 0.1.1

@redeboer and @spflueger

- Python
Published by release-drafter[bot] over 5 years ago

tensorwaves - TensorWaves 0.1.1

See all documentation for this version here.

πŸ› Bug fixes

  • Prevent multiple entries of the same invariant mass (#123)
  • Switched to tf.random.Generator instead of tf.random.uniform (#141)

πŸ“ Documentation

  • Documentation is now built with MyST-NB and related packages (#132)
  • Example notebooks are hosted on Binder and Google Colaboratory (#132)
  • Added links to related projects in the sidebar (#136)
  • Added plots of the fit results (#142)

πŸ–±οΈ Internals

  • Upgrade to TF2.3 for Python 3.8 support (#128)
  • Upgraded to expertsystem 0.6.2 (#134)
  • Migrated from Travis to GitHub Actions (#124)
  • Release notes are drafted automatically from PR titles since last release (#129)
  • Remove conda-forge from channels (#133)

Contributors since 0.1.0-alpha0

@Leongrim and @redeboer

- Python
Published by release-drafter[bot] over 5 years ago

tensorwaves - TensorWaves 0.1.0-alpha0

See all documentation for this version here.

New features

Interface changes

  • Now the decay dynamics are by default 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.

- Python
Published by spflueger over 5 years ago

tensorwaves - Release candidate

  • Helicity formalism and canonical formalism with TensorFlow as backend
  • Up to fit procedure, no data or visualization model yet

- Python
Published by redeboer over 5 years ago