def parse_from_root()

in pyhanabi/tools/parse_log.py [0:0]


def parse_from_root(root, max_epoch, min_epoch, include, exclude, new_log):
    """
    include means include all, &&
    exclude means exclude any, ||
    """
    logs = {}
    root = os.path.abspath(root)
    for exp in os.listdir(root):
        if include:
            skip = False
            for s in include:
                if s not in exp:
                    skip = True
                    break
            if skip:
                continue

        skip = False
        for i, s in enumerate(exclude):
            if s in exp:
                skip = True
                break
        if skip:
            continue

        exp_folder = os.path.join(root, exp)
        log_file = os.path.join(exp_folder, "train.log")
        if not os.path.exists(log_file):
            log_file = os.path.join(exp_folder, "std.out")
        if os.path.exists(log_file):
            # try:
            if new_log:
                log = parse_new_log(log_file, max_epoch)
            else:
                log = parse_log(log_file, max_epoch)
            if min_epoch > 0 and log["epoch"] < min_epoch:
                print(
                    "%s is dropped due to being too short\n\t%d vs %d"
                    % (log_file, log["epoch"], min_epoch)
                )
            else:
                logs[exp] = log
        # except:
        #     print("something is wrong with %s" % log_file)

    return logs