def prune_last_jd()

in reference/src/main/python/similar.py [0:0]


def prune_last_jd(records, record2):
    other_features = [Counter(record["features"]) for record in records]
    ast = record2["ast"]
    leaf_features, leaf_pair_features = collect_features_as_list(ast, False, True)
    out_features = [None] * len(leaf_features)
    current_features = Counter()
    current_leaf_indices = []
    for features1 in other_features:
        score = distance(features1, current_features)
        done = False
        while not done:
            max = score
            max_idx = None
            i = 0
            for leaf_feature in leaf_features:
                if leaf_feature is not None:
                    new_features = current_features + leaf_feature
                    #                    add_pair_features(new_features, leaf_pair_features, i, current_leaf_indices)
                    tmp = distance(features1, new_features)
                    if tmp > max:
                        max = tmp
                        max_idx = i
                i += 1
            if max_idx is not None:
                score = max
                out_features[max_idx] = leaf_features[max_idx]
                current_features = current_features + leaf_features[max_idx]
                #                add_pair_features(current_features, leaf_pair_features, max_idx, current_leaf_indices)
                current_leaf_indices.append(max_idx)
                leaf_features[max_idx] = None
            else:
                done = True
    global leaf_idx
    leaf_idx = 0
    pruned_ast = prune_ast(ast, out_features)[1]
    pruned_features = collect_features_as_list(pruned_ast, False, False)[0]
    return copy_record(record2, pruned_ast, pruned_features)