Esempio n. 1
0
def intialize_graph():
    aln_graph = nx.DiGraph()
    node_dict = {}
    node_dict[0] = aligned_seg.aligned_seg("start", "start", "start", -1, -1,
                                           -1, -1, -1, [])
    aln_graph.add_node(0)
    return node_dict, aln_graph
Esempio n. 2
0
def add_target_node(aln_graph, node_dict, query_length, children_coords, parent):
    num_nodes = max(node_dict.keys())
    node_dict[num_nodes + 1] = aligned_seg.aligned_seg("end", "end", "end", query_length - 1, query_length - 1,
                                                       query_length - 1,
                                                       query_length - 1, 0, [])
    for node_name in node_dict:
        if is_terminal_node(node_name, aln_graph):
            edge_weight = get_edge_weight(node_dict[node_name], node_dict[num_nodes + 1], children_coords, parent)
            aln_graph.add_edge(node_name, num_nodes + 1, cost=edge_weight)
Esempio n. 3
0
def add_block(query_block_pos, reference_block_pos, aln_id, alignment, query_block_start, reference_block_start,
              mismatches, new_blocks, merged_children_coords, parent):
    query_block_end = query_block_pos - 1
    reference_block_end = reference_block_pos - 1
    new_block = aligned_seg.aligned_seg(aln_id, alignment.query_name, alignment.reference_name, query_block_start,
                                        query_block_end,
                                        reference_block_start, reference_block_end, alignment.is_reverse,
                                        np.array(mismatches).astype(int))
    if contains_child(new_block, merged_children_coords, parent):
        new_blocks.append(new_block)
Esempio n. 4
0
def update_coords(ref_start, ref_end, aln):
    start_diff = ref_start - aln.reference_block_start
    end_diff = aln.reference_block_end - ref_end
    if ref_start != aln.reference_block_start or ref_end != aln.reference_block_end:
        new_query_start = aln.query_block_start + start_diff
        new_query_end = aln.query_block_end - end_diff
        new_aln = aligned_seg.aligned_seg(aln.aln_id, aln.query_name, aln.reference_name, new_query_start,
                                          new_query_end, ref_start, ref_end, aln.is_reverse, aln.mismatches)
    else:
        new_aln = aln
    return new_aln