Ejemplo n.º 1
0
def seperate_parents_and_children(feature_db, parent_types_to_lift):
    c = feature_db.conn.cursor()
    relations = [
        list(feature) for feature in c.execute(
            '''SELECT * FROM relations join features as a on 
    a.id = relations.parent join features as b on b.id = relations.child''')
        if feature[0] != feature[1]
    ]
    all_ids = [
        list(feature)[0] for feature in c.execute('''SELECT * FROM features''')
    ]
    all_children_ids = [relation[1] for relation in relations]
    all_parent_ids = [relation[0] for relation in relations]
    lowest_children = np.setdiff1d(all_ids, all_parent_ids)
    highest_parents = np.setdiff1d(all_ids, all_children_ids)
    intermediates = set(all_children_ids).intersection(set(all_parent_ids))
    parent_dict, child_dict, intermediate_dict = {}, {}, {}
    add_parents(parent_dict, child_dict, highest_parents, parent_types_to_lift,
                feature_db)
    add_children(parent_dict, child_dict, lowest_children, feature_db)
    add_intermediates(intermediates, intermediate_dict, feature_db)
    parent_order = liftoff_utils.find_parent_order([
        parent for parent in list(parent_dict.values()) if parent is not None
    ])
    ref_feature_hierarchy = feature_hierarchy.feature_hierarchy(
        parent_dict, intermediate_dict, child_dict)
    return ref_feature_hierarchy, parent_order
Ejemplo n.º 2
0
def seperate_parents_and_children(feature_db, parent_types_to_lift):
    parent_dict, child_dict, intermediate_dict = {}, {}, {}
    feature_types = feature_db.featuretypes()
    parent_types, child_types, intermediate_types = find_feature_type_hierarchy(feature_types, feature_db)
    filtered_parents = [parent for parent in parent_types if parent in parent_types_to_lift]
    for parent_type in filtered_parents:
        for parent in feature_db.features_of_type(featuretype=parent_type):
            add_parent(parent_dict, parent, child_dict)
            add_children(child_types, parent, feature_db, child_dict)
    add_intermediates(intermediate_types, intermediate_dict, feature_db)
    parent_order = liftoff_utils.find_parent_order(
        [parent for parent in list(parent_dict.values()) if parent is not None])
    ref_feature_hierarchy = feature_hierarchy.feature_hierarchy(parent_dict, intermediate_dict, child_dict)
    return ref_feature_hierarchy, parent_order