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
pypmcan optional Python dependency and adjust the documentation (D. van Dyk) - Split the
eos.datapackage into multiple modules, one per class (D. van Dyk) - Convert the
eos.dataclasses (MarkovChain,Mode,ImportanceSamples,DynestyResults,NabuLikelihood,Prediction,SampleMask,PMCSampler, andMixtureDensity) to the neweos.Serializable/eos.Deserializableinterface, and bump the on-disk format foreos.data.Mode(D. van Dyk) - Allow the characters
|,(,), and*inqnp::OptionValue(D. van Dyk) - Switch
Optionsto useqnp::OptionValuein lieu ofstd::stringfor its option values; hard-coded option values are now expressed using the_ovuser-defined literal (D. van Dyk) - Use
qnp::OptionValuekeys in the the factory methodModel::make(D. van Dyk) - Use
std::filesystemin lieu ofboost::filesystem(D. van Dyk) - Use
std::formatin lieu ofboost::formatwhen 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.AnalysisDataobject (iterating over the posteriors and, on demand, their importance samples, modes and goodness of fit, and predictions) together with acorner_figurehelper, in lieu of the previousanalyses,modes,len, andziptemplate variables (D. van Dyk) - Move
AnalysisFileContextinto its own module,eos.analysis_file_context(D. van Dyk) - Deserialize analysis files through a new
eos.AnalysisFileDescriptionclass, which maps the YAML structure to description objects and rejects unknown top-level keys (issue #1197) (D. van Dyk) - Replace the dedicated
BToDPiLeptonNeutrinoimplementation of theB->D^*lnu1D PDFs with the generalBToVectorLeptonNeutrinoclass; the observables are renamed fromB->Dpilnu::P(...)toB->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
v4in 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, andeos/statisticstoclang-format-based coding style (D. van Dyk) - Let legend keys reflect what variety of color+opacity are actually plotted in
eos.figureitems (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.Serializablebase class and theeos.Deserializable.from_yaml_file()helper, with a type check ineos.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
eosPython modules, and auto-generate the analysis file format reference from theeos.analysis_file_descriptionclasses (D. van Dyk) - Complete the reference documentation of the
eosPython bindings: fix several incorrect docstrings, name all arguments and add docstrings across the documented C++-bound classes, and document the previously undocumentedModel,LogLikelihoodBlock,Constraint,ConstraintEntry,ObservableEntry,Reference,References, andSignalPDFEntryclasses; the list of documented classes now lives ineos._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
Physicssection 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 the1/2^+ -> 1/2^+baryon form factors), and the observables predicted for semileptonic decays to a pseudoscalar meson, to a vector meson, and to a1/2^+baryon (D. van Dyk) - Add a
verticalplot 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
sizefield togridfigures to set the figure size explicitly (D. van Dyk) - Add an optional
watermark_plotfield togridfigures 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 configurableoffsetfor the figurewatermark(D. van Dyk) - Add
tight_layoutandshared_axesoptions togridfigures (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
formatfield on thexticksandyticksof 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::Containerandeos::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
SignalPDFat run time viaSignalPDFs::insert(Python:eos.SignalPDFs.insert) (D. van Dyk) - Add an
expressionplot item that draws an arbitrary mathematical expression of the x-axis variable (D. van Dyk) - Add a
constraint2Dplot item that draws the 2D contours of two correlated observables from a single constraint (D. van Dyk) - Add a
pointplot item that draws a single marker at a fixed position (D. van Dyk) - Add a
contours2Dplot item that draws 2D probability contours from a histogram of pre-existing samples (D. van Dyk) - Add a
scaling_factorfield to thexticksandyticksof a plot to rescale the displayed tick values (D. van Dyk) - Add the
eos.reportingmodule with theAnalysisData,PosteriorData, andGoodnessOfFitclasses, providing lazy, disk-driven access to the recorded results of an analysis for use in report templates (D. van Dyk) - Extend the
inferenceexample to find the best-fit point via afind-modestep 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_versionfield 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 (providingevaluate(),sample(), andcompute_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 theeos-analysiscommand-line interface (D. van Dyk) - Add an optional
levelsfield toUncertaintyBandItemandBinnedUncertaintyItemitems that modifies the plotted credibility interval (D. Suelmann) - Add an optional
bandfield toBinnedUncertaintyItemitems to plot different parts of the band separately (D. Suelmann)
Deprecated
- Deprecate the curtailed Gaussian prior description, i.e. a
gauss/gaussianprior withmin/maxkeys; usetype: gaussianwithoutmin/maxinstead (D. van Dyk) - Deprecate constraint-based prior descriptions without a
typekey; usetype: constraintinstead (D. van Dyk) - Deprecate the
eos.plotsubpackage for removal in version 1.1; use theeos.figuresubpackage instead (D. van Dyk) - Deprecate the
corner-plottask for removal in version 1.1; use thecornerfigure 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::dBRLambda_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^2GammaB->pimu3nu::d^5GammaB->Dmu1nu::d^2GammaB->Dmu3nu::d^5GammaB->Kll::d^2Gamma@LowRecoilB->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::absin inclusive B->X_sll decays (D. van Dyk) - Remove unused debugging code (D. van Dyk)
- Remove call to
exit()incubaturecode (D. van Dyk) - Use
context.nullcontextinstead ofcontext.suppress(D. van Dyk) - Fix inconsistent use of
srather thanq2across 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
srather thanq2across D->Plnu, and Lambda_c->(S=1/2)^+lnu (D. van Dyk) - Fix inconsistent use of
srather thanq2across 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.legendto 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
ExpressionClonerandExpressionMaker(issue #1191) (D. van Dyk) - Fix incorrect cloning of
Parameters(issue #1192) (D. van Dyk) - Fix handling of the
unitfield when overriding parameters from file (issue #1193) (D. van Dyk) - Fix a typo in
eos.figure.ObservableItemthat 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
likelihoodssection (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
ExpressionObservableinstances that fix the same kinematic variable to different values (issue #1077) (D. van Dyk) - Fix
eos.figure.GridFigureto 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_filefrom 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 asfind-mode) to already exist (issue #1181) (D. van Dyk) - Fix the
B->D^*lnuazimuthal (phi) 1D distribution, which contained a spuriouscos(phi)term, and the phase-space normalization of the 1D PDFs, previously computed byBToDPiLeptonNeutrino(D. van Dyk) - Fix a latent initialization-order bug in the [GP:2004A] B->K^*ll amplitudes, where the
lambda_*andsl_phase_*subleading parameters read theuse_simple_slflag 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)

