@@ -626,26 +626,17 @@ typedef struct _tsk_segment_t {
626
626
} tsk_segment_t ;
627
627
628
628
typedef struct {
629
- tsk_id_t * pairs ;
629
+ const tsk_id_t * pairs ;
630
630
tsk_size_t num_pairs ;
631
631
tsk_size_t num_nodes ;
632
632
tsk_size_t num_unique_nodes_in_pair ;
633
633
int64_t * pair_map ;
634
- double sequence_length ;
635
- tsk_table_collection_t * tables ;
634
+ tsk_id_t * paired_nodes_index ;
636
635
tsk_segment_t * * ibd_segments_head ;
637
636
tsk_segment_t * * ibd_segments_tail ;
637
+ tsk_size_t total_segments ;
638
638
tsk_blkalloc_t segment_heap ;
639
- bool * is_sample ;
640
- tsk_id_t * paired_nodes_index ;
641
- double min_length ;
642
- double max_time ;
643
- tsk_segment_t * * ancestor_map_head ;
644
- tsk_segment_t * * ancestor_map_tail ;
645
- tsk_segment_t * segment_queue ;
646
- tsk_size_t segment_queue_size ;
647
- tsk_size_t max_segment_queue_size ;
648
- } tsk_ibd_finder_t ;
639
+ } tsk_ibd_result_t ;
649
640
650
641
/****************************************************************************/
651
642
/* Common function options */
@@ -3404,6 +3395,12 @@ tsk_id_t tsk_table_collection_check_integrity(
3404
3395
3405
3396
/* Undocumented methods */
3406
3397
3398
+ /* TODO be systematic about where "result" should be in the params
3399
+ * list, different here and in link_ancestors. */
3400
+ int tsk_table_collection_find_ibd (const tsk_table_collection_t * self ,
3401
+ tsk_ibd_result_t * result , const tsk_id_t * samples , tsk_size_t num_samples ,
3402
+ double min_length , double max_time , tsk_flags_t options );
3403
+
3407
3404
int tsk_table_collection_link_ancestors (tsk_table_collection_t * self , tsk_id_t * samples ,
3408
3405
tsk_size_t num_samples , tsk_id_t * ancestors , tsk_size_t num_ancestors ,
3409
3406
tsk_flags_t options , tsk_edge_table_t * result );
@@ -3494,15 +3491,12 @@ int tsk_squash_edges(
3494
3491
tsk_edge_t * edges , tsk_size_t num_edges , tsk_size_t * num_output_edges );
3495
3492
3496
3493
/* IBD finder API. This is experimental and the interface may change. */
3497
- int tsk_ibd_finder_init (tsk_ibd_finder_t * ibd_finder , tsk_table_collection_t * tables ,
3498
- tsk_id_t * pairs , tsk_size_t num_pairs );
3499
- int tsk_ibd_finder_set_min_length (tsk_ibd_finder_t * self , double min_length );
3500
- int tsk_ibd_finder_set_max_time (tsk_ibd_finder_t * self , double max_time );
3501
- int tsk_ibd_finder_free (tsk_ibd_finder_t * self );
3502
- int tsk_ibd_finder_run (tsk_ibd_finder_t * ibd_finder );
3503
- int tsk_ibd_finder_get_ibd_segments (tsk_ibd_finder_t * ibd_finder , tsk_id_t pair_index ,
3504
- tsk_segment_t * * ret_ibd_segments_head );
3505
- void tsk_ibd_finder_print_state (tsk_ibd_finder_t * self , FILE * out );
3494
+
3495
+ tsk_size_t tsk_ibd_result_get_total_segments (const tsk_ibd_result_t * self );
3496
+ void tsk_ibd_result_print_state (tsk_ibd_result_t * self , FILE * out );
3497
+ int tsk_ibd_result_free (tsk_ibd_result_t * self );
3498
+ int tsk_ibd_result_get (const tsk_ibd_result_t * self , tsk_id_t sample_a ,
3499
+ tsk_id_t sample_b , tsk_segment_t * * ret_head );
3506
3500
3507
3501
#ifdef __cplusplus
3508
3502
}
0 commit comments