@@ -79,7 +79,8 @@ fn main() -> io::Result<()> {
7979 }
8080 }
8181 if args. output_paf {
82- output_results_paf ( & impg, results, & target_name, None ) ;
82+ // Skip the first element (the input range) for PAF
83+ output_results_paf ( & impg, results. into_iter ( ) . skip ( 1 ) , & target_name, None ) ;
8384 } else {
8485 output_results_bed ( & impg, results) ;
8586 }
@@ -96,10 +97,13 @@ fn main() -> io::Result<()> {
9697 panic ! ( "Invalid intervals encountered." ) ;
9798 }
9899 }
100+
101+ // Skip the first element (the input range) for both PAF and BEDPE
102+ let results_iter = results. into_iter ( ) . skip ( 1 ) ;
99103 if args. output_paf {
100- output_results_paf ( & impg, results , & target_name, name) ;
104+ output_results_paf ( & impg, results_iter , & target_name, name) ;
101105 } else {
102- output_results_bedpe ( & impg, results , & target_name, name) ;
106+ output_results_bedpe ( & impg, results_iter , & target_name, name) ;
103107 }
104108 }
105109 }
@@ -226,7 +230,10 @@ fn output_results_bed(impg: &Impg, results: Vec<AdjustedInterval>) {
226230 }
227231}
228232
229- fn output_results_bedpe ( impg : & Impg , results : Vec < AdjustedInterval > , target_name : & str , name : Option < String > ) {
233+ fn output_results_bedpe < I > ( impg : & Impg , results : I , target_name : & str , name : Option < String > )
234+ where
235+ I : Iterator < Item = AdjustedInterval >
236+ {
230237 for ( overlap_query, _, overlap_target) in results {
231238 let overlap_name = impg. seq_index . get_name ( overlap_query. metadata ) . unwrap ( ) ;
232239 let ( first, last, strand) = if overlap_query. first <= overlap_query. last {
@@ -241,7 +248,10 @@ fn output_results_bedpe(impg: &Impg, results: Vec<AdjustedInterval>, target_name
241248 }
242249}
243250
244- fn output_results_paf ( impg : & Impg , results : Vec < AdjustedInterval > , target_name : & str , name : Option < String > ) {
251+ fn output_results_paf < I > ( impg : & Impg , results : I , target_name : & str , name : Option < String > )
252+ where
253+ I : Iterator < Item = AdjustedInterval >
254+ {
245255 let target_length = impg. seq_index . get_len_from_id ( impg. seq_index . get_id ( target_name) . unwrap ( ) ) . unwrap ( ) ;
246256 for ( overlap_query, cigar, overlap_target) in results {
247257 let overlap_name = impg. seq_index . get_name ( overlap_query. metadata ) . unwrap ( ) ;
0 commit comments