Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
The purpose of this library is to provide a well-structured JSON data format for a wide variety of ad-hoc correction factors encountered in a typical HEP analysis and a companion evaluation tool suitable for use in C++ and python programs. Here we restrict our definition of correction factors to a class of functions with scalar inputs that produce a scalar output.
In python, the function signature is:
def f(*args: str | int | float) -> float:
return ...
In C++, the evaluator implements this currently as:
double Correction::evaluate(const std::vector<std::variant<int, double, std::string>>& values) const;
The supported function classes include:
exp
, sqrt
, etc.);Each function type is represented by a "node" in a call graph and holds all of its parameters in a JSON structure, described by the JSON schema. Possible future extension nodes might include weigted sums (which, when composed with the others, could represent a BDT) and perhaps simple MLPs.
The tool should provide:
This tool will definitely not provide:
TLorentzVector
or other object-type inputs (such tools should be written
as a higher-level tool depending on this library as a low-level tool)Formula support currently includes a mostly-complete subset of the ROOT library TFormula
class,
and is implemented in a threadsafe standalone manner. The parsing grammar is formally defined
and parsed through the use of a header-only PEG parser library.
The supported features mirror CMSSW's reco::formulaEvaluator
and fully passes the test suite for that utility with the purposeful exception of the TMath::
namespace.
The python bindings may be able to call into numexpr,
though, due to the tree-like structure of the corrections, it may prove difficult to exploit vectorization
at levels other than the entrypoint.
Detailed instructions for installing and using this package are provided in the documentation.
A demo/tutorial of the features is available in the documentation and also available interactively on binder
The correctionlib.schemav2
module provides a helpful framework for defining correction objects
and correctionlib.convert
includes select conversion routines for common types. Nodes can be type-checked as they are
constructed using the parse_obj
class method or by directly constructing them using keyword arguments.
See CONTRIBUTING.md
FAQs
A generic correction library
We found that correctionlib demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.