Commit 40adfdf9 authored by norvell's avatar norvell
Browse files

Add scripts/merge_logs.py

parent e36cb3c3
Loading
Loading
Loading
Loading

scripts/merge_logs.py

0 → 100644
+60 −0
Original line number Diff line number Diff line
#!/usr/bin/env python3

import argparse
from pathlib import Path
import pandas as pd

def main(logs_dir, output_filename, measure):

    input_path = Path(logs_dir)
    logs = [f for f in input_path.iterdir() if f.is_dir()]
    
    # Build dict of scores
    logdict = {}
    for log in logs:
        date = log.name
        logdict[date] = {}
        for logfile in log.glob('*.csv'):
            tmp = logfile.name.split('-')
            job = '-'.join(tmp[3:-4])
            #sha = tmp[-1].split('.')[0]
            #logdict[date]["sha"] = sha # Maybe we want to store the SHA too somehow.
            data = pd.read_csv(logfile, usecols=["testcase", measure])
            logdict[date][job] = {}

            for testcase, value in zip(data["testcase"], data[measure]):
                logdict[date][job][testcase] = value

    # Restructure dict
    csv_rows = []
    for date, jobs in logdict.items():
        for job, testcases in jobs.items():
            for testcase, value in testcases.items():
                csv_rows.append((job, testcase, date, value))

    result = pd.DataFrame(csv_rows, columns=["job","testcase","date","value"])
    result = result.pivot(index=['job', 'testcase'], columns='date', values="value").reset_index()
    result.to_csv(output_filename, sep=';', index=False)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="logs dir")
    parser.add_argument(
        "logs_dir",
        type=str,
        help="Logs dir, e.g. logs",
    )
    parser.add_argument(
        "output_filename",
        type=str,
        help="Filename of the combined csv file. e.g mld.csv",
    )
    parser.add_argument(
        "--measure",
        type=str,
        help="Measure for summary, one of MLD MIN_SSNR MAX_ABS_DIFF MIN_ODG, (default: MLD)",
        default="MLD",
    )

    args = parser.parse_args()

    main(args.logs_dir, args.output_filename, args.measure)
 No newline at end of file