In [ ]:
import json
import os
from pathlib import Path

import matplotlib.pyplot as plt
import numpy as np
from ray import tune
from tabulate import tabulate


def get_noise_scores(df):
    noise_scores = []
    for _, row in df.iterrows():
        logdir = row["logdir"]
        with open(Path(logdir) / "result.json", "r") as fin:
            result = json.loads(fin.readlines()[-1])
        noise_scores.append(result["noise_score"])
    return noise_scores


RAY_RESULTS = Path(os.path.expanduser("~/ray_results"))

In [ ]:
headers = ["description", "mean_accuracy", "mean_noise_score", "samples"]
table = []

for exp_name, finished_iter in [("run_lenet_mnist", 15),
                                ("run_lenet_staticstructure_kwinners_mnist", 15),
                                ("run_lenet_staticstructure_mnist", 15),
                                ("run_lenet_backpropstructure_mnist", 50)]:
    analysis = tune.Analysis(RAY_RESULTS / exp_name)
    df = analysis.dataframe()
    df = df.loc[df["training_iteration"] == finished_iter]

    table.append([exp_name, 
                  np.mean(df["mean_accuracy"]),
                  np.mean(get_noise_scores(df)),
                  df.shape[0]])
    
print(tabulate(table, headers, tablefmt="orgtbl"))