Beispiel #1
0
def combine(base_dir):
    experiment_paths = request.args.getlist('exp')
    group_by_list = request.args.getlist('group')
    name = request.args.get('name', "")

    try:
        exps = []
        for ep in experiment_paths:
            expr = ExperimentReader(os.path.join(base_dir, ep))
            if expr.exp_info.get("state", "Combined") != "Combined":
                exps.append(expr)

        exp_groups = group_experiments_by(exps, group_by_list)

        combis = []
        for group in exp_groups:
            expc = CombiExperimentReader(base_dir="",
                                         exp_dirs=[e.work_dir for e in group],
                                         name=name)
            combis.append(expc)

        for expc in combis:
            expc.save()

        return "1"
    except Exception as e:
        return "0"

    return "0"
Beispiel #2
0
def experiment_plots(base_dir):
    experiment_paths = request.args.getlist('exp')
    combi = request.args.get('combi', 'false')
    experiments = []

    if combi == "true":
        combi_exp = CombiExperimentReader(base_dir, experiment_paths)
        # combi_exp.save()
        experiments = [combi_exp]
    else:
        # Get all Experiments
        for experiment_path in sorted(experiment_paths):
            exp = ExperimentReader(base_dir, experiment_path)
            experiments.append(exp)

    # Assign unique names
    exp_names = [exp.exp_name for exp in experiments]
    if len(exp_names) > len(set(exp_names)):
        for i, exp in enumerate(experiments):
            exp.exp_name += str(i)
    exp_names = [exp.exp_name for exp in experiments]

    results = []
    for exp in experiments:
        results.append(exp.get_results_log())
    results = merge_results(exp_names, results)

    graphs, traces = make_graphs(results, color_map=COLORMAP)
    graphs = [str(g) for g in graphs]

    return json.dumps({"graphs": graphs, "traces": traces})
Beispiel #3
0
def experiment(base_dir):
    experiment_paths = request.args.getlist('exp')
    name = request.args.get('name', "")
    do_save = request.args.get('save', "")
    combi = request.args.get('combi', 'false')

    experiments = []

    if combi == "true":
        combi_exp = CombiExperimentReader(base_dir,
                                          experiment_paths,
                                          name=name)
        if do_save == "true":
            combi_exp.save()
        experiments = [combi_exp]
    else:
        # Get all Experiments
        for experiment_path in sorted(experiment_paths):
            exp = ExperimentReader(base_dir, experiment_path)
            experiments.append(exp)

    # Assign unique names
    exp_names = [exp.exp_name for exp in experiments]
    if len(exp_names) > len(set(exp_names)):
        for i, exp in enumerate(experiments):
            exp.exp_name += str(i)
    exp_names = [exp.exp_name for exp in experiments]

    # Site Content
    content = {}

    # Get config
    default_val = "-"
    combi_config = {}
    exp_configs = [exp.config.flat(False) for exp in experiments]
    diff_config_keys = list(
        Config.difference_config_static(*exp_configs).keys())
    config_keys = set([k for c in exp_configs for k in c.keys()])
    for k in sorted(config_keys):
        combi_config[k] = []
        for conf in exp_configs:
            combi_config[k].append(conf.get(k, default_val))
    config_keys = list(sorted(list(config_keys)))

    # Get results
    default_val = "-"
    combi_results = {}
    exp_results = [exp.get_results() for exp in experiments]
    result_keys = set([k for r in exp_results for k in r.keys()])
    for k in sorted(result_keys):
        combi_results[k] = []
        for res in exp_results:
            combi_results[k].append(res.get(k, default_val))
    result_keys = list(sorted(list(result_keys)))

    # Get images
    images = OrderedDict({})
    image_keys = set()
    image_path = {}
    for exp in experiments:
        exp_images = exp.get_images()
        img_groups = group_images(exp_images)
        images[exp.exp_name] = img_groups
        image_path[exp.exp_name] = exp.img_dir
        image_keys.update(list(img_groups.keys()))
    image_keys = list(image_keys)
    image_keys.sort()

    # Get Plots
    plots = OrderedDict({})
    for exp in experiments:
        exp_plots = exp.get_plots()
        plots[exp.exp_name] = exp_plots

    # Get logs
    logs_dict = OrderedDict({})
    for exp in experiments:
        exp_logs = [(os.path.basename(l), exp.exp_dir) for l in exp.get_logs()]
        logs_dict[exp.exp_name] = exp_logs

    content["title"] = experiments
    content["images"] = {
        "img_path": image_path,
        "imgs": images,
        "img_keys": image_keys
    }
    content["plots"] = {"plots": plots}
    content["config"] = {
        "exps": experiments,
        "configs": combi_config,
        "keys": config_keys,
        "diff_keys": diff_config_keys
    }
    content["results"] = {
        "exps": exp_names,
        "results": combi_results,
        "keys": result_keys
    }
    content["logs"] = {"logs_dict": logs_dict}

    return render_template('experiment.html', **content)