summaryrefslogtreecommitdiff
path: root/python-correctionlib.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-correctionlib.spec')
-rw-r--r--python-correctionlib.spec388
1 files changed, 388 insertions, 0 deletions
diff --git a/python-correctionlib.spec b/python-correctionlib.spec
new file mode 100644
index 0000000..022ff78
--- /dev/null
+++ b/python-correctionlib.spec
@@ -0,0 +1,388 @@
+%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<std::variant<int, double, std::string>>& 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<std::variant<int, double, std::string>>& 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<std::variant<int, double, std::string>>& 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 <Python_Bot@openeuler.org> - 2.2.2-1
+- Package Spec generated