Skip to content

Commit 0538515

Browse files
ivan-krukovbenjeffery
authored andcommitted
Add parents column to individual table
1 parent aa7509d commit 0538515

File tree

14 files changed

+476
-112
lines changed

14 files changed

+476
-112
lines changed

c/tests/test_tables.c

Lines changed: 51 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ test_table_collection_equals_options(void)
131131
CU_ASSERT(ret >= 0);
132132
ret = tsk_node_table_add_row(&tc1.nodes, TSK_NODE_IS_SAMPLE, 1.0, 0, 0, NULL, 0);
133133
CU_ASSERT(ret >= 0);
134-
ret = tsk_individual_table_add_row(&tc1.individuals, 0, NULL, 0, NULL, 0);
134+
ret = tsk_individual_table_add_row(&tc1.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
135135
CU_ASSERT(ret >= 0);
136136
ret = tsk_population_table_add_row(&tc1.populations, NULL, 0);
137137
CU_ASSERT(ret >= 0);
@@ -2088,12 +2088,13 @@ test_individual_table(void)
20882088
tsk_individual_table_set_max_rows_increment(&table, 1);
20892089
tsk_individual_table_set_max_metadata_length_increment(&table, 1);
20902090
tsk_individual_table_set_max_location_length_increment(&table, 1);
2091+
tsk_individual_table_set_max_parents_length_increment(&table, 1);
20912092

20922093
tsk_individual_table_print_state(&table, _devnull);
20932094

20942095
for (j = 0; j < (tsk_id_t) num_rows; j++) {
20952096
ret = tsk_individual_table_add_row(&table, (tsk_flags_t) j, test_location,
2096-
spatial_dimension, test_metadata, test_metadata_length);
2097+
spatial_dimension, NULL, 0, test_metadata, test_metadata_length);
20972098
CU_ASSERT_EQUAL_FATAL(ret, j);
20982099
CU_ASSERT_EQUAL(table.flags[j], (tsk_flags_t) j);
20992100
for (k = 0; k < spatial_dimension; k++) {
@@ -2172,8 +2173,8 @@ test_individual_table(void)
21722173
for (j = 0; j < (tsk_id_t) num_rows + 1; j++) {
21732174
metadata_offset[j] = (tsk_size_t) j;
21742175
}
2175-
ret = tsk_individual_table_set_columns(
2176-
&table, num_rows, flags, location, location_offset, metadata, metadata_offset);
2176+
ret = tsk_individual_table_set_columns(&table, num_rows, flags, location,
2177+
location_offset, NULL, NULL, metadata, metadata_offset);
21772178
CU_ASSERT_EQUAL(ret, 0);
21782179
CU_ASSERT_EQUAL(memcmp(table.flags, flags, num_rows * sizeof(uint32_t)), 0);
21792180
CU_ASSERT_EQUAL(
@@ -2192,8 +2193,8 @@ test_individual_table(void)
21922193
tsk_individual_table_print_state(&table, _devnull);
21932194

21942195
/* Append another num_rows onto the end */
2195-
ret = tsk_individual_table_append_columns(
2196-
&table, num_rows, flags, location, location_offset, metadata, metadata_offset);
2196+
ret = tsk_individual_table_append_columns(&table, num_rows, flags, location,
2197+
location_offset, NULL, NULL, metadata, metadata_offset);
21972198
CU_ASSERT_EQUAL(ret, 0);
21982199
CU_ASSERT_EQUAL(memcmp(table.flags, flags, num_rows * sizeof(uint32_t)), 0);
21992200
CU_ASSERT_EQUAL(
@@ -2235,38 +2236,39 @@ test_individual_table(void)
22352236
ret = tsk_individual_table_truncate(&table, num_rows + 1);
22362237
CU_ASSERT_EQUAL_FATAL(ret, TSK_ERR_BAD_TABLE_POSITION);
22372238

2239+
// TODO: add tests for parent spec
22382240
/* flags can't be NULL */
2239-
ret = tsk_individual_table_set_columns(
2240-
&table, num_rows, NULL, location, location_offset, metadata, metadata_offset);
2241+
ret = tsk_individual_table_set_columns(&table, num_rows, NULL, location,
2242+
location_offset, NULL, NULL, metadata, metadata_offset);
22412243
CU_ASSERT_EQUAL(ret, TSK_ERR_BAD_PARAM_VALUE);
22422244
/* location and location offset must be simultaneously NULL or not */
22432245
ret = tsk_individual_table_set_columns(
2244-
&table, num_rows, flags, location, NULL, metadata, metadata_offset);
2246+
&table, num_rows, flags, location, NULL, NULL, NULL, metadata, metadata_offset);
22452247
CU_ASSERT_EQUAL(ret, TSK_ERR_BAD_PARAM_VALUE);
2246-
ret = tsk_individual_table_set_columns(
2247-
&table, num_rows, flags, NULL, location_offset, metadata, metadata_offset);
2248+
ret = tsk_individual_table_set_columns(&table, num_rows, flags, NULL,
2249+
location_offset, NULL, NULL, metadata, metadata_offset);
22482250
CU_ASSERT_EQUAL(ret, TSK_ERR_BAD_PARAM_VALUE);
22492251
/* metadata and metadata offset must be simultaneously NULL or not */
2250-
ret = tsk_individual_table_set_columns(
2251-
&table, num_rows, flags, location, location_offset, NULL, metadata_offset);
2252+
ret = tsk_individual_table_set_columns(&table, num_rows, flags, location,
2253+
location_offset, NULL, NULL, NULL, metadata_offset);
22522254
CU_ASSERT_EQUAL(ret, TSK_ERR_BAD_PARAM_VALUE);
22532255
ret = tsk_individual_table_set_columns(
2254-
&table, num_rows, flags, location, location_offset, metadata, NULL);
2256+
&table, num_rows, flags, location, location_offset, NULL, NULL, metadata, NULL);
22552257
CU_ASSERT_EQUAL(ret, TSK_ERR_BAD_PARAM_VALUE);
22562258

22572259
/* if location and location_offset are both null, all locations are zero length */
22582260
num_rows = 10;
22592261
memset(location_offset, 0, (num_rows + 1) * sizeof(tsk_size_t));
22602262
ret = tsk_individual_table_set_columns(
2261-
&table, num_rows, flags, NULL, NULL, NULL, NULL);
2263+
&table, num_rows, flags, NULL, NULL, NULL, NULL, NULL, NULL);
22622264
CU_ASSERT_EQUAL(ret, 0);
22632265
CU_ASSERT_EQUAL(memcmp(table.location_offset, location_offset,
22642266
(num_rows + 1) * sizeof(tsk_size_t)),
22652267
0);
22662268
CU_ASSERT_EQUAL(table.num_rows, num_rows);
22672269
CU_ASSERT_EQUAL(table.location_length, 0);
22682270
ret = tsk_individual_table_append_columns(
2269-
&table, num_rows, flags, NULL, NULL, NULL, NULL);
2271+
&table, num_rows, flags, NULL, NULL, NULL, NULL, NULL, NULL);
22702272
CU_ASSERT_EQUAL(ret, 0);
22712273
CU_ASSERT_EQUAL(memcmp(table.location_offset, location_offset,
22722274
(num_rows + 1) * sizeof(tsk_size_t)),
@@ -2284,7 +2286,7 @@ test_individual_table(void)
22842286
num_rows = 10;
22852287
memset(metadata_offset, 0, (num_rows + 1) * sizeof(tsk_size_t));
22862288
ret = tsk_individual_table_set_columns(
2287-
&table, num_rows, flags, location, location_offset, NULL, NULL);
2289+
&table, num_rows, flags, location, location_offset, NULL, NULL, NULL, NULL);
22882290
CU_ASSERT_EQUAL(ret, 0);
22892291
CU_ASSERT_EQUAL(memcmp(table.flags, flags, num_rows * sizeof(uint32_t)), 0);
22902292
CU_ASSERT_EQUAL(
@@ -2296,7 +2298,7 @@ test_individual_table(void)
22962298
CU_ASSERT_EQUAL(table.num_rows, num_rows);
22972299
CU_ASSERT_EQUAL(table.metadata_length, 0);
22982300
ret = tsk_individual_table_append_columns(
2299-
&table, num_rows, flags, location, location_offset, NULL, NULL);
2301+
&table, num_rows, flags, location, location_offset, NULL, NULL, NULL, NULL);
23002302
CU_ASSERT_EQUAL(ret, 0);
23012303
CU_ASSERT_EQUAL(
23022304
memcmp(table.location, location, spatial_dimension * num_rows * sizeof(double)),
@@ -4311,7 +4313,7 @@ test_table_overflow(void)
43114313
/* Simulate overflows */
43124314
tables.individuals.max_rows = max_rows;
43134315
tables.individuals.num_rows = max_rows;
4314-
ret = tsk_individual_table_add_row(&tables.individuals, 0, 0, 0, NULL, 0);
4316+
ret = tsk_individual_table_add_row(&tables.individuals, 0, 0, 0, NULL, 0, NULL, 0);
43154317
CU_ASSERT_EQUAL_FATAL(ret, TSK_ERR_TABLE_OVERFLOW);
43164318

43174319
tables.nodes.max_rows = max_rows;
@@ -4366,13 +4368,17 @@ test_column_overflow(void)
43664368

43674369
/* We can't trigger a column overflow with one element because the parameter
43684370
* value is 32 bit */
4369-
ret = tsk_individual_table_add_row(&tables.individuals, 0, &zero, 1, NULL, 0);
4371+
ret = tsk_individual_table_add_row(
4372+
&tables.individuals, 0, &zero, 1, NULL, 0, NULL, 0);
43704373
CU_ASSERT_EQUAL_FATAL(ret, 0);
4371-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, too_big, NULL, 0);
4374+
ret = tsk_individual_table_add_row(
4375+
&tables.individuals, 0, NULL, too_big, NULL, 0, NULL, 0);
43724376
CU_ASSERT_EQUAL_FATAL(ret, TSK_ERR_COLUMN_OVERFLOW);
4373-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, zeros, 1);
4377+
ret = tsk_individual_table_add_row(
4378+
&tables.individuals, 0, NULL, 0, NULL, 0, zeros, 1);
43744379
CU_ASSERT_EQUAL_FATAL(ret, 1);
4375-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, too_big);
4380+
ret = tsk_individual_table_add_row(
4381+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, too_big);
43764382
CU_ASSERT_EQUAL_FATAL(ret, TSK_ERR_COLUMN_OVERFLOW);
43774383

43784384
ret = tsk_node_table_add_row(&tables.nodes, 0, 0, 0, 0, zeros, 1);
@@ -4925,9 +4931,11 @@ test_table_collection_subset_with_options(tsk_flags_t options)
49254931
ret = tsk_node_table_add_row(
49264932
&tables.nodes, TSK_NODE_IS_SAMPLE, 0.0, TSK_NULL, 1, NULL, 0);
49274933
CU_ASSERT_FATAL(ret >= 0);
4928-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
4934+
ret = tsk_individual_table_add_row(
4935+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
49294936
CU_ASSERT_FATAL(ret >= 0);
4930-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
4937+
ret = tsk_individual_table_add_row(
4938+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
49314939
CU_ASSERT_FATAL(ret >= 0);
49324940
ret = tsk_population_table_add_row(&tables.populations, NULL, 0);
49334941
CU_ASSERT_FATAL(ret >= 0);
@@ -5018,9 +5026,11 @@ test_table_collection_subset_errors(void)
50185026
ret = tsk_node_table_add_row(
50195027
&tables.nodes, TSK_NODE_IS_SAMPLE, 0.0, TSK_NULL, 1, NULL, 0);
50205028
CU_ASSERT_FATAL(ret >= 0);
5021-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5029+
ret = tsk_individual_table_add_row(
5030+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
50225031
CU_ASSERT_FATAL(ret >= 0);
5023-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5032+
ret = tsk_individual_table_add_row(
5033+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
50245034
CU_ASSERT_FATAL(ret >= 0);
50255035
ret = tsk_population_table_add_row(&tables.populations, NULL, 0);
50265036
CU_ASSERT_FATAL(ret >= 0);
@@ -5106,11 +5116,14 @@ test_table_collection_union(void)
51065116
CU_ASSERT_FATAL(ret >= 0);
51075117
ret = tsk_node_table_add_row(&tables.nodes, TSK_NODE_IS_SAMPLE, 0.5, 1, 2, NULL, 0);
51085118
CU_ASSERT_FATAL(ret >= 0);
5109-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5119+
ret = tsk_individual_table_add_row(
5120+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
51105121
CU_ASSERT_FATAL(ret >= 0);
5111-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5122+
ret = tsk_individual_table_add_row(
5123+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
51125124
CU_ASSERT_FATAL(ret >= 0);
5113-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5125+
ret = tsk_individual_table_add_row(
5126+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
51145127
CU_ASSERT_FATAL(ret >= 0);
51155128
ret = tsk_population_table_add_row(&tables.populations, NULL, 0);
51165129
CU_ASSERT_FATAL(ret >= 0);
@@ -5220,9 +5233,11 @@ test_table_collection_union_errors(void)
52205233
CU_ASSERT_FATAL(ret >= 0);
52215234
ret = tsk_node_table_add_row(&tables.nodes, TSK_NODE_IS_SAMPLE, 0.5, 1, 1, NULL, 0);
52225235
CU_ASSERT_FATAL(ret >= 0);
5223-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5236+
ret = tsk_individual_table_add_row(
5237+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
52245238
CU_ASSERT_FATAL(ret >= 0);
5225-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5239+
ret = tsk_individual_table_add_row(
5240+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
52265241
CU_ASSERT_FATAL(ret >= 0);
52275242
ret = tsk_population_table_add_row(&tables.populations, NULL, 0);
52285243
CU_ASSERT_FATAL(ret >= 0);
@@ -5311,9 +5326,11 @@ test_table_collection_clear_with_options(tsk_flags_t options)
53115326
CU_ASSERT_FATAL(ret >= 0);
53125327
ret = tsk_node_table_add_row(&tables.nodes, TSK_NODE_IS_SAMPLE, 0.5, 1, 1, NULL, 0);
53135328
CU_ASSERT_FATAL(ret >= 0);
5314-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5329+
ret = tsk_individual_table_add_row(
5330+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
53155331
CU_ASSERT_FATAL(ret >= 0);
5316-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
5332+
ret = tsk_individual_table_add_row(
5333+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
53175334
CU_ASSERT_FATAL(ret >= 0);
53185335
ret = tsk_population_table_add_row(&tables.populations, NULL, 0);
53195336
CU_ASSERT_FATAL(ret >= 0);

c/tests/test_trees.c

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,11 +1074,11 @@ test_simplest_unary_with_individuals(void)
10741074
"0 2 4 2,3\n"
10751075
"0 1 5 4\n"
10761076
"1 2 6 4\n";
1077-
const char *individuals = "0 0.5\n"
1078-
"0 1.5,3.1\n"
1079-
"0 2.1\n"
1080-
"0 3.2\n"
1081-
"0 4.2\n";
1077+
const char *individuals = "0 0.5 -1,-1\n"
1078+
"0 1.5,3.1 -1,-1\n"
1079+
"0 2.1 -1,-1\n"
1080+
"0 3.2 -1,-1\n"
1081+
"0 4.2 -1,-1\n";
10821082
const char *nodes_expect = "1 0 0 -1\n"
10831083
"1 0 0 0\n"
10841084
"0 1 0 1\n"
@@ -1089,10 +1089,10 @@ test_simplest_unary_with_individuals(void)
10891089
"2 3 3 1\n"
10901090
"0 2 4 0,2\n"
10911091
"1 2 5 4\n";
1092-
const char *individuals_expect = "0 0.5\n"
1093-
"0 1.5,3.1\n"
1094-
"0 2.1\n"
1095-
"0 3.2\n";
1092+
const char *individuals_expect = "0 0.5 -1,-1\n"
1093+
"0 1.5,3.1 -1,-1\n"
1094+
"0 2.1 -1,-1\n"
1095+
"0 3.2 -1,-1\n";
10961096
tsk_treeseq_t ts, simplified, expected;
10971097
tsk_id_t sample_ids[] = { 0, 1 };
10981098

@@ -1887,28 +1887,32 @@ test_simplest_final_gap_tsk_treeseq_mutation_parents(void)
18871887
static void
18881888
test_simplest_individuals(void)
18891889
{
1890-
const char *individuals = "1 0.25\n"
1891-
"2 0.5,0.25\n";
1890+
const char *individuals = "1 0.25 -1,-1\n"
1891+
"2 0.5,0.25 -1,-1\n"
1892+
"3 0.3 0,1\n";
18921893
const char *nodes = "1 0 -1 -1\n"
18931894
"1 0 -1 1\n"
18941895
"0 0 -1 -1\n"
18951896
"1 0 -1 0\n"
1896-
"0 0 -1 1\n";
1897+
"0 0 -1 1\n"
1898+
"0 0 -1 2\n";
18971899
tsk_table_collection_t tables;
18981900
tsk_treeseq_t ts;
18991901
tsk_node_t node;
19001902
tsk_individual_t individual;
19011903
tsk_flags_t load_flags = TSK_BUILD_INDEXES;
19021904
int ret;
1905+
tsk_id_t pat_id, mat_id;
19031906

19041907
ret = tsk_table_collection_init(&tables, 0);
19051908
CU_ASSERT_EQUAL_FATAL(ret, 0);
19061909

19071910
tables.sequence_length = 1.0;
19081911
parse_individuals(individuals, &tables.individuals);
1909-
CU_ASSERT_EQUAL_FATAL(tables.individuals.num_rows, 2);
1912+
CU_ASSERT_EQUAL_FATAL(tables.individuals.num_rows, 3);
1913+
19101914
parse_nodes(nodes, &tables.nodes);
1911-
CU_ASSERT_EQUAL_FATAL(tables.nodes.num_rows, 5);
1915+
CU_ASSERT_EQUAL_FATAL(tables.nodes.num_rows, 6);
19121916

19131917
ret = tsk_treeseq_init(&ts, &tables, TSK_BUILD_INDEXES);
19141918
CU_ASSERT_EQUAL_FATAL(ret, 0);
@@ -1927,6 +1931,10 @@ test_simplest_individuals(void)
19271931
CU_ASSERT_EQUAL_FATAL(individual.flags, 1);
19281932
CU_ASSERT_EQUAL_FATAL(individual.location_length, 1);
19291933
CU_ASSERT_EQUAL_FATAL(individual.location[0], 0.25);
1934+
CU_ASSERT_EQUAL_FATAL(individual.parents_length, 2);
1935+
CU_ASSERT_EQUAL_FATAL(individual.parents[0], -1);
1936+
CU_ASSERT_EQUAL_FATAL(individual.parents[1], -1);
1937+
pat_id = individual.id;
19301938
CU_ASSERT_EQUAL_FATAL(individual.nodes_length, 1);
19311939
CU_ASSERT_EQUAL_FATAL(individual.nodes[0], 3);
19321940

@@ -1937,10 +1945,26 @@ test_simplest_individuals(void)
19371945
CU_ASSERT_EQUAL_FATAL(individual.location_length, 2);
19381946
CU_ASSERT_EQUAL_FATAL(individual.location[0], 0.5);
19391947
CU_ASSERT_EQUAL_FATAL(individual.location[1], 0.25);
1948+
CU_ASSERT_EQUAL_FATAL(individual.parents_length, 2);
1949+
CU_ASSERT_EQUAL_FATAL(individual.parents[0], -1);
1950+
CU_ASSERT_EQUAL_FATAL(individual.parents[1], -1);
1951+
mat_id = individual.id;
19401952
CU_ASSERT_EQUAL_FATAL(individual.nodes_length, 2);
19411953
CU_ASSERT_EQUAL_FATAL(individual.nodes[0], 1);
19421954
CU_ASSERT_EQUAL_FATAL(individual.nodes[1], 4);
19431955

1956+
ret = tsk_treeseq_get_individual(&ts, 2, &individual);
1957+
CU_ASSERT_EQUAL_FATAL(ret, 0);
1958+
CU_ASSERT_EQUAL_FATAL(individual.id, 2);
1959+
CU_ASSERT_EQUAL_FATAL(individual.flags, 3);
1960+
CU_ASSERT_EQUAL_FATAL(individual.location_length, 1);
1961+
CU_ASSERT_EQUAL_FATAL(individual.location[0], 0.3);
1962+
CU_ASSERT_EQUAL_FATAL(individual.parents_length, 2);
1963+
CU_ASSERT_EQUAL_FATAL(individual.parents[0], pat_id);
1964+
CU_ASSERT_EQUAL_FATAL(individual.parents[1], mat_id);
1965+
CU_ASSERT_EQUAL_FATAL(individual.nodes_length, 1);
1966+
CU_ASSERT_EQUAL_FATAL(individual.nodes[0], 5);
1967+
19441968
ret = tsk_treeseq_get_individual(&ts, 3, &individual);
19451969
CU_ASSERT_EQUAL_FATAL(ret, TSK_ERR_INDIVIDUAL_OUT_OF_BOUNDS);
19461970
tsk_treeseq_free(&ts);
@@ -2005,9 +2029,11 @@ test_simplest_bad_individuals(void)
20052029
tables.nodes.individual[0] = TSK_NULL;
20062030

20072031
/* add two individuals */
2008-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
2032+
ret = tsk_individual_table_add_row(
2033+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
20092034
CU_ASSERT_EQUAL(ret, 0);
2010-
ret = tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0);
2035+
ret = tsk_individual_table_add_row(
2036+
&tables.individuals, 0, NULL, 0, NULL, 0, NULL, 0);
20112037
CU_ASSERT_EQUAL(ret, 1);
20122038

20132039
/* Bad individual ID */
@@ -2788,9 +2814,9 @@ test_simplest_individual_filter(void)
27882814
CU_ASSERT_EQUAL_FATAL(ret, 0);
27892815

27902816
tables.sequence_length = 1;
2791-
tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, "0", 1);
2792-
tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, "1", 1);
2793-
tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, "2", 1);
2817+
tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0, "0", 1);
2818+
tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0, "1", 1);
2819+
tsk_individual_table_add_row(&tables.individuals, 0, NULL, 0, NULL, 0, "2", 1);
27942820
/* Two nodes referring to individual 1 */
27952821
tsk_node_table_add_row(&tables.nodes, TSK_NODE_IS_SAMPLE, 0.0, TSK_NULL, 1, NULL, 0);
27962822
tsk_node_table_add_row(&tables.nodes, TSK_NODE_IS_SAMPLE, 0.0, TSK_NULL, 1, NULL, 0);

0 commit comments

Comments
 (0)