コード例 #1
0
def test_remove_common_prefix():
    assert remove_common_prefix([[1, 2, 3, 4], [1, 2, 5], [1, 2,
                                                           3, 5]]) == [[3, 4],
                                                                       [5],
                                                                       [3, 5]]
    assert remove_common_prefix([[1, 2, 3, 4], [1, 2, 5], [1, 2, 3, 5]],
                                max_elements=1) == [[2, 3, 4], [2, 5],
                                                    [2, 3, 5]]
コード例 #2
0
def deprefix_experiment_ids(experiment_ids):
    """
    Given a list of experiment ids, removed the common root experiments from the list.
    :param experiment_ids: A list of experiment ids.
    :return: A list of experiment ids with the root prefix removed.
    """

    # First build dict mapping experiment_ids to their parents experiment_ids
    glib = get_global_experiment_library()
    exp_to_parent = {}
    for eid in glib.keys():
        ex = glib[eid]
        for var in ex.get_variants():
            exp_to_parent[var.get_id()] = ex.get_id()

    @memoize
    def get_experiment_tuple(exp_id):
        if exp_id in exp_to_parent:
            parent_id = exp_to_parent[exp_id]
            parent_tuple = get_experiment_tuple(parent_id)
            return parent_tuple + (exp_id[len(parent_id) + 1:], )
        else:
            return (exp_id, )

    # Then for each experiment in the list,
    tuples = [get_experiment_tuple(eid) for eid in experiment_ids]
    de_prefixed_tuples = remove_common_prefix(tuples, keep_base=False)
    start_with = '' if len(de_prefixed_tuples[0]) == len(tuples[0]) else '.'
    new_strings = [
        start_with + '.'.join(ex_tup) for ex_tup in de_prefixed_tuples
    ]
    return new_strings
コード例 #3
0
def deprefix_experiment_ids(experiment_ids):
    """
    Given a list of experiment ids, removed the common root experiments from the list.
    :param experiment_ids: A list of experiment ids.
    :return: A list of experiment ids with the root prefix removed.
    """

    # First build dict mapping experiment_ids to their parents experiment_ids
    glib = get_global_experiment_library()
    exp_to_parent = {}
    for eid in glib.keys():
        ex = glib[eid]
        for var in ex.get_variants():
            exp_to_parent[var.get_id()] = ex.get_id()

    @memoize
    def get_experiment_tuple(exp_id):
        if exp_id in exp_to_parent:
            parent_id = exp_to_parent[exp_id]
            parent_tuple = get_experiment_tuple(parent_id)
            return parent_tuple + (exp_id[len(parent_id)+1:], )
        else:
            return (exp_id, )

    # Then for each experiment in the list,
    tuples = [get_experiment_tuple(eid) for eid in experiment_ids]
    de_prefixed_tuples = remove_common_prefix(tuples, keep_base=False)
    start_with = '' if len(de_prefixed_tuples[0])==len(tuples[0]) else '.'
    new_strings = [start_with+'.'.join(ex_tup) for ex_tup in de_prefixed_tuples]
    return new_strings
コード例 #4
0
def remove_common_results_prefix(results_dict):
    """
    Remove the common prefix for the results you are comparing.
    :param results_dict: An OrderedDict of experiment Results
    :return: An OrderedDict of results with the common beginnings of the keys truncated.
    """
    # TODO: Fix this so that it splits correctly, not just on '.', which is not necessarily a separator.
    assert isinstance(dict, OrderedDict), 'Expecting an OrderedDict of <experiment_name -> result>'

    split_keys = [k.split('.') for k in results_dict.keys()]
    trimmed_keys = remove_common_prefix(split_keys)
    return OrderedDict((k, v) for k, v in izip_equal(trimmed_keys, results_dict.values()))
コード例 #5
0
def remove_common_results_prefix(results_dict):
    """
    Remove the common prefix for the results you are comparing.
    :param results_dict: An OrderedDict of experiment Results
    :return: An OrderedDict of results with the common beginnings of the keys truncated.
    """
    # TODO: Fix this so that it splits correctly, not just on '.', which is not necessarily a separator.
    assert isinstance(dict, OrderedDict), 'Expecting an OrderedDict of <experiment_name -> result>'

    split_keys = [k.split('.') for k in results_dict.keys()]
    trimmed_keys = remove_common_prefix(split_keys)
    return OrderedDict((k, v) for k, v in izip_equal(trimmed_keys, results_dict.values()))
コード例 #6
0
def test_remove_common_prefix():
    assert remove_common_prefix([[1, 2, 3, 4], [1, 2, 5], [1, 2, 3, 5]]) == [[3, 4], [5], [3, 5]]
    assert remove_common_prefix([[1, 2, 3, 4], [1, 2, 5], [1, 2, 3, 5]], max_elements=1) == [[2, 3, 4], [2, 5], [2, 3, 5]]