#!/usr/bin/python import argparse import os, glob, sys import json import param_scan.parameter_sets as ps import param_scan.simulation_run as si from param_scan.io import load_run import param_scan.dict_comparison as dc from textwrap import TextWrapper import shutil parser = argparse.ArgumentParser(description='bla') parser.add_argument('run', metavar='run', type=str, help='run') parser.add_argument('-n', '--name', dest='dir_name', type=str, help='name the view', default=None) parser.add_argument('-c', '--constraints', dest='constr', type=str, default="{}", help='json string of constraints') parser.add_argument('--hide', dest='hide', type=str, nargs='+', default=[], help="arguments that should not be shown") args = parser.parse_args() rfn = args.run print args.constr constr_dict = json.loads(args.constr) print args.dir_name if args.dir_name is not None: dir_name = args.dir_name else: dir_name = rfn + ".view" rfn, r = load_run(rfn) psets = ps.unroll(r["parameters"]) if os.path.exists(dir_name): try: shutil.rmtree(dir_name) except OSError: os.remove(dir_name) if len(psets) > 1: os.makedirs(dir_name) common_prms = dc.get_common(psets) for p in psets: if not dc.is_subtree(constr_dict, p): continue d = dc.get_difference_to_common(p, common_prms) link_trgt = r["data_dir"] + "/" + si.get_prefix(r["sim"], p, r["uniqueness"]) link_name = " ".join("%s=%s" % (str(k), str(v)) for k, v in d.items() if not k in args.hide) if len(psets) > 1: os.symlink(link_trgt, dir_name + "/" + link_name) else: os.symlink(link_trgt, dir_name)