@@ -122,7 +122,7 @@ sort_and_simplify_all(tsk_table_collection_t *tcs, int num_chroms, int *samples,
122122void
123123simplify_tables (tsk_table_collection_t * tcs , int num_chroms , int * samples , int N )
124124{
125- int j , k , ret ;
125+ int j , k , num_edges , ret ;
126126 const tsk_size_t num_nodes = tcs [0 ].nodes .num_rows ;
127127 tsk_bool_t * keep_nodes = malloc (num_nodes * sizeof (* keep_nodes ));
128128 tsk_id_t * node_id_map = malloc (num_nodes * sizeof (* node_id_map ));
@@ -137,15 +137,18 @@ simplify_tables(tsk_table_collection_t *tcs, int num_chroms, int *samples, int N
137137
138138 for (j = 0 ; j < num_nodes ; j ++ ) {
139139 keep_nodes [j ] = false;
140+ tcs [0 ].nodes .flags [j ] &= (~TSK_NODE_IS_SAMPLE );
140141 }
141142 for (j = 0 ; j < N ; j ++ ) {
142143 keep_nodes [samples [j ]] = true;
144+ tcs [0 ].nodes .flags [samples [j ]] |= TSK_NODE_IS_SAMPLE ;
143145 }
144146
145147 for (j = 0 ; j < num_chroms ; j ++ ) {
146148 edge_child = tcs [j ].edges .child ;
147149 edge_parent = tcs [j ].edges .parent ;
148- for (k = 0 ; k < tcs [j ].edges .num_rows ; k ++ ) {
150+ num_edges = tcs [j ].edges .num_rows ;
151+ for (k = 0 ; k < num_edges ; k ++ ) {
149152 keep_nodes [edge_child [k ]] = true;
150153 keep_nodes [edge_parent [k ]] = true;
151154 }
@@ -157,7 +160,8 @@ simplify_tables(tsk_table_collection_t *tcs, int num_chroms, int *samples, int N
157160 for (j = 0 ; j < num_chroms ; j ++ ) {
158161 edge_child = tcs [j ].edges .child ;
159162 edge_parent = tcs [j ].edges .parent ;
160- for (k = 0 ; k < tcs [j ].edges .num_rows ; k ++ ) {
163+ num_edges = tcs [j ].edges .num_rows ;
164+ for (k = 0 ; k < num_edges ; k ++ ) {
161165 edge_child [k ] = node_id_map [edge_child [k ]];
162166 edge_parent [k ] = node_id_map [edge_parent [k ]];
163167 }
@@ -243,7 +247,7 @@ simulate(
243247int
244248main (int argc , char * * argv )
245249{
246- // int ret;
250+ int ret ;
247251 int num_chroms ;
248252
249253 if (argc != 7 ) {
@@ -257,8 +261,8 @@ main(int argc, char **argv)
257261 init_tables (tcs , num_chroms );
258262 simulate (tcs , num_chroms , atoi (argv [1 ]), atoi (argv [2 ]), atoi (argv [3 ]));
259263 join_tables (tcs , num_chroms );
260- // ret = tsk_table_collection_dump(&tcs[0], argv[4], 0);
261- // check_tsk_error(ret);
264+ ret = tsk_table_collection_dump (& tcs [0 ], argv [4 ], 0 );
265+ check_tsk_error (ret );
262266 free_tables (tcs , num_chroms );
263267
264268 return 0 ;
0 commit comments