Source code for km3pipe.utils.runtable

# Filename: runtable.py
"""
Prints the run table for a given detector ID.

Usage:
    runtable [options] DET_ID
    runtable (-h | --help)
    runtable --version

Options:
    -h --help           Show this screen.
    -c                  Compact view.
    -n RUNS             Number of runs.
    -r FROM_RUN-TO_RUN  Range of runs (example: 3100-3200).
    -s REGEX            Regular expression to filter the runsetup name/id.
    DET_ID              Detector ID (eg. D_ARCA001).

"""

import re
import sys
import km3pipe as kp

__author__ = "Tamas Gal"
__copyright__ = "Copyright 2018, Tamas Gal and the KM3NeT collaboration."
__credits__ = []
__license__ = "MIT"
__maintainer__ = "Tamas Gal"
__email__ = "tgal@km3net.de"
__status__ = "Development"

[docs]log = kp.logger.get_logger(__name__)
[docs]def runtable(det_id, n=5, run_range=None, compact=False, sep='\t', regex=None): """Print the run table of the last `n` runs for given detector""" db = kp.db.DBManager() df = db.run_table(det_id) if run_range is not None: try: from_run, to_run = [int(r) for r in run_range.split('-')] except ValueError: log.critical("Please specify a valid range (e.g. 3100-3200)!") raise SystemExit else: df = df[(df.RUN >= from_run) & (df.RUN <= to_run)] if regex is not None: try: re.compile(regex) except re.error: log.error("Invalid regex!") return df = df[df['RUNSETUPNAME'].str.contains(regex) | df['RUNSETUPID'].str.contains(regex)] if n is not None: df = df.tail(n) if compact: df = df[['RUN', 'DATETIME', 'RUNSETUPNAME']] df.to_csv(sys.stdout, sep=sep)
[docs]def main(): from docopt import docopt args = docopt(__doc__, version=kp.version) try: n = int(args['-n']) except TypeError: n = None runtable( args['DET_ID'], n=n, run_range=args['-r'], regex=args['-s'], compact=args['-c']
)