Skip to content

Commit

Permalink
only have one edge table around
Browse files Browse the repository at this point in the history
  • Loading branch information
petrelharp committed Aug 3, 2023
1 parent a91f6ea commit 811453d
Showing 1 changed file with 17 additions and 20 deletions.
37 changes: 17 additions & 20 deletions c/tskit/tables.c
Original file line number Diff line number Diff line change
Expand Up @@ -12420,6 +12420,10 @@ forward_extend(tsk_table_collection_t *self, int direction)
if (ret != 0) {
goto out;
}
ret = tsk_edge_table_clear(&self->edges);
if (ret != 0) {
goto out;
}

ret = tsk_blkalloc_init(&edge_list_heap, 8192);
if (ret != 0) {
Expand All @@ -12431,8 +12435,8 @@ forward_extend(tsk_table_collection_t *self, int direction)
here = 0;
sign = 1;
sign_int = 1;
near_side = self->edges.left;
far_side = self->edges.right;
near_side = edges.left;
far_side = edges.right;
tj = 0;
tk = 0;
} else {
Expand All @@ -12441,12 +12445,11 @@ forward_extend(tsk_table_collection_t *self, int direction)
here = self->sequence_length;
sign = -1;
sign_int = -1;
near_side = self->edges.right;
far_side = self->edges.left;
near_side = edges.right;
far_side = edges.left;
tj = M - 1;
tk = M - 1;
}
left = 0;
edges_in_head = NULL;
edges_in_tail = NULL;
edges_out_head = NULL;
Expand All @@ -12470,8 +12473,8 @@ forward_extend(tsk_table_collection_t *self, int direction)
y->next = x;
}
edges_out_tail = x;
num_edges[self->edges.parent[O[tk]]] -= 1;
num_edges[self->edges.child[O[tk]]] -= 1;
num_edges[edges.parent[O[tk]]] -= 1;
num_edges[edges.child[O[tk]]] -= 1;
tk += sign_int;
}
while (((tj < M) && (tj >= 0)) && (near_side[I[tj]] == here)) {
Expand All @@ -12488,8 +12491,8 @@ forward_extend(tsk_table_collection_t *self, int direction)
y->next = x;
}
edges_in_tail = x;
num_edges[self->edges.parent[I[tj]]] += 1;
num_edges[self->edges.child[I[tj]]] += 1;
num_edges[edges.parent[I[tj]]] += 1;
num_edges[edges.child[I[tj]]] += 1;
tj += sign_int;
}
there = forwards ? self->sequence_length : 0;
Expand All @@ -12516,16 +12519,14 @@ forward_extend(tsk_table_collection_t *self, int direction)
for (ex2 = edges_out_head; ex2 != NULL; ex2 = ex2->next) {
if (!ex2->extended) {
e2 = ex2->edge;
if ((self->edges.parent[e1] == self->edges.child[e2])
&& (num_edges[self->edges.child[e2]] == 0)) {
if ((edges.parent[e1] == edges.child[e2])
&& (num_edges[edges.child[e2]] == 0)) {
for (ex_in = edges_in_head; ex_in != NULL;
ex_in = ex_in->next) {
e_in = ex_in->edge;
if (sign * far_side[e_in] > sign * here) {
if ((self->edges.child[e1]
== self->edges.child[e_in])
&& (self->edges.parent[e2]
== self->edges.parent[e_in])) {
if ((edges.child[e1] == edges.child[e_in])
&& (edges.parent[e2] == edges.parent[e_in])) {
ex1->extended = true;
ex2->extended = true;
ex_in->extended = true;
Expand All @@ -12538,7 +12539,7 @@ forward_extend(tsk_table_collection_t *self, int direction)
edges.left[e2] = there;
edges.right[e_in] = there;
}
num_edges[self->edges.parent[e1]] += 2;
num_edges[edges.parent[e1]] += 2;
}
}
}
Expand All @@ -12552,10 +12553,6 @@ forward_extend(tsk_table_collection_t *self, int direction)
}

// done! write out new edge tables
ret = tsk_edge_table_clear(&self->edges);
if (ret != 0) {
goto out;
}
for (tj = 0; tj < (tsk_id_t) edges.num_rows; tj++) {
tsk_edge_table_get_row_unsafe(&edges, tj, &edge);
if (edge.left < edge.right) {
Expand Down

0 comments on commit 811453d

Please sign in to comment.