This release brings some major changes to the way new physics Wilson coefficients are specified, including some backwards-incompatible ones and changes in dependencies. Please read on as you might have to update your code.
New Wilson coefficient exchange format interface
The [Wilson coefficient exchange format (WCxf)](https://wcxf.github.io/) is an initiative to define a data exchange format for new physics Wilson coefficients (see also [the paper](https://arxiv.org/abs/1712.05298)). It allows interfacing codes using different bases and even different EFTs, like the Standard Model EFT (SMEFT) vs. the weak effective theory (WET) used by flavio. The new [WCxf Python package](https://github.com/wcxf/wcxf-python) takes care of the basis translation and matching. The initial values of a `flavio.WilsonCoefficient()` instance can now be set, alternatively to the existing `set_initial` method, by passing in a `wcxf.WC()` instance to the new `set_initial_wcxf` method.
Thanks to Jason Aebischer jasonaebischerGIT, Jacky Kumar jackypheno, and Xuanyou Pan pxylisa for contributions to this.
New feature: semi-leptonic decays with wrong-flavour neutrinos
In semi-leptonic charged-current decays like B→Dlν, in the SM the neutrino always has the same flavour as the charged lepton. Beyond the SM, there can be additional contributions with "wrong-flavour" neutrinos that do not interfere with the SM contribution but have the same experimental signature. Based on an implementation by Michael A. Schmidt micha-a-schmidt, such contributions have now been consistently added in all semi-leptonic and leptonic B, D, and K decays. For the naming of the Wilson coefficients, see the next section.
Backwards-incompatible changes in Wilson coefficients
Introducing the WCxf interface and the new effects in semi-leptonic decays requried some changes in names or definitions of Wilson coefficients:
- New physics in four-quark operators (like QCD and electroweak penguins) so far has only been used in semi-leptonic FCNC decays, but the implementation was not complete. Support for four-quark operators has now been **deprecated**, i.e. a warning will be issued when you use it and you should not expect it to be consistent. The feature will be reimplemented in a more complete way in a future version.
- For the dipole operators, so far the "effective" coefficients like `C7eff_bs` had been used. These have now been removed in favour of the "plain" coefficients like `C7_bs`. Note that with no new physics in four-quark operators, this is actually equivalent for the new physics contribution, but you must use the new notation or an error will be raised.
- The semi-leptonic charged-current operators have been renamed and rescaled to be more consistent with the litature:
- `CV_` becomes `CVL_`
- `CVp_` becomes `CVR_`
- `CS_` becomes `CSR_` and the factor of m<sub>b</sub> in the definition of the operator has been removed (so the new Wilson coefficient is dimensionless)
- `CSp_` becomes `CSL_` and the factor of m<sub>b</sub> in the definition of the operator has been removed (so the new Wilson coefficient is dimensionless)
- The "right-flavour" semi-leptonic charged-current operators have been renamed to be distinguished from the new "wrong-flavour" ones:
- `_bcenu` becomes `_bcenue`,
- `_bcmunu` becomes `_bcmunumu`, etc.
- new: `_bcenumu`, `_bcenutau`, `_bcmunue`, etc.
The complete list of allowed Wilson coefficients can now also be found as [PDF on the WCxf web site](https://wcxf.github.io/assets/pdf/WET.flavio.pdf).
Additional dependencies
Most of the functions pertaining to CKM matrix parametrizations have been moved to the separate [ckmutil](https://github.com/DavidMStraub/ckmutil/) package. This, in addition to the `wcxf` package, is now an installation dependency. If you upgrade flavio using `pip3 install --upgrade flavio`, those two packages will be installed automatically. If you are instead using a local development install, you might have to install them manually using `pip3 install wcxf cmutil`.
End of support for Python 3.4
As announced in the [previous release](https://github.com/flav-io/flavio/releases/tag/v0.24), this release does not support Python 3.4 anymore. Please read the previous announcement for upgrade options if you still use this old Python version.
Other changes
A regression introduced in v0.24 that broke the likelihood profiler in some cases was fixed.