Releases: ComPWA/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)
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
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
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
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
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
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, andpip 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
See all documentation for this version here.
🔨 Internal maintenance
- The
expertsystem
has been replaced byampform
andqrules
- The
master
branch has been renamed tomain
.
TensorWaves 0.2.2
See all documentation for this version here.
💡 New features
⚠️ 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
🖱️ Developer Experience
Added cspell, pyright, and ComPWA/meta pre-commit hooks (#256)
- No need to install Pyright and cSpell anymore (through
npm
), because they are now executed as apre-commit
hook. See ComPWA/mirrors-cspell and ComPWA/mirrors-pyright. - Replaced scripts under
.pre-commit-hooks
with hooks from the ComPWA/meta repository. Now thetox -e sty
job works again.
TensorWaves 0.2.1
See all documentation for this version here.
💡 New features
- Added
ScipyMinimizer
adapter as an interface toscipy.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: theCSVSummary
callback usescsv.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
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