Skip to main content

ATLAS "good run list" utilities

Project description

About

goodruns provides an implementation of an ATLAS “good run list” (GRL) reader/writer in Python, and collection of useful command-line tools.

Requirements

goodruns requires at least Python 2.5 and only depends on modules in the standard library. Unlike the standard ATLAS GoodRunsLists package, goodruns does not depend in any way on ROOT. For better XML reading/writing goodruns will optionally use lxml if installed. Install PyYAML if you would like to convert GRLs into YAML format.

Installation

The easiest way to install goodruns is with pip. To install for all users:

sudo pip install goodruns

To install in your user site-packages directory (also see below):

pip install --user goodruns

If you have obtained a copy of goodruns yourself use the setup.py script to install. To install for all users:

sudo python setup.py install

or to install in your user base directory:

python setup.py install --user

If installing in your user site-packages directory be sure to add ~/.local/bin to your $PATH:

export PATH=${HOME}/.local/bin${PATH:+:$PATH}

You may specify a different location for your user site-packages directory by:

export PYTHONUSERBASE=/path/to/alternate/.local

To install the optional dependencies:

pip install -U -r optional-requirements.txt

Usage

An example of how to use goodruns:

from goodruns import GRL

grl = GRL('grl.xml')
# or:
grl = GRL('http://atlasdqm.web.cern.ch/atlasdqm/grlgen/path/to/grl.xml')

# check if the GRL contains the lumiblock 231 in run 186356:
if (186356, 231) in grl:
    # do something
    pass

The GRL is automatically optimized (lumiblocks are merged and sorted):

>>> from goodruns import GRL
>>> a = GRL()
>>> a.insert(1, (1,4))
>>> a.insert(1, (7,10))
>>> a
---------------
RUN: 1
LUMIBLOCKS:
  1 - 4
  7 - 10
>>> a.insert(1, (6,7))
>>> a
---------------
RUN: 1
LUMIBLOCKS:
  1 - 4
  6 - 10
>>> a.insert(1, (5,5))
>>> a
---------------
RUN: 1
LUMIBLOCKS:
  1 - 10

Command-line Tools

goodruns also provides a collection of command-line tools for combining, manipulating, and inspecting GRLs.

grl-diff

Use grl-diff to determine the GRL containing the runs/lumiblocks in A.xml but not in B.xml:

grl-diff A.xml B.xml

In other words, B.xml is subtracted from A.xml. All command-line tools print on stdout. Redirect stdout to a file to save the result:

grl-diff A.xml B.xml > C.xml

You may supply more than two GRLs to grl-diff:

grl-diff A.xml B.xml C.xml D.xml > E.xml

which results in the GRL E=((A-B)-C)-D). This is equivalent to:

grl-diff A.xml B.xml | grl-diff C.xml | grl-diff D.xml > E.xml

The output of one command can be piped into any of the other commands in goodruns.

grl-and, grl-or, grl-xor

These scripts implement logical combinations of GRLs. Logical AND:

grl-and A.xml B.xml > C.xml

OR:

grl-or A.xml B.xml > C.xml

and XOR (exclusive OR):

grl-xor A.xml B.xml > C.xml

Again, these commands can be combined arbitrarily:

grl-and A.xml B.xml | grl-or C.xml | grl-xor D.xml > E.xml

grl-clip

Use grl-clip to truncate a GRL between a starting run/lumiblock and ending run/lumiblock:

> grl-clip --help
Usage: grl-clip [options] [file]

Options:
  -h, --help            show this help message and exit
  -o OUTPUT, --output=OUTPUT
                        Output filename
  --startrun=STARTRUN   Start run
  --startlb=STARTLB     Start lumiblock
  --endrun=ENDRUN       End run
  --endlb=ENDLB         End lumiblock

grl-convert

grl-convert can convert a GRL from XML format into YAML:

> grl-convert -f yml A.xml
186178:
- !!python/tuple [125, 156]
- !!python/tuple [158, 161]
186179:
- !!python/tuple [382, 388]
- !!python/tuple [390, 390]
- !!python/tuple [396, 396]
- !!python/tuple [398, 415]
- !!python/tuple [417, 431]
- !!python/tuple [433, 453]
- !!python/tuple [455, 469]
- !!python/tuple [471, 474]
- !!python/tuple [476, 479]
186180:
- !!python/tuple [114, 116]
- !!python/tuple [118, 124]
- !!python/tuple [126, 140]
- !!python/tuple [144, 149]
- !!python/tuple [151, 170]
- !!python/tuple [173, 176]
...

or plain text:

> grl-convert -f txt A.xml
---------------
RUN: 186178
LUMIBLOCKS:
  125 - 156
  158 - 161
---------------
RUN: 186179
LUMIBLOCKS:
  382 - 388
  390
  396
  398 - 415
  417 - 431
  433 - 453
  455 - 469
  471 - 474
  476 - 479
---------------
RUN: 186180
LUMIBLOCKS:
  114 - 116
  118 - 124
  126 - 140
  144 - 149
  151 - 170
  173 - 176
...

grl-convert will also convert a GRL into Python code (dict of lists of tuples) or (as a joke) a ROOT TCut expression.

grl-runs

grl-runs simply prints the run numbers, one per line, contained within a GRL:

> grl-runs A.xml
186178
186179
186180
...

Quickly print the runs contained in a GRL from a URL:

> grl-runs http://atlasdqm.web.cern.ch/atlasdqm/grlgen/path/to/grl.xml

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

goodruns-1.5.tar.gz (28.2 kB view details)

Uploaded Source

File details

Details for the file goodruns-1.5.tar.gz.

File metadata

  • Download URL: goodruns-1.5.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for goodruns-1.5.tar.gz
Algorithm Hash digest
SHA256 a09e1f6d228ebfa3d053bf8abe316e7434abda5c0abf8cd423869ea0020e64c2
MD5 d0a0a84c6a32ef25c13d23a6644f5e65
BLAKE2b-256 94bae093f2a77dc246c38fe23f3acffb8c545a77de996049974491b619d71d33

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page