%global _empty_manifest_terminate_build 0 Name: python-correctionlib Version: 2.2.2 Release: 1 Summary: A generic correction library License: BSD 3-Clause License URL: https://github.com/cms-nanoAOD/correctionlib Source0: https://mirrors.nju.edu.cn/pypi/web/packages/d7/a4/221534a863f2390d9c4011b68c819bc67537c17d6b2e82641437904886ff/correctionlib-2.2.2.tar.gz Requires: python3-numpy Requires: python3-pydantic Requires: python3-rich Requires: python3-typing Requires: python3-dataclasses Requires: python3-typing-extensions Requires: python3-pandas Requires: python3-uproot Requires: python3-requests Requires: python3-scipy Requires: python3-pytest Requires: python3-pre-commit Requires: python3-mypy Requires: python3-uhi Requires: python3-recommonmark Requires: python3-Sphinx Requires: python3-sphinx-copybutton Requires: python3-sphinx-rtd-theme Requires: python3-sphinx-jsonschema Requires: python3-myst-parser Requires: python3-nbsphinx Requires: python3-pytest Requires: python3-scipy %description # correctionlib [![Actions Status][actions-badge]][actions-link] [![Documentation Status][rtd-badge]][rtd-link] [![Code style: black][black-badge]][black-link] [![conda version][conda-badge]][conda-link] [![PyPI version][pypi-version]][pypi-link] [![PyPI platforms][pypi-platforms]][pypi-link] [![GitHub Discussion][github-discussions-badge]][github-discussions-link] ## Introduction 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: ```python from typing import Union def f(*args: Union[str,int,float]) -> float: return ... ``` In C++, the evaluator implements this currently as: ```cpp double Correction::evaluate(const std::vector>& values) const; ``` The supported function classes include: * multi-dimensional binned lookups; * binned lookups pointing to multi-argument formulas with a restricted math function set (`exp`, `sqrt`, etc.); * categorical (string or integer enumeration) maps; * input transforms (updating one input value in place); and * compositions of the above. 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: * standardized, versioned [JSON schemas](https://json-schema.org/); * forward-porting tools (to migrate data written in older schema versions); and * a well-optimized C++ evaluator and python bindings (with numpy vectorization support). This tool will definitely not provide: * support for `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](https://github.com/yhirose/cpp-peglib). The supported features mirror CMSSW's [reco::formulaEvaluator](https://github.com/cms-sw/cmssw/pull/11516) 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](https://numexpr.readthedocs.io/en/latest/user_guide.html), 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][rtd-link]. ## Creating new corrections A demo/tutorial of the features is available in the [documentation][rtd-link] and also available interactively on [binder](https://mybinder.org/v2/gh/cms-nanoAOD/correctionlib/HEAD?labpath=binder%2Fcorrectionlib_tutorial.ipynb) 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](https://pydantic-docs.helpmanual.io/usage/models/#helper-functions) class method or by directly constructing them using keyword arguments. ## Developing See CONTRIBUTING.md [actions-badge]: https://github.com/cms-nanoAOD/correctionlib/workflows/CI/badge.svg [actions-link]: https://github.com/cms-nanoAOD/correctionlib/actions [black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg [black-link]: https://github.com/psf/black [conda-badge]: https://img.shields.io/conda/vn/conda-forge/correctionlib.svg [conda-link]: https://github.com/conda-forge/correctionlib-feedstock [github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github [github-discussions-link]: https://github.com/cms-nanoAOD/correctionlib/discussions [gitter-badge]: https://badges.gitter.im/https://github.com/cms-nanoAOD/correctionlib/community.svg [gitter-link]: https://gitter.im/https://github.com/cms-nanoAOD/correctionlib/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge [pypi-link]: https://pypi.org/project/correctionlib/ [pypi-platforms]: https://img.shields.io/pypi/pyversions/correctionlib [pypi-version]: https://badge.fury.io/py/correctionlib.svg [rtd-badge]: https://github.com/cms-nanoAOD/correctionlib/actions/workflows/docs.yml/badge.svg [rtd-link]: https://cms-nanoAOD.github.io/correctionlib/ %package -n python3-correctionlib Summary: A generic correction library Provides: python-correctionlib BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip BuildRequires: python3-cffi BuildRequires: gcc BuildRequires: gdb %description -n python3-correctionlib # correctionlib [![Actions Status][actions-badge]][actions-link] [![Documentation Status][rtd-badge]][rtd-link] [![Code style: black][black-badge]][black-link] [![conda version][conda-badge]][conda-link] [![PyPI version][pypi-version]][pypi-link] [![PyPI platforms][pypi-platforms]][pypi-link] [![GitHub Discussion][github-discussions-badge]][github-discussions-link] ## Introduction 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: ```python from typing import Union def f(*args: Union[str,int,float]) -> float: return ... ``` In C++, the evaluator implements this currently as: ```cpp double Correction::evaluate(const std::vector>& values) const; ``` The supported function classes include: * multi-dimensional binned lookups; * binned lookups pointing to multi-argument formulas with a restricted math function set (`exp`, `sqrt`, etc.); * categorical (string or integer enumeration) maps; * input transforms (updating one input value in place); and * compositions of the above. 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: * standardized, versioned [JSON schemas](https://json-schema.org/); * forward-porting tools (to migrate data written in older schema versions); and * a well-optimized C++ evaluator and python bindings (with numpy vectorization support). This tool will definitely not provide: * support for `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](https://github.com/yhirose/cpp-peglib). The supported features mirror CMSSW's [reco::formulaEvaluator](https://github.com/cms-sw/cmssw/pull/11516) 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](https://numexpr.readthedocs.io/en/latest/user_guide.html), 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][rtd-link]. ## Creating new corrections A demo/tutorial of the features is available in the [documentation][rtd-link] and also available interactively on [binder](https://mybinder.org/v2/gh/cms-nanoAOD/correctionlib/HEAD?labpath=binder%2Fcorrectionlib_tutorial.ipynb) 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](https://pydantic-docs.helpmanual.io/usage/models/#helper-functions) class method or by directly constructing them using keyword arguments. ## Developing See CONTRIBUTING.md [actions-badge]: https://github.com/cms-nanoAOD/correctionlib/workflows/CI/badge.svg [actions-link]: https://github.com/cms-nanoAOD/correctionlib/actions [black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg [black-link]: https://github.com/psf/black [conda-badge]: https://img.shields.io/conda/vn/conda-forge/correctionlib.svg [conda-link]: https://github.com/conda-forge/correctionlib-feedstock [github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github [github-discussions-link]: https://github.com/cms-nanoAOD/correctionlib/discussions [gitter-badge]: https://badges.gitter.im/https://github.com/cms-nanoAOD/correctionlib/community.svg [gitter-link]: https://gitter.im/https://github.com/cms-nanoAOD/correctionlib/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge [pypi-link]: https://pypi.org/project/correctionlib/ [pypi-platforms]: https://img.shields.io/pypi/pyversions/correctionlib [pypi-version]: https://badge.fury.io/py/correctionlib.svg [rtd-badge]: https://github.com/cms-nanoAOD/correctionlib/actions/workflows/docs.yml/badge.svg [rtd-link]: https://cms-nanoAOD.github.io/correctionlib/ %package help Summary: Development documents and examples for correctionlib Provides: python3-correctionlib-doc %description help # correctionlib [![Actions Status][actions-badge]][actions-link] [![Documentation Status][rtd-badge]][rtd-link] [![Code style: black][black-badge]][black-link] [![conda version][conda-badge]][conda-link] [![PyPI version][pypi-version]][pypi-link] [![PyPI platforms][pypi-platforms]][pypi-link] [![GitHub Discussion][github-discussions-badge]][github-discussions-link] ## Introduction 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: ```python from typing import Union def f(*args: Union[str,int,float]) -> float: return ... ``` In C++, the evaluator implements this currently as: ```cpp double Correction::evaluate(const std::vector>& values) const; ``` The supported function classes include: * multi-dimensional binned lookups; * binned lookups pointing to multi-argument formulas with a restricted math function set (`exp`, `sqrt`, etc.); * categorical (string or integer enumeration) maps; * input transforms (updating one input value in place); and * compositions of the above. 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: * standardized, versioned [JSON schemas](https://json-schema.org/); * forward-porting tools (to migrate data written in older schema versions); and * a well-optimized C++ evaluator and python bindings (with numpy vectorization support). This tool will definitely not provide: * support for `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](https://github.com/yhirose/cpp-peglib). The supported features mirror CMSSW's [reco::formulaEvaluator](https://github.com/cms-sw/cmssw/pull/11516) 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](https://numexpr.readthedocs.io/en/latest/user_guide.html), 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][rtd-link]. ## Creating new corrections A demo/tutorial of the features is available in the [documentation][rtd-link] and also available interactively on [binder](https://mybinder.org/v2/gh/cms-nanoAOD/correctionlib/HEAD?labpath=binder%2Fcorrectionlib_tutorial.ipynb) 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](https://pydantic-docs.helpmanual.io/usage/models/#helper-functions) class method or by directly constructing them using keyword arguments. ## Developing See CONTRIBUTING.md [actions-badge]: https://github.com/cms-nanoAOD/correctionlib/workflows/CI/badge.svg [actions-link]: https://github.com/cms-nanoAOD/correctionlib/actions [black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg [black-link]: https://github.com/psf/black [conda-badge]: https://img.shields.io/conda/vn/conda-forge/correctionlib.svg [conda-link]: https://github.com/conda-forge/correctionlib-feedstock [github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github [github-discussions-link]: https://github.com/cms-nanoAOD/correctionlib/discussions [gitter-badge]: https://badges.gitter.im/https://github.com/cms-nanoAOD/correctionlib/community.svg [gitter-link]: https://gitter.im/https://github.com/cms-nanoAOD/correctionlib/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge [pypi-link]: https://pypi.org/project/correctionlib/ [pypi-platforms]: https://img.shields.io/pypi/pyversions/correctionlib [pypi-version]: https://badge.fury.io/py/correctionlib.svg [rtd-badge]: https://github.com/cms-nanoAOD/correctionlib/actions/workflows/docs.yml/badge.svg [rtd-link]: https://cms-nanoAOD.github.io/correctionlib/ %prep %autosetup -n correctionlib-2.2.2 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-correctionlib -f filelist.lst %dir %{python3_sitearch}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Apr 11 2023 Python_Bot - 2.2.2-1 - Package Spec generated