Version 1.0.21

We have just released version 1.0.21, which you can find here.

Contributions

There have been 293 commits since version 1.0.20, which can be inspected here.

Contributors of these commits are:

  • Dominik Suelmann
  • Matthew Kirk
  • Nico Gubernari
  • Danny van Dyk

Changelog

Changed

  • Rename the following signal PDFs (D. van Dyk)
    • B->gammalnu::d^2Gamma/dEgamma/dcos(theta_l) -> B_u->gammalnu::P(E_gamma,cos(theta_l))
    • B_u->enumumu::d^5Gamma -> B_u->enumumu::P(q2,k2,z_gamma,z_w,phi)
    • B_u->munuee::d^5Gamma -> B_u->munuee::P(q2,k2,z_gamma,z_w,phi)
    • B->pilnu::dGamma/dq2 -> B->pilnu::P(q2)
    • B->pilnu::d^2Gamma/dq2/dcos(theta_l) -> B->pilnu::P(q2,cos(theta_l))
    • B->Dlnu::dGamma/dq2 -> B->Dlnu::P(q2)
    • B->Dlnu::d^2Gamma/dq2/dcos(theta_l) -> B->Dlnu::P(q2,cos(theta_l))
    • B->D^*lnu::dBR -> B->D^*lnu::P(q2)
    • B->D^*lnu::d^4Gamma -> B->D^*lnu::P(q2,cos(theta_l),cos(theta_D),phi)
    • B_s->K^*lnu::dBR -> B_s->K^*lnu::P(q2)
    • B_s->K^*lnu::d^4Gamma -> B_s->K^*lnu::P(q2,cos(theta_l),cos(theta_K),phi)
    • B->pipimunu::d^3Gamma@QCDF -> B^+->pi^+pi^-lnu::PDF(q2,k2,cos(theta_pi))
    • B->Knunu::dGamma/dq2 -> B->Knunu::P(q2)
    • B->Kll::d^2Gamma@LargeRecoil -> B->Kll::P(q2,cos(theta_l))
    • B->K^*nunu::dGamma/dq2 -> B->K^*nunu::P(q2)
    • B->K^*ll::d^2Gamma@LargeRecoil -> B->K^*ll::P(q2,cos(theta_l))
  • Make pypmc an optional Python dependency and adjust the documentation (D. van Dyk)
  • Split the eos.data package into multiple modules, one per class (D. van Dyk)
  • Convert the eos.data classes (MarkovChain, Mode, ImportanceSamples, DynestyResults, NabuLikelihood, Prediction, SampleMask, PMCSampler, and MixtureDensity) to the new eos.Serializable/eos.Deserializable interface, and bump the on-disk format for eos.data.Mode (D. van Dyk)
  • Allow the characters |, (, ), and * in qnp::OptionValue (D. van Dyk)
  • Switch Options to use qnp::OptionValue in lieu of std::string for its option values; hard-coded option values are now expressed using the _ov user-defined literal (D. van Dyk)
  • Use qnp::OptionValue keys in the the factory method Model::make (D. van Dyk)
  • Use std::filesystem in lieu of boost::filesystem (D. van Dyk)
  • Use std::format in lieu of boost::format when templating parameters (D. van Dyk)
  • Change the interface for generating reports: report templates now access the recorded results through a single, lazily-loaded eos.reporting.AnalysisData object (iterating over the posteriors and, on demand, their importance samples, modes and goodness of fit, and predictions) together with a corner_figure helper, in lieu of the previous analyses, modes, len, and zip template variables (D. van Dyk)
  • Move AnalysisFileContext into its own module, eos.analysis_file_context (D. van Dyk)
  • Deserialize analysis files through a new eos.AnalysisFileDescription class, which maps the YAML structure to description objects and rejects unknown top-level keys (issue #1197) (D. van Dyk)
  • Replace the dedicated BToDPiLeptonNeutrino implementation of the B->D^*lnu 1D PDFs with the general BToVectorLeptonNeutrino class; the observables are renamed from B->Dpilnu::P(...) to B->D^*lnu::P(...) and the Belle:2017A constraints are updated accordingly (D. van Dyk)
  • Return bin-averaged densities for the angular B->D^*lnu::P(cos(theta_D)...), ...P(cos(theta_l)...), and ...P(phi...) observables, consistent with the other 1D PDFs, and rescale the Belle:2017A angular distributions by their bin widths (D. van Dyk)
  • Bump the CodeQL Action to v4 in the compiler-warning SARIF upload workflow (D. van Dyk)
  • Ignore the files generated by running the examples in examples/ (D. van Dyk)
  • Adapt eos/maths, eos/meson-mixing, and eos/statistics to clang-format-based coding style (D. van Dyk)
  • Let legend keys reflect what variety of color+opacity are actually plotted in eos.figure items (D. van Dyk)

Added

  • Add G2026 form factor parameterisation (N. Gubernari)
  • Add B(s) -> K(*) constraints from BGMT:2025A (N. Gubernari)
  • Add BSZ:2025A constraints in the Traditional Basis (N. Gubernari)
  • Add B->pi f0 and f+ constraints from FLAG:2024A (N. Gubernari)
  • Add Lambda_c->pll observables (D. Suelmann)
  • Add the following signal PDFs (D. van Dyk)
    • B_s->Klnu::P(q2)
    • B_s->Klnu::P(q2,cos(theta_l))
    • B_s->D_slnu::P(q2)
    • B_s->D_slnu::P(q2,cos(theta_l))
    • B->etalnu::P(q2)
    • B->etalnu::P(q2,cos(theta_l))
    • B->eta'lnu::P(q2)
    • B->eta'lnu::P(q2,cos(theta_l))
    • B_s->D_s^*lnu::P(q2)
    • B_s->D_s^*lnu::P(q2,cos(theta_l),cos(theta_D_s),phi)
    • B^+->pi^+pi^-lnu::PDF(q2,k2,cos(theta_pi))
  • Add the eos.Serializable base class and the eos.Deserializable.from_yaml_file() helper, with a type check in eos.Deserializable.from_yaml (D. van Dyk)
  • Expand the unit test coverage of the Python interface (D. van Dyk)
  • Add a workflow to determine code coverage with test cases (D. van Dyk)
  • Add comparison operators for qnp::OptionValue (D. van Dyk)
  • Add an output stream operator for qnp::OptionValue (D. van Dyk)
  • Document the user-facing classes and methods of the eos Python modules, and auto-generate the analysis file format reference from the eos.analysis_file_description classes (D. van Dyk)
  • Complete the reference documentation of the eos Python bindings: fix several incorrect docstrings, name all arguments and add docstrings across the documented C++-bound classes, and document the previously undocumented Model, LogLikelihoodBlock, Constraint, ConstraintEntry, ObservableEntry, Reference, References, and SignalPDFEntry classes; the list of documented classes now lives in eos._api, shared by the API reference template and by a new unit test that guards argument naming and docstring coverage against regressions (D. van Dyk)
  • Add a top-level Physics section to the documentation, split off from the reference, covering the physics conventions, the definitions and parametrisations of the hadronic matrix elements of local operators (decay constants and semileptonic form factors, including the 1/2^+ -> 1/2^+ baryon form factors), and the observables predicted for semileptonic decays to a pseudoscalar meson, to a vector meson, and to a 1/2^+ baryon (D. van Dyk)
  • Add a vertical plot item that draws a vertical line at a fixed position on the x axis, e.g. to mark a kinematic threshold (D. van Dyk)
  • Add an optional size field to grid figures to set the figure size explicitly (D. van Dyk)
  • Add an optional watermark_plot field to grid figures to stamp the watermark on a single panel, addressed either by a flattened index or by a (row, col) pair (D. van Dyk)
  • Allow an explicit anchor (xy) and a configurable offset for the figure watermark (D. van Dyk)
  • Add tight_layout and shared_axes options to grid figures (D. van Dyk)
  • Provide a sensible default legend() entry for most figure item types (D. van Dyk)
  • Make the tick label format configurable via a format field on the xticks and yticks of a plot (D. van Dyk)
  • Add the unbinned log-likelihood block LogLikelihoodBlock::Unbinned1D (Python: eos.LogLikelihoodBlock.Unbinned1D), which convolves a signal PDF with a resolution function on a grid via a discrete Fourier transform (D. van Dyk)
  • Add classes for discrete Fourier transforms, eos::dft::Container and eos::dft::Plan (D. van Dyk)
  • Add SignalPDF::evaluate_linear() to evaluate a signal PDF on the linear scale (D. van Dyk)
  • Allow registering a custom SignalPDF at run time via SignalPDFs::insert (Python: eos.SignalPDFs.insert) (D. van Dyk)
  • Add an expression plot item that draws an arbitrary mathematical expression of the x-axis variable (D. van Dyk)
  • Add a constraint2D plot item that draws the 2D contours of two correlated observables from a single constraint (D. van Dyk)
  • Add a point plot item that draws a single marker at a fixed position (D. van Dyk)
  • Add a contours2D plot item that draws 2D probability contours from a histogram of pre-existing samples (D. van Dyk)
  • Add a scaling_factor field to the xticks and yticks of a plot to rescale the displayed tick values (D. van Dyk)
  • Add the eos.reporting module with the AnalysisData, PosteriorData, and GoodnessOfFit classes, providing lazy, disk-driven access to the recorded results of an analysis for use in report templates (D. van Dyk)
  • Extend the inference example to find the best-fit point via a find-mode step and to report the goodness of fit (as a per-constraint table) and a corner figure for each posterior (D. van Dyk)
  • Add further test cases to cover the worst offenders in terms of code coverage (D. van Dyk)
  • Add a format_version field to the analysis file format, so that EOS rejects files declaring a newer schema version than it supports (issue #1196) (D. van Dyk)
  • Complete the documentation of the figure description format (D. van Dyk)
  • Detect newly introduced C++ compiler warnings in the CI/CD workflows using g++’s SARIF diagnostics output, providing native code-scanning annotations on pull requests and failing the build on any warning not present in a committed baseline (D. van Dyk)
  • Add eos.LogPrior.External, which wraps a user-supplied Python factory (providing evaluate(), sample(), and compute_cdf() callables) as a prior (D. van Dyk)
  • Add the means to ensure a minimum effective sample size for the final samples produced by sample-nested, exposed through the eos-analysis command-line interface (D. van Dyk)
  • Add an optional levels field to UncertaintyBandItem and BinnedUncertaintyItem items that modifies the plotted credibility interval (D. Suelmann)
  • Add an optional band field to BinnedUncertaintyItem items to plot different parts of the band separately (D. Suelmann)

Deprecated

  • Deprecate the curtailed Gaussian prior description, i.e. a gauss/gaussian prior with min/max keys; use type: gaussian without min/max instead (D. van Dyk)
  • Deprecate constraint-based prior descriptions without a type key; use type: constraint instead (D. van Dyk)
  • Deprecate the eos.plot subpackage for removal in version 1.1; use the eos.figure subpackage instead (D. van Dyk)
  • Deprecate the corner-plot task for removal in version 1.1; use the corner figure type (eos.figure.CornerFigure) instead (D. van Dyk)

Removed

  • Remove the following univariate signal PDFs, since the corresponding multivariate PDFs render them superfluous (D. van Dyk)
    • Lambda_b->Lambda_clnu::dBR
    • Lambda_b->Lambda_c(2625)lnu::dGamma
  • Remove the following signal PDFs, since they are unused and not worth maintaining (D. van Dyk)
    • B->pimu1nu::d^2Gamma
    • B->pimu3nu::d^5Gamma
    • B->Dmu1nu::d^2Gamma
    • B->Dmu3nu::d^5Gamma
    • B->Kll::d^2Gamma@LowRecoil
    • B->K^*ll::d^2Gamma@LowRecoil

Fixed

  • Fix typos and errors in the documentation of the semileptonic form factors (D. van Dyk)
  • Fix some linewidth and linestyles arguments in figure framework (D. Suelmann)
  • Fix undefined name errors in Python code (D. van Dyk)
  • Fix usage of mutable default arguments in Python code (D. van Dyk)
  • Fix exception handling in Python code (D. van Dyk)
  • Remove dead code and unused imports in Python code (D. van Dyk)
  • Fix exception handling in li22logA1 (D. van Dyk)
  • Fix use of std::abs in inclusive B->X_sll decays (D. van Dyk)
  • Remove unused debugging code (D. van Dyk)
  • Remove call to exit() in cubature code (D. van Dyk)
  • Use context.nullcontext instead of context.suppress (D. van Dyk)
  • Fix inconsistent use of s rather than q2 across B->Plnu, Lambda_b->Lambda_clnu, Lambda_b->Lambda_c(2595)lnu, and Lambda_b->Lambda_c(2625)lnu (D. van Dyk)
  • Fix inconsistent use of s rather than q2 across D->Plnu, and Lambda_c->(S=1/2)^+lnu (D. van Dyk)
  • Fix inconsistent use of s rather than q2 across B->Kll, B->K^*ll, B_s->phill, Lambda_b->Lambdall, Lambda_b->Lambda(1520)ll, and B->X_sll (D. van Dyk)
  • Fix bugs in figure framework (D. Suelmann)
  • Fix bug in (non-)packaging of constraint files (D. van Dyk)
  • Fix the default Item.legend to return a list rather than a tuple (D. van Dyk)
  • Fix the type annotation of MaskComponent.description (D. van Dyk)
  • Do not draw an empty legend (D. van Dyk)
  • Fix a potential out-of-range bug when computing the contour level for eos.figure.TwoDimensionalKernelDensityEstimateItem (D. van Dyk)
  • Fix incorrect expression for CurtailedGauss::compute_cdf (issue #1189) (D. van Dyk)
  • Fix missing initialization of an index in ExpressionCloner and ExpressionMaker (issue #1191) (D. van Dyk)
  • Fix incorrect cloning of Parameters (issue #1192) (D. van Dyk)
  • Fix handling of the unit field when overriding parameters from file (issue #1193) (D. van Dyk)
  • Fix a typo in eos.figure.ObservableItem that prevented plotting an observable as a function of a parameter (D. van Dyk)
  • Fix the handling of asymmetric uncertainties when drawing single-point constraints in eos.figure (D. van Dyk)
  • Fix the detection of option conflicts in eos.AnalysisFile, which silently failed to warn when an observable’s option-part contradicted a global or local option (D. van Dyk)
  • Fix a crash when loading an analysis file that has no likelihoods section (D. van Dyk)
  • Report all unknown observable names in an analysis file prediction, rather than only the first (D. van Dyk)
  • Fix incorrect cloning of cached ExpressionObservable instances that fix the same kinematic variable to different values (issue #1077) (D. van Dyk)
  • Fix eos.figure.GridFigure to forward the analysis file context to each of its plots, so that items resolve relative data and parameter paths against the analysis file’s base directory (D. van Dyk)
  • Defer loading of a figure item’s fixed_parameters_from_file from construction to draw time, so that loading an analysis file no longer requires the parameter file (which may be the output of an earlier task such as find-mode) to already exist (issue #1181) (D. van Dyk)
  • Fix the B->D^*lnu azimuthal (phi) 1D distribution, which contained a spurious cos(phi) term, and the phase-space normalization of the 1D PDFs, previously computed by BToDPiLeptonNeutrino (D. van Dyk)
  • Fix a latent initialization-order bug in the [GP:2004A] B->K^*ll amplitudes, where the lambda_* and sl_phase_* subleading parameters read the use_simple_sl flag before it was initialized (D. van Dyk)
  • Fix various C++ compiler warnings (-Wreorder, -Wunused-parameter, -Wignored-qualifiers, -Wunused-variable, -Woverloaded-virtual) (D. van Dyk)
  • Fix the workflow that uploads compiler-warning SARIF to code scanning, which failed on warning-free builds because the merged SARIF contained an empty set of runs (D. van Dyk)
  • Fix inconsistency in the expected values for options related to SSLP Isgur-Wise functions in the unitarity bounds (D. van Dyk)
  • Fix a long-standing memory leak in ThreadPool (D. van Dyk)

Version 1.0.20

We have just released version 1.0.20, which you can find here.

There have been 95 commits since version 1.0.19, which can be inspected here. The changes include

  • Renaming the following constraints (M. Kirk, M. Reboud)
    • B->pi::FormFactors[parametric,LCSR+LQCD]@LvDM:2021A -> LMvD:2021A
    • B_s->D_s^*::A_1[s_max]@HPQCD:2019A -> HPQCD:2019B
    • B->K^*::A_12@FNAL+MILC:2013A -> HPQCD:2013B
    • B->K^*::A_1@FNAL+MILC:2013A -> HPQCD:2013B
    • B->K^*::V@FNAL+MILC:2013A -> HPQCD:2013B
    • B_s->K^*::A_12@FNAL+MILC:2013A -> HPQCD:2013B
    • B_s->K^*::A_1@FNAL+MILC:2013A -> HPQCD:2013B
    • B_s->K^*::V@FNAL+MILC:2013A -> HPQCD:2013B
    • D^+->Kbar^0e^+nu::BR[0.0,q2max]@PDG:2023A -> PDG:2024A
    • 0->pipi::Abs{f_+}^2@CMD3:2023C -> CMD3:2023A
    • B->K^*::FormFactors[A_0,A_1,A_2,V,T_1,T_2,T_23]@GRvDV:2021A -> GRvDV:2022A
    • B_(s)->D_(s)^*::FormFactors@HPQCD:2023A -> B_(s)->D_(s)^*::FormFactors[HQETBasis]@HPQCD:2023A
    • B_(s)->D_(s)^*::FormFactors[TraditionalBasis]@HPQCD:2023A -> B_(s)->D_(s)^*::FormFactors@HPQCD:2023A
  • Imposing the exact relation f+(0) = f0(0) in the BGL parameterisation of P -> P form factors (M. Reboud)
  • Bumping the Ubuntu image to resolute and the PyPI container (D. van Dyk)
  • Reorganising the structure of constraints (F. Herren)
  • Adding functionality to the figure framework to allow export to multiple files at once (M. Kirk)
  • Exporting wilson-polynomials to python (M. Reboud, D. van Dyk)
  • Adding missing references to bibliography and implementing a commit hook to check for missing references (M. Kirk, E. McPartland)
  • Implementing a new figure item to plot constraints residues (M. Reboud)
  • Updating the examples and the tests of the figure framework (M. Reboud)
  • Implementing an observable option to specify which option needs to be plotted in an uncertainty band item (M. Reboud)
  • Implementing B_c -> J/psi ell nu decays (C. Bolognani, M. Reboud)
  • Adding the basis for WCs with Delta c = Delta u = 1 transitions (D. Sue)
  • Extending the WC RGE and testing it (D. Sue)
  • Implementing L_c -> neutron ell nu decays (C. Bolognani)
  • Purging integrate1d (M. Reboud, F. Herren)
  • Removing the matplotlib backend choice (M. Kirk)
  • Correcting references list (M. Kirk, E. McPartland)
  • Fixing bugs in the figure framework (M. Reboud)
  • Fixing the constraint B_(s)->D_(s)^*::FormFactors@HPQCD:2023A (M. Reboud)
  • Fixing the bound saturations in the BGL parameterisation (M. Reboud)
  • Fixing the font used by matplotlib (M. Kirk)
  • Fixing a race condition in TreadPool (D. van Dyk)

Contributors of these commits are:

  • Carolina Bolognani
  • Florian Herren
  • Matthew Kirk
  • Ery McPartland
  • Méril Reboud
  • Dominik Suelmann
  • Danny van Dyk

Version 1.0.19

We have just released version 1.0.19, which you can find here.

There have been 19 commits since version 1.0.18, which can be inspected here. The changes include

  • starting to build wheels for Python version 3.14 (M. Kirk)
  • accounting for log-scale plot in the new figure framework (M. Kirk)
  • including the eos-data, eos-figure, and eos-list-observables scripts in the Python wheels (M. Kirk)
  • adding to code to draw posterior-predictive samples in the 1D and 2D KDE (D. van Dyk)
  • adding a differential dBR/dkperp distribution for B̅ₛ⁰→ Dₛ⁺ℓ⁻ν̅ decays (D. van Dyk)
  • fixing a bug that prohibits building with gcc version 15 or newer (M. E. Smith)
  • fixing a bug that selects a non-existent font as default in the figure framework (M. Kirk)
  • fixing a bug in the Python bindings that broke the documentation (D. van Dyk)
  • fixing various issues with LaTeX representations of observables (M. Kirk, D. van Dyk)

Contributors of these commits are:

  • Matthew Kirk
  • Mark E. Smith
  • Danny van Dyk

Version 1.0.18

We have just released version 1.0.18, which you can find here.

There have been 79 commits since version 1.0.17, which can be inspected here. The changes include

  • adding parameters to estimate power correction in class-I B decays (S. Meiser)
  • adding and correcting documentation of the WET Wilson coefficient bases (D. van Dyk)
  • adding tau decay observables (M. Kirk, D. van Dyk)
  • adding pseudo observables for vacuum to K pi form factors (M. Kirk)
  • improving the functionality of eos-analysis report (D. van Dyk)
  • improving the functionality of corner figures (M. Kirk, D. van Dyk)
  • fixing a bug in the logging callback when running within a Python environment (D. van Dyk)
  • fixing a bug that prohibited building against Boost version 1.89 or later (D. van Dyk)
  • fixing a bug in the validation of analysis files (M. Kirk)
  • fixing a bug in the (now deprecated) corner-plot task (M. Kirk)
  • fixing a bug in the argument parsing for eos-analysis draw-figure (M. Kirk)

Contributors of these commits are:

  • Matthew Kirk
  • Stefan Meiser
  • Danny van Dyk

Version 1.0.17

We have just released version 1.0.17, which you can find here.

There have been 146 commits since version v1.0.16, which can be inspected here. The changes include

  • updating the installation (M. Reboud, D. van Dyk)
  • completing the new figure framework (D. van Dyk)
  • improving the documentation (N. Balz, C. Bolognani, L. Gärtner, M. Reboud, D. van Dyk)
  • fixing the treatment of kinematics in the observable parser (M. Reboud, D. Suelmann)
  • adding a Citation, License and Code of Conduct file (D. van Dyk)
  • implementing new observables for B_q → D_q ℓ ν decays (C. Earnshaw)
  • improving the logs in the tasks (C. Bolognani)
  • implementing updated vector LCDAs (S. Meiser)
  • fixing all the parameters unit (M. Reboud)
  • implementing the framework for externally defined observables (D. van Dyk)
  • implementing B → η ℓ ν, B → η’ ℓ ν, D_(s) → η ℓ ν and D_(s) → η’ ℓ ν observables

Contributors of these commits are:

  • Nienke Balz
  • Carolina Bolognani
  • Charles Earnshaw
  • Lorenz Gärtner
  • Florian Herren
  • Stefan Meiser
  • Simon Mutke
  • Méril Reboud
  • Dominik Suelmann
  • Danny van Dyk