https://github.com/galaxyproject/galaxy
Raw File
Tip revision: c9a57290c0fdfe45a948cec32418ce737946ecaa authored by John Chilton on 28 October 2020, 19:52:32 UTC
Version 20.9.1 of tool-util (tag galaxy-tool-util-20.9.1).
Tip revision: c9a5729
summarize_timings.py
"""Script to parse timings out of a Galaxy log and summarize."""
from __future__ import print_function

import re
from argparse import ArgumentParser

import numpy


DESCRIPTION = ""

TIMING_LINE_PATTERN = re.compile(r"\((\d+.\d+) ms\)")


def main(argv=None):
    """Entry point for script."""
    arg_parser = ArgumentParser(description=DESCRIPTION)
    arg_parser.add_argument("--file", default="galaxy.log")
    arg_parser.add_argument("--print_lines", default=False, action="store_true")
    arg_parser.add_argument("--pattern", default=None)

    args = arg_parser.parse_args(argv)
    print_lines = args.print_lines
    pattern_str = args.pattern
    filter_pattern = re.compile(pattern_str) if pattern_str is not None else None
    times = []
    for line in open(args.file, "r"):
        if filter_pattern and not filter_pattern.search(line):
            continue

        match = TIMING_LINE_PATTERN.search(line)
        if not match:
            continue

        times.append(float(match.group(1)))
        if print_lines:
            print(line.strip())

    template = "Summary (ms) - Mean: %f, Median: %f, Max: %f, Min: %f, StdDev: %f"
    message = template % (
        numpy.mean(times),
        numpy.median(times),
        numpy.max(times),
        numpy.min(times),
        numpy.std(times)
    )
    print(message)


if __name__ == "__main__":
    main()
back to top