Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mohamedelashri/hadd-parallel
hadd in parallel for ROOT
https://github.com/mohamedelashri/hadd-parallel
physics python root-cern
Last synced: 21 days ago
JSON representation
hadd in parallel for ROOT
- Host: GitHub
- URL: https://github.com/mohamedelashri/hadd-parallel
- Owner: MohamedElashri
- License: mit
- Created: 2022-01-20T16:53:19.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-11-29T07:47:25.000Z (about 2 years ago)
- Last Synced: 2024-12-15T03:39:30.240Z (about 2 months ago)
- Topics: physics, python, root-cern
- Language: Python
- Homepage: https://pypi.org/project/parallel-hadd/
- Size: 59.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Python Tests](https://github.com/MohamedElashri/hadd-parallel/actions/workflows/python-test.yml/badge.svg)](https://github.com/MohamedElashri/hadd-parallel/actions/workflows/python-test.yml)
# Parallel Hadd
This is a python package to allow usage of hadd (from ROOT CERN) in parallel. It allows adding histogram and `.root` files. The addition will occur in blocks instead of one at all. It was designed to work with limited memory (local development primilary). The addition will use `multiprocessing` if avilable in your python enviroment.
## Requirements:
The minimum supported python version is 3.6.
| Python version | Supported |
|:--------------:|:----------:|
| 2.x | NO |
| 3.1-3.5 | NO |
| 3.6 | YES |
| 3.7 | YES |
| 3.8 | YES |
| 3.9 | YES |
| 3.10 | YES |
| 3.11 | YES |## Install
## from pypi
you can install the package directly from pypi repository
```
pip install parallel-hadd
```## build manually
1. clone this repository```
git clone https://github.com/MohamedElashri/hadd-parallel
```2. build the package from source using `pip`
```
pip3 install ./hadd-parallel
```## Manual
The command to use the package is
```
phadd
```you can use it as the following (with default arguments)
```
phadd out.root *.root
```[![asciicast](https://asciinema.org/a/GdfRIzl5uF8OQ1GrMwAhg8qXt.svg)](https://asciinema.org/a/GdfRIzl5uF8OQ1GrMwAhg8qXt)
where `out.root` will be the output file the contains all the `*.root` files.
more information about how to customize the settings are available on program help page
```
phadd -h
```## Help page
```
usage: phadd [-h] [-t TMPDIR] [-j NUM_JOBS] [-n NUM_FILES] [-f] [-s] [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-v]
output_file input_files [input_files ...]Hadd ROOT histograms in parallel
positional arguments:
output_file the output file
input_files one or more input filesoptional arguments:
-h, --help show this help message and exit
-t TMPDIR, --tmpdir TMPDIR
the temporary directory to store intermediate files
-j NUM_JOBS, --jobs NUM_JOBS
the number of jobs to run in parallel , [default cpu_count * 2 = {N_JOBS}
-n NUM_FILES, --num_files NUM_FILES
the number of files to hadd at once
-f, --force_overwrite
force overwrite of output file
-s, --save-tmp save the intermediate files, otherwise they will be deleted (which is the default)
-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --log {DEBUG,INFO,WARNING,ERROR,CRITICAL}
the log level, [default Warning]
-v, --version show program's version number and exit```