Metadata-Version: 2.1
Name: order
Version: 2.1.1
Summary: Pythonic class collection that helps you structure external data from LHC / HEP experiments.
Home-page: https://github.com/riga/order
Author: Marcel Rieger
Author-email: python-order@googlegroups.com
License: BSD-3-Clause
Keywords: physics,analysis,experiment,order,structure,database,lhc,hep,alice,atlas,cms,lhcb
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Development Status :: 4 - Beta
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: BSD License
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Information Technology
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4
Description-Content-Type: text/markdown
License-File: LICENSE

<center>
  <a href="https://github.com/riga/order">
    <img src="https://media.githubusercontent.com/media/riga/order/master/assets/logo240.png" />
  </a>
</center>


<!-- marker-after-logo -->


[![Documentation status](https://readthedocs.org/projects/python-order/badge/?version=latest)](http://python-order.readthedocs.io/en/latest)
[![Lint and test](https://github.com/riga/order/actions/workflows/lint_and_test.yml/badge.svg)](https://github.com/riga/order/actions/workflows/lint_and_test.yml)
[![Code coverge](https://codecov.io/gh/riga/order/branch/master/graph/badge.svg?token=SNFRGYOITJ)](https://codecov.io/gh/riga/order)
[![Package version](https://img.shields.io/pypi/v/order.svg?style=flat)](https://pypi.python.org/pypi/order)
[![License](https://img.shields.io/github/license/riga/order.svg)](https://github.com/riga/order/blob/master/LICENSE)
[![PyPI downloads](https://img.shields.io/pypi/dm/order.svg)](https://pypi.python.org/pypi/order)
[![Open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/riga/order/blob/master/examples/intro.ipynb)
[![Open in binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/riga/order/master?filepath=examples%2Fintro.ipynb)

If you're designing a high-energy physics analysis (e.g. with data recorded by an [LHC](https://home.cern/topics/large-hadron-collider) experiment at [CERN](http://home.cern), manual bookkeeping of external data can get complicated quite fast.
*order* provides a pythonic class collection that helps you structuring

- analyses,
- MC campaigns,
- datasets,
- physics process and cross sections,
- channels,
- categories,
- variables, and
- systematic shifts.


<!-- marker-after-header -->


## Getting started

See the [intro.ipynb](https://github.com/riga/order/blob/master/examples/intro.ipynb) notebook for an introduction to the most important classes and an example setup of a small analysis.
You can also run the notebook interactively on colab or binder:

[![Open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/riga/order/blob/master/examples/intro.ipynb)
[![Open in binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/riga/order/master?filepath=examples%2Fintro.ipynb)

You can find the full [API documentation on readthedocs](http://python-order.readthedocs.io).


<!-- marker-after-getting-started -->


## Projects using order

- [uhh-cms/cmsdb](https://github.com/uhh-cms/cmsdb)
- tba


## Installation and dependencies

Install *order* via [pip](https://pypi.python.org/pypi/order):

```shell
pip install order
```

The only dependencies are [scinum](https://pypi.python.org/pypi/scinum) and [six](https://pypi.python.org/pypi/six) (Python 2 support that will be dropped soon), which are installed with the above command.


## Contributing and testing

If you like to contribute, feel free to open a pull request 🎉.
Just make sure to add new test cases and run them via:

```shell
python -m unittest tests
```

In general, tests should be run for Python 2.7, 3.6 - 3.11.
To run tests in a docker container, do

```shell
# run the tests
./tests/docker.sh python:3.9

# or interactively by adding a flag "1" to the command
./tests/docker.sh python:3.9 1
> pip install -r requirements.txt
> python -m unittest tests
```

In addition, [PEP 8](https://www.python.org/dev/peps/pep-0008) compatibility should be checked with [flake8](https://pypi.org/project/flake8):

```shell
flake8 order tests setup.py
```


## Development

- Source hosted at [GitHub](https://github.com/riga/order)
- Report issues, questions, feature requests on [GitHub Issues](https://github.com/riga/order/issues)


