Skip to content

Commit 58cb550

Browse files
Merge pull request #22 from pangenome/paf_output
Drop self range in PAF/BEDPE output
2 parents 039f66f + 1f079cf commit 58cb550

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/main.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)