Skip to content

Commit d467e0b

Browse files
Merge pull request #1904 from jeromekelleher/ibd-rename
Rename ibd_segment to identity_segment
2 parents 1fcb3f6 + a6bf3fd commit d467e0b

File tree

9 files changed

+475
-428
lines changed

9 files changed

+475
-428
lines changed

c/tests/test_tables.c

Lines changed: 118 additions & 118 deletions
Large diffs are not rendered by default.

c/tskit/tables.c

Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7149,7 +7149,7 @@ ancestor_mapper_run(ancestor_mapper_t *self)
71497149
* a *very* large node table --- assuming 24 bytes per row
71507150
* it would be at least 67GiB. To make sure this eventuality
71517151
* doesn't happen, we have a tsk_bug_assert in the
7152-
* tsk_ibd_segments_init.
7152+
* tsk_identity_segments_init.
71537153
*/
71547154
static inline int64_t
71557155
pair_to_integer(tsk_id_t a, tsk_id_t b, tsk_size_t N)
@@ -7171,7 +7171,8 @@ integer_to_pair(int64_t index, tsk_size_t N, tsk_id_t *a, tsk_id_t *b)
71717171
}
71727172

71737173
static int64_t
7174-
tsk_ibd_segments_get_key(const tsk_ibd_segments_t *self, tsk_id_t a, tsk_id_t b)
7174+
tsk_identity_segments_get_key(
7175+
const tsk_identity_segments_t *self, tsk_id_t a, tsk_id_t b)
71757176
{
71767177
int64_t ret;
71777178
tsk_id_t N = (tsk_id_t) self->num_nodes;
@@ -7189,11 +7190,11 @@ tsk_ibd_segments_get_key(const tsk_ibd_segments_t *self, tsk_id_t a, tsk_id_t b)
71897190
return ret;
71907191
}
71917192

7192-
static tsk_ibd_segment_t *TSK_WARN_UNUSED
7193-
tsk_ibd_segments_alloc_segment(
7194-
tsk_ibd_segments_t *self, double left, double right, tsk_id_t node)
7193+
static tsk_identity_segment_t *TSK_WARN_UNUSED
7194+
tsk_identity_segments_alloc_segment(
7195+
tsk_identity_segments_t *self, double left, double right, tsk_id_t node)
71957196
{
7196-
tsk_ibd_segment_t *seg = tsk_blkalloc_get(&self->heap, sizeof(*seg));
7197+
tsk_identity_segment_t *seg = tsk_blkalloc_get(&self->heap, sizeof(*seg));
71977198
if (seg == NULL) {
71987199
goto out;
71997200
}
@@ -7209,10 +7210,10 @@ tsk_ibd_segments_alloc_segment(
72097210
}
72107211

72117212
static tsk_avl_node_int_t *
7212-
tsk_ibd_segments_alloc_new_pair(tsk_ibd_segments_t *self, int64_t key)
7213+
tsk_identity_segments_alloc_new_pair(tsk_identity_segments_t *self, int64_t key)
72137214
{
72147215
tsk_avl_node_int_t *avl_node = tsk_blkalloc_get(&self->heap, sizeof(*avl_node));
7215-
tsk_ibd_segment_list_t *list = tsk_blkalloc_get(&self->heap, sizeof(*list));
7216+
tsk_identity_segment_list_t *list = tsk_blkalloc_get(&self->heap, sizeof(*list));
72167217

72177218
if (avl_node == NULL || list == NULL) {
72187219
return NULL;
@@ -7226,8 +7227,8 @@ tsk_ibd_segments_alloc_new_pair(tsk_ibd_segments_t *self, int64_t key)
72267227
/* Deliberately not making this a part of the public interface for now,
72277228
* so we don't have to worry about the signature */
72287229
static int
7229-
tsk_ibd_segments_init(
7230-
tsk_ibd_segments_t *self, tsk_size_t num_nodes, tsk_flags_t options)
7230+
tsk_identity_segments_init(
7231+
tsk_identity_segments_t *self, tsk_size_t num_nodes, tsk_flags_t options)
72317232
{
72327233
int ret = 0;
72337234
/* Make sure we don't overflow in the ID mapping. See the comments in pair_to_integer
@@ -7258,12 +7259,12 @@ tsk_ibd_segments_init(
72587259
}
72597260

72607261
void
7261-
tsk_ibd_segments_print_state(tsk_ibd_segments_t *self, FILE *out)
7262+
tsk_identity_segments_print_state(tsk_identity_segments_t *self, FILE *out)
72627263
{
72637264
tsk_avl_node_int_t **nodes = tsk_malloc(self->pair_map.size * sizeof(*nodes));
72647265
int64_t key;
7265-
tsk_ibd_segment_list_t *value;
7266-
tsk_ibd_segment_t *seg;
7266+
tsk_identity_segment_list_t *value;
7267+
tsk_identity_segment_t *seg;
72677268
tsk_size_t j;
72687269
tsk_id_t a, b;
72697270

@@ -7279,7 +7280,7 @@ tsk_ibd_segments_print_state(tsk_ibd_segments_t *self, FILE *out)
72797280
tsk_avl_tree_int_ordered_nodes(&self->pair_map, nodes);
72807281
for (j = 0; j < self->pair_map.size; j++) {
72817282
key = nodes[j]->key;
7282-
value = (tsk_ibd_segment_list_t *) nodes[j]->value;
7283+
value = (tsk_identity_segment_list_t *) nodes[j]->value;
72837284
integer_to_pair(key, self->num_nodes, &a, &b);
72847285
fprintf(out, "%lld\t(%d,%d) n=%d total_span=%f\t", (long long) key, (int) a,
72857286
(int) b, (int) value->num_segments, value->total_span);
@@ -7298,19 +7299,19 @@ tsk_ibd_segments_print_state(tsk_ibd_segments_t *self, FILE *out)
72987299
}
72997300

73007301
tsk_size_t
7301-
tsk_ibd_segments_get_num_segments(const tsk_ibd_segments_t *self)
7302+
tsk_identity_segments_get_num_segments(const tsk_identity_segments_t *self)
73027303
{
73037304
return self->num_segments;
73047305
}
73057306

73067307
double
7307-
tsk_ibd_segments_get_total_span(const tsk_ibd_segments_t *self)
7308+
tsk_identity_segments_get_total_span(const tsk_identity_segments_t *self)
73087309
{
73097310
return self->total_span;
73107311
}
73117312

73127313
tsk_size_t
7313-
tsk_ibd_segments_get_num_pairs(const tsk_ibd_segments_t *self)
7314+
tsk_identity_segments_get_num_pairs(const tsk_identity_segments_t *self)
73147315
{
73157316
return self->pair_map.size;
73167317
}
@@ -7335,7 +7336,7 @@ get_keys_traverse(tsk_avl_node_int_t *node, int index, tsk_size_t N, tsk_id_t *p
73357336
}
73367337

73377338
int
7338-
tsk_ibd_segments_get_keys(const tsk_ibd_segments_t *self, tsk_id_t *pairs)
7339+
tsk_identity_segments_get_keys(const tsk_identity_segments_t *self, tsk_id_t *pairs)
73397340
{
73407341
if (!self->store_pairs) {
73417342
return TSK_ERR_IBD_PAIRS_NOT_STORED;
@@ -7347,7 +7348,7 @@ tsk_ibd_segments_get_keys(const tsk_ibd_segments_t *self, tsk_id_t *pairs)
73477348

73487349
static int
73497350
get_items_traverse(tsk_avl_node_int_t *node, int index, tsk_size_t N, tsk_id_t *pairs,
7350-
tsk_ibd_segment_list_t **lists)
7351+
tsk_identity_segment_list_t **lists)
73517352
{
73527353
tsk_id_t a, b;
73537354

@@ -7363,8 +7364,8 @@ get_items_traverse(tsk_avl_node_int_t *node, int index, tsk_size_t N, tsk_id_t *
73637364
}
73647365

73657366
int
7366-
tsk_ibd_segments_get_items(
7367-
const tsk_ibd_segments_t *self, tsk_id_t *pairs, tsk_ibd_segment_list_t **lists)
7367+
tsk_identity_segments_get_items(const tsk_identity_segments_t *self, tsk_id_t *pairs,
7368+
tsk_identity_segment_list_t **lists)
73687369
{
73697370
if (!self->store_pairs) {
73707371
return TSK_ERR_IBD_PAIRS_NOT_STORED;
@@ -7375,39 +7376,39 @@ tsk_ibd_segments_get_items(
73757376
}
73767377

73777378
int
7378-
tsk_ibd_segments_free(tsk_ibd_segments_t *self)
7379+
tsk_identity_segments_free(tsk_identity_segments_t *self)
73797380
{
73807381
tsk_blkalloc_free(&self->heap);
73817382
tsk_avl_tree_int_free(&self->pair_map);
73827383
return 0;
73837384
}
73847385

73857386
static int TSK_WARN_UNUSED
7386-
tsk_ibd_segments_update_pair(tsk_ibd_segments_t *self, tsk_id_t a, tsk_id_t b,
7387+
tsk_identity_segments_update_pair(tsk_identity_segments_t *self, tsk_id_t a, tsk_id_t b,
73877388
double left, double right, tsk_id_t node)
73887389
{
73897390
int ret = 0;
7390-
tsk_ibd_segment_t *x;
7391-
tsk_ibd_segment_list_t *list;
7391+
tsk_identity_segment_t *x;
7392+
tsk_identity_segment_list_t *list;
73927393
/* skip the error checking here since this an internal API */
73937394
int64_t key = pair_to_integer(a, b, self->num_nodes);
73947395
tsk_avl_node_int_t *avl_node = tsk_avl_tree_int_search(&self->pair_map, key);
73957396

73967397
if (avl_node == NULL) {
73977398
/* We haven't seen this pair before */
7398-
avl_node = tsk_ibd_segments_alloc_new_pair(self, key);
7399+
avl_node = tsk_identity_segments_alloc_new_pair(self, key);
73997400
if (avl_node == NULL) {
74007401
ret = TSK_ERR_NO_MEMORY;
74017402
goto out;
74027403
}
74037404
ret = tsk_avl_tree_int_insert(&self->pair_map, avl_node);
74047405
tsk_bug_assert(ret == 0);
74057406
}
7406-
list = (tsk_ibd_segment_list_t *) avl_node->value;
7407+
list = (tsk_identity_segment_list_t *) avl_node->value;
74077408
list->num_segments++;
74087409
list->total_span += right - left;
74097410
if (self->store_segments) {
7410-
x = tsk_ibd_segments_alloc_segment(self, left, right, node);
7411+
x = tsk_identity_segments_alloc_segment(self, left, right, node);
74117412
if (x == NULL) {
74127413
goto out;
74137414
}
@@ -7424,13 +7425,13 @@ tsk_ibd_segments_update_pair(tsk_ibd_segments_t *self, tsk_id_t a, tsk_id_t b,
74247425
}
74257426

74267427
static int TSK_WARN_UNUSED
7427-
tsk_ibd_segments_add_segment(tsk_ibd_segments_t *self, tsk_id_t a, tsk_id_t b,
7428+
tsk_identity_segments_add_segment(tsk_identity_segments_t *self, tsk_id_t a, tsk_id_t b,
74287429
double left, double right, tsk_id_t node)
74297430
{
74307431
int ret = 0;
74317432

74327433
if (self->store_pairs) {
7433-
ret = tsk_ibd_segments_update_pair(self, a, b, left, right, node);
7434+
ret = tsk_identity_segments_update_pair(self, a, b, left, right, node);
74347435
if (ret != 0) {
74357436
goto out;
74367437
}
@@ -7442,11 +7443,11 @@ tsk_ibd_segments_add_segment(tsk_ibd_segments_t *self, tsk_id_t a, tsk_id_t b,
74427443
}
74437444

74447445
int TSK_WARN_UNUSED
7445-
tsk_ibd_segments_get(const tsk_ibd_segments_t *self, tsk_id_t sample_a,
7446-
tsk_id_t sample_b, tsk_ibd_segment_list_t **ret_list)
7446+
tsk_identity_segments_get(const tsk_identity_segments_t *self, tsk_id_t sample_a,
7447+
tsk_id_t sample_b, tsk_identity_segment_list_t **ret_list)
74477448
{
74487449
int ret = 0;
7449-
int64_t key = tsk_ibd_segments_get_key(self, sample_a, sample_b);
7450+
int64_t key = tsk_identity_segments_get_key(self, sample_a, sample_b);
74507451
tsk_avl_node_int_t *avl_node;
74517452

74527453
if (key < 0) {
@@ -7460,7 +7461,7 @@ tsk_ibd_segments_get(const tsk_ibd_segments_t *self, tsk_id_t sample_a,
74607461
avl_node = tsk_avl_tree_int_search(&self->pair_map, key);
74617462
*ret_list = NULL;
74627463
if (avl_node != NULL) {
7463-
*ret_list = (tsk_ibd_segment_list_t *) avl_node->value;
7464+
*ret_list = (tsk_identity_segment_list_t *) avl_node->value;
74647465
}
74657466
out:
74667467
return ret;
@@ -7471,7 +7472,7 @@ tsk_ibd_segments_get(const tsk_ibd_segments_t *self, tsk_id_t sample_a,
74717472
*************************/
74727473

74737474
typedef struct {
7474-
tsk_ibd_segments_t *result;
7475+
tsk_identity_segments_t *result;
74757476
double min_length;
74767477
double max_time;
74777478
const tsk_table_collection_t *tables;
@@ -7593,7 +7594,7 @@ tsk_ibd_finder_add_sample_ancestry(tsk_ibd_finder_t *self)
75937594

75947595
static int TSK_WARN_UNUSED
75957596
tsk_ibd_finder_init(tsk_ibd_finder_t *self, const tsk_table_collection_t *tables,
7596-
tsk_ibd_segments_t *result, double min_length, double max_time)
7597+
tsk_identity_segments_t *result, double min_length, double max_time)
75977598
{
75987599
int ret = 0;
75997600
tsk_size_t num_nodes;
@@ -7700,7 +7701,7 @@ tsk_ibd_finder_record_ibd(tsk_ibd_finder_t *self, tsk_id_t parent)
77007701
right = TSK_MIN(seg0->right, seg1->right);
77017702
if (tsk_ibd_finder_passes_filters(
77027703
self, seg0->node, seg1->node, left, right)) {
7703-
ret = tsk_ibd_segments_add_segment(
7704+
ret = tsk_identity_segments_add_segment(
77047705
self->result, seg0->node, seg1->node, left, right, parent);
77057706
if (ret != 0) {
77067707
goto out;
@@ -7761,7 +7762,7 @@ tsk_ibd_finder_print_state(tsk_ibd_finder_t *self, FILE *out)
77617762
}
77627763
fprintf(out, "\n");
77637764
}
7764-
tsk_ibd_segments_print_state(self->result, out);
7765+
tsk_identity_segments_print_state(self->result, out);
77657766
}
77667767

77677768
static int TSK_WARN_UNUSED
@@ -10652,13 +10653,13 @@ tsk_table_collection_link_ancestors(tsk_table_collection_t *self, tsk_id_t *samp
1065210653

1065310654
int TSK_WARN_UNUSED
1065410655
tsk_table_collection_ibd_within(const tsk_table_collection_t *self,
10655-
tsk_ibd_segments_t *result, const tsk_id_t *samples, tsk_size_t num_samples,
10656+
tsk_identity_segments_t *result, const tsk_id_t *samples, tsk_size_t num_samples,
1065610657
double min_length, double max_time, tsk_flags_t options)
1065710658
{
1065810659
int ret = 0;
1065910660
tsk_ibd_finder_t ibd_finder;
1066010661

10661-
ret = tsk_ibd_segments_init(result, self->nodes.num_rows, options);
10662+
ret = tsk_identity_segments_init(result, self->nodes.num_rows, options);
1066210663
if (ret != 0) {
1066310664
goto out;
1066410665
}
@@ -10684,14 +10685,14 @@ tsk_table_collection_ibd_within(const tsk_table_collection_t *self,
1068410685

1068510686
int TSK_WARN_UNUSED
1068610687
tsk_table_collection_ibd_between(const tsk_table_collection_t *self,
10687-
tsk_ibd_segments_t *result, tsk_size_t num_sample_sets,
10688+
tsk_identity_segments_t *result, tsk_size_t num_sample_sets,
1068810689
const tsk_size_t *sample_set_sizes, const tsk_id_t *sample_sets, double min_length,
1068910690
double max_time, tsk_flags_t options)
1069010691
{
1069110692
int ret = 0;
1069210693
tsk_ibd_finder_t ibd_finder;
1069310694

10694-
ret = tsk_ibd_segments_init(result, self->nodes.num_rows, options);
10695+
ret = tsk_identity_segments_init(result, self->nodes.num_rows, options);
1069510696
if (ret != 0) {
1069610697
goto out;
1069710698
}

c/tskit/tables.h

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -622,24 +622,24 @@ typedef struct _tsk_table_sorter_t {
622622
* */
623623

624624
/* Note for tskit developers: it's perhaps a bit confusing/pointless to
625-
* have the tsk_ibd_segment_t struct as well as the internal tsk_segment_t
625+
* have the tsk_identity_segment_t struct as well as the internal tsk_segment_t
626626
* struct (which is identical). However, we may want to implement either
627-
* segment type differently in future, and since the tsk_ibd_segment_t
627+
* segment type differently in future, and since the tsk_identity_segment_t
628628
* is part of the public API we want to allow the freedom for the different
629629
* structures to evolve over time */
630-
typedef struct _tsk_ibd_segment_t {
630+
typedef struct _tsk_identity_segment_t {
631631
double left;
632632
double right;
633-
struct _tsk_ibd_segment_t *next;
633+
struct _tsk_identity_segment_t *next;
634634
tsk_id_t node;
635-
} tsk_ibd_segment_t;
635+
} tsk_identity_segment_t;
636636

637637
typedef struct {
638638
tsk_size_t num_segments;
639639
double total_span;
640-
tsk_ibd_segment_t *head;
641-
tsk_ibd_segment_t *tail;
642-
} tsk_ibd_segment_list_t;
640+
tsk_identity_segment_t *head;
641+
tsk_identity_segment_t *tail;
642+
} tsk_identity_segment_list_t;
643643

644644
typedef struct {
645645
tsk_size_t num_nodes;
@@ -649,7 +649,7 @@ typedef struct {
649649
tsk_blkalloc_t heap;
650650
bool store_segments;
651651
bool store_pairs;
652-
} tsk_ibd_segments_t;
652+
} tsk_identity_segments_t;
653653

654654
/****************************************************************************/
655655
/* Common function options */
@@ -4086,11 +4086,11 @@ tsk_id_t tsk_table_collection_check_integrity(
40864086
/* FIXME the order of num_samples and samples needs to be reversed in within.
40874087
* This should be done as part of documenting, I guess. */
40884088
int tsk_table_collection_ibd_within(const tsk_table_collection_t *self,
4089-
tsk_ibd_segments_t *result, const tsk_id_t *samples, tsk_size_t num_samples,
4089+
tsk_identity_segments_t *result, const tsk_id_t *samples, tsk_size_t num_samples,
40904090
double min_length, double max_time, tsk_flags_t options);
40914091

40924092
int tsk_table_collection_ibd_between(const tsk_table_collection_t *self,
4093-
tsk_ibd_segments_t *result, tsk_size_t num_sample_sets,
4093+
tsk_identity_segments_t *result, tsk_size_t num_sample_sets,
40944094
const tsk_size_t *sample_set_sizes, const tsk_id_t *sample_sets, double min_length,
40954095
double max_time, tsk_flags_t options);
40964096

@@ -4185,16 +4185,17 @@ int tsk_squash_edges(
41854185

41864186
/* IBD segments API. This is experimental and the interface may change. */
41874187

4188-
tsk_size_t tsk_ibd_segments_get_num_segments(const tsk_ibd_segments_t *self);
4189-
double tsk_ibd_segments_get_total_span(const tsk_ibd_segments_t *self);
4190-
tsk_size_t tsk_ibd_segments_get_num_pairs(const tsk_ibd_segments_t *self);
4191-
int tsk_ibd_segments_get_keys(const tsk_ibd_segments_t *result, tsk_id_t *pairs);
4192-
int tsk_ibd_segments_get_items(
4193-
const tsk_ibd_segments_t *self, tsk_id_t *pairs, tsk_ibd_segment_list_t **lists);
4194-
int tsk_ibd_segments_get(const tsk_ibd_segments_t *self, tsk_id_t a, tsk_id_t b,
4195-
tsk_ibd_segment_list_t **ret_list);
4196-
void tsk_ibd_segments_print_state(tsk_ibd_segments_t *self, FILE *out);
4197-
int tsk_ibd_segments_free(tsk_ibd_segments_t *self);
4188+
tsk_size_t tsk_identity_segments_get_num_segments(const tsk_identity_segments_t *self);
4189+
double tsk_identity_segments_get_total_span(const tsk_identity_segments_t *self);
4190+
tsk_size_t tsk_identity_segments_get_num_pairs(const tsk_identity_segments_t *self);
4191+
int tsk_identity_segments_get_keys(
4192+
const tsk_identity_segments_t *result, tsk_id_t *pairs);
4193+
int tsk_identity_segments_get_items(const tsk_identity_segments_t *self, tsk_id_t *pairs,
4194+
tsk_identity_segment_list_t **lists);
4195+
int tsk_identity_segments_get(const tsk_identity_segments_t *self, tsk_id_t a,
4196+
tsk_id_t b, tsk_identity_segment_list_t **ret_list);
4197+
void tsk_identity_segments_print_state(tsk_identity_segments_t *self, FILE *out);
4198+
int tsk_identity_segments_free(tsk_identity_segments_t *self);
41984199

41994200
#ifdef __cplusplus
42004201
}

0 commit comments

Comments
 (0)