"cache": cache,
        "cache_valid": cache_valid,
        "cache_test": cache_test,
        "value_model": value_model,
        "value_model_valid": value_model_valid,
        "value_model_test": value_model_test,
        "attribute": attribute,
        "selection_criterion": args.selection_criterion,
    }

    if args.log_wandb:
        runner_config["wandb_run"] = run

    total_dims = reader.get_dimensionality()
    runner = Runner(runner_config)
    selected_results = runner.main_loop(max_iter=args.max_iter)

    # Draw graphs
    graphs = runner.draw_graphs(selected_results)
    mi_fig = graphs["mi"]
    normalized_mi_fig = graphs["normalized_mi"]
    accuracy_fig = graphs["accuracy"]
    scatter_fig = runner.plot_dims(
        selected_results[0]["candidate_dim"],
        selected_results[1]["candidate_dim"],
        test_data=True,
        log_prob_dim_pool=list(selected_results[-1]["candidate_dim_pool"]))

    # You can uncomment these lines to output scatter plots for any pair of dimensions you need.
    #
    # scatter_fig = runner.plot_dims(477, 179, test_data=True)