1use bio_types::genome::AbstractInterval;
9
10use crate::bam;
11use crate::bam::record::Cigar;
12use crate::htslib;
13use std::borrow::Cow;
14use std::collections::{BTreeMap, HashMap};
15
16use std::convert::TryInto;
17use std::ops::{Range, RangeBounds, RangeInclusive};
18#[derive(Debug, Clone, Copy)]
19pub struct MovingPos {
20 fakepos: i64,
21 isvalid: bool
22}
23impl MovingPos {
24 fn new(pos: i64, isvalid: bool) -> Self {
25 MovingPos {
26 fakepos: pos,
27 isvalid
28 }
29 }
30}
31#[derive(Debug, Clone)]
32pub struct CsData {
33 pub genome_pos: MovingPos,
35 pub read_pos: MovingPos,
37 pub state: CsValue,
39 pub sequence: SeqPos,
41}
42impl CsData {
43 pub fn getgenomepos(&self) -> Option<i64> {
45 match self.genome_pos.isvalid {
46 true => Some(self.genome_pos.fakepos),
47 false => None
48 }
49 }
50 pub fn getgenomepos_zero(&self) -> i64 {
52 self.genome_pos.fakepos
53 }
54 pub fn getreadpos(&self) -> Option<i64> {
56 match self.read_pos.isvalid {
57 true => Some(self.read_pos.fakepos),
58 false => None
59 }
60 }
61 pub fn getreadpos_zero(&self) -> i64 {
63 self.read_pos.fakepos
64 }
65 fn new(genome_pos: (i64,bool), read_pos: (i64,bool), state: CsValue, sequence: SeqPos) -> Self {
66 CsData {
67 genome_pos: MovingPos::new(genome_pos.0,genome_pos.1),
68 read_pos: MovingPos::new(read_pos.0,read_pos.1),
69 state,
70 sequence,
71 }
72 }
73}
74#[derive(Debug, Clone)]
75pub struct SeqPos {
76 genome_seq: Option<String>,
78 read_seq: Option<String>,
80}
81impl SeqPos {
82 pub fn genomematch<T>(&self, genome_match: Option<T>) -> bool where T: AsRef<str> {
84 match (&self.genome_seq,genome_match) {
85 (Some(d),Some(q)) if d.to_lowercase()==q.as_ref().to_lowercase() => true,
86 (None,None) => true,
87 _ => false
88 }
89 }
90 pub fn readmatch<T>(&self, read_match: Option<T>) -> bool where T: AsRef<str> {
92 match (&self.read_seq,read_match) {
93 (Some(d),Some(q)) if d.to_lowercase()==q.as_ref().to_lowercase() => true,
94 (None,None) => true,
95 _ => false
96 }
97 }
98}
99pub struct CgAlignedBlockPairs {
100 pub contig: Vec<u8>,
102 pub genome_pos: i64,
104 pub genomelen: usize,
106 cs_index: usize,
107 csdata: Vec<CsData>,
108}
109impl CgAlignedBlockPairs {
110 pub fn getcontig(&self) -> &[u8] {
112 &self.contig
113 }
114 pub fn restrict<T>(&mut self, contig: &[u8], range: T)
116 where
117 T: RangeBounds<usize>,
118 {
119 if self.contig != contig || !range.contains(&self.genome_pos.try_into().unwrap()) {
120 self.csdata.clear();
121 return;
122 }
123 let new = self
124 .filter(|p| range.contains(&p.getgenomepos_zero().try_into().unwrap()))
125 .collect();
126 self.csdata = new;
127 }
128}
129impl Iterator for CgAlignedBlockPairs {
130 type Item = CsData;
131
132 fn next(&mut self) -> Option<Self::Item> {
133 match self.csdata.get(self.cs_index) {
134 Some(value) => {
135 self.cs_index += 1;
136 Some(value.clone())
137 }
138 None => None,
139 }
140 }
141}
142#[derive(Clone, Debug, PartialEq, Eq)]
144pub enum CsValue {
145 Same(usize),
147 Substitution,
149 Insertion(usize),
151 Deletion(usize),
153 Intron(usize),
155}
156impl std::fmt::Display for CsValue {
157 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
158 match self {
159 CsValue::Same(_) => write!(f, "="),
160 CsValue::Substitution => write!(f, "!"),
161 CsValue::Insertion(_) => write!(f, "+"),
162 CsValue::Deletion(_) => write!(f, "-"),
163 CsValue::Intron(_) => write!(f, "I"),
164 }
165 }
166}
167impl CsValue {
168 pub fn issame(&self) -> bool {
169 matches!(self, CsValue::Same(_))
170 }
171 pub fn isubstitution(&self) -> bool {
172 self == &CsValue::Substitution
173 }
174 pub fn isinsertion(&self) -> bool {
175 matches!(self, CsValue::Insertion(_))
176 }
177 pub fn isdeletion(&self) -> bool {
178 matches!(self, CsValue::Deletion(_))
179 }
180 fn getlength(&self) -> usize {
181 match self {
182 CsValue::Intron(d) => d + 4,
183 CsValue::Deletion(d) | CsValue::Same(d) | CsValue::Insertion(d) => *d,
184 CsValue::Substitution => 1,
185 }
186 }
187 pub fn isintron(&self) -> bool {
188 matches!(self, CsValue::Intron(_))
189 }
190}
191impl CsValue {
192 pub fn new<T>(
194 value: char,
195 valtocheck: T,
196 ) -> Result<(Option<String>, CsValue), crate::bam::Error>
197 where
198 T: AsRef<str>,
199 {
200 let valtocheck = valtocheck.as_ref();
201 match value {
202 '=' | ':' => {
203 match valtocheck.parse::<usize>() {
204 Ok(d) => Ok((None, CsValue::Same(d))),
205 Err(_) => {
206 let seq = Some(String::from(valtocheck));
208 let length = valtocheck.len();
209 Ok((seq, CsValue::Same(length)))
210 }
211 }
212 }
213 id @ ('-' | '+' | '*') => {
214 let seq = Some(String::from(valtocheck));
215 let length = valtocheck.len();
216 let state = match id {
217 '-' => CsValue::Deletion(length),
218 '+' => CsValue::Insertion(length),
219 '*' => CsValue::Substitution,
220 _ => todo!(),
221 };
222 Ok((seq, state))
223 }
224 '~' => {
225 if valtocheck.len() <= 5 {
226 panic!("Invalid CS tag");
227 }
228 let seq = &valtocheck[..2];
229 let seq2 = &valtocheck[valtocheck.len() - 2..];
230 let mut intron = String::from(seq);
231 intron.push_str(seq2);
232 let ilength = &valtocheck[2..valtocheck.len() - 2];
233 let ilength = match ilength.parse::<usize>() {
234 Ok(d) => d,
235 Err(_) => {
236 panic!("Invalid CS tag")
237 }
238 };
239 Ok((Some(intron), CsValue::Intron(ilength)))
240 }
241 _ => Err(crate::bam::Error::BamAuxParsingError),
242 }
243 }
244}
245impl CgAlignedBlockPairs {
246 fn increasecounting(mut genome_pos: i64, mut query_pos: i64, state: &CsValue) -> (i64, i64) {
247 match state {
248 CsValue::Same(_) | CsValue::Intron(_) => {
249 genome_pos += state.getlength() as i64;
250 query_pos += state.getlength() as i64;
251 (genome_pos, query_pos)
252 }
253 CsValue::Deletion(_) => {
254 genome_pos += state.getlength() as i64;
255 (genome_pos, query_pos)
256 }
257 CsValue::Insertion(_) => {
258 query_pos += state.getlength() as i64;
259 (genome_pos, query_pos)
260 }
261 CsValue::Substitution => {
262 genome_pos += 1;
263 query_pos += 1;
264 (genome_pos, query_pos)
265 }
266 }
267 }
268 fn createfromcs<T>(csstring: T, contig: Vec<u8>, old_genome_pos: i64) -> Self
269 where
270 T: AsRef<str>,
271 {
272 let (mut genome_pos, mut query_pos) = (old_genome_pos, 0);
273 let csstring = csstring.as_ref();
274 let isnotalphanum = |p: char| !p.is_alphanumeric();
275 if !csstring.starts_with(isnotalphanum) {
276 panic!("CS tag starts with an alphanumeric char");
277 }
278 let s_reversed = csstring.chars().rev().collect::<String>();
279 let blocks = s_reversed
280 .split_inclusive(isnotalphanum)
281 .map(|block| block.chars().rev().collect::<String>())
283 .rev();
285 let mut list = Vec::new();
286 for block in blocks {
287 let block = block.trim();
288 if block.is_empty() {
289 panic!("Invalid CS tag");
290 }
291 let element = block.split_at(1);
292 let value = element.0.chars().next().unwrap();
293 let valtocheck = element.1;
294 let (seq, state) = CsValue::new(value, valtocheck).unwrap();
295 let (seq1, seq2) = match state {
296 CsValue::Substitution => {
297 let twoseq = seq.as_ref().unwrap().split_at(1);
298 (Some(String::from(twoseq.0)), Some(String::from(twoseq.1)))
299 }
300 CsValue::Same(_) => match seq {
301 None => (None, None),
302 Some(d) => (Some(d.clone()), Some(d.clone())),
303 },
304 CsValue::Deletion(_) => {
305 let seq = seq.as_ref().unwrap();
306 (None, Some(seq.clone()))
307 }
308 CsValue::Insertion(_) | CsValue::Intron(_) => {
309 let seq = seq.as_ref().unwrap();
310 (Some(seq.clone()), None)
311 }
312 };
313 let seq = SeqPos {
314 genome_seq: seq1,
315 read_seq: seq2,
316 };
317 let genome_bool = !matches!(state,CsValue::Insertion(_));
318 let read_bool = !matches!(state,CsValue::Deletion(_));
319 let elem = CsData::new((genome_pos,genome_bool), (query_pos,read_bool), state.clone(), seq);
320 (genome_pos, query_pos) = Self::increasecounting(genome_pos, query_pos, &state);
321 list.push(elem);
322 }
323 CgAlignedBlockPairs {
324 contig,
325 genome_pos: old_genome_pos,
326 genomelen: std::convert::TryInto::<usize>::try_into(genome_pos - old_genome_pos + 1)
327 .unwrap(),
328 cs_index: 0,
329 csdata: list,
330 }
331 }
332 fn createfrommdtag<T>(
333 md: T,
334 seq: T,
335 cigar: &[Cigar],
336 line: T,
337 long_cs: bool,
338 contig: Vec<u8>,
339 genome_pos: i64,
340 ) -> Result<Self, bam::Error>
341 where
342 T: AsRef<str>,
343 {
344 let mut cs = String::new();
345 let (md, seq, line) = (
346 md.as_ref().trim(),
347 seq.as_ref().trim(),
348 line.as_ref().trim(),
349 );
350 if md.is_empty() || seq.is_empty() || cigar.is_empty() {
351 eprintln!("at line {}: Invalid MD, SEQ or cigar tag", line);
353 return Err(bam::Error::BamInvalidRecord);
354 }
355 let mut cx = 0;
356 let mut cy = 0;
357 let mut k = 0;
358 let mut mx = 0;
359 let mut my: usize = 0; let re_md = regex::Regex::new(r"(\d+)|(\^[A-Za-z]+)|([A-Za-z])").unwrap(); let captures = re_md.captures_iter(md);
362 for m in captures {
363 if let Some(deletion) = m.get(2) {
364 let deletionstring = &deletion.as_str()[1..];
366 let len = deletionstring.len();
367 cs.push('-');
368 cs.push_str(deletionstring);
369 mx += len;
370 cx += len;
371 k += 1;
372 } else {
373 let mut ml = m.get(1).map_or(1, |m| m.as_str().parse::<usize>().unwrap());
375 while let Some(elem) = cigar.get(k) {
376 match elem {
377 Cigar::Del(_) => break, Cigar::Equal(cl) | Cigar::Diff(cl) | Cigar::Match(cl) => {
379 let cl: usize = (*cl).try_into().unwrap();
380 if my + ml < cy + cl {
381 if ml > 0 {
382 if let Some(m3) = m.get(3) {
383 cs.push('*');
384 cs.push_str(m3.as_str());
385 let mut seqc = seq.char_indices();
386 let (start, _) = seqc.nth(my).unwrap();
387 let (end, _) = seqc.next().unwrap();
388 cs.push_str(&seq[start..end]);
389 } else if long_cs {
390 cs.push('=');
391 let mut seqc = seq.char_indices();
392 let (start, _) = seqc.nth(my).unwrap();
393 let (end, _) = seqc.nth(ml - 1).unwrap();
394 cs.push_str(&seq[start..end]);
395 } else {
396 cs.push(':');
397 cs.push_str(&ml.to_string());
398 }
399 }
400 mx += ml;
401 my += ml;
402 ml = 0;
403 break;
404 } else {
405 let dl = (cy + cl)
406 .checked_sub(my)
407 .unwrap_or_else(|| panic!("{}/{}/{} are invalid", cy, cl, my));
408 if long_cs {
409 cs.push('=');
410 let mut seqc = seq.char_indices();
411 let (start, _) = seqc.nth(my).unwrap();
412 let seqc2 = seqc.clone();
413 let (end, _) = if dl - 1 != seqc2.count() {
414 seqc.nth(dl - 1).unwrap_or_else(|| {
415 panic!("Wanted {}/{}/{}", start, my, dl - 1)
416 })
417 } else {
418 let mut elem = seqc.last().unwrap();
419 elem.0 += 1;
420 elem
421 };
422 cs.push_str(&seq[start..end]);
423 } else {
424 cs.push(':');
425 cs.push_str(&dl.to_string());
426 }
427 cx += cl;
428 cy += cl;
429 mx += dl;
430 my += dl;
431 ml = ml
432 .checked_sub(dl)
433 .unwrap_or_else(|| panic!("{}/{} are invalid", ml, dl));
434 }
435 }
436 Cigar::Ins(cl) => {
437 let cl: usize = (*cl).try_into().unwrap();
438 cs.push('+');
439 let mut seqc = seq.char_indices();
440 let (start, _) = seqc.nth(cy).unwrap();
441 let seqc2 = seqc.clone();
442 let (end, _) = if cl - 1 != seqc2.count() {
443 seqc.nth(cl - 1)
444 .unwrap_or_else(|| panic!("Wanted {}/{}/{}", start, my, cl - 1))
445 } else {
446 let mut elem = seqc.last().unwrap();
447 elem.0 += 1;
448 elem
449 };
450 cs.push_str(&seq[start..end]);
451 cy += cl;
452 my += cl;
453 }
454 Cigar::SoftClip(cl) => {
455 let cl: usize = (*cl).try_into().unwrap();
456 cy += cl;
457 my += cl;
458 }
459 Cigar::RefSkip(cl) => {
460 let cl: usize = (*cl).try_into().unwrap();
461 cx += cl;
462 mx += cl;
463 }
464 Cigar::HardClip(_) | Cigar::Pad(_) => (),
465 }
466 k += 1;
467 }
468 if ml != 0 {
469 panic!("at line {}: inconsistent MD tag", line);
470 }
471 }
472 }
473 if cx != mx || cy != my {
474 panic!("at line {}: inconsistent MD tag", line);
475 }
476 Ok(Self::createfromcs(cs, contig, genome_pos))
477 }
478}
479pub trait MatchIter {
480 fn ismatchonly(&self) -> bool;
482 fn setmatchstate(&mut self, matchs: bool);
484}
485pub struct IterAlignedBlockPairs {
486 genome_pos: i64,
487 read_pos: i64,
488 cigar_index: usize,
489 cigar: Vec<Cigar>,
490 r#match: bool,
491}
492impl MatchIter for IterAlignedBlockPairs {
493 fn ismatchonly(&self) -> bool {
494 self.r#match
495 }
496
497 fn setmatchstate(&mut self, matchs: bool) {
498 self.r#match = matchs;
499 }
500}
501impl Iterator for IterAlignedBlockPairs {
502 type Item = ([i64; 2], [i64; 2]);
503 fn next(&mut self) -> Option<Self::Item> {
504 while self.cigar_index < self.cigar.len() {
505 let entry = self.cigar[self.cigar_index];
506 match entry {
507 Cigar::Match(len) | Cigar::Equal(len) | Cigar::Diff(len) => {
508 let qstart = self.read_pos;
509 let qend = qstart + len as i64;
510 let rstart = self.genome_pos;
511 let rend = self.genome_pos + len as i64;
512 self.read_pos += len as i64;
513 self.genome_pos += len as i64;
514 #[allow(clippy::nonminimal_bool)]
515 if (self.r#match && matches!(entry, Cigar::Equal(_))) || !self.r#match {
516 self.cigar_index += 1;
517 return Some(([qstart, qend], [rstart, rend]));
518 }
519 }
520 Cigar::Ins(len) | Cigar::SoftClip(len) => {
521 self.read_pos += len as i64;
522 }
523 Cigar::Del(len) | Cigar::RefSkip(len) => {
524 self.genome_pos += len as i64;
525 }
526 Cigar::HardClip(_) => {} Cigar::Pad(_) => panic!("Padding (Cigar::Pad) is not supported."), }
529 self.cigar_index += 1;
530 }
531 None
532 }
533}
534#[derive(Ord, PartialOrd, Eq, PartialEq, Debug, Copy, Clone)]
535pub struct RangePos {
536 pub start: i64,
537 pub end: i64,
538}
539impl RangePos {
540 pub fn getrange(&self) -> Range<i64> {
541 self.start..self.end
542 }
543 pub fn start(&self) -> i64 {
544 self.start
545 }
546 pub fn end(&self) -> i64 {
547 self.end
548 }
549 fn new(start: i64, end: i64) -> Self {
550 let (start,end) = match start.cmp(&end) {
551 std::cmp::Ordering::Greater => (end,start),
552 _ => (start,end)
553 };
554 RangePos {
555 start,
556 end
557 }
558 }
559}
560pub struct MatchSequence {
569 pub hash: BTreeMap<RangePos, String>,
570}
571impl MatchSequence {
572 pub fn new(range: RangePos, text: String) -> Self {
573 let mut map = BTreeMap::new();
574 map.insert(range, text);
575 MatchSequence { hash: map }
576 }
577 pub fn gethash(&self) -> &BTreeMap<RangePos, String> {
578 &self.hash
579 }
580 pub fn isfullymatched(&self, range: RangeInclusive<i64>) -> Option<String> {
582 let mut vec = self.hash.iter();
583 vec.find_map(|(a, b)| {
584 if a.getrange().contains(range.start()) && a.getrange().contains(range.end()) {
585 Some(b.clone())
586 } else {
587 None
588 }
589 })
590 }
591}
592impl Default for MatchSequence {
593 fn default() -> Self {
594 let default = String::new();
595 let range = RangePos { start: 1, end: 1 };
596 Self::new(range, default)
597 }
598}
599pub struct IterAlignedBlocks {
600 pos: i64,
601 cigar_index: usize,
602 cigar: Vec<Cigar>,
603 r#match: bool,
604}
605impl MatchIter for IterAlignedBlocks {
606 fn ismatchonly(&self) -> bool {
607 self.r#match
608 }
609
610 fn setmatchstate(&mut self, matchs: bool) {
611 self.r#match = matchs;
612 }
613}
614impl Iterator for IterAlignedBlocks {
615 type Item = [i64; 2];
616 fn next(&mut self) -> Option<Self::Item> {
617 while self.cigar_index < self.cigar.len() {
618 let entry = self.cigar[self.cigar_index];
619 match entry {
620 Cigar::Match(len) | Cigar::Equal(len) | Cigar::Diff(len) => {
621 let out_pos = self.pos;
622 self.pos += len as i64;
624 #[allow(clippy::nonminimal_bool)]
625 if (self.r#match && matches!(entry, Cigar::Equal(_))) || !self.r#match {
626 self.cigar_index += 1;
627 return Some([out_pos, out_pos + len as i64]);
628 }
629 }
630 Cigar::Del(len) => self.pos += len as i64,
631 Cigar::RefSkip(len) => self.pos += len as i64,
632 _ => (),
633 }
634 self.cigar_index += 1;
635 }
636 None
637 }
638}
639
640pub struct IterIntrons {
641 pos: i64,
642 cigar_index: usize,
643 cigar: Vec<Cigar>,
644}
645
646impl Iterator for IterIntrons {
647 type Item = [i64; 2];
648 fn next(&mut self) -> Option<Self::Item> {
649 while self.cigar_index < self.cigar.len() {
650 let entry = self.cigar[self.cigar_index];
651 match entry {
652 Cigar::Match(len) | Cigar::Equal(len) | Cigar::Diff(len) | Cigar::Del(len) => {
653 self.pos += len as i64
654 }
655 Cigar::RefSkip(len) => {
656 let junc_start = self.pos;
657 self.pos += len as i64;
658 self.cigar_index += 1;
659 return Some([junc_start, self.pos]); }
661 _ => {}
662 }
663 self.cigar_index += 1;
664 }
665 None
666 }
667}
668
669pub struct IterAlignedPairs {
670 genome_pos: i64,
671 read_pos: i64,
672 cigar: Vec<Cigar>,
673 remaining_match_bp: u32,
674 cigar_index: usize,
675 r#match: bool,
676}
677impl MatchIter for IterAlignedPairs {
678 fn ismatchonly(&self) -> bool {
679 self.r#match
680 }
681
682 fn setmatchstate(&mut self, matchs: bool) {
683 self.r#match = matchs;
684 }
685}
686impl Iterator for IterAlignedPairs {
687 type Item = [i64; 2];
688 fn next(&mut self) -> Option<Self::Item> {
689 if self.remaining_match_bp > 0 {
690 self.remaining_match_bp -= 1;
691 self.genome_pos += 1;
692 self.read_pos += 1;
693 return Some([self.read_pos - 1, self.genome_pos - 1]);
694 }
695
696 while self.cigar_index < self.cigar.len() {
697 let entry = self.cigar[self.cigar_index];
698 match entry {
699 Cigar::Match(len) | Cigar::Equal(len) | Cigar::Diff(len) => {
700 self.genome_pos += 1;
701 self.read_pos += 1;
702 self.remaining_match_bp = len - 1;
703 #[allow(clippy::nonminimal_bool)]
704 if (self.r#match && matches!(entry, Cigar::Equal(_))) || !self.r#match {
705 self.cigar_index += 1;
706 return Some([self.read_pos - 1, self.genome_pos - 1]);
707 }
708 }
709 Cigar::Ins(len) | Cigar::SoftClip(len) => {
710 self.read_pos += len as i64;
711 }
712 Cigar::Del(len) | Cigar::RefSkip(len) => {
713 self.genome_pos += len as i64;
714 }
715 Cigar::HardClip(_) => {} Cigar::Pad(_) => panic!("Padding (Cigar::Pad) is not supported."), }
718 self.cigar_index += 1;
719 }
720 None
721 }
722}
723
724pub struct IterAlignedPairsFull {
725 genome_pos: i64,
726 read_pos: i64,
727 cigar: Vec<Cigar>,
728 remaining_match_bp: u32,
729 remaining_ins_bp: u32,
730 remaining_del_bp: u32,
731 cigar_index: usize,
732}
733
734impl Iterator for IterAlignedPairsFull {
735 type Item = (Option<i64>, Option<i64>, Cigar);
736 fn next(&mut self) -> Option<Self::Item> {
737 let cigar = self.cigar[self.cigar_index.saturating_sub(1)];
738 if self.remaining_match_bp > 0 {
739 self.remaining_match_bp -= 1;
740 self.genome_pos += 1;
741 self.read_pos += 1;
742 return Some((Some(self.read_pos - 1), Some(self.genome_pos - 1), cigar));
743 }
744 if self.remaining_ins_bp > 0 {
745 self.remaining_ins_bp -= 1;
746 self.read_pos += 1;
747 return Some((Some(self.read_pos - 1), None, cigar));
748 }
749 if self.remaining_del_bp > 0 {
750 self.remaining_del_bp -= 1;
751 self.genome_pos += 1;
752 return Some((None, Some(self.genome_pos - 1), cigar));
753 }
754 while self.cigar_index < self.cigar.len() {
755 let entry = self.cigar[self.cigar_index];
756 match entry {
757 Cigar::Match(len) | Cigar::Equal(len) | Cigar::Diff(len) => {
758 self.genome_pos += 1;
759 self.read_pos += 1;
760 self.remaining_match_bp = len - 1;
761 self.cigar_index += 1;
762 return Some((Some(self.read_pos - 1), Some(self.genome_pos - 1), entry));
763 }
764 Cigar::Ins(len) | Cigar::SoftClip(len) => {
765 self.read_pos += 1;
766 self.remaining_ins_bp = len - 1;
767 self.cigar_index += 1;
768 return Some((Some(self.read_pos - 1), None, entry));
769 }
770 Cigar::Del(len) | Cigar::RefSkip(len) => {
771 self.genome_pos += 1;
772 self.remaining_del_bp = len - 1;
773 self.cigar_index += 1;
774 return Some((None, Some(self.genome_pos - 1), entry));
775 }
776 Cigar::HardClip(_) => {
777 }
779 Cigar::Pad(_) => panic!("Padding (Cigar::Pad) is not supported."), }
781 self.cigar_index += 1;
782 }
783 None
784 }
785}
786
787pub trait BamRecordExtensions {
791 fn matched_sequence(&self) -> Option<MatchSequence>;
795 fn aligned_blocks(&self) -> IterAlignedBlocks;
805 fn aligned_blocks_match(&self) -> Option<IterAlignedBlocks>;
813 fn aligned_block_pairs(&self) -> IterAlignedBlockPairs;
824 fn aligned_block_pairs_match(&self) -> Option<IterAlignedBlockPairs>;
836 fn introns(&self) -> IterIntrons;
842 fn aligned_pairs_match(&self) -> Option<IterAlignedPairs>;
855 fn aligned_pairs(&self) -> IterAlignedPairs;
866
867 fn aligned_pairs_full(&self) -> IterAlignedPairsFull;
875
876 fn cigar_stats_nucleotides(&self) -> HashMap<Cigar, i32>;
882
883 fn cigar_stats_blocks(&self) -> HashMap<Cigar, i32>;
890
891 fn reference_positions(&self) -> Box<dyn Iterator<Item = i64>>;
898 fn reference_positions_match(&self) -> Option<Box<dyn Iterator<Item = i64>>>;
905 fn reference_positions_full(&self) -> Box<dyn Iterator<Item = Option<i64>>>;
912
913 fn reference_start(&self) -> i64;
915
916 fn reference_end(&self) -> i64;
918
919 fn seq_len_from_cigar(&self, include_hard_clip: bool) -> usize;
926 fn getcsaligned(&self) -> Option<CgAlignedBlockPairs>;
928}
929fn strandseq(input: &mut Cow<str>) {
930 *input = Cow::Owned(
931 input
932 .replace("a", "x")
933 .replace("t", "a")
934 .replace("x", "t")
935 .replace("c", "x")
936 .replace("g", "c")
937 .replace("x", "g"),
938 );
939}
940fn checkcigarmatchvalid(info: &bam::Record) -> bool {
941 info.cigar_stats_blocks()
942 .into_iter()
943 .filter_map(|(cigar, count)| match cigar {
944 Cigar::Equal(_) | Cigar::Diff(_) => Some(count),
945 _ => None,
946 })
947 .sum::<i32>()
948 > 0
949}
950impl BamRecordExtensions for bam::Record {
951 fn matched_sequence(&self) -> Option<MatchSequence> {
952 let aligned = self.aligned_block_pairs_match()?;
953 let sequence = self.seq();
954 if sequence.is_empty() {
955 return None;
956 }
957 let mut hash = BTreeMap::new();
958 for ([rstart, rend], [gstart, gend]) in aligned {
959 let (rstart, rend) = (rstart.try_into().unwrap(), rend.try_into().unwrap());
960 let mut sequence = sequence.rangeextract(rstart..rend).unwrap();
961 if self.is_reverse() {
962 strandseq(&mut sequence);
963 }
964 hash.insert(
965 RangePos {
966 start: gstart,
967 end: gend,
968 },
969 sequence.to_string(),
970 );
971 }
972 Some(MatchSequence { hash })
973 }
974 fn aligned_blocks(&self) -> IterAlignedBlocks {
975 IterAlignedBlocks {
976 pos: self.pos(),
977 cigar: self.cigar().take().0,
978 cigar_index: 0,
979 r#match: false,
980 }
981 }
982 fn aligned_blocks_match(&self) -> Option<IterAlignedBlocks> {
983 if !checkcigarmatchvalid(self) {
984 return None;
985 };
986 Some(IterAlignedBlocks {
987 pos: self.pos(),
988 cigar: self.cigar().take().0,
989 cigar_index: 0,
990 r#match: true,
991 })
992 }
993 fn getcsaligned(&self) -> Option<CgAlignedBlockPairs> {
994 let ext = self.aux(b"cs");
995 let answer = match ext {
996 Err(_) => {
997 let ext = self.aux(b"MD");
998 if let Ok(bam::record::Aux::String(d)) = ext {
999 let line = String::from_utf8_lossy(self.qname());
1000 let cigar = &self.cigar().0;
1001 let seq = String::from_utf8(self.seq().as_bytes())
1002 .unwrap_or_else(|_| panic!("Invalid sequence for {}", line));
1003 CgAlignedBlockPairs::createfrommdtag(
1004 d,
1005 &seq,
1006 cigar,
1007 &line,
1008 true,
1009 self.contig().as_bytes().to_vec(),
1010 self.reference_start(),
1011 )
1012 .unwrap()
1013 } else {
1014 return None;
1015 }
1016 }
1017 Ok(d) => {
1018 if let bam::record::Aux::String(data) = d {
1019 CgAlignedBlockPairs::createfromcs(
1020 data,
1021 self.contig().as_bytes().to_vec(),
1022 self.reference_start(),
1023 )
1024 } else {
1025 return None;
1026 }
1027 }
1028 };
1029 Some(answer)
1030 }
1031 fn introns(&self) -> IterIntrons {
1032 IterIntrons {
1033 pos: self.pos(),
1034 cigar: self.cigar().take().0,
1035 cigar_index: 0,
1036 }
1037 }
1038
1039 fn aligned_block_pairs(&self) -> IterAlignedBlockPairs {
1040 IterAlignedBlockPairs {
1041 genome_pos: self.pos(),
1042 read_pos: 0,
1043 cigar: self.cigar().take().0,
1044 cigar_index: 0,
1045 r#match: false,
1046 }
1047 }
1048 fn aligned_block_pairs_match(&self) -> Option<IterAlignedBlockPairs> {
1049 if !checkcigarmatchvalid(self) {
1050 return None;
1051 };
1052 Some(IterAlignedBlockPairs {
1053 genome_pos: self.pos(),
1054 read_pos: 0,
1055 cigar: self.cigar().take().0,
1056 cigar_index: 0,
1057 r#match: true,
1058 })
1059 }
1060 fn aligned_pairs_match(&self) -> Option<IterAlignedPairs> {
1061 if !checkcigarmatchvalid(self) {
1062 return None;
1063 };
1064 Some(IterAlignedPairs {
1065 genome_pos: self.pos(),
1066 read_pos: 0,
1067 cigar: self.cigar().take().0,
1068 remaining_match_bp: 0,
1069 cigar_index: 0,
1070 r#match: true,
1071 })
1072 }
1073 fn aligned_pairs(&self) -> IterAlignedPairs {
1074 IterAlignedPairs {
1075 genome_pos: self.pos(),
1076 read_pos: 0,
1077 cigar: self.cigar().take().0,
1078 remaining_match_bp: 0,
1079 cigar_index: 0,
1080 r#match: false,
1081 }
1082 }
1083
1084 fn aligned_pairs_full(&self) -> IterAlignedPairsFull {
1085 IterAlignedPairsFull {
1086 genome_pos: self.pos(),
1087 read_pos: 0,
1088 cigar: self.cigar().take().0,
1089 remaining_match_bp: 0,
1090 remaining_ins_bp: 0,
1091 remaining_del_bp: 0,
1092 cigar_index: 0,
1093 }
1094 }
1095
1096 fn cigar_stats_nucleotides(&self) -> HashMap<Cigar, i32> {
1097 let mut result = HashMap::new();
1098 result.insert(Cigar::Match(0), 0); result.insert(Cigar::Ins(0), 0); result.insert(Cigar::Del(0), 0); result.insert(Cigar::RefSkip(0), 0); result.insert(Cigar::SoftClip(0), 0); result.insert(Cigar::HardClip(0), 0); result.insert(Cigar::Pad(0), 0); result.insert(Cigar::Equal(0), 0); result.insert(Cigar::Diff(0), 0); for entry in self.cigar().iter() {
1108 match entry {
1109 Cigar::Match(len) => *result.get_mut(&Cigar::Match(0)).unwrap() += *len as i32, Cigar::Ins(len) => *result.get_mut(&Cigar::Ins(0)).unwrap() += *len as i32, Cigar::Del(len) => *result.get_mut(&Cigar::Del(0)).unwrap() += *len as i32, Cigar::RefSkip(len) => *result.get_mut(&Cigar::RefSkip(0)).unwrap() += *len as i32, Cigar::SoftClip(len) => {
1114 *result.get_mut(&Cigar::SoftClip(0)).unwrap() += *len as i32
1115 } Cigar::HardClip(len) => {
1117 *result.get_mut(&Cigar::HardClip(0)).unwrap() += *len as i32
1118 } Cigar::Pad(len) => *result.get_mut(&Cigar::Pad(0)).unwrap() += *len as i32, Cigar::Equal(len) => *result.get_mut(&Cigar::Equal(0)).unwrap() += *len as i32, Cigar::Diff(len) => *result.get_mut(&Cigar::Diff(0)).unwrap() += *len as i32, }
1123 }
1124 result
1125 }
1126
1127 fn cigar_stats_blocks(&self) -> HashMap<Cigar, i32> {
1128 let mut result = HashMap::new();
1129 result.insert(Cigar::Match(0), 0); result.insert(Cigar::Ins(0), 0); result.insert(Cigar::Del(0), 0); result.insert(Cigar::RefSkip(0), 0); result.insert(Cigar::SoftClip(0), 0); result.insert(Cigar::HardClip(0), 0); result.insert(Cigar::Pad(0), 0); result.insert(Cigar::Equal(0), 0); result.insert(Cigar::Diff(0), 0); for entry in self.cigar().iter() {
1139 match entry {
1140 Cigar::Match(_) => *result.get_mut(&Cigar::Match(0)).unwrap() += 1, Cigar::Ins(_) => *result.get_mut(&Cigar::Ins(0)).unwrap() += 1, Cigar::Del(_) => *result.get_mut(&Cigar::Del(0)).unwrap() += 1, Cigar::RefSkip(_) => *result.get_mut(&Cigar::RefSkip(0)).unwrap() += 1, Cigar::SoftClip(_) => *result.get_mut(&Cigar::SoftClip(0)).unwrap() += 1, Cigar::HardClip(_) => *result.get_mut(&Cigar::HardClip(0)).unwrap() += 1, Cigar::Pad(_) => *result.get_mut(&Cigar::Pad(0)).unwrap() += 1, Cigar::Equal(_) => *result.get_mut(&Cigar::Equal(0)).unwrap() += 1, Cigar::Diff(_) => *result.get_mut(&Cigar::Diff(0)).unwrap() += 1, }
1150 }
1151 result
1152 }
1153
1154 fn reference_positions(&self) -> Box<dyn Iterator<Item = i64>> {
1155 Box::new(self.aligned_pairs().map(|x| x[1]))
1156 }
1157 fn reference_positions_match(&self) -> Option<Box<dyn Iterator<Item = i64>>> {
1158 match self.aligned_pairs_match() {
1159 Some(b) => Some(Box::new(b.map(|x| x[1]))),
1160 None => None,
1161 }
1162 }
1163 fn reference_positions_full(&self) -> Box<dyn Iterator<Item = Option<i64>>> {
1164 Box::new(
1165 self.aligned_pairs_full()
1166 .filter(|x| x.0.is_some())
1167 .map(|x| x.1),
1168 )
1169 }
1170
1171 fn reference_start(&self) -> i64 {
1172 self.pos()
1173 }
1174
1175 fn reference_end(&self) -> i64 {
1178 unsafe { htslib::bam_endpos(self.inner_ptr()) }
1179 }
1180
1181 fn seq_len_from_cigar(&self, include_hard_clip: bool) -> usize {
1182 let mut result = 0;
1183 for entry in self.cigar().iter() {
1184 match entry {
1185 Cigar::Match(len)
1186 | Cigar::Ins(len)
1187 | Cigar::SoftClip(len)
1188 | Cigar::Equal(len)
1189 | Cigar::Diff(len) => {
1190 result += len;
1191 }
1192 Cigar::HardClip(len) => {
1193 if include_hard_clip {
1194 result += len;
1195 }
1196 }
1197 _ => {}
1198 }
1199 }
1200 result as usize
1201 }
1202}
1203
1204#[cfg(test)]
1205mod tests {
1206 use crate::bam;
1207 use crate::bam::ext::BamRecordExtensions;
1208 use crate::bam::record::{Cigar, CigarString};
1209 use crate::bam::Read;
1210 use bio_types::genome::AbstractInterval;
1211 use std::collections::HashMap;
1212 use crate::bam::ext::RangePos;
1213 use crate::bam::ext::CsValue;
1214 #[test]
1215 fn testcs() {
1216 let mut read = crate::bam::Reader::from_path("test/locus.bam").unwrap();
1217 let mut element = read.records().filter_map(Result::ok).skip(1).take(1);
1218 let element = element.next().unwrap();
1219 assert_eq!(element.qname(),b"SRR11292120.509914");
1220 assert_eq!(element.contig(),"chr14");
1221 let mut cs = element.getcsaligned().unwrap();
1222 let val = cs.next().unwrap();
1223 assert_eq!(val.getreadpos(),Some(0));
1224 assert_eq!(val.getgenomepos(),Some(99813318));
1225 let val = cs.nth(2).unwrap();
1226 assert_eq!(val.getreadpos(),None);
1227 assert_eq!(val.getgenomepos(),Some(99813465));
1228 assert_eq!(val.state,CsValue::Deletion(1));
1229 assert!(val.sequence.genomematch(None::<&str>));
1230 assert!(val.sequence.readmatch(Some("c")));
1231 }
1232 #[test]
1233 fn testmd() {
1234 let mut read = crate::bam::Reader::from_path("test/locusmd.bam").unwrap();
1235 let mut element = read.records().filter_map(Result::ok).skip(1).take(1);
1236 let element = element.next().unwrap();
1237 assert_eq!(element.qname(),b"SRR11292120.509914");
1238 assert_eq!(element.contig(),"chr14");
1239 let mut cs = element.getcsaligned().unwrap();
1240 let val = cs.next().unwrap();
1241 assert_eq!(val.getreadpos(),Some(0));
1242 assert_eq!(val.getgenomepos(),Some(99813318));
1243 let val = cs.nth(2).unwrap();
1244 assert_eq!(val.getreadpos(),None);
1245 assert_eq!(val.getgenomepos(),Some(99813465));
1246 assert_eq!(val.state,CsValue::Deletion(1));
1247 assert!(val.sequence.genomematch(None::<&str>));
1248 assert!(val.sequence.readmatch(Some("c")));
1249 }
1250 #[test]
1251 fn testcigar() {
1252 let mut read = crate::bam::Reader::from_path("test/locus.bam").unwrap();
1253 let elem = read.records().filter_map(Result::ok).take(1).next().unwrap();
1254 let mut cigar = elem.aligned_pairs_match().unwrap();
1255 let _ = cigar.next();
1256 let align = cigar.next();
1257 assert_eq!(align,Some([1,99812480]));
1258 let align = cigar.nth(40);
1259 assert_eq!(align,Some([43,99812521]));
1260 }
1261 #[test]
1262 fn testblock() {
1263 let mut read = crate::bam::Reader::from_path("test/locus.bam").unwrap();
1264 let elem = read.records().filter_map(Result::ok).nth(3).unwrap();
1265 assert_eq!(elem.qname(),b"SRR11292123.1482913");
1266 assert_eq!(elem.contig(),"chr14");
1267 let mut element = elem.aligned_blocks_match().unwrap();
1268 assert_eq!(element.next(),Some([99814926,99816399]));
1269 assert_eq!(element.next(),Some([99816400,99817131]));
1270 assert_eq!(element.next(),Some([99817132,99830222]));
1271 assert!(element.next().is_none());
1272 }
1273 #[test]
1274 fn testseq() {
1275 let mut read = crate::bam::Reader::from_path("test/locus.bam").unwrap();
1276 let elem = read.records().filter_map(Result::ok).nth(7).unwrap();
1277 let val = elem.matched_sequence().unwrap();
1278 assert!(val.isfullymatched(99820271..=99826916).is_some());
1279 assert!(val.isfullymatched(99820271..=99826917).is_none());
1280 let mut elem = val.gethash().iter();
1281 let test = elem.next();
1282 let rangepos = RangePos::new(99820271,99826917);
1283 assert_eq!(test,Some((&rangepos,&String::from("AGAGGCAGGGATGACAGAGACAGACACAAAGCAGAGAGACGGAGGCAGAGGGAGACATGCAGAGTCGCGGAGACATCCGGGCTCAGGCCCCGACTCTCAGGGGCCACCCCCAGGGAGGACACGCAGTGCACCCCCACACCCACACCTCACACACACACTCACACCCACATACCCCCATCCACACACACCCAGAGACACACAGACACCCACAGCCACACACTCACACTCACGAACTTATCCAGTCACGTCCCACACACTCCCACCCAACCCATACACCACACACCTACACAACCCATACACCACACACACTCACAAACTATATACCACACACACACCAACCATACACCTATATACACTCACACACCCATATACCACACACTCACACACAACCCATACACCACACGCACACAACCCATACACCTATACACACTCACACCTACAAACTATATACTACACACTCACACACAACCCATACACCTATACACACACACCCATATACCACACACAACCCATACACCACACACACAAACCATATACCACACACTCACACAACCCATACACCTATACACACTCATACCCATATACCACATACAACCAATATACCACACACACACAACCCATACACCTATACACACACACCTATACACCACACACAGCCCATACACTACACAATCACACCACAAACTGTATACCACACACTCACACATAACCCATACACCTATACACACACACCCATATACCACACACACAACCTGTGCACCTACACACACACATACACCACACACACACAACTCCTACACCTACACACACCCACCACCCATACACACACAGCCTATACACCTACACACACTCATACACTCATATAGCACACACACAACCCATATACCACACACACAACCCACATACCTATACACACACGCCCATACACCACACACTCACACAACCCATGCACCACATACACCCACAAACTATATGCTACACGCTCACACACAACCCATACACCTATACACAATCCCACAACCCATACACACTTACACAACCTATACACCACACACACTCACAATCTGTATACCACACACACAACCCATACAGTTATACACACACACCCATATACCACACACACACAACCCATATACCACACACTCACACACAAACCATACATCTATACACATACCCATATGCCACACATACAACCCATACACCACACACTCACACACAACACATACACCACACACACAACCCATAGAACACAAACACAAGTCATAACCACACACACAGCCCATATACCTATACACATTCACACACACAACCCATACACTACACACACAACACATACACCTATACACACTCACACTCAATTCATACACCACACACACACAGCCCATACATCTATACACAAACTCACACACAATCCATATACCACAAACTCACACACAACGCATACACCTATACACACACACGCAACTCATACAGCACACACTCACACAACCCACAGACCATAAACACACACAAGCCATAACCACACACAAACCCATACACCTATACACACACTCATAAACAAGCCATACACCCCTACACAACCCATACACCACACACTCACAACCCATACACCTATATACACACACAACCATATACCACAAACTCACGCTCAACACATACACCTATACACACACACAACTCATACACCACACACTCATACACAACGCACAGACCACATACACAAGCCATAACCACACACACACAACCCGTACACATATATACACACTAATAAACAAGCCATACACCTACACATACAACCCATACACCACACATTCACACATAACCCATACACCTATACACACACACACACAACCCATATACCACAAACACACACAACCTATACACACATACAACCCATACACCACACACACAACACATACACACCACACACACACAGAATACTCATACACACACCCATACACCACCCCCACACAGAACCCATACACCACACACACACAACCTATACACCTATACACACACTCACACACACAACTCATATACCACAAACACACACAACACATACACCTATGCACACACACAACCCATACACCACACATTCACATACAACCCATACACCACACACACACAACACATACATGAAACATACATACAACCCACACACCACCCACTCATACACAACCTATACACCACACACACAACTCATACACCTATACACACACAACACATACACCTATCATACACTCACAACACATACACCTCCTATACACACACAACACACACACTTCCTATACACACAACCCACACGCCTATACACACATCCTCACTCACACTCACCCTCACATTCATATACTCACTAACACACTTCCACACTCACACCCTCACCCACACTTACACCCCCACCCACACTCAAACCCCGACGCTAAGTCACTGTCACATTTGTACCCATGCTCACACGCTCACACGCTCACACACTCACCCCCCACCAGCTCCAGGGCTCACTGGTGTGTGCCCACCAAACCCCCCTCGGGGGTCCCCTCGGTAAGCCGACAGTGCTCTGCTCATCGGTGGCCTGGGGAAACAGGGCCCACCCAAGGCCTGGCTCAGGAAAGGCTCCAAACACACATGGCCCAGGAGCAAATGGGCAGAGCTCAGCCTGCAGCTGGGAGCGGCCGAGCGGGTGCTGGGCCAGAGTCGGGGCCTGTCTGTGGGTGAGGGGCACGGCAGCACGGGCCCACCTGCACCTACAAGGCCTGGCCCCCGAGGTCACTGGGCCACCACCCAGCCCTCGCCCTGTTCCCCGTCTGTGCTGGCCGGGGCAGGACTCTGAGCCTCGGGGAAACCCACAGATACACACGGGACCCCGAACATCGGGCTGGGGAGGCTGGGGTGGGTAACAACATCCCAGAGGCAGGAGCAGGAGGTCCTGGGACCCTGCACACTGCGACCCCAGCCCTGGGGGCTGAAGCCCAGGACAGCCTCAGGTCTCCCAGGAGGGACTGGATAGTGGGGGATGGTCAGAGAACAGGACAGCCAGCAGGGTGCAGCCCGAGGACAGGGATGGATGCTGGGAGGTCAACAGGACAGGGGCAGGGGCAGGGGCTGTGGAGTGTGAGAAGGTCCTGGAGGGCCTGGAGAACCTGTGGGTCAGTGTCTGTGGGAAGGAGGCCAGGAGCAGCCCTGAGTGGCCAGGCTGGCAGGGGTGAGGAGGTGGGGGCAGTGAGGTGAGGGTGACCGAGACAGGCCTCTGGCCAGGGAGGGGACCTTGGCTGGGCTCTGACTGAACCCAGGGCTCCTGGAGAAGGGGCCCCAGGCGGGGATGAGGATGTGGGCATCTGACTCCATCAACAATGGGGCTTCCAACACGCACAGCCTGGGCCTCGGAGACCTGGGCCCTGACCCGCCTCCCCCTGGCACTGGGCCGGGTGCCGTGTGTGGTCCCCAGTCCCCGCAGCACCTCCCCCACACTGGTCACGTTCCAGGGCCCCTCTGAAGCACCTGCTGTGAGGGGATGTGAGGAGGGGACAGGGACTTGGGCCTGAGCTGCCGGGTCGGGGGGGAGTCGGGGACCCAGGCTCAGCGTGTGGCTGGGGACCAGACAGATGGGGATGGAGGAGGACACGCCCTGTACCCACTGCCTGCCAAGGGGCTGGACCCACGCCCAGTCTAGGCCATGTCCCCCGAGGCCTGTGAACCTTCACTCTGAGCCACTAAAACATTCAGGAGCTTTGAAAGCAGCCCCCGTCCTTGTCACTATGCGATGACTCTGAGCATCACGCTGTCCCTGCTGGATCCACCCTCCAGCCCCAGCGAGGGAGGCTGGGCCCCGGGCAGCAGGTGGTGAGGGCAGCGGGCACAGCCACCCTACAGCACACACAGGGTCTCAGGGACGCGTCCACCACAGCCCGTGCACAGGCTCCTCACGGCACTGAGTTCACCCGGGGCGCGGGCCGTTTGTCCTCAGGAGTCCCACTGTGCCCTCCGCCCCCAGCCCTGTCCTGCTGAGGCTGCAGCTGGGTCCCGGGGCACAGGGCGGCCCTGAGCACCTTGTCATGTTGGTCCCTGTCGGGTGGGCTGCTGGCTGTCTGTGGAGCTGGCAGAGCCGCGGTTCAGCCTTGGAGGCCGGTCCTGGGGCCCAGCAGCCGTGGGGAGCACTGCCCAGTCCCGTGCCCACAGGGAATCACCTGGGCTGAGGAAGGGCCCACACGCCGACGGGATCGGGGTCAGGCAGCGCACGCCTGGCACCGAGATCCCACGTCCCGAAGTGGGGACACGGCCCAGGGGCACTGTTCCGGGAGGGTCTCAAGATGGGGTCTCCTATTTCAATCTTCACTCCTTCTGCACCTGTTAGCTGGGAACCTTCTAGAAGGAGGGGTGTCCTCAATCATGGGGTGGTTGTGAGCTGAGCACAGATCATGCAGGAAGGTACATGGCTTCTCCTTCACCAGGAAAACAGTGCAGAGAGACAGAGACACAGAGACAGAGTAACAGAGAAAGACAGAGAGACAGAGACACAGAGACAGAGACAGAGTAACAGAGAAAGACAGAGAGACAGAGAGACACAGACAGAGACAGAGTAACAGAGAAAGGCAGAGAGACAGAGAGAGACAGAGACAGAGTAACAGAGAAAGACAGAGAGGCAGAGAGAGAGAGACAGAGACAGAGACAGAGTAACAGAGATAGACAGAGAGACACAGAGACAGAGACAGAGTAACAGAGATAGAGAGACAGAGAGAGACACAGAGACAGAGTAACAGACAGAGACAGAGACAGGCACAGAGATAAGAAAGATACACAGAAACAGAGAGAGACAGAGACAGAGATAGTCACTGTCACATTCATACCCACGCTCACCTGCTCACACACACACACCTCACACACACTCACACTCACACTCACCTCACACACACAGTCACACACACACTCACACACACTCACACACACACACTGAGCTTCCCTCAGGCCCTGTCACTTCCGATGGGGCCTACGGCCTGTCTAAGCCTCTGGGCCACCAGCCCCTGGCTCACCGGTGTGTGCCCACCACACCCCGCCTTGGGGGTCTCCTCTATGAGCTGGGCACATGCCCTCCGCTCTGTTCATGGCTGGCCTGGGGGAAACAGGGCCCACCCAAGGCCTGGCTCAGGGAAGGCCTCAAACACACATGGCCCAGGAGCAAAGGGGCAGAGCTCAGCCTGCAGCTGGGAGCGGGCAGGGGTAGTGGAGTGGGCGGAGGGCCTGGAGAACCTGCAGGGCTACGATGTCTCTGGGAAGGGGGCCCAGGAGCAGCTCAGCGTGGCTGGGCCGGCAGGGCCGAGGAGGTGGGGGCCGTGAGGGAGGGGTGACTCGGCTGTGTGGGGTGCCGGGGGACACGGGCTTTGCTCCGGCTGAGCCCAGGCAGTGGCGAATCCCTGAGCTGCCAGGAGGAGAGCAGGGCCGGGGTCAGGCAGAGGTGGGCCGCGGGGCCGAGGGCTGCGGCCGGTCGGGAGCAGTCGGTCGGTTGAGGGCACCATTACATGGAGGGCTGTGAGACGGGAGACCCCATTCCCTTCATTCCTTGTGCACGTGTTAGTGAGGAAGCTTCTAGAAGGAGGGCATTGCTCGTAGTGGGTGAGTGTGAGCACAGATCATGCAGGCTGGCGTGCTGCCGTGAAGTGCCTCTCTTTACTTTCCAGACCTCAGCATGGCAAGCCCGTCCTGCGCCCCAGGGTCTTTCTGGAGTACACGCCGCGCGGTCCTGGTGGGCACCATACCTGGCACCCACGCTTTGGCCGGGCCCGAACCTTGCGCCCTCCCAGCCCCCATGTGGCTCTCCCTTGGCCATACTGGCCTTTTGCCAGTCCTCCTACCTCACCCTAGGGTCTGCCTGGCCCTGCCCTCCCTTCCTAGCCCCCCAAGGAGGCTGGAGGGCACCCCTGCGTCCACCAGCAGCAGCTCCTCATGGGCGAGTCTCCTTGGGCCAGTGACACATAGTGTGCCCCGATGGTGCCACGGCAGCCTGGGCCCTCCGCCTTCCTGCTTGGCAGGCACCCCCGCTCCCTGCACCCTCACCGGGGCACCTGTGAGCCCTGAGGGCCAGTGGGGGTCTCACTGCTGCTCCCTCCCACAGCCTAGCCTCGGGCCTCAGGGCTCTGCATCCAAGCGGCCCAGGGCTCCCTGAGGTCTCAGCCCGAGTGGGCCTTTGAGCCTTCGCGTTCTCTGCAGGGTGGGACCTGCCCAAGGGCTGCTGAGGGCTTCCCAGGGGTCCTGTGGGTCCCACCTAGGGGCAAGCTGGTGAGGAAAGTGGGTCCTGCCATGGCGGCCGGGTGGGCTGAGTTTTCGGCATCTCTGGGCCCAACAGCAGGTCCCTGGAGCGGCGCCCACCCCTCCCCCAGGCAGGTGTGAGGGCTCTGATCTGTTTCTCCTTGAGTGACTCATTCTGGGCAGACTTGGCCCTCAGGGCACATGCAAATGGTTGTTTGTTCCACACCGAAAACATGTTTCTTGCCCTCTGAGGCTGTTTCCAGAAATAGCTTGCACGATTCTCCACCTGCAGCTGCAGCCGCCACCCACCCAGTGTGGCCAGGCTGGCCCAGGCCTCCAGATTCGGGGACACCCCCCGCCCCCTCCCCCAGCGTGGCCAGGCTGGCTCAGGCCTCCAGATTCGGGGACA"))));
1284 let test = elem.next();
1285 let rangepos = RangePos::new(99826917,99827017);
1286 assert_eq!(test,Some((&rangepos,&String::from("CCCCCCCCCCCCAACAGCGTGGCCAGGCTGGCTCAGGCCTCCAGATTCGGGGACACCCCCCCACCACAGCGTGGCCAGGCTGGCTCAGGCCTCCAGATTC"))));
1287 let test = elem.next();
1288 let rangepos = RangePos::new(99827017,99829102);
1289 assert_eq!(test,Some((&rangepos,&String::from("GGGGACACCCGCCCCCTCCCCCAGGACAGGCCCACTTGGGTTACTGACACTGGGACCACCCTGCAAACGTCAACTTTATTGAATTCAGTGGTTCTGAACTTGTTGCCATCTTTGGGACCAGGACCCAGGGGCAGCCCCCAGGTTGGCAGGAAGGGCAGGGGAGCCAACGCTGGCAGGGCCCCCAGCCAACCCCCACCCCAGAAGCCCCAAGGAGGCTGAGCGGAGGTGGCCCTGGTGGCCTGGGCACAGGCAGCCCGATTGGTACAGGGCCTGTCTGGTGCAGGCCCGCACCTCCCCCACCCTCATGGCCTGGTGGTCCCCACTGTACAGAGAGAACACTGAGGCTCAGCAGGGCCAGGGACATGGCCTGAGGTTACATGGTGATGGGGGCTGGGTCTCCGGGCCTGGGGGCCGTGGTGGGTGCAGCACCCGGACTGCGTGGGCTGTGGCCTCCCTGCTCCCAGCTCTGTCACACCCGTCTCCATCTGAGCCTCCAGCTCCATCTTTCCCGCTGTCCCTGTCTCTGGCCACCCTTCTGTCTCCCTGTCTCTCTGCCTCTCTGAAGGTATCTCCCTGCCCGAATCTCTGTCTCTGTCCCATTGTCGGTGTCTCTGACTCATCTCTGTCAAGCCCGTCTGCTGGGCTTTGTCCCGCCATCTTGCCTGTCTTGGCCTCTCTCTCTTTCTGTGTGTCTCCGTCGGTGCCTCCTTTCTCCATCCATCTCTCCCCCGTGTCTGTCTCTATCCCTCCGTCTCTCTTCCCGTCTATCCCTCCCTCTGTGCCTGTCCCTTTGCTGTGTCCCTTTCTTTGCCTCTGTCTCTCTGTCTGTCTCTTCGTGTCCCTGTGTGTGTCTCTCTCTTCTCTCTGCTTCTCTTTCTGTATCTCTGTCTATATCTCAGCCTCTTTGTGTCCCTGTGTGTGTGTCTCTCTCTTCTCTGTCTTTCCATGTCTCTGTCTATATCTCTGTCTCTCTGCCTCTGTATCTCTGTCTGTCTGTTCGTGTCCCTGTGTATGTCTCTCTCTGTCTCTTTCTGTATCTCTGTCTATATCTGTCTCTCTCATCTGTCTCTTCCTGTGTGTGTCTCTCTGTCTCTCTGCCTCTGTCTCTGTCTCTCTGTCTCTTCATCTCTGTCTGTCTCTGCCTGTCTGTGTCATTTGGTGTCTCTGTTTTTGTATGTCTCTCTGTTTGTCTGTGTCTCTTCCTCTCTGTAGCTCTGCCTCTCTCTATCTCTCCTTATATCTGTCTTTCTCTCTCCCTGTTTCTTTCTCTGTCTCTTTTTGTCTTTCTGAGTCTGTCTCTGTCTCTGTCTCTTCCTCTCTGTATATACCTCTCTGTCTTTCTGTTGCTGTCTGTCTCTGTTTCTCTTCTCCTCTCTCTATCTCTCTTTGTCTGTCTTTCTCTGCCTTTCTAACTCTGTCTTTCTCTGTCTCTCTGTCTCTATCTCAGTCTCTCTTCTTATCTCTCTCTCTGTCTCTCTCACTCTCTGTATCTCTTTGTCTCTGTCTTTCTCTTATCTCTATCGCTCTGTCTCTATCTCTCTTTCTGTCTCTCTGTATCTCTATCTCTGTCTCTCTCATGTCTATCTCTCTGTCTTTCTCTGTCTCTCTGTATCTCTGTCTTTCATCTCTATCTCTATCTCTGTCTTTCTGTCTCTATCTCTGTCTCTCTATCTCTTTCTCTGTCTGTATCTCTCTGTCTCTATCTCTCTCTGTCTTTCTCTGTGTCTCTGTATCTCTGTCTCTATCTCTGTCTCTCTATCTCTCTCTGTCTCTCCCTGTCTCTCTCTATCTCTGTCTCTCCATCCCATGTGGGTCTGTGGGTTTCCCCGAGGCTCAGAGCCCTGCCCCGGTCAGCACAGACAGGGAACAGGGCGAGGGCTGGGTGGTGGCCCAGTGACCTTGGGGGCCAGGCCTTGGGGGTGCAGGTGGGCCCGTGCTGCCGTGCCCCCCACCCACAGACAGGCCCCGGCTCTGGCCCAGCACCCGCTCCGCCGCTCCCAGCTGCAGGCTGAGCTCTGCCCGTTTGCTGCTGGGCCATGTGTGTTTGGGGCCTTTCCTGAGCCAGGCCTTGGGTGGGCCCTGTTT"))));
1290 let test = elem.next();
1291 let rangepos = RangePos::new(99829102,99835825);
1292 assert_eq!(test,Some((&rangepos,&String::from("CCCCAGACCACCCATGAGCAGAGTGTAGGGCACGTGCCCAGCTCACAGAGGGGACCTCTGAGGCGGGGTGTGGTGGGCACACAGCAGTGAGCCATGAGGCTGGTGGCCCAGAGGCTTGGACATGCCGTGGGCCCCATAGGAAGTGACAGGGCTTGAGGGAAGCTCAGTGTGAGTGTGTGAGCGTGGGTATGAATGTGACAGTGACTCTCTATCTGTCTCTTTGTATCTCTGTCTCTCTGTGTGTATCTTTCTATCTCTGTCTCTCTATATGTCTCTCTATCTCTGTCTCTCTGTATCTCTATCTCTCTGTGTGTATCTTTCTATCTCTGTCTCTCTTTCTTGATCTCTCTCTATCTCTGTCTCTGTAACTCTCTTTATCTCTTACTGCTTCTGTTTCTCTCACTCTGTCTCTGTCTCTCTTTATCTCTGTCTTGCTCTCTCTCTCTGTAACTTTATCTCTGTCTCTCTGTTTCTATCTCTGTTTTTCTCTGTCTCTGTCTGTATCTCTGTCTCTCTTTATCTGTCTCTCTGTCTCTGTGTATCTCTGTCTCTCTGTAACTTTATCTCTGTCTTTTTCTGTCTCTGTGTGTGTCTGTCTCTGTGTCTTTGTTTTTCTCTCTGTCTCTGTCAATGTCTCTTTCTGTATCTGTTTCTTTCTCTCTGTCTCTGTCTCTCTATCTCTGTCTCTATCTCTCTGTCTCTCTGTAACTCCTCATCTCTGTCTCTGTGTCTGCATGTCTCTTTCTGTGTCTCTGTTTCTCTCTCTGTCTCTGTCTCTCTGTGACTCTGTCTCTGTCTCTGTCTCTGTCTTTCTCTGTTACTCTGTCTCTCTCTCTGTCTCTCTGTGACTCTATCTGTTACTCTGTCTCTGTCTCTGTCTCTCTCTGTCTCTCTTTCTCTGTTACTCTGTCTGTGTCTCTGTGTCTCTCTCTCGTCTGTCTTTCTCTGTTACTCTGTCTCTGTCTCTGTGTCTCTGTCTCTCTGCACTGTTTTCCTGGTGAAGGAGAAGCCATGTACCTTCCTGCATGATCTGTGCTCAGCTCACAACCACCCCATGATTGAGGACACCCCTCCTTCTAGAAGGTTCCCAGCTAACAGGTGCAGAAGGAGTGAAGATTGAAATAGGAGACCCCATCTTGAGACCCTCCCGGAACAGTGCCCCTGGGCCGTGTCCCCACTTCGGGACGTGGGATCTCGGTGCCAGGCGTGCGCTGCCTGACCCCGATCCCGTCGGCGTGTGGGCCCTTCCTCAGCCCAGGTGATTCCCTGTGGGCACGGGACTGGGCAGTGCTCCCCACGGCTGCTGGGCCCCAGGACCGGCCTCCAAGGCTGAACCGCGGCTCTGCCAGCTCCACAGACAGCCAGCAGCCCACCCGACAGGGACCAACATGACAAGGTGCTCAGGGCCGCCCTGTGCCCCGGGACCCAGCTGCAGCCTCAGCAGGACAGGGCTGGGGGTGGAGGGCACAGCCGGACTCCTGAGGACAAACGGCCCGCGCCCCGGGTGAACTCAGTGCCGTGGGGAGCCTGTGCACGGGCTGTGGTGGACGCGTCCCTGAGACCCTGTGTGTGCTGTAGGGTGGCTGTGCCCGCTGCCCTCACCACCTGCTGCCCGGGGCCCAGCCTCCCTCGCTGGGGCTGGAGGGTGGATCCAGCAGGGACAGCGTGATGCTCAGAGTCATCGCATAGTGACAAGGACGGGGGCTGCTTTCAAAGCTCCTGAATGTTTTAGTGGCTCAGAGTGAAGGTTCACAGGCCTCGGGGGACATGGCCTAGACTGGGCGTGGGTCCAGCCCCTTGGCAAGCAGTGGGTACATGGCGTGTCCTCCTCCATCCCCATCTGTCTGGTCCCCAGCCACACGCTGAGCCTGGGTCCCCGACTCCCCCCCGACCCGGCAGCTCAGGCCCAAGTCCCTGTCCCCTCCCCACATCCCCTCACAGCAGGTGCTTCAGAGGGGCCCTGGAACGTGACCAGTGTGGGGGAGGTGCTGCGGGGACTGGGGACCACACACGGCACCCGGCCCAGTGCCAGGGGGAGGCGGGTCAGGGCCCAGGTCTCCGAGGCCCAGGCTGTGCGTGTTGGAAGCCCCATTGTTGATGGAGTCAGATGCCCACATCCTCATCCCCGCCTGGGGCCCCTTCTTCAGGAGCCCTGGGTTCAGTCAGAGCCCAGCCAAGGTCCCCTCCCTGGCCAGAGGCCTCACTGTCTCGGTCACCCTCACCTCACTGCCCCCACCTCCTCACCCCTGCCAGCCTGGCCACTCTGGGCTGCTCCTGGCCTCCTTCCCACAAACACGGACCCACAGGTTCTCTAGGCCCTCCAGGACCTTCGCCCACTCCACGGCCCCTGCCCCTGTCCTGTTGACCTCCCAGCGTCCATCCCTGTCCTCGGGCTGCACCCTGCTGGCTATCCTGTTCTCTGACCATCCCCCACTGTCCAGTCCCTCCTGGGAGACCTGAGGCCGTCCTGGGCTTCAGCCCCCAGGGCTGGGGTCGCAGTGCGCAGGGTCCTGGGACCTCCTGCTCCCGCCTCTCCCATGTTGTTACCCACCCCAGCCCGATGTTCGGGGTCCTGTGTGGATCTGTAGGTTTCCCCGAGGCTCAGAGTCCTGCCCCGTCCAGCACAGACGGGGAACAGGGCGAGGGCTGGGTGGTGGCCCAGTGACCTCGGGGGCCAGGCCTTGTAGGTGCAGGTGGGCCCGTGCTGCCGTGCCCCCCACCCACAGACAGGCCCCGACTCTGGCCCAGCGCCCGCTCGGCCGCTCCCAGCTGCAGGCTGAGGTCTCCCCATTTGCTCCTGGGCCATGTGTGTTTGGGTGTGAGTGTGGGTATGGATGTGACAGTGACTTAGTGTGTGGCTGTGAGCGTGGGTATGTTTCTGTGTGTTTGTGTGTGAATGTTGTATAATAGTCGTGGTGTGTGTTTGTGAGAGTGACTGTGTGAGAGGGGCTTGCAGCTGAGTTCCTGGGCCCATCTTGCTGCCTCTTTCTCTCCCTGTGTGTTCTCTGCCTCTGTTGTGTTCTCTCTGCATGTCTGTCTCCATGTCTCTTTTTCCCTGTTCCCATCTCCTCCCTTTTTCTCCCATCTCTGTCTCTGTTTCTTATCTATCTCATCTCATCTCTCTCTTTCTGTCTCTTGTGTCTCTGTCCCTCCCCATCCCTGTCTCTTATCTCTCTCCATCCCCATCTCTCTCTCTGTGTCTGTCTTTGTCTCTGTCTCTATGTCTCTTGTCTCTCCCCATCCCTGTCTCTCTCTATGTCTCTGTGTCTCTTATCTCTCCCCATCCCTGTCTCTCTATGTCTCTGTGTCTCTTATCTCTCCTTGTCCTTGTCTTTCTCTGTCTACGTCTCTGTGTCTCTCTCCATCCCTGTCTCTCTCTATGTCTCTGTGTCTCTTATCTCTCCCTATCCCTGTCTCTCTATGTCTCTTGTCTCTCCCCATCCCTGTCTCTCTCTCTCTATGTCTCTGTGTCTCTTATCTCTCCCCATCCCTGTCTCTCTCTATGTCTCTTCATCTCTTATCTCTCTCCCCATCCCTGTCTCTATGTCTCTGTGTCTCTTATCTCTCCCCATCCTTGTCTCTGTCTATGTCTCTGTGTCTCTTGTCTCTCCCTGTCCCTGTCTCTCTCTATGTCTCTGTGTCTCTCTGGGCCCCTGGTCCAATGTCCCCTTCCCAGAACCCCTGTTTCCCTGGTGTGGGGTGCAGGTCCTTCTGTGGCCCTGTGGGCCGTGCTTGTGCTGGGCACAGCCTGCCAGGGCAGCCACTCAAGCCCCAGGGCTGGGCACTGCGTCCTGGCTCTGGCCAAGGGCCCTGGGGAGAGCTGAGGGAGGTGCATGCAGGGTGTGAGGCCCACCACAGTCACTGCCAGATGCTCAGTGCTGGTGCTTCCCTGGGTCTGCTGTGTGGTGGGCACAGCCCTCGTGAGGGCTGCCCATGGAGGAGGCCTGCCGCCTAGAGAGCCCGGACAGGGGGACAATGGCCTGTGCTGACCCTGGCGGAACCCTGGCTGGCCCCAGATGACCCCAGATGGCCCTGGCTGACCCTGGCGGAACCCAGATGACCCTGGCTGACCCTGGCTGGCCCTGGCTGACCCCAGATGACCCTGGCTGACCCTGGCTGATCCTGGCTGACCCTGGCTGACCTCTGCCTAACCCTGGACCTGGAAAGCCCTAGCTGACCCCGGGCTGGTTGGGGCTGGGCCTCCCTGTGGCTGCAGCCCCTCGCTCAGGCCCCAGGCACACCTGGCCAGGTCTCGGTTTTGGGGCATGTTTCTCAGAACAGCAGTTCTCTGGCTGGAACACCTGGCCTGGGCTGTGTTCACAATGACTCAGCCGCCCCACAGGGCTATTTTGGATATTTCTGCAGGTGATGGGGTACAAGAGGCTTCAGGAGAGAGAGAAAAGCAAGAGAATACAAACAGCATGGCCTCCCCCGACCTTCCTGTCCCCACTCCTGTACTGTACCCCCTCCCCAGTGCTAAGTCGAGACCTGGCGACCCCTTAGGGGCTGGGGCTGGGTGTAGCTCACAGGGCCTGGGCTGGTCCTCTCCCCACCAAGTCCTCCTGGGGCCTACACACCCCTCTGAGCCTGGAAAAATGGAGCAAGCCATTGGGGTCATTTCTTCATCTACCAGTGAGTACATGCACTGAGAGGGTCTCGGCTCCCCTGGAGGCCTCCCTCCACCACTGCAGGTCACTTACTCATGAGGGCCAAGGCTCAGAAATCAGACAGGACTCAGTGTCTAGTCAGACTGATACATGCTCAGAAAAGGAATCAGATTTCAAAATGAATATGTATAAGAAAAGAACCGGGGATCAGTGATCAGGAACAGGGATCCATGATCTGGTCCAGGGCTCAGCGGTCAGGAACAGGGCCCAGCGATCAGGACCAGGGCTCAGTAATCAGGACCAGGGCCCAGTGATCAGGACCAGGGCCCAGCGATTGGGTCCAGGGCTCAGTGATCAGGAACAGGGCTCAGTGATCAGGACCAGGGCCCAGTGATCAGGAACAGGGGCCAGTGACTGGGTCCAGGGCTCAGTAATCAGGACCAGGGCTCAGTGATCAGGACCAGGGCTCAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGACCAGCATTCAGTGATCAGGACCAGGGCTCAGTGATCAGGAACAGGGCTCAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGACCAGCACTCAGTGATCAGGACCAGGGCCCAGTGATCAGGAACAGGGGCCAGTGACTGGGTCCAGGGCTCAGTAATCAGGACCAGGGCTCAGTGATCAGGACCAGGGCTCAGTGATCAGGAATAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGACCAGGGCTCAGTGATCAGGAACAGGGCTCAGTGATCAGGAACAGTGGTCAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCGGGACCAGGGCTCAGTGATCAGGACCAGGGCCCAGTGATTGTGTCCAGGGCTCAGTGATCAGGACCAGGGCTCAGTGATCAGGAACAGGGCTCAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGACCAGCACTCAGTGATCAGGACCAGGGCCCAGTGATCAGGACCAGGGCCCAGCGATTGGGTCCAGGGCTCAGTAATCAGGACCAGGGCCCAGTGATCAGGAACAGGGCTCAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGAACAGGGCTCAGAGATCAGGACCAGGGCCCAGCGATTGGGTCCAGAGCTCAGTGATCAGGAACAGGGCCCAGCGATCAGGACCAGGGCTCAGTAATCAGGACCAGGGCTCAGTGATCAGGACCAGGGCCCAGTGATCAGGAACAGGGGCCAGTGACTGGGTCCAGGGCTCAGTAATCAGGACCAGGGCTCAGTGATCAGGAACAGCGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGACCAGCGCTCAGTGATCAGGAGCAGGGCTCAGTAATCAGGACCAGGGCCCAGTGATCAGGAACAGGGCTCAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGACCAGGGCCCAGCGATTGGGTCCAGAGCTCAGTGATCAGGAACAGGGCCCAGCGATCAGGACCAGGGCTCAGTAATCAGGACCAGGGCTCAGTGATCAGTACCAGGGCCCAGCGATTGGGTCCAGGGCTCAGTGATCAGGACCAGGGCCCAGCGATTGGGTCCAGGGCTCAGTGATCAGGAACAGGGCCCAGCGATCAGGACCAGGGCTCAGTAATCAGGACCAGGGCTCAGTGATCAGGACCAGGGCCCAGCGATTGGGTCCAGGGCTCAGTGATCAGGAACAGGGCCCAGCGATTGGGTCCAGGGCTCAGTGATCAGGAACAGGGCCCAGCGATCAGGACCAGGGCTCAGTAATCAGGACCAGGGCTCAGTGATCAGGACCAGGGCCCAGCGATTGGGTCCAGGGCTCAGTGATCAGGACCAGGGCCCAGCGATTGGGTCCAGGGCTCAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGAACAGGGGTTAGTGATCAGGAACAGGGCTCAGTGATCAGGACCAGGGCCCAGTGATT"))));
1293 assert!(elem.next().is_none());
1294 }
1295 #[test]
1296 fn spliced_reads() {
1297 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
1298 let mut it = bam.records();
1299 let blocks: Vec<_> = it.next().expect("iter").unwrap().aligned_blocks().collect();
1300 assert!(blocks[0] == [16050676, 16050721]);
1302
1303 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1304 assert!(blocks[0] == [16096878, 16096885]);
1306 assert!(blocks[1] == [16096887, 16096931]);
1308
1309 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1310 assert!(blocks[0] == [16097145, 16097174]);
1312 assert!(blocks[1] == [16097176, 16097198]);
1314
1315 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1316 assert!(blocks[0] == [16117350, 16117401]);
1318
1319 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1320 assert!(blocks[0] == [16118483, 16118534]);
1322
1323 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1324 assert!(blocks[0] == [16118499, 16118550]);
1326
1327 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1328 assert!(blocks[0] == [16118499, 16118550]);
1330
1331 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1332 assert!(blocks[0] == [16118499, 16118550]);
1334
1335 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1336 assert!(blocks[0] == [16123411, 16123462]);
1338
1339 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1340 assert!(blocks[0] == [16123417, 16123462]);
1342
1343 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1344 assert!(blocks[0] == [16165860, 16165901]);
1346
1347 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1348 assert!(blocks[0] == [16180871, 16180922]);
1350
1351 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1352 assert!(blocks[0] == [16189705, 16189756]);
1354
1355 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1356 assert!(blocks[0] == [16231271, 16231322]);
1358
1359 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1360 assert!(blocks[0] == [16237657, 16237708]);
1362
1363 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1364 assert!(blocks[0] == [16255012, 16255054]);
1366
1367 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1368 assert!(blocks[0] == [16255391, 16255442]);
1370
1371 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1372 assert!(blocks[0] == [16255392, 16255442]);
1374
1375 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1376 assert!(blocks[0] == [16256084, 16256129]);
1378
1379 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1380 assert!(blocks[0] == [16256224, 16256272]);
1382
1383 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1384 assert!(blocks[0] == [16325199, 16325241]);
1386
1387 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1388 assert!(blocks[0] == [16352865, 16352903]);
1390
1391 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1392 assert!(blocks[0] == [16352968, 16353012]);
1394
1395 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1396 assert!(blocks[0] == [16414998, 16415044]);
1398
1399 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1400 assert!(blocks[0] == [17031591, 17031614]);
1402 assert!(blocks[1] == [17031614, 17031638]);
1404
1405 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1406 assert!(blocks[0] == [17057382, 17057400]);
1408 assert!(blocks[1] == [17057400, 17057432]);
1410
1411 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1412 assert!(blocks[0] == [17092766, 17092783]);
1414 assert!(blocks[1] == [17094966, 17095000]);
1416
1417 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1418 assert!(blocks[0] == [17092782, 17092783]);
1420 assert!(blocks[1] == [17094966, 17095016]);
1422
1423 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1424 assert!(blocks[0] == [17092782, 17092783]);
1426 assert!(blocks[1] == [17094966, 17095016]);
1428
1429 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1430 assert!(blocks[0] == [17137287, 17137320]);
1432
1433 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1434 assert!(blocks[0] == [17306238, 17306286]);
1436
1437 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1438 assert!(blocks[0] == [17561868, 17561913]);
1440
1441 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1442 assert!(blocks[0] == [17566078, 17566119]);
1444 assert!(blocks[1] == [17577951, 17577961]);
1446
1447 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1448 assert!(blocks[0] == [17566108, 17566119]);
1450 assert!(blocks[1] == [17577951, 17577976]);
1452 assert!(blocks[2] == [17578686, 17578701]);
1454
1455 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1456 assert!(blocks[0] == [17566111, 17566119]);
1458 assert!(blocks[1] == [17577951, 17577976]);
1460 assert!(blocks[2] == [17578686, 17578704]);
1462
1463 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1464 assert!(blocks[0] == [17566111, 17566119]);
1466 assert!(blocks[1] == [17577951, 17577976]);
1468 assert!(blocks[2] == [17578686, 17578704]);
1470
1471 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1472 assert!(blocks[0] == [17566111, 17566119]);
1474 assert!(blocks[1] == [17577951, 17577976]);
1476 assert!(blocks[2] == [17578686, 17578704]);
1478
1479 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1480 assert!(blocks[0] == [17566111, 17566119]);
1482 assert!(blocks[1] == [17577951, 17577976]);
1484 assert!(blocks[2] == [17578686, 17578704]);
1486
1487 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1488 assert!(blocks[0] == [17566112, 17566119]);
1490 assert!(blocks[1] == [17577951, 17577976]);
1492 assert!(blocks[2] == [17578686, 17578705]);
1494
1495 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1496 assert!(blocks[0] == [17566113, 17566119]);
1498 assert!(blocks[1] == [17577951, 17577976]);
1500 assert!(blocks[2] == [17578686, 17578706]);
1502
1503 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1504 assert!(blocks[0] == [17566113, 17566119]);
1506 assert!(blocks[1] == [17577951, 17577976]);
1508 assert!(blocks[2] == [17578686, 17578706]);
1510
1511 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1512 assert!(blocks[0] == [17579733, 17579777]);
1514 assert!(blocks[1] == [17581244, 17581250]);
1516
1517 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1518 assert!(blocks[0] == [17581369, 17581371]);
1520 assert!(blocks[1] == [17582885, 17582933]);
1522 assert!(blocks[2] == [17583028, 17583029]);
1524
1525 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1526 assert!(blocks[0] == [17581370, 17581371]);
1528 assert!(blocks[1] == [17582885, 17582933]);
1530 assert!(blocks[2] == [17583028, 17583030]);
1532
1533 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1534 assert!(blocks[0] == [17581370, 17581371]);
1536 assert!(blocks[1] == [17582885, 17582933]);
1538 assert!(blocks[2] == [17583028, 17583030]);
1540
1541 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1542 assert!(blocks[0] == [17582911, 17582933]);
1544 assert!(blocks[1] == [17583028, 17583056]);
1546
1547 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1548 assert!(blocks[0] == [17588621, 17588658]);
1550 assert!(blocks[1] == [17589196, 17589209]);
1552
1553 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1554 assert!(blocks[0] == [17588621, 17588658]);
1556 assert!(blocks[1] == [17589196, 17589209]);
1558
1559 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1560 assert!(blocks[0] == [17588621, 17588658]);
1562 assert!(blocks[1] == [17589196, 17589209]);
1564
1565 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1566 assert!(blocks[0] == [17591770, 17591795]);
1568 assert!(blocks[1] == [17591796, 17591821]);
1570
1571 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1572 assert!(blocks[0] == [17593855, 17593879]);
1574 assert!(blocks[1] == [17593880, 17593904]);
1576
1577 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1578 assert!(blocks[0] == [17593863, 17593879]);
1580 assert!(blocks[1] == [17593880, 17593908]);
1582
1583 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1584 assert!(blocks[0] == [17596476, 17596483]);
1586 assert!(blocks[1] == [17596483, 17596515]);
1588
1589 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1590 assert!(blocks[0] == [17624012, 17624021]);
1592 assert!(blocks[1] == [17625913, 17625950]);
1594
1595 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1596 assert!(blocks[0] == [17624012, 17624021]);
1598 assert!(blocks[1] == [17625913, 17625953]);
1600
1601 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1602 assert!(blocks[0] == [31796700, 31796707]);
1604 assert!(blocks[1] == [31796710, 31796729]);
1606 assert!(blocks[2] == [31799014, 31799038]);
1608
1609 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1610 assert!(blocks[0] == [36722692, 36722706]);
1612 assert!(blocks[1] == [36723505, 36723533]);
1614 assert!(blocks[2] == [36737414, 36737421]);
1616
1617 let blocks: Vec<_> = it.next().unwrap().unwrap().aligned_blocks().collect();
1618 assert!(blocks[0] == [44587963, 44587984]);
1620 assert!(blocks[1] == [44589680, 44589703]);
1622 assert!(blocks[2] == [44592034, 44592037]);
1624 }
1625
1626 #[test]
1627 fn test_introns() {
1628 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
1629 let mut it = bam.records();
1630
1631 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1633 assert_eq!(introns.len(), 0);
1634 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1636 assert_eq!(introns.len(), 0);
1637 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1639 assert_eq!(introns.len(), 0);
1640 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1642 assert_eq!(introns.len(), 0);
1643 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1645 assert_eq!(introns.len(), 0);
1646 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1648 assert_eq!(introns.len(), 0);
1649 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1651 assert_eq!(introns.len(), 0);
1652 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1654 assert_eq!(introns.len(), 0);
1655 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1657 assert_eq!(introns.len(), 0);
1658 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1660 assert_eq!(introns.len(), 0);
1661 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1663 assert_eq!(introns.len(), 0);
1664 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1666 assert_eq!(introns.len(), 0);
1667 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1669 assert_eq!(introns.len(), 0);
1670 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1672 assert_eq!(introns.len(), 0);
1673 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1675 assert_eq!(introns.len(), 0);
1676 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1678 assert_eq!(introns.len(), 0);
1679 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1681 assert_eq!(introns.len(), 0);
1682 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1684 assert_eq!(introns.len(), 0);
1685 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1687 assert_eq!(introns.len(), 0);
1688 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1690 assert_eq!(introns.len(), 0);
1691 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1693 assert_eq!(introns.len(), 0);
1694 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1696 assert_eq!(introns.len(), 0);
1697 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1699 assert_eq!(introns.len(), 0);
1700 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1702 assert_eq!(introns.len(), 0);
1703 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1705 assert_eq!(introns.len(), 0);
1706 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1708 assert_eq!(introns.len(), 0);
1709 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1711 assert_eq!(introns.len(), 1);
1712 assert_eq!(introns[0], [17092783, 17094966]);
1713 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1715 assert_eq!(introns.len(), 1);
1716 assert_eq!(introns[0], [17092783, 17094966]);
1717 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1719 assert_eq!(introns.len(), 1);
1720 assert_eq!(introns[0], [17092783, 17094966]);
1721 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1723 assert_eq!(introns.len(), 0);
1724 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1726 assert_eq!(introns.len(), 0);
1727 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1729 assert_eq!(introns.len(), 0);
1730 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1732 assert_eq!(introns.len(), 1);
1733 assert_eq!(introns[0], [17566119, 17577951]);
1734 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1736 assert_eq!(introns.len(), 2);
1737 assert_eq!(introns[0], [17566119, 17577951]);
1738 assert_eq!(introns[1], [17577976, 17578686]);
1739 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1741 assert_eq!(introns.len(), 2);
1742 assert_eq!(introns[0], [17566119, 17577951]);
1743 assert_eq!(introns[1], [17577976, 17578686]);
1744 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1746 assert_eq!(introns.len(), 2);
1747 assert_eq!(introns[0], [17566119, 17577951]);
1748 assert_eq!(introns[1], [17577976, 17578686]);
1749 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1751 assert_eq!(introns.len(), 2);
1752 assert_eq!(introns[0], [17566119, 17577951]);
1753 assert_eq!(introns[1], [17577976, 17578686]);
1754 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1756 assert_eq!(introns.len(), 2);
1757 assert_eq!(introns[0], [17566119, 17577951]);
1758 assert_eq!(introns[1], [17577976, 17578686]);
1759 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1761 assert_eq!(introns.len(), 2);
1762 assert_eq!(introns[0], [17566119, 17577951]);
1763 assert_eq!(introns[1], [17577976, 17578686]);
1764 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1766 assert_eq!(introns.len(), 2);
1767 assert_eq!(introns[0], [17566119, 17577951]);
1768 assert_eq!(introns[1], [17577976, 17578686]);
1769 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1771 assert_eq!(introns.len(), 2);
1772 assert_eq!(introns[0], [17566119, 17577951]);
1773 assert_eq!(introns[1], [17577976, 17578686]);
1774 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1776 assert_eq!(introns.len(), 1);
1777 assert_eq!(introns[0], [17579777, 17581244]);
1778 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1780 assert_eq!(introns.len(), 2);
1781 assert_eq!(introns[0], [17581371, 17582885]);
1782 assert_eq!(introns[1], [17582933, 17583028]);
1783 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1785 assert_eq!(introns.len(), 2);
1786 assert_eq!(introns[0], [17581371, 17582885]);
1787 assert_eq!(introns[1], [17582933, 17583028]);
1788 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1790 assert_eq!(introns.len(), 2);
1791 assert_eq!(introns[0], [17581371, 17582885]);
1792 assert_eq!(introns[1], [17582933, 17583028]);
1793 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1795 assert_eq!(introns.len(), 1);
1796 assert_eq!(introns[0], [17582933, 17583028]);
1797 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1799 assert_eq!(introns.len(), 1);
1800 assert_eq!(introns[0], [17588658, 17589196]);
1801 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1803 assert_eq!(introns.len(), 1);
1804 assert_eq!(introns[0], [17588658, 17589196]);
1805 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1807 assert_eq!(introns.len(), 1);
1808 assert_eq!(introns[0], [17588658, 17589196]);
1809 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1811 assert_eq!(introns.len(), 0);
1812 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1814 assert_eq!(introns.len(), 0);
1815 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1817 assert_eq!(introns.len(), 0);
1818 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1820 assert_eq!(introns.len(), 0);
1821 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1823 assert_eq!(introns.len(), 1);
1824 assert_eq!(introns[0], [17624021, 17625913]);
1825 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1827 assert_eq!(introns.len(), 1);
1828 assert_eq!(introns[0], [17624021, 17625913]);
1829 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1831 assert_eq!(introns.len(), 1);
1832 assert_eq!(introns[0], [31796729, 31799014]);
1833 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1835 assert_eq!(introns.len(), 2);
1836 assert_eq!(introns[0], [36722706, 36723505]);
1837 assert_eq!(introns[1], [36723533, 36737414]);
1838 let introns: Vec<_> = it.next().unwrap().unwrap().introns().collect();
1840 assert_eq!(introns.len(), 2);
1841 assert_eq!(introns[0], [44587984, 44589680]);
1842 assert_eq!(introns[1], [44589703, 44592034]);
1843 }
1844
1845 #[test]
1846 fn test_aligned_pairs() {
1847 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
1848 let mut it = bam.records();
1849
1850 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
1851 assert_eq!(
1852 pairs,
1853 vec![
1854 [6, 16050676],
1855 [7, 16050677],
1856 [8, 16050678],
1857 [9, 16050679],
1858 [10, 16050680],
1859 [11, 16050681],
1860 [12, 16050682],
1861 [13, 16050683],
1862 [14, 16050684],
1863 [15, 16050685],
1864 [16, 16050686],
1865 [17, 16050687],
1866 [18, 16050688],
1867 [19, 16050689],
1868 [20, 16050690],
1869 [21, 16050691],
1870 [22, 16050692],
1871 [23, 16050693],
1872 [24, 16050694],
1873 [25, 16050695],
1874 [26, 16050696],
1875 [27, 16050697],
1876 [28, 16050698],
1877 [29, 16050699],
1878 [30, 16050700],
1879 [31, 16050701],
1880 [32, 16050702],
1881 [33, 16050703],
1882 [34, 16050704],
1883 [35, 16050705],
1884 [36, 16050706],
1885 [37, 16050707],
1886 [38, 16050708],
1887 [39, 16050709],
1888 [40, 16050710],
1889 [41, 16050711],
1890 [42, 16050712],
1891 [43, 16050713],
1892 [44, 16050714],
1893 [45, 16050715],
1894 [46, 16050716],
1895 [47, 16050717],
1896 [48, 16050718],
1897 [49, 16050719],
1898 [50, 16050720]
1899 ]
1900 );
1901 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
1902 assert_eq!(
1903 pairs,
1904 vec![
1905 [0, 16096878],
1906 [1, 16096879],
1907 [2, 16096880],
1908 [3, 16096881],
1909 [4, 16096882],
1910 [5, 16096883],
1911 [6, 16096884],
1912 [7, 16096887],
1913 [8, 16096888],
1914 [9, 16096889],
1915 [10, 16096890],
1916 [11, 16096891],
1917 [12, 16096892],
1918 [13, 16096893],
1919 [14, 16096894],
1920 [15, 16096895],
1921 [16, 16096896],
1922 [17, 16096897],
1923 [18, 16096898],
1924 [19, 16096899],
1925 [20, 16096900],
1926 [21, 16096901],
1927 [22, 16096902],
1928 [23, 16096903],
1929 [24, 16096904],
1930 [25, 16096905],
1931 [26, 16096906],
1932 [27, 16096907],
1933 [28, 16096908],
1934 [29, 16096909],
1935 [30, 16096910],
1936 [31, 16096911],
1937 [32, 16096912],
1938 [33, 16096913],
1939 [34, 16096914],
1940 [35, 16096915],
1941 [36, 16096916],
1942 [37, 16096917],
1943 [38, 16096918],
1944 [39, 16096919],
1945 [40, 16096920],
1946 [41, 16096921],
1947 [42, 16096922],
1948 [43, 16096923],
1949 [44, 16096924],
1950 [45, 16096925],
1951 [46, 16096926],
1952 [47, 16096927],
1953 [48, 16096928],
1954 [49, 16096929],
1955 [50, 16096930]
1956 ]
1957 );
1958 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
1959 assert_eq!(
1960 pairs,
1961 vec![
1962 [0, 16097145],
1963 [1, 16097146],
1964 [2, 16097147],
1965 [3, 16097148],
1966 [4, 16097149],
1967 [5, 16097150],
1968 [6, 16097151],
1969 [7, 16097152],
1970 [8, 16097153],
1971 [9, 16097154],
1972 [10, 16097155],
1973 [11, 16097156],
1974 [12, 16097157],
1975 [13, 16097158],
1976 [14, 16097159],
1977 [15, 16097160],
1978 [16, 16097161],
1979 [17, 16097162],
1980 [18, 16097163],
1981 [19, 16097164],
1982 [20, 16097165],
1983 [21, 16097166],
1984 [22, 16097167],
1985 [23, 16097168],
1986 [24, 16097169],
1987 [25, 16097170],
1988 [26, 16097171],
1989 [27, 16097172],
1990 [28, 16097173],
1991 [29, 16097176],
1992 [30, 16097177],
1993 [31, 16097178],
1994 [32, 16097179],
1995 [33, 16097180],
1996 [34, 16097181],
1997 [35, 16097182],
1998 [36, 16097183],
1999 [37, 16097184],
2000 [38, 16097185],
2001 [39, 16097186],
2002 [40, 16097187],
2003 [41, 16097188],
2004 [42, 16097189],
2005 [43, 16097190],
2006 [44, 16097191],
2007 [45, 16097192],
2008 [46, 16097193],
2009 [47, 16097194],
2010 [48, 16097195],
2011 [49, 16097196],
2012 [50, 16097197]
2013 ]
2014 );
2015 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2016 assert_eq!(
2017 pairs,
2018 vec![
2019 [0, 16117350],
2020 [1, 16117351],
2021 [2, 16117352],
2022 [3, 16117353],
2023 [4, 16117354],
2024 [5, 16117355],
2025 [6, 16117356],
2026 [7, 16117357],
2027 [8, 16117358],
2028 [9, 16117359],
2029 [10, 16117360],
2030 [11, 16117361],
2031 [12, 16117362],
2032 [13, 16117363],
2033 [14, 16117364],
2034 [15, 16117365],
2035 [16, 16117366],
2036 [17, 16117367],
2037 [18, 16117368],
2038 [19, 16117369],
2039 [20, 16117370],
2040 [21, 16117371],
2041 [22, 16117372],
2042 [23, 16117373],
2043 [24, 16117374],
2044 [25, 16117375],
2045 [26, 16117376],
2046 [27, 16117377],
2047 [28, 16117378],
2048 [29, 16117379],
2049 [30, 16117380],
2050 [31, 16117381],
2051 [32, 16117382],
2052 [33, 16117383],
2053 [34, 16117384],
2054 [35, 16117385],
2055 [36, 16117386],
2056 [37, 16117387],
2057 [38, 16117388],
2058 [39, 16117389],
2059 [40, 16117390],
2060 [41, 16117391],
2061 [42, 16117392],
2062 [43, 16117393],
2063 [44, 16117394],
2064 [45, 16117395],
2065 [46, 16117396],
2066 [47, 16117397],
2067 [48, 16117398],
2068 [49, 16117399],
2069 [50, 16117400]
2070 ]
2071 );
2072 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2073 assert_eq!(
2074 pairs,
2075 vec![
2076 [0, 16118483],
2077 [1, 16118484],
2078 [2, 16118485],
2079 [3, 16118486],
2080 [4, 16118487],
2081 [5, 16118488],
2082 [6, 16118489],
2083 [7, 16118490],
2084 [8, 16118491],
2085 [9, 16118492],
2086 [10, 16118493],
2087 [11, 16118494],
2088 [12, 16118495],
2089 [13, 16118496],
2090 [14, 16118497],
2091 [15, 16118498],
2092 [16, 16118499],
2093 [17, 16118500],
2094 [18, 16118501],
2095 [19, 16118502],
2096 [20, 16118503],
2097 [21, 16118504],
2098 [22, 16118505],
2099 [23, 16118506],
2100 [24, 16118507],
2101 [25, 16118508],
2102 [26, 16118509],
2103 [27, 16118510],
2104 [28, 16118511],
2105 [29, 16118512],
2106 [30, 16118513],
2107 [31, 16118514],
2108 [32, 16118515],
2109 [33, 16118516],
2110 [34, 16118517],
2111 [35, 16118518],
2112 [36, 16118519],
2113 [37, 16118520],
2114 [38, 16118521],
2115 [39, 16118522],
2116 [40, 16118523],
2117 [41, 16118524],
2118 [42, 16118525],
2119 [43, 16118526],
2120 [44, 16118527],
2121 [45, 16118528],
2122 [46, 16118529],
2123 [47, 16118530],
2124 [48, 16118531],
2125 [49, 16118532],
2126 [50, 16118533]
2127 ]
2128 );
2129 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2130 assert_eq!(
2131 pairs,
2132 vec![
2133 [0, 16118499],
2134 [1, 16118500],
2135 [2, 16118501],
2136 [3, 16118502],
2137 [4, 16118503],
2138 [5, 16118504],
2139 [6, 16118505],
2140 [7, 16118506],
2141 [8, 16118507],
2142 [9, 16118508],
2143 [10, 16118509],
2144 [11, 16118510],
2145 [12, 16118511],
2146 [13, 16118512],
2147 [14, 16118513],
2148 [15, 16118514],
2149 [16, 16118515],
2150 [17, 16118516],
2151 [18, 16118517],
2152 [19, 16118518],
2153 [20, 16118519],
2154 [21, 16118520],
2155 [22, 16118521],
2156 [23, 16118522],
2157 [24, 16118523],
2158 [25, 16118524],
2159 [26, 16118525],
2160 [27, 16118526],
2161 [28, 16118527],
2162 [29, 16118528],
2163 [30, 16118529],
2164 [31, 16118530],
2165 [32, 16118531],
2166 [33, 16118532],
2167 [34, 16118533],
2168 [35, 16118534],
2169 [36, 16118535],
2170 [37, 16118536],
2171 [38, 16118537],
2172 [39, 16118538],
2173 [40, 16118539],
2174 [41, 16118540],
2175 [42, 16118541],
2176 [43, 16118542],
2177 [44, 16118543],
2178 [45, 16118544],
2179 [46, 16118545],
2180 [47, 16118546],
2181 [48, 16118547],
2182 [49, 16118548],
2183 [50, 16118549]
2184 ]
2185 );
2186 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2187 assert_eq!(
2188 pairs,
2189 vec![
2190 [0, 16118499],
2191 [1, 16118500],
2192 [2, 16118501],
2193 [3, 16118502],
2194 [4, 16118503],
2195 [5, 16118504],
2196 [6, 16118505],
2197 [7, 16118506],
2198 [8, 16118507],
2199 [9, 16118508],
2200 [10, 16118509],
2201 [11, 16118510],
2202 [12, 16118511],
2203 [13, 16118512],
2204 [14, 16118513],
2205 [15, 16118514],
2206 [16, 16118515],
2207 [17, 16118516],
2208 [18, 16118517],
2209 [19, 16118518],
2210 [20, 16118519],
2211 [21, 16118520],
2212 [22, 16118521],
2213 [23, 16118522],
2214 [24, 16118523],
2215 [25, 16118524],
2216 [26, 16118525],
2217 [27, 16118526],
2218 [28, 16118527],
2219 [29, 16118528],
2220 [30, 16118529],
2221 [31, 16118530],
2222 [32, 16118531],
2223 [33, 16118532],
2224 [34, 16118533],
2225 [35, 16118534],
2226 [36, 16118535],
2227 [37, 16118536],
2228 [38, 16118537],
2229 [39, 16118538],
2230 [40, 16118539],
2231 [41, 16118540],
2232 [42, 16118541],
2233 [43, 16118542],
2234 [44, 16118543],
2235 [45, 16118544],
2236 [46, 16118545],
2237 [47, 16118546],
2238 [48, 16118547],
2239 [49, 16118548],
2240 [50, 16118549]
2241 ]
2242 );
2243 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2244 assert_eq!(
2245 pairs,
2246 vec![
2247 [0, 16118499],
2248 [1, 16118500],
2249 [2, 16118501],
2250 [3, 16118502],
2251 [4, 16118503],
2252 [5, 16118504],
2253 [6, 16118505],
2254 [7, 16118506],
2255 [8, 16118507],
2256 [9, 16118508],
2257 [10, 16118509],
2258 [11, 16118510],
2259 [12, 16118511],
2260 [13, 16118512],
2261 [14, 16118513],
2262 [15, 16118514],
2263 [16, 16118515],
2264 [17, 16118516],
2265 [18, 16118517],
2266 [19, 16118518],
2267 [20, 16118519],
2268 [21, 16118520],
2269 [22, 16118521],
2270 [23, 16118522],
2271 [24, 16118523],
2272 [25, 16118524],
2273 [26, 16118525],
2274 [27, 16118526],
2275 [28, 16118527],
2276 [29, 16118528],
2277 [30, 16118529],
2278 [31, 16118530],
2279 [32, 16118531],
2280 [33, 16118532],
2281 [34, 16118533],
2282 [35, 16118534],
2283 [36, 16118535],
2284 [37, 16118536],
2285 [38, 16118537],
2286 [39, 16118538],
2287 [40, 16118539],
2288 [41, 16118540],
2289 [42, 16118541],
2290 [43, 16118542],
2291 [44, 16118543],
2292 [45, 16118544],
2293 [46, 16118545],
2294 [47, 16118546],
2295 [48, 16118547],
2296 [49, 16118548],
2297 [50, 16118549]
2298 ]
2299 );
2300 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2301 assert_eq!(
2302 pairs,
2303 vec![
2304 [0, 16123411],
2305 [1, 16123412],
2306 [2, 16123413],
2307 [3, 16123414],
2308 [4, 16123415],
2309 [5, 16123416],
2310 [6, 16123417],
2311 [7, 16123418],
2312 [8, 16123419],
2313 [9, 16123420],
2314 [10, 16123421],
2315 [11, 16123422],
2316 [12, 16123423],
2317 [13, 16123424],
2318 [14, 16123425],
2319 [15, 16123426],
2320 [16, 16123427],
2321 [17, 16123428],
2322 [18, 16123429],
2323 [19, 16123430],
2324 [20, 16123431],
2325 [21, 16123432],
2326 [22, 16123433],
2327 [23, 16123434],
2328 [24, 16123435],
2329 [25, 16123436],
2330 [26, 16123437],
2331 [27, 16123438],
2332 [28, 16123439],
2333 [29, 16123440],
2334 [30, 16123441],
2335 [31, 16123442],
2336 [32, 16123443],
2337 [33, 16123444],
2338 [34, 16123445],
2339 [35, 16123446],
2340 [36, 16123447],
2341 [37, 16123448],
2342 [38, 16123449],
2343 [39, 16123450],
2344 [40, 16123451],
2345 [41, 16123452],
2346 [42, 16123453],
2347 [43, 16123454],
2348 [44, 16123455],
2349 [45, 16123456],
2350 [46, 16123457],
2351 [47, 16123458],
2352 [48, 16123459],
2353 [49, 16123460],
2354 [50, 16123461]
2355 ]
2356 );
2357 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2358 assert_eq!(
2359 pairs,
2360 vec![
2361 [6, 16123417],
2362 [7, 16123418],
2363 [8, 16123419],
2364 [9, 16123420],
2365 [10, 16123421],
2366 [11, 16123422],
2367 [12, 16123423],
2368 [13, 16123424],
2369 [14, 16123425],
2370 [15, 16123426],
2371 [16, 16123427],
2372 [17, 16123428],
2373 [18, 16123429],
2374 [19, 16123430],
2375 [20, 16123431],
2376 [21, 16123432],
2377 [22, 16123433],
2378 [23, 16123434],
2379 [24, 16123435],
2380 [25, 16123436],
2381 [26, 16123437],
2382 [27, 16123438],
2383 [28, 16123439],
2384 [29, 16123440],
2385 [30, 16123441],
2386 [31, 16123442],
2387 [32, 16123443],
2388 [33, 16123444],
2389 [34, 16123445],
2390 [35, 16123446],
2391 [36, 16123447],
2392 [37, 16123448],
2393 [38, 16123449],
2394 [39, 16123450],
2395 [40, 16123451],
2396 [41, 16123452],
2397 [42, 16123453],
2398 [43, 16123454],
2399 [44, 16123455],
2400 [45, 16123456],
2401 [46, 16123457],
2402 [47, 16123458],
2403 [48, 16123459],
2404 [49, 16123460],
2405 [50, 16123461]
2406 ]
2407 );
2408 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2409 assert_eq!(
2410 pairs,
2411 vec![
2412 [0, 16165860],
2413 [1, 16165861],
2414 [2, 16165862],
2415 [3, 16165863],
2416 [4, 16165864],
2417 [5, 16165865],
2418 [6, 16165866],
2419 [7, 16165867],
2420 [8, 16165868],
2421 [9, 16165869],
2422 [10, 16165870],
2423 [11, 16165871],
2424 [12, 16165872],
2425 [13, 16165873],
2426 [14, 16165874],
2427 [15, 16165875],
2428 [16, 16165876],
2429 [17, 16165877],
2430 [18, 16165878],
2431 [19, 16165879],
2432 [20, 16165880],
2433 [21, 16165881],
2434 [22, 16165882],
2435 [23, 16165883],
2436 [24, 16165884],
2437 [25, 16165885],
2438 [26, 16165886],
2439 [27, 16165887],
2440 [28, 16165888],
2441 [29, 16165889],
2442 [30, 16165890],
2443 [31, 16165891],
2444 [32, 16165892],
2445 [33, 16165893],
2446 [34, 16165894],
2447 [35, 16165895],
2448 [36, 16165896],
2449 [37, 16165897],
2450 [38, 16165898],
2451 [39, 16165899],
2452 [40, 16165900]
2453 ]
2454 );
2455 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2456 assert_eq!(
2457 pairs,
2458 vec![
2459 [0, 16180871],
2460 [1, 16180872],
2461 [2, 16180873],
2462 [3, 16180874],
2463 [4, 16180875],
2464 [5, 16180876],
2465 [6, 16180877],
2466 [7, 16180878],
2467 [8, 16180879],
2468 [9, 16180880],
2469 [10, 16180881],
2470 [11, 16180882],
2471 [12, 16180883],
2472 [13, 16180884],
2473 [14, 16180885],
2474 [15, 16180886],
2475 [16, 16180887],
2476 [17, 16180888],
2477 [18, 16180889],
2478 [19, 16180890],
2479 [20, 16180891],
2480 [21, 16180892],
2481 [22, 16180893],
2482 [23, 16180894],
2483 [24, 16180895],
2484 [25, 16180896],
2485 [26, 16180897],
2486 [27, 16180898],
2487 [28, 16180899],
2488 [29, 16180900],
2489 [30, 16180901],
2490 [31, 16180902],
2491 [32, 16180903],
2492 [33, 16180904],
2493 [34, 16180905],
2494 [35, 16180906],
2495 [36, 16180907],
2496 [37, 16180908],
2497 [38, 16180909],
2498 [39, 16180910],
2499 [40, 16180911],
2500 [41, 16180912],
2501 [42, 16180913],
2502 [43, 16180914],
2503 [44, 16180915],
2504 [45, 16180916],
2505 [46, 16180917],
2506 [47, 16180918],
2507 [48, 16180919],
2508 [49, 16180920],
2509 [50, 16180921]
2510 ]
2511 );
2512 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2513 assert_eq!(
2514 pairs,
2515 vec![
2516 [0, 16189705],
2517 [1, 16189706],
2518 [2, 16189707],
2519 [3, 16189708],
2520 [4, 16189709],
2521 [5, 16189710],
2522 [6, 16189711],
2523 [7, 16189712],
2524 [8, 16189713],
2525 [9, 16189714],
2526 [10, 16189715],
2527 [11, 16189716],
2528 [12, 16189717],
2529 [13, 16189718],
2530 [14, 16189719],
2531 [15, 16189720],
2532 [16, 16189721],
2533 [17, 16189722],
2534 [18, 16189723],
2535 [19, 16189724],
2536 [20, 16189725],
2537 [21, 16189726],
2538 [22, 16189727],
2539 [23, 16189728],
2540 [24, 16189729],
2541 [25, 16189730],
2542 [26, 16189731],
2543 [27, 16189732],
2544 [28, 16189733],
2545 [29, 16189734],
2546 [30, 16189735],
2547 [31, 16189736],
2548 [32, 16189737],
2549 [33, 16189738],
2550 [34, 16189739],
2551 [35, 16189740],
2552 [36, 16189741],
2553 [37, 16189742],
2554 [38, 16189743],
2555 [39, 16189744],
2556 [40, 16189745],
2557 [41, 16189746],
2558 [42, 16189747],
2559 [43, 16189748],
2560 [44, 16189749],
2561 [45, 16189750],
2562 [46, 16189751],
2563 [47, 16189752],
2564 [48, 16189753],
2565 [49, 16189754],
2566 [50, 16189755]
2567 ]
2568 );
2569 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2570 assert_eq!(
2571 pairs,
2572 vec![
2573 [0, 16231271],
2574 [1, 16231272],
2575 [2, 16231273],
2576 [3, 16231274],
2577 [4, 16231275],
2578 [5, 16231276],
2579 [6, 16231277],
2580 [7, 16231278],
2581 [8, 16231279],
2582 [9, 16231280],
2583 [10, 16231281],
2584 [11, 16231282],
2585 [12, 16231283],
2586 [13, 16231284],
2587 [14, 16231285],
2588 [15, 16231286],
2589 [16, 16231287],
2590 [17, 16231288],
2591 [18, 16231289],
2592 [19, 16231290],
2593 [20, 16231291],
2594 [21, 16231292],
2595 [22, 16231293],
2596 [23, 16231294],
2597 [24, 16231295],
2598 [25, 16231296],
2599 [26, 16231297],
2600 [27, 16231298],
2601 [28, 16231299],
2602 [29, 16231300],
2603 [30, 16231301],
2604 [31, 16231302],
2605 [32, 16231303],
2606 [33, 16231304],
2607 [34, 16231305],
2608 [35, 16231306],
2609 [36, 16231307],
2610 [37, 16231308],
2611 [38, 16231309],
2612 [39, 16231310],
2613 [40, 16231311],
2614 [41, 16231312],
2615 [42, 16231313],
2616 [43, 16231314],
2617 [44, 16231315],
2618 [45, 16231316],
2619 [46, 16231317],
2620 [47, 16231318],
2621 [48, 16231319],
2622 [49, 16231320],
2623 [50, 16231321]
2624 ]
2625 );
2626 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2627 assert_eq!(
2628 pairs,
2629 vec![
2630 [0, 16237657],
2631 [1, 16237658],
2632 [2, 16237659],
2633 [3, 16237660],
2634 [4, 16237661],
2635 [5, 16237662],
2636 [6, 16237663],
2637 [7, 16237664],
2638 [8, 16237665],
2639 [9, 16237666],
2640 [10, 16237667],
2641 [11, 16237668],
2642 [12, 16237669],
2643 [13, 16237670],
2644 [14, 16237671],
2645 [15, 16237672],
2646 [16, 16237673],
2647 [17, 16237674],
2648 [18, 16237675],
2649 [19, 16237676],
2650 [20, 16237677],
2651 [21, 16237678],
2652 [22, 16237679],
2653 [23, 16237680],
2654 [24, 16237681],
2655 [25, 16237682],
2656 [26, 16237683],
2657 [27, 16237684],
2658 [28, 16237685],
2659 [29, 16237686],
2660 [30, 16237687],
2661 [31, 16237688],
2662 [32, 16237689],
2663 [33, 16237690],
2664 [34, 16237691],
2665 [35, 16237692],
2666 [36, 16237693],
2667 [37, 16237694],
2668 [38, 16237695],
2669 [39, 16237696],
2670 [40, 16237697],
2671 [41, 16237698],
2672 [42, 16237699],
2673 [43, 16237700],
2674 [44, 16237701],
2675 [45, 16237702],
2676 [46, 16237703],
2677 [47, 16237704],
2678 [48, 16237705],
2679 [49, 16237706],
2680 [50, 16237707]
2681 ]
2682 );
2683 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2684 assert_eq!(
2685 pairs,
2686 vec![
2687 [9, 16255012],
2688 [10, 16255013],
2689 [11, 16255014],
2690 [12, 16255015],
2691 [13, 16255016],
2692 [14, 16255017],
2693 [15, 16255018],
2694 [16, 16255019],
2695 [17, 16255020],
2696 [18, 16255021],
2697 [19, 16255022],
2698 [20, 16255023],
2699 [21, 16255024],
2700 [22, 16255025],
2701 [23, 16255026],
2702 [24, 16255027],
2703 [25, 16255028],
2704 [26, 16255029],
2705 [27, 16255030],
2706 [28, 16255031],
2707 [29, 16255032],
2708 [30, 16255033],
2709 [31, 16255034],
2710 [32, 16255035],
2711 [33, 16255036],
2712 [34, 16255037],
2713 [35, 16255038],
2714 [36, 16255039],
2715 [37, 16255040],
2716 [38, 16255041],
2717 [39, 16255042],
2718 [40, 16255043],
2719 [41, 16255044],
2720 [42, 16255045],
2721 [43, 16255046],
2722 [44, 16255047],
2723 [45, 16255048],
2724 [46, 16255049],
2725 [47, 16255050],
2726 [48, 16255051],
2727 [49, 16255052],
2728 [50, 16255053]
2729 ]
2730 );
2731 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2732 assert_eq!(
2733 pairs,
2734 vec![
2735 [0, 16255391],
2736 [1, 16255392],
2737 [2, 16255393],
2738 [3, 16255394],
2739 [4, 16255395],
2740 [5, 16255396],
2741 [6, 16255397],
2742 [7, 16255398],
2743 [8, 16255399],
2744 [9, 16255400],
2745 [10, 16255401],
2746 [11, 16255402],
2747 [12, 16255403],
2748 [13, 16255404],
2749 [14, 16255405],
2750 [15, 16255406],
2751 [16, 16255407],
2752 [17, 16255408],
2753 [18, 16255409],
2754 [19, 16255410],
2755 [20, 16255411],
2756 [21, 16255412],
2757 [22, 16255413],
2758 [23, 16255414],
2759 [24, 16255415],
2760 [25, 16255416],
2761 [26, 16255417],
2762 [27, 16255418],
2763 [28, 16255419],
2764 [29, 16255420],
2765 [30, 16255421],
2766 [31, 16255422],
2767 [32, 16255423],
2768 [33, 16255424],
2769 [34, 16255425],
2770 [35, 16255426],
2771 [36, 16255427],
2772 [37, 16255428],
2773 [38, 16255429],
2774 [39, 16255430],
2775 [40, 16255431],
2776 [41, 16255432],
2777 [42, 16255433],
2778 [43, 16255434],
2779 [44, 16255435],
2780 [45, 16255436],
2781 [46, 16255437],
2782 [47, 16255438],
2783 [48, 16255439],
2784 [49, 16255440],
2785 [50, 16255441]
2786 ]
2787 );
2788 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2789 assert_eq!(
2790 pairs,
2791 vec![
2792 [0, 16255392],
2793 [1, 16255393],
2794 [2, 16255394],
2795 [3, 16255395],
2796 [4, 16255396],
2797 [5, 16255397],
2798 [6, 16255398],
2799 [7, 16255399],
2800 [8, 16255400],
2801 [9, 16255401],
2802 [10, 16255402],
2803 [11, 16255403],
2804 [12, 16255404],
2805 [13, 16255405],
2806 [14, 16255406],
2807 [15, 16255407],
2808 [16, 16255408],
2809 [17, 16255409],
2810 [18, 16255410],
2811 [19, 16255411],
2812 [20, 16255412],
2813 [21, 16255413],
2814 [22, 16255414],
2815 [23, 16255415],
2816 [24, 16255416],
2817 [25, 16255417],
2818 [26, 16255418],
2819 [27, 16255419],
2820 [28, 16255420],
2821 [29, 16255421],
2822 [30, 16255422],
2823 [31, 16255423],
2824 [32, 16255424],
2825 [33, 16255425],
2826 [34, 16255426],
2827 [35, 16255427],
2828 [36, 16255428],
2829 [37, 16255429],
2830 [38, 16255430],
2831 [39, 16255431],
2832 [40, 16255432],
2833 [41, 16255433],
2834 [42, 16255434],
2835 [43, 16255435],
2836 [44, 16255436],
2837 [45, 16255437],
2838 [46, 16255438],
2839 [47, 16255439],
2840 [48, 16255440],
2841 [49, 16255441]
2842 ]
2843 );
2844 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2845 assert_eq!(
2846 pairs,
2847 vec![
2848 [0, 16256084],
2849 [1, 16256085],
2850 [2, 16256086],
2851 [3, 16256087],
2852 [4, 16256088],
2853 [5, 16256089],
2854 [6, 16256090],
2855 [7, 16256091],
2856 [8, 16256092],
2857 [9, 16256093],
2858 [10, 16256094],
2859 [11, 16256095],
2860 [12, 16256096],
2861 [13, 16256097],
2862 [14, 16256098],
2863 [15, 16256099],
2864 [16, 16256100],
2865 [17, 16256101],
2866 [18, 16256102],
2867 [19, 16256103],
2868 [20, 16256104],
2869 [21, 16256105],
2870 [22, 16256106],
2871 [23, 16256107],
2872 [24, 16256108],
2873 [25, 16256109],
2874 [26, 16256110],
2875 [27, 16256111],
2876 [28, 16256112],
2877 [29, 16256113],
2878 [30, 16256114],
2879 [31, 16256115],
2880 [32, 16256116],
2881 [33, 16256117],
2882 [34, 16256118],
2883 [35, 16256119],
2884 [36, 16256120],
2885 [37, 16256121],
2886 [38, 16256122],
2887 [39, 16256123],
2888 [40, 16256124],
2889 [41, 16256125],
2890 [42, 16256126],
2891 [43, 16256127],
2892 [44, 16256128]
2893 ]
2894 );
2895 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2896 assert_eq!(
2897 pairs,
2898 vec![
2899 [3, 16256224],
2900 [4, 16256225],
2901 [5, 16256226],
2902 [6, 16256227],
2903 [7, 16256228],
2904 [8, 16256229],
2905 [9, 16256230],
2906 [10, 16256231],
2907 [11, 16256232],
2908 [12, 16256233],
2909 [13, 16256234],
2910 [14, 16256235],
2911 [15, 16256236],
2912 [16, 16256237],
2913 [17, 16256238],
2914 [18, 16256239],
2915 [19, 16256240],
2916 [20, 16256241],
2917 [21, 16256242],
2918 [22, 16256243],
2919 [23, 16256244],
2920 [24, 16256245],
2921 [25, 16256246],
2922 [26, 16256247],
2923 [27, 16256248],
2924 [28, 16256249],
2925 [29, 16256250],
2926 [30, 16256251],
2927 [31, 16256252],
2928 [32, 16256253],
2929 [33, 16256254],
2930 [34, 16256255],
2931 [35, 16256256],
2932 [36, 16256257],
2933 [37, 16256258],
2934 [38, 16256259],
2935 [39, 16256260],
2936 [40, 16256261],
2937 [41, 16256262],
2938 [42, 16256263],
2939 [43, 16256264],
2940 [44, 16256265],
2941 [45, 16256266],
2942 [46, 16256267],
2943 [47, 16256268],
2944 [48, 16256269],
2945 [49, 16256270],
2946 [50, 16256271]
2947 ]
2948 );
2949 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2950 assert_eq!(
2951 pairs,
2952 vec![
2953 [0, 16325199],
2954 [1, 16325200],
2955 [2, 16325201],
2956 [3, 16325202],
2957 [4, 16325203],
2958 [5, 16325204],
2959 [6, 16325205],
2960 [7, 16325206],
2961 [8, 16325207],
2962 [9, 16325208],
2963 [10, 16325209],
2964 [11, 16325210],
2965 [12, 16325211],
2966 [13, 16325212],
2967 [14, 16325213],
2968 [15, 16325214],
2969 [16, 16325215],
2970 [17, 16325216],
2971 [18, 16325217],
2972 [19, 16325218],
2973 [20, 16325219],
2974 [21, 16325220],
2975 [22, 16325221],
2976 [23, 16325222],
2977 [24, 16325223],
2978 [25, 16325224],
2979 [26, 16325225],
2980 [27, 16325226],
2981 [28, 16325227],
2982 [29, 16325228],
2983 [30, 16325229],
2984 [31, 16325230],
2985 [32, 16325231],
2986 [33, 16325232],
2987 [34, 16325233],
2988 [35, 16325234],
2989 [36, 16325235],
2990 [37, 16325236],
2991 [38, 16325237],
2992 [39, 16325238],
2993 [40, 16325239],
2994 [41, 16325240]
2995 ]
2996 );
2997 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
2998 assert_eq!(
2999 pairs,
3000 vec![
3001 [13, 16352865],
3002 [14, 16352866],
3003 [15, 16352867],
3004 [16, 16352868],
3005 [17, 16352869],
3006 [18, 16352870],
3007 [19, 16352871],
3008 [20, 16352872],
3009 [21, 16352873],
3010 [22, 16352874],
3011 [23, 16352875],
3012 [24, 16352876],
3013 [25, 16352877],
3014 [26, 16352878],
3015 [27, 16352879],
3016 [28, 16352880],
3017 [29, 16352881],
3018 [30, 16352882],
3019 [31, 16352883],
3020 [32, 16352884],
3021 [33, 16352885],
3022 [34, 16352886],
3023 [35, 16352887],
3024 [36, 16352888],
3025 [37, 16352889],
3026 [38, 16352890],
3027 [39, 16352891],
3028 [40, 16352892],
3029 [41, 16352893],
3030 [42, 16352894],
3031 [43, 16352895],
3032 [44, 16352896],
3033 [45, 16352897],
3034 [46, 16352898],
3035 [47, 16352899],
3036 [48, 16352900],
3037 [49, 16352901],
3038 [50, 16352902]
3039 ]
3040 );
3041 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3042 assert_eq!(
3043 pairs,
3044 vec![
3045 [0, 16352968],
3046 [1, 16352969],
3047 [2, 16352970],
3048 [3, 16352971],
3049 [4, 16352972],
3050 [5, 16352973],
3051 [6, 16352974],
3052 [7, 16352975],
3053 [8, 16352976],
3054 [9, 16352977],
3055 [10, 16352978],
3056 [11, 16352979],
3057 [12, 16352980],
3058 [13, 16352981],
3059 [14, 16352982],
3060 [15, 16352983],
3061 [16, 16352984],
3062 [17, 16352985],
3063 [18, 16352986],
3064 [19, 16352987],
3065 [20, 16352988],
3066 [21, 16352989],
3067 [22, 16352990],
3068 [23, 16352991],
3069 [24, 16352992],
3070 [25, 16352993],
3071 [26, 16352994],
3072 [27, 16352995],
3073 [28, 16352996],
3074 [29, 16352997],
3075 [30, 16352998],
3076 [31, 16352999],
3077 [32, 16353000],
3078 [33, 16353001],
3079 [34, 16353002],
3080 [35, 16353003],
3081 [36, 16353004],
3082 [37, 16353005],
3083 [38, 16353006],
3084 [39, 16353007],
3085 [40, 16353008],
3086 [41, 16353009],
3087 [42, 16353010],
3088 [43, 16353011]
3089 ]
3090 );
3091 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3092 assert_eq!(
3093 pairs,
3094 vec![
3095 [5, 16414998],
3096 [6, 16414999],
3097 [7, 16415000],
3098 [8, 16415001],
3099 [9, 16415002],
3100 [10, 16415003],
3101 [11, 16415004],
3102 [12, 16415005],
3103 [13, 16415006],
3104 [14, 16415007],
3105 [15, 16415008],
3106 [16, 16415009],
3107 [17, 16415010],
3108 [18, 16415011],
3109 [19, 16415012],
3110 [20, 16415013],
3111 [21, 16415014],
3112 [22, 16415015],
3113 [23, 16415016],
3114 [24, 16415017],
3115 [25, 16415018],
3116 [26, 16415019],
3117 [27, 16415020],
3118 [28, 16415021],
3119 [29, 16415022],
3120 [30, 16415023],
3121 [31, 16415024],
3122 [32, 16415025],
3123 [33, 16415026],
3124 [34, 16415027],
3125 [35, 16415028],
3126 [36, 16415029],
3127 [37, 16415030],
3128 [38, 16415031],
3129 [39, 16415032],
3130 [40, 16415033],
3131 [41, 16415034],
3132 [42, 16415035],
3133 [43, 16415036],
3134 [44, 16415037],
3135 [45, 16415038],
3136 [46, 16415039],
3137 [47, 16415040],
3138 [48, 16415041],
3139 [49, 16415042],
3140 [50, 16415043]
3141 ]
3142 );
3143 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3144 assert_eq!(
3145 pairs,
3146 vec![
3147 [0, 17031591],
3148 [1, 17031592],
3149 [2, 17031593],
3150 [3, 17031594],
3151 [4, 17031595],
3152 [5, 17031596],
3153 [6, 17031597],
3154 [7, 17031598],
3155 [8, 17031599],
3156 [9, 17031600],
3157 [10, 17031601],
3158 [11, 17031602],
3159 [12, 17031603],
3160 [13, 17031604],
3161 [14, 17031605],
3162 [15, 17031606],
3163 [16, 17031607],
3164 [17, 17031608],
3165 [18, 17031609],
3166 [19, 17031610],
3167 [20, 17031611],
3168 [21, 17031612],
3169 [22, 17031613],
3170 [27, 17031614],
3171 [28, 17031615],
3172 [29, 17031616],
3173 [30, 17031617],
3174 [31, 17031618],
3175 [32, 17031619],
3176 [33, 17031620],
3177 [34, 17031621],
3178 [35, 17031622],
3179 [36, 17031623],
3180 [37, 17031624],
3181 [38, 17031625],
3182 [39, 17031626],
3183 [40, 17031627],
3184 [41, 17031628],
3185 [42, 17031629],
3186 [43, 17031630],
3187 [44, 17031631],
3188 [45, 17031632],
3189 [46, 17031633],
3190 [47, 17031634],
3191 [48, 17031635],
3192 [49, 17031636],
3193 [50, 17031637]
3194 ]
3195 );
3196 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3197 assert_eq!(
3198 pairs,
3199 vec![
3200 [0, 17057382],
3201 [1, 17057383],
3202 [2, 17057384],
3203 [3, 17057385],
3204 [4, 17057386],
3205 [5, 17057387],
3206 [6, 17057388],
3207 [7, 17057389],
3208 [8, 17057390],
3209 [9, 17057391],
3210 [10, 17057392],
3211 [11, 17057393],
3212 [12, 17057394],
3213 [13, 17057395],
3214 [14, 17057396],
3215 [15, 17057397],
3216 [16, 17057398],
3217 [17, 17057399],
3218 [19, 17057400],
3219 [20, 17057401],
3220 [21, 17057402],
3221 [22, 17057403],
3222 [23, 17057404],
3223 [24, 17057405],
3224 [25, 17057406],
3225 [26, 17057407],
3226 [27, 17057408],
3227 [28, 17057409],
3228 [29, 17057410],
3229 [30, 17057411],
3230 [31, 17057412],
3231 [32, 17057413],
3232 [33, 17057414],
3233 [34, 17057415],
3234 [35, 17057416],
3235 [36, 17057417],
3236 [37, 17057418],
3237 [38, 17057419],
3238 [39, 17057420],
3239 [40, 17057421],
3240 [41, 17057422],
3241 [42, 17057423],
3242 [43, 17057424],
3243 [44, 17057425],
3244 [45, 17057426],
3245 [46, 17057427],
3246 [47, 17057428],
3247 [48, 17057429],
3248 [49, 17057430],
3249 [50, 17057431]
3250 ]
3251 );
3252 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3253 assert_eq!(
3254 pairs,
3255 vec![
3256 [0, 17092766],
3257 [1, 17092767],
3258 [2, 17092768],
3259 [3, 17092769],
3260 [4, 17092770],
3261 [5, 17092771],
3262 [6, 17092772],
3263 [7, 17092773],
3264 [8, 17092774],
3265 [9, 17092775],
3266 [10, 17092776],
3267 [11, 17092777],
3268 [12, 17092778],
3269 [13, 17092779],
3270 [14, 17092780],
3271 [15, 17092781],
3272 [16, 17092782],
3273 [17, 17094966],
3274 [18, 17094967],
3275 [19, 17094968],
3276 [20, 17094969],
3277 [21, 17094970],
3278 [22, 17094971],
3279 [23, 17094972],
3280 [24, 17094973],
3281 [25, 17094974],
3282 [26, 17094975],
3283 [27, 17094976],
3284 [28, 17094977],
3285 [29, 17094978],
3286 [30, 17094979],
3287 [31, 17094980],
3288 [32, 17094981],
3289 [33, 17094982],
3290 [34, 17094983],
3291 [35, 17094984],
3292 [36, 17094985],
3293 [37, 17094986],
3294 [38, 17094987],
3295 [39, 17094988],
3296 [40, 17094989],
3297 [41, 17094990],
3298 [42, 17094991],
3299 [43, 17094992],
3300 [44, 17094993],
3301 [45, 17094994],
3302 [46, 17094995],
3303 [47, 17094996],
3304 [48, 17094997],
3305 [49, 17094998],
3306 [50, 17094999]
3307 ]
3308 );
3309 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3310 assert_eq!(
3311 pairs,
3312 vec![
3313 [0, 17092782],
3314 [1, 17094966],
3315 [2, 17094967],
3316 [3, 17094968],
3317 [4, 17094969],
3318 [5, 17094970],
3319 [6, 17094971],
3320 [7, 17094972],
3321 [8, 17094973],
3322 [9, 17094974],
3323 [10, 17094975],
3324 [11, 17094976],
3325 [12, 17094977],
3326 [13, 17094978],
3327 [14, 17094979],
3328 [15, 17094980],
3329 [16, 17094981],
3330 [17, 17094982],
3331 [18, 17094983],
3332 [19, 17094984],
3333 [20, 17094985],
3334 [21, 17094986],
3335 [22, 17094987],
3336 [23, 17094988],
3337 [24, 17094989],
3338 [25, 17094990],
3339 [26, 17094991],
3340 [27, 17094992],
3341 [28, 17094993],
3342 [29, 17094994],
3343 [30, 17094995],
3344 [31, 17094996],
3345 [32, 17094997],
3346 [33, 17094998],
3347 [34, 17094999],
3348 [35, 17095000],
3349 [36, 17095001],
3350 [37, 17095002],
3351 [38, 17095003],
3352 [39, 17095004],
3353 [40, 17095005],
3354 [41, 17095006],
3355 [42, 17095007],
3356 [43, 17095008],
3357 [44, 17095009],
3358 [45, 17095010],
3359 [46, 17095011],
3360 [47, 17095012],
3361 [48, 17095013],
3362 [49, 17095014],
3363 [50, 17095015]
3364 ]
3365 );
3366 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3367 assert_eq!(
3368 pairs,
3369 vec![
3370 [0, 17092782],
3371 [1, 17094966],
3372 [2, 17094967],
3373 [3, 17094968],
3374 [4, 17094969],
3375 [5, 17094970],
3376 [6, 17094971],
3377 [7, 17094972],
3378 [8, 17094973],
3379 [9, 17094974],
3380 [10, 17094975],
3381 [11, 17094976],
3382 [12, 17094977],
3383 [13, 17094978],
3384 [14, 17094979],
3385 [15, 17094980],
3386 [16, 17094981],
3387 [17, 17094982],
3388 [18, 17094983],
3389 [19, 17094984],
3390 [20, 17094985],
3391 [21, 17094986],
3392 [22, 17094987],
3393 [23, 17094988],
3394 [24, 17094989],
3395 [25, 17094990],
3396 [26, 17094991],
3397 [27, 17094992],
3398 [28, 17094993],
3399 [29, 17094994],
3400 [30, 17094995],
3401 [31, 17094996],
3402 [32, 17094997],
3403 [33, 17094998],
3404 [34, 17094999],
3405 [35, 17095000],
3406 [36, 17095001],
3407 [37, 17095002],
3408 [38, 17095003],
3409 [39, 17095004],
3410 [40, 17095005],
3411 [41, 17095006],
3412 [42, 17095007],
3413 [43, 17095008],
3414 [44, 17095009],
3415 [45, 17095010],
3416 [46, 17095011],
3417 [47, 17095012],
3418 [48, 17095013],
3419 [49, 17095014],
3420 [50, 17095015]
3421 ]
3422 );
3423 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3424 assert_eq!(
3425 pairs,
3426 vec![
3427 [9, 17137287],
3428 [10, 17137288],
3429 [11, 17137289],
3430 [12, 17137290],
3431 [13, 17137291],
3432 [14, 17137292],
3433 [15, 17137293],
3434 [16, 17137294],
3435 [17, 17137295],
3436 [18, 17137296],
3437 [19, 17137297],
3438 [20, 17137298],
3439 [21, 17137299],
3440 [22, 17137300],
3441 [23, 17137301],
3442 [24, 17137302],
3443 [25, 17137303],
3444 [26, 17137304],
3445 [27, 17137305],
3446 [28, 17137306],
3447 [29, 17137307],
3448 [30, 17137308],
3449 [31, 17137309],
3450 [32, 17137310],
3451 [33, 17137311],
3452 [34, 17137312],
3453 [35, 17137313],
3454 [36, 17137314],
3455 [37, 17137315],
3456 [38, 17137316],
3457 [39, 17137317],
3458 [40, 17137318],
3459 [41, 17137319]
3460 ]
3461 );
3462 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3463 assert_eq!(
3464 pairs,
3465 vec![
3466 [2, 17306238],
3467 [3, 17306239],
3468 [4, 17306240],
3469 [5, 17306241],
3470 [6, 17306242],
3471 [7, 17306243],
3472 [8, 17306244],
3473 [9, 17306245],
3474 [10, 17306246],
3475 [11, 17306247],
3476 [12, 17306248],
3477 [13, 17306249],
3478 [14, 17306250],
3479 [15, 17306251],
3480 [16, 17306252],
3481 [17, 17306253],
3482 [18, 17306254],
3483 [19, 17306255],
3484 [20, 17306256],
3485 [21, 17306257],
3486 [22, 17306258],
3487 [23, 17306259],
3488 [24, 17306260],
3489 [25, 17306261],
3490 [26, 17306262],
3491 [27, 17306263],
3492 [28, 17306264],
3493 [29, 17306265],
3494 [30, 17306266],
3495 [31, 17306267],
3496 [32, 17306268],
3497 [33, 17306269],
3498 [34, 17306270],
3499 [35, 17306271],
3500 [36, 17306272],
3501 [37, 17306273],
3502 [38, 17306274],
3503 [39, 17306275],
3504 [40, 17306276],
3505 [41, 17306277],
3506 [42, 17306278],
3507 [43, 17306279],
3508 [44, 17306280],
3509 [45, 17306281],
3510 [46, 17306282],
3511 [47, 17306283],
3512 [48, 17306284],
3513 [49, 17306285]
3514 ]
3515 );
3516 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3517 assert_eq!(
3518 pairs,
3519 vec![
3520 [4, 17561868],
3521 [5, 17561869],
3522 [6, 17561870],
3523 [7, 17561871],
3524 [8, 17561872],
3525 [9, 17561873],
3526 [10, 17561874],
3527 [11, 17561875],
3528 [12, 17561876],
3529 [13, 17561877],
3530 [14, 17561878],
3531 [15, 17561879],
3532 [16, 17561880],
3533 [17, 17561881],
3534 [18, 17561882],
3535 [19, 17561883],
3536 [20, 17561884],
3537 [21, 17561885],
3538 [22, 17561886],
3539 [23, 17561887],
3540 [24, 17561888],
3541 [25, 17561889],
3542 [26, 17561890],
3543 [27, 17561891],
3544 [28, 17561892],
3545 [29, 17561893],
3546 [30, 17561894],
3547 [31, 17561895],
3548 [32, 17561896],
3549 [33, 17561897],
3550 [34, 17561898],
3551 [35, 17561899],
3552 [36, 17561900],
3553 [37, 17561901],
3554 [38, 17561902],
3555 [39, 17561903],
3556 [40, 17561904],
3557 [41, 17561905],
3558 [42, 17561906],
3559 [43, 17561907],
3560 [44, 17561908],
3561 [45, 17561909],
3562 [46, 17561910],
3563 [47, 17561911],
3564 [48, 17561912]
3565 ]
3566 );
3567 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3568 assert_eq!(
3569 pairs,
3570 vec![
3571 [0, 17566078],
3572 [1, 17566079],
3573 [2, 17566080],
3574 [3, 17566081],
3575 [4, 17566082],
3576 [5, 17566083],
3577 [6, 17566084],
3578 [7, 17566085],
3579 [8, 17566086],
3580 [9, 17566087],
3581 [10, 17566088],
3582 [11, 17566089],
3583 [12, 17566090],
3584 [13, 17566091],
3585 [14, 17566092],
3586 [15, 17566093],
3587 [16, 17566094],
3588 [17, 17566095],
3589 [18, 17566096],
3590 [19, 17566097],
3591 [20, 17566098],
3592 [21, 17566099],
3593 [22, 17566100],
3594 [23, 17566101],
3595 [24, 17566102],
3596 [25, 17566103],
3597 [26, 17566104],
3598 [27, 17566105],
3599 [28, 17566106],
3600 [29, 17566107],
3601 [30, 17566108],
3602 [31, 17566109],
3603 [32, 17566110],
3604 [33, 17566111],
3605 [34, 17566112],
3606 [35, 17566113],
3607 [36, 17566114],
3608 [37, 17566115],
3609 [38, 17566116],
3610 [39, 17566117],
3611 [40, 17566118],
3612 [41, 17577951],
3613 [42, 17577952],
3614 [43, 17577953],
3615 [44, 17577954],
3616 [45, 17577955],
3617 [46, 17577956],
3618 [47, 17577957],
3619 [48, 17577958],
3620 [49, 17577959],
3621 [50, 17577960]
3622 ]
3623 );
3624 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3625 assert_eq!(
3626 pairs,
3627 vec![
3628 [0, 17566108],
3629 [1, 17566109],
3630 [2, 17566110],
3631 [3, 17566111],
3632 [4, 17566112],
3633 [5, 17566113],
3634 [6, 17566114],
3635 [7, 17566115],
3636 [8, 17566116],
3637 [9, 17566117],
3638 [10, 17566118],
3639 [11, 17577951],
3640 [12, 17577952],
3641 [13, 17577953],
3642 [14, 17577954],
3643 [15, 17577955],
3644 [16, 17577956],
3645 [17, 17577957],
3646 [18, 17577958],
3647 [19, 17577959],
3648 [20, 17577960],
3649 [21, 17577961],
3650 [22, 17577962],
3651 [23, 17577963],
3652 [24, 17577964],
3653 [25, 17577965],
3654 [26, 17577966],
3655 [27, 17577967],
3656 [28, 17577968],
3657 [29, 17577969],
3658 [30, 17577970],
3659 [31, 17577971],
3660 [32, 17577972],
3661 [33, 17577973],
3662 [34, 17577974],
3663 [35, 17577975],
3664 [36, 17578686],
3665 [37, 17578687],
3666 [38, 17578688],
3667 [39, 17578689],
3668 [40, 17578690],
3669 [41, 17578691],
3670 [42, 17578692],
3671 [43, 17578693],
3672 [44, 17578694],
3673 [45, 17578695],
3674 [46, 17578696],
3675 [47, 17578697],
3676 [48, 17578698],
3677 [49, 17578699],
3678 [50, 17578700]
3679 ]
3680 );
3681 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3682 assert_eq!(
3683 pairs,
3684 vec![
3685 [0, 17566111],
3686 [1, 17566112],
3687 [2, 17566113],
3688 [3, 17566114],
3689 [4, 17566115],
3690 [5, 17566116],
3691 [6, 17566117],
3692 [7, 17566118],
3693 [8, 17577951],
3694 [9, 17577952],
3695 [10, 17577953],
3696 [11, 17577954],
3697 [12, 17577955],
3698 [13, 17577956],
3699 [14, 17577957],
3700 [15, 17577958],
3701 [16, 17577959],
3702 [17, 17577960],
3703 [18, 17577961],
3704 [19, 17577962],
3705 [20, 17577963],
3706 [21, 17577964],
3707 [22, 17577965],
3708 [23, 17577966],
3709 [24, 17577967],
3710 [25, 17577968],
3711 [26, 17577969],
3712 [27, 17577970],
3713 [28, 17577971],
3714 [29, 17577972],
3715 [30, 17577973],
3716 [31, 17577974],
3717 [32, 17577975],
3718 [33, 17578686],
3719 [34, 17578687],
3720 [35, 17578688],
3721 [36, 17578689],
3722 [37, 17578690],
3723 [38, 17578691],
3724 [39, 17578692],
3725 [40, 17578693],
3726 [41, 17578694],
3727 [42, 17578695],
3728 [43, 17578696],
3729 [44, 17578697],
3730 [45, 17578698],
3731 [46, 17578699],
3732 [47, 17578700],
3733 [48, 17578701],
3734 [49, 17578702],
3735 [50, 17578703]
3736 ]
3737 );
3738 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3739 assert_eq!(
3740 pairs,
3741 vec![
3742 [0, 17566111],
3743 [1, 17566112],
3744 [2, 17566113],
3745 [3, 17566114],
3746 [4, 17566115],
3747 [5, 17566116],
3748 [6, 17566117],
3749 [7, 17566118],
3750 [8, 17577951],
3751 [9, 17577952],
3752 [10, 17577953],
3753 [11, 17577954],
3754 [12, 17577955],
3755 [13, 17577956],
3756 [14, 17577957],
3757 [15, 17577958],
3758 [16, 17577959],
3759 [17, 17577960],
3760 [18, 17577961],
3761 [19, 17577962],
3762 [20, 17577963],
3763 [21, 17577964],
3764 [22, 17577965],
3765 [23, 17577966],
3766 [24, 17577967],
3767 [25, 17577968],
3768 [26, 17577969],
3769 [27, 17577970],
3770 [28, 17577971],
3771 [29, 17577972],
3772 [30, 17577973],
3773 [31, 17577974],
3774 [32, 17577975],
3775 [33, 17578686],
3776 [34, 17578687],
3777 [35, 17578688],
3778 [36, 17578689],
3779 [37, 17578690],
3780 [38, 17578691],
3781 [39, 17578692],
3782 [40, 17578693],
3783 [41, 17578694],
3784 [42, 17578695],
3785 [43, 17578696],
3786 [44, 17578697],
3787 [45, 17578698],
3788 [46, 17578699],
3789 [47, 17578700],
3790 [48, 17578701],
3791 [49, 17578702],
3792 [50, 17578703]
3793 ]
3794 );
3795 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3796 assert_eq!(
3797 pairs,
3798 vec![
3799 [0, 17566111],
3800 [1, 17566112],
3801 [2, 17566113],
3802 [3, 17566114],
3803 [4, 17566115],
3804 [5, 17566116],
3805 [6, 17566117],
3806 [7, 17566118],
3807 [8, 17577951],
3808 [9, 17577952],
3809 [10, 17577953],
3810 [11, 17577954],
3811 [12, 17577955],
3812 [13, 17577956],
3813 [14, 17577957],
3814 [15, 17577958],
3815 [16, 17577959],
3816 [17, 17577960],
3817 [18, 17577961],
3818 [19, 17577962],
3819 [20, 17577963],
3820 [21, 17577964],
3821 [22, 17577965],
3822 [23, 17577966],
3823 [24, 17577967],
3824 [25, 17577968],
3825 [26, 17577969],
3826 [27, 17577970],
3827 [28, 17577971],
3828 [29, 17577972],
3829 [30, 17577973],
3830 [31, 17577974],
3831 [32, 17577975],
3832 [33, 17578686],
3833 [34, 17578687],
3834 [35, 17578688],
3835 [36, 17578689],
3836 [37, 17578690],
3837 [38, 17578691],
3838 [39, 17578692],
3839 [40, 17578693],
3840 [41, 17578694],
3841 [42, 17578695],
3842 [43, 17578696],
3843 [44, 17578697],
3844 [45, 17578698],
3845 [46, 17578699],
3846 [47, 17578700],
3847 [48, 17578701],
3848 [49, 17578702],
3849 [50, 17578703]
3850 ]
3851 );
3852 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3853 assert_eq!(
3854 pairs,
3855 vec![
3856 [0, 17566111],
3857 [1, 17566112],
3858 [2, 17566113],
3859 [3, 17566114],
3860 [4, 17566115],
3861 [5, 17566116],
3862 [6, 17566117],
3863 [7, 17566118],
3864 [8, 17577951],
3865 [9, 17577952],
3866 [10, 17577953],
3867 [11, 17577954],
3868 [12, 17577955],
3869 [13, 17577956],
3870 [14, 17577957],
3871 [15, 17577958],
3872 [16, 17577959],
3873 [17, 17577960],
3874 [18, 17577961],
3875 [19, 17577962],
3876 [20, 17577963],
3877 [21, 17577964],
3878 [22, 17577965],
3879 [23, 17577966],
3880 [24, 17577967],
3881 [25, 17577968],
3882 [26, 17577969],
3883 [27, 17577970],
3884 [28, 17577971],
3885 [29, 17577972],
3886 [30, 17577973],
3887 [31, 17577974],
3888 [32, 17577975],
3889 [33, 17578686],
3890 [34, 17578687],
3891 [35, 17578688],
3892 [36, 17578689],
3893 [37, 17578690],
3894 [38, 17578691],
3895 [39, 17578692],
3896 [40, 17578693],
3897 [41, 17578694],
3898 [42, 17578695],
3899 [43, 17578696],
3900 [44, 17578697],
3901 [45, 17578698],
3902 [46, 17578699],
3903 [47, 17578700],
3904 [48, 17578701],
3905 [49, 17578702],
3906 [50, 17578703]
3907 ]
3908 );
3909 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3910 assert_eq!(
3911 pairs,
3912 vec![
3913 [0, 17566112],
3914 [1, 17566113],
3915 [2, 17566114],
3916 [3, 17566115],
3917 [4, 17566116],
3918 [5, 17566117],
3919 [6, 17566118],
3920 [7, 17577951],
3921 [8, 17577952],
3922 [9, 17577953],
3923 [10, 17577954],
3924 [11, 17577955],
3925 [12, 17577956],
3926 [13, 17577957],
3927 [14, 17577958],
3928 [15, 17577959],
3929 [16, 17577960],
3930 [17, 17577961],
3931 [18, 17577962],
3932 [19, 17577963],
3933 [20, 17577964],
3934 [21, 17577965],
3935 [22, 17577966],
3936 [23, 17577967],
3937 [24, 17577968],
3938 [25, 17577969],
3939 [26, 17577970],
3940 [27, 17577971],
3941 [28, 17577972],
3942 [29, 17577973],
3943 [30, 17577974],
3944 [31, 17577975],
3945 [32, 17578686],
3946 [33, 17578687],
3947 [34, 17578688],
3948 [35, 17578689],
3949 [36, 17578690],
3950 [37, 17578691],
3951 [38, 17578692],
3952 [39, 17578693],
3953 [40, 17578694],
3954 [41, 17578695],
3955 [42, 17578696],
3956 [43, 17578697],
3957 [44, 17578698],
3958 [45, 17578699],
3959 [46, 17578700],
3960 [47, 17578701],
3961 [48, 17578702],
3962 [49, 17578703],
3963 [50, 17578704]
3964 ]
3965 );
3966 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
3967 assert_eq!(
3968 pairs,
3969 vec![
3970 [0, 17566113],
3971 [1, 17566114],
3972 [2, 17566115],
3973 [3, 17566116],
3974 [4, 17566117],
3975 [5, 17566118],
3976 [6, 17577951],
3977 [7, 17577952],
3978 [8, 17577953],
3979 [9, 17577954],
3980 [10, 17577955],
3981 [11, 17577956],
3982 [12, 17577957],
3983 [13, 17577958],
3984 [14, 17577959],
3985 [15, 17577960],
3986 [16, 17577961],
3987 [17, 17577962],
3988 [18, 17577963],
3989 [19, 17577964],
3990 [20, 17577965],
3991 [21, 17577966],
3992 [22, 17577967],
3993 [23, 17577968],
3994 [24, 17577969],
3995 [25, 17577970],
3996 [26, 17577971],
3997 [27, 17577972],
3998 [28, 17577973],
3999 [29, 17577974],
4000 [30, 17577975],
4001 [31, 17578686],
4002 [32, 17578687],
4003 [33, 17578688],
4004 [34, 17578689],
4005 [35, 17578690],
4006 [36, 17578691],
4007 [37, 17578692],
4008 [38, 17578693],
4009 [39, 17578694],
4010 [40, 17578695],
4011 [41, 17578696],
4012 [42, 17578697],
4013 [43, 17578698],
4014 [44, 17578699],
4015 [45, 17578700],
4016 [46, 17578701],
4017 [47, 17578702],
4018 [48, 17578703],
4019 [49, 17578704],
4020 [50, 17578705]
4021 ]
4022 );
4023 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4024 assert_eq!(
4025 pairs,
4026 vec![
4027 [0, 17566113],
4028 [1, 17566114],
4029 [2, 17566115],
4030 [3, 17566116],
4031 [4, 17566117],
4032 [5, 17566118],
4033 [6, 17577951],
4034 [7, 17577952],
4035 [8, 17577953],
4036 [9, 17577954],
4037 [10, 17577955],
4038 [11, 17577956],
4039 [12, 17577957],
4040 [13, 17577958],
4041 [14, 17577959],
4042 [15, 17577960],
4043 [16, 17577961],
4044 [17, 17577962],
4045 [18, 17577963],
4046 [19, 17577964],
4047 [20, 17577965],
4048 [21, 17577966],
4049 [22, 17577967],
4050 [23, 17577968],
4051 [24, 17577969],
4052 [25, 17577970],
4053 [26, 17577971],
4054 [27, 17577972],
4055 [28, 17577973],
4056 [29, 17577974],
4057 [30, 17577975],
4058 [31, 17578686],
4059 [32, 17578687],
4060 [33, 17578688],
4061 [34, 17578689],
4062 [35, 17578690],
4063 [36, 17578691],
4064 [37, 17578692],
4065 [38, 17578693],
4066 [39, 17578694],
4067 [40, 17578695],
4068 [41, 17578696],
4069 [42, 17578697],
4070 [43, 17578698],
4071 [44, 17578699],
4072 [45, 17578700],
4073 [46, 17578701],
4074 [47, 17578702],
4075 [48, 17578703],
4076 [49, 17578704],
4077 [50, 17578705]
4078 ]
4079 );
4080 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4081 assert_eq!(
4082 pairs,
4083 vec![
4084 [1, 17579733],
4085 [2, 17579734],
4086 [3, 17579735],
4087 [4, 17579736],
4088 [5, 17579737],
4089 [6, 17579738],
4090 [7, 17579739],
4091 [8, 17579740],
4092 [9, 17579741],
4093 [10, 17579742],
4094 [11, 17579743],
4095 [12, 17579744],
4096 [13, 17579745],
4097 [14, 17579746],
4098 [15, 17579747],
4099 [16, 17579748],
4100 [17, 17579749],
4101 [18, 17579750],
4102 [19, 17579751],
4103 [20, 17579752],
4104 [21, 17579753],
4105 [22, 17579754],
4106 [23, 17579755],
4107 [24, 17579756],
4108 [25, 17579757],
4109 [26, 17579758],
4110 [27, 17579759],
4111 [28, 17579760],
4112 [29, 17579761],
4113 [30, 17579762],
4114 [31, 17579763],
4115 [32, 17579764],
4116 [33, 17579765],
4117 [34, 17579766],
4118 [35, 17579767],
4119 [36, 17579768],
4120 [37, 17579769],
4121 [38, 17579770],
4122 [39, 17579771],
4123 [40, 17579772],
4124 [41, 17579773],
4125 [42, 17579774],
4126 [43, 17579775],
4127 [44, 17579776],
4128 [45, 17581244],
4129 [46, 17581245],
4130 [47, 17581246],
4131 [48, 17581247],
4132 [49, 17581248],
4133 [50, 17581249]
4134 ]
4135 );
4136 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4137 assert_eq!(
4138 pairs,
4139 vec![
4140 [0, 17581369],
4141 [1, 17581370],
4142 [2, 17582885],
4143 [3, 17582886],
4144 [4, 17582887],
4145 [5, 17582888],
4146 [6, 17582889],
4147 [7, 17582890],
4148 [8, 17582891],
4149 [9, 17582892],
4150 [10, 17582893],
4151 [11, 17582894],
4152 [12, 17582895],
4153 [13, 17582896],
4154 [14, 17582897],
4155 [15, 17582898],
4156 [16, 17582899],
4157 [17, 17582900],
4158 [18, 17582901],
4159 [19, 17582902],
4160 [20, 17582903],
4161 [21, 17582904],
4162 [22, 17582905],
4163 [23, 17582906],
4164 [24, 17582907],
4165 [25, 17582908],
4166 [26, 17582909],
4167 [27, 17582910],
4168 [28, 17582911],
4169 [29, 17582912],
4170 [30, 17582913],
4171 [31, 17582914],
4172 [32, 17582915],
4173 [33, 17582916],
4174 [34, 17582917],
4175 [35, 17582918],
4176 [36, 17582919],
4177 [37, 17582920],
4178 [38, 17582921],
4179 [39, 17582922],
4180 [40, 17582923],
4181 [41, 17582924],
4182 [42, 17582925],
4183 [43, 17582926],
4184 [44, 17582927],
4185 [45, 17582928],
4186 [46, 17582929],
4187 [47, 17582930],
4188 [48, 17582931],
4189 [49, 17582932],
4190 [50, 17583028]
4191 ]
4192 );
4193 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4194 assert_eq!(
4195 pairs,
4196 vec![
4197 [0, 17581370],
4198 [1, 17582885],
4199 [2, 17582886],
4200 [3, 17582887],
4201 [4, 17582888],
4202 [5, 17582889],
4203 [6, 17582890],
4204 [7, 17582891],
4205 [8, 17582892],
4206 [9, 17582893],
4207 [10, 17582894],
4208 [11, 17582895],
4209 [12, 17582896],
4210 [13, 17582897],
4211 [14, 17582898],
4212 [15, 17582899],
4213 [16, 17582900],
4214 [17, 17582901],
4215 [18, 17582902],
4216 [19, 17582903],
4217 [20, 17582904],
4218 [21, 17582905],
4219 [22, 17582906],
4220 [23, 17582907],
4221 [24, 17582908],
4222 [25, 17582909],
4223 [26, 17582910],
4224 [27, 17582911],
4225 [28, 17582912],
4226 [29, 17582913],
4227 [30, 17582914],
4228 [31, 17582915],
4229 [32, 17582916],
4230 [33, 17582917],
4231 [34, 17582918],
4232 [35, 17582919],
4233 [36, 17582920],
4234 [37, 17582921],
4235 [38, 17582922],
4236 [39, 17582923],
4237 [40, 17582924],
4238 [41, 17582925],
4239 [42, 17582926],
4240 [43, 17582927],
4241 [44, 17582928],
4242 [45, 17582929],
4243 [46, 17582930],
4244 [47, 17582931],
4245 [48, 17582932],
4246 [49, 17583028],
4247 [50, 17583029]
4248 ]
4249 );
4250 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4251 assert_eq!(
4252 pairs,
4253 vec![
4254 [0, 17581370],
4255 [1, 17582885],
4256 [2, 17582886],
4257 [3, 17582887],
4258 [4, 17582888],
4259 [5, 17582889],
4260 [6, 17582890],
4261 [7, 17582891],
4262 [8, 17582892],
4263 [9, 17582893],
4264 [10, 17582894],
4265 [11, 17582895],
4266 [12, 17582896],
4267 [13, 17582897],
4268 [14, 17582898],
4269 [15, 17582899],
4270 [16, 17582900],
4271 [17, 17582901],
4272 [18, 17582902],
4273 [19, 17582903],
4274 [20, 17582904],
4275 [21, 17582905],
4276 [22, 17582906],
4277 [23, 17582907],
4278 [24, 17582908],
4279 [25, 17582909],
4280 [26, 17582910],
4281 [27, 17582911],
4282 [28, 17582912],
4283 [29, 17582913],
4284 [30, 17582914],
4285 [31, 17582915],
4286 [32, 17582916],
4287 [33, 17582917],
4288 [34, 17582918],
4289 [35, 17582919],
4290 [36, 17582920],
4291 [37, 17582921],
4292 [38, 17582922],
4293 [39, 17582923],
4294 [40, 17582924],
4295 [41, 17582925],
4296 [42, 17582926],
4297 [43, 17582927],
4298 [44, 17582928],
4299 [45, 17582929],
4300 [46, 17582930],
4301 [47, 17582931],
4302 [48, 17582932],
4303 [49, 17583028],
4304 [50, 17583029]
4305 ]
4306 );
4307 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4308 assert_eq!(
4309 pairs,
4310 vec![
4311 [1, 17582911],
4312 [2, 17582912],
4313 [3, 17582913],
4314 [4, 17582914],
4315 [5, 17582915],
4316 [6, 17582916],
4317 [7, 17582917],
4318 [8, 17582918],
4319 [9, 17582919],
4320 [10, 17582920],
4321 [11, 17582921],
4322 [12, 17582922],
4323 [13, 17582923],
4324 [14, 17582924],
4325 [15, 17582925],
4326 [16, 17582926],
4327 [17, 17582927],
4328 [18, 17582928],
4329 [19, 17582929],
4330 [20, 17582930],
4331 [21, 17582931],
4332 [22, 17582932],
4333 [23, 17583028],
4334 [24, 17583029],
4335 [25, 17583030],
4336 [26, 17583031],
4337 [27, 17583032],
4338 [28, 17583033],
4339 [29, 17583034],
4340 [30, 17583035],
4341 [31, 17583036],
4342 [32, 17583037],
4343 [33, 17583038],
4344 [34, 17583039],
4345 [35, 17583040],
4346 [36, 17583041],
4347 [37, 17583042],
4348 [38, 17583043],
4349 [39, 17583044],
4350 [40, 17583045],
4351 [41, 17583046],
4352 [42, 17583047],
4353 [43, 17583048],
4354 [44, 17583049],
4355 [45, 17583050],
4356 [46, 17583051],
4357 [47, 17583052],
4358 [48, 17583053],
4359 [49, 17583054],
4360 [50, 17583055]
4361 ]
4362 );
4363 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4364 assert_eq!(
4365 pairs,
4366 vec![
4367 [0, 17588621],
4368 [1, 17588622],
4369 [2, 17588623],
4370 [3, 17588624],
4371 [4, 17588625],
4372 [5, 17588626],
4373 [6, 17588627],
4374 [7, 17588628],
4375 [8, 17588629],
4376 [9, 17588630],
4377 [10, 17588631],
4378 [11, 17588632],
4379 [12, 17588633],
4380 [13, 17588634],
4381 [14, 17588635],
4382 [15, 17588636],
4383 [16, 17588637],
4384 [17, 17588638],
4385 [18, 17588639],
4386 [19, 17588640],
4387 [20, 17588641],
4388 [21, 17588642],
4389 [22, 17588643],
4390 [23, 17588644],
4391 [24, 17588645],
4392 [25, 17588646],
4393 [26, 17588647],
4394 [27, 17588648],
4395 [28, 17588649],
4396 [29, 17588650],
4397 [30, 17588651],
4398 [31, 17588652],
4399 [32, 17588653],
4400 [33, 17588654],
4401 [34, 17588655],
4402 [35, 17588656],
4403 [36, 17588657],
4404 [37, 17589196],
4405 [38, 17589197],
4406 [39, 17589198],
4407 [40, 17589199],
4408 [41, 17589200],
4409 [42, 17589201],
4410 [43, 17589202],
4411 [44, 17589203],
4412 [45, 17589204],
4413 [46, 17589205],
4414 [47, 17589206],
4415 [48, 17589207],
4416 [49, 17589208]
4417 ]
4418 );
4419 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4420 assert_eq!(
4421 pairs,
4422 vec![
4423 [0, 17588621],
4424 [1, 17588622],
4425 [2, 17588623],
4426 [3, 17588624],
4427 [4, 17588625],
4428 [5, 17588626],
4429 [6, 17588627],
4430 [7, 17588628],
4431 [8, 17588629],
4432 [9, 17588630],
4433 [10, 17588631],
4434 [11, 17588632],
4435 [12, 17588633],
4436 [13, 17588634],
4437 [14, 17588635],
4438 [15, 17588636],
4439 [16, 17588637],
4440 [17, 17588638],
4441 [18, 17588639],
4442 [19, 17588640],
4443 [20, 17588641],
4444 [21, 17588642],
4445 [22, 17588643],
4446 [23, 17588644],
4447 [24, 17588645],
4448 [25, 17588646],
4449 [26, 17588647],
4450 [27, 17588648],
4451 [28, 17588649],
4452 [29, 17588650],
4453 [30, 17588651],
4454 [31, 17588652],
4455 [32, 17588653],
4456 [33, 17588654],
4457 [34, 17588655],
4458 [35, 17588656],
4459 [36, 17588657],
4460 [37, 17589196],
4461 [38, 17589197],
4462 [39, 17589198],
4463 [40, 17589199],
4464 [41, 17589200],
4465 [42, 17589201],
4466 [43, 17589202],
4467 [44, 17589203],
4468 [45, 17589204],
4469 [46, 17589205],
4470 [47, 17589206],
4471 [48, 17589207],
4472 [49, 17589208]
4473 ]
4474 );
4475 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4476 assert_eq!(
4477 pairs,
4478 vec![
4479 [0, 17588621],
4480 [1, 17588622],
4481 [2, 17588623],
4482 [3, 17588624],
4483 [4, 17588625],
4484 [5, 17588626],
4485 [6, 17588627],
4486 [7, 17588628],
4487 [8, 17588629],
4488 [9, 17588630],
4489 [10, 17588631],
4490 [11, 17588632],
4491 [12, 17588633],
4492 [13, 17588634],
4493 [14, 17588635],
4494 [15, 17588636],
4495 [16, 17588637],
4496 [17, 17588638],
4497 [18, 17588639],
4498 [19, 17588640],
4499 [20, 17588641],
4500 [21, 17588642],
4501 [22, 17588643],
4502 [23, 17588644],
4503 [24, 17588645],
4504 [25, 17588646],
4505 [26, 17588647],
4506 [27, 17588648],
4507 [28, 17588649],
4508 [29, 17588650],
4509 [30, 17588651],
4510 [31, 17588652],
4511 [32, 17588653],
4512 [33, 17588654],
4513 [34, 17588655],
4514 [35, 17588656],
4515 [36, 17588657],
4516 [37, 17589196],
4517 [38, 17589197],
4518 [39, 17589198],
4519 [40, 17589199],
4520 [41, 17589200],
4521 [42, 17589201],
4522 [43, 17589202],
4523 [44, 17589203],
4524 [45, 17589204],
4525 [46, 17589205],
4526 [47, 17589206],
4527 [48, 17589207],
4528 [49, 17589208]
4529 ]
4530 );
4531 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4532 assert_eq!(
4533 pairs,
4534 vec![
4535 [1, 17591770],
4536 [2, 17591771],
4537 [3, 17591772],
4538 [4, 17591773],
4539 [5, 17591774],
4540 [6, 17591775],
4541 [7, 17591776],
4542 [8, 17591777],
4543 [9, 17591778],
4544 [10, 17591779],
4545 [11, 17591780],
4546 [12, 17591781],
4547 [13, 17591782],
4548 [14, 17591783],
4549 [15, 17591784],
4550 [16, 17591785],
4551 [17, 17591786],
4552 [18, 17591787],
4553 [19, 17591788],
4554 [20, 17591789],
4555 [21, 17591790],
4556 [22, 17591791],
4557 [23, 17591792],
4558 [24, 17591793],
4559 [25, 17591794],
4560 [26, 17591796],
4561 [27, 17591797],
4562 [28, 17591798],
4563 [29, 17591799],
4564 [30, 17591800],
4565 [31, 17591801],
4566 [32, 17591802],
4567 [33, 17591803],
4568 [34, 17591804],
4569 [35, 17591805],
4570 [36, 17591806],
4571 [37, 17591807],
4572 [38, 17591808],
4573 [39, 17591809],
4574 [40, 17591810],
4575 [41, 17591811],
4576 [42, 17591812],
4577 [43, 17591813],
4578 [44, 17591814],
4579 [45, 17591815],
4580 [46, 17591816],
4581 [47, 17591817],
4582 [48, 17591818],
4583 [49, 17591819],
4584 [50, 17591820]
4585 ]
4586 );
4587 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4588 assert_eq!(
4589 pairs,
4590 vec![
4591 [0, 17593855],
4592 [1, 17593856],
4593 [2, 17593857],
4594 [3, 17593858],
4595 [4, 17593859],
4596 [5, 17593860],
4597 [6, 17593861],
4598 [7, 17593862],
4599 [8, 17593863],
4600 [9, 17593864],
4601 [10, 17593865],
4602 [11, 17593866],
4603 [12, 17593867],
4604 [13, 17593868],
4605 [14, 17593869],
4606 [15, 17593870],
4607 [16, 17593871],
4608 [17, 17593872],
4609 [18, 17593873],
4610 [19, 17593874],
4611 [20, 17593875],
4612 [21, 17593876],
4613 [22, 17593877],
4614 [23, 17593878],
4615 [24, 17593880],
4616 [25, 17593881],
4617 [26, 17593882],
4618 [27, 17593883],
4619 [28, 17593884],
4620 [29, 17593885],
4621 [30, 17593886],
4622 [31, 17593887],
4623 [32, 17593888],
4624 [33, 17593889],
4625 [34, 17593890],
4626 [35, 17593891],
4627 [36, 17593892],
4628 [37, 17593893],
4629 [38, 17593894],
4630 [39, 17593895],
4631 [40, 17593896],
4632 [41, 17593897],
4633 [42, 17593898],
4634 [43, 17593899],
4635 [44, 17593900],
4636 [45, 17593901],
4637 [46, 17593902],
4638 [47, 17593903]
4639 ]
4640 );
4641 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4642 assert_eq!(
4643 pairs,
4644 vec![
4645 [0, 17593863],
4646 [1, 17593864],
4647 [2, 17593865],
4648 [3, 17593866],
4649 [4, 17593867],
4650 [5, 17593868],
4651 [6, 17593869],
4652 [7, 17593870],
4653 [8, 17593871],
4654 [9, 17593872],
4655 [10, 17593873],
4656 [11, 17593874],
4657 [12, 17593875],
4658 [13, 17593876],
4659 [14, 17593877],
4660 [15, 17593878],
4661 [16, 17593880],
4662 [17, 17593881],
4663 [18, 17593882],
4664 [19, 17593883],
4665 [20, 17593884],
4666 [21, 17593885],
4667 [22, 17593886],
4668 [23, 17593887],
4669 [24, 17593888],
4670 [25, 17593889],
4671 [26, 17593890],
4672 [27, 17593891],
4673 [28, 17593892],
4674 [29, 17593893],
4675 [30, 17593894],
4676 [31, 17593895],
4677 [32, 17593896],
4678 [33, 17593897],
4679 [34, 17593898],
4680 [35, 17593899],
4681 [36, 17593900],
4682 [37, 17593901],
4683 [38, 17593902],
4684 [39, 17593903],
4685 [40, 17593904],
4686 [41, 17593905],
4687 [42, 17593906],
4688 [43, 17593907]
4689 ]
4690 );
4691 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4692 assert_eq!(
4693 pairs,
4694 vec![
4695 [11, 17596476],
4696 [12, 17596477],
4697 [13, 17596478],
4698 [14, 17596479],
4699 [15, 17596480],
4700 [16, 17596481],
4701 [17, 17596482],
4702 [19, 17596483],
4703 [20, 17596484],
4704 [21, 17596485],
4705 [22, 17596486],
4706 [23, 17596487],
4707 [24, 17596488],
4708 [25, 17596489],
4709 [26, 17596490],
4710 [27, 17596491],
4711 [28, 17596492],
4712 [29, 17596493],
4713 [30, 17596494],
4714 [31, 17596495],
4715 [32, 17596496],
4716 [33, 17596497],
4717 [34, 17596498],
4718 [35, 17596499],
4719 [36, 17596500],
4720 [37, 17596501],
4721 [38, 17596502],
4722 [39, 17596503],
4723 [40, 17596504],
4724 [41, 17596505],
4725 [42, 17596506],
4726 [43, 17596507],
4727 [44, 17596508],
4728 [45, 17596509],
4729 [46, 17596510],
4730 [47, 17596511],
4731 [48, 17596512],
4732 [49, 17596513],
4733 [50, 17596514]
4734 ]
4735 );
4736 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4737 assert_eq!(
4738 pairs,
4739 vec![
4740 [5, 17624012],
4741 [6, 17624013],
4742 [7, 17624014],
4743 [8, 17624015],
4744 [9, 17624016],
4745 [10, 17624017],
4746 [11, 17624018],
4747 [12, 17624019],
4748 [13, 17624020],
4749 [14, 17625913],
4750 [15, 17625914],
4751 [16, 17625915],
4752 [17, 17625916],
4753 [18, 17625917],
4754 [19, 17625918],
4755 [20, 17625919],
4756 [21, 17625920],
4757 [22, 17625921],
4758 [23, 17625922],
4759 [24, 17625923],
4760 [25, 17625924],
4761 [26, 17625925],
4762 [27, 17625926],
4763 [28, 17625927],
4764 [29, 17625928],
4765 [30, 17625929],
4766 [31, 17625930],
4767 [32, 17625931],
4768 [33, 17625932],
4769 [34, 17625933],
4770 [35, 17625934],
4771 [36, 17625935],
4772 [37, 17625936],
4773 [38, 17625937],
4774 [39, 17625938],
4775 [40, 17625939],
4776 [41, 17625940],
4777 [42, 17625941],
4778 [43, 17625942],
4779 [44, 17625943],
4780 [45, 17625944],
4781 [46, 17625945],
4782 [47, 17625946],
4783 [48, 17625947],
4784 [49, 17625948],
4785 [50, 17625949]
4786 ]
4787 );
4788 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4789 assert_eq!(
4790 pairs,
4791 vec![
4792 [2, 17624012],
4793 [3, 17624013],
4794 [4, 17624014],
4795 [5, 17624015],
4796 [6, 17624016],
4797 [7, 17624017],
4798 [8, 17624018],
4799 [9, 17624019],
4800 [10, 17624020],
4801 [11, 17625913],
4802 [12, 17625914],
4803 [13, 17625915],
4804 [14, 17625916],
4805 [15, 17625917],
4806 [16, 17625918],
4807 [17, 17625919],
4808 [18, 17625920],
4809 [19, 17625921],
4810 [20, 17625922],
4811 [21, 17625923],
4812 [22, 17625924],
4813 [23, 17625925],
4814 [24, 17625926],
4815 [25, 17625927],
4816 [26, 17625928],
4817 [27, 17625929],
4818 [28, 17625930],
4819 [29, 17625931],
4820 [30, 17625932],
4821 [31, 17625933],
4822 [32, 17625934],
4823 [33, 17625935],
4824 [34, 17625936],
4825 [35, 17625937],
4826 [36, 17625938],
4827 [37, 17625939],
4828 [38, 17625940],
4829 [39, 17625941],
4830 [40, 17625942],
4831 [41, 17625943],
4832 [42, 17625944],
4833 [43, 17625945],
4834 [44, 17625946],
4835 [45, 17625947],
4836 [46, 17625948],
4837 [47, 17625949],
4838 [48, 17625950],
4839 [49, 17625951],
4840 [50, 17625952]
4841 ]
4842 );
4843 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4844 assert_eq!(
4845 pairs,
4846 vec![
4847 [1, 31796700],
4848 [2, 31796701],
4849 [3, 31796702],
4850 [4, 31796703],
4851 [5, 31796704],
4852 [6, 31796705],
4853 [7, 31796706],
4854 [8, 31796710],
4855 [9, 31796711],
4856 [10, 31796712],
4857 [11, 31796713],
4858 [12, 31796714],
4859 [13, 31796715],
4860 [14, 31796716],
4861 [15, 31796717],
4862 [16, 31796718],
4863 [17, 31796719],
4864 [18, 31796720],
4865 [19, 31796721],
4866 [20, 31796722],
4867 [21, 31796723],
4868 [22, 31796724],
4869 [23, 31796725],
4870 [24, 31796726],
4871 [25, 31796727],
4872 [26, 31796728],
4873 [27, 31799014],
4874 [28, 31799015],
4875 [29, 31799016],
4876 [30, 31799017],
4877 [31, 31799018],
4878 [32, 31799019],
4879 [33, 31799020],
4880 [34, 31799021],
4881 [35, 31799022],
4882 [36, 31799023],
4883 [37, 31799024],
4884 [38, 31799025],
4885 [39, 31799026],
4886 [40, 31799027],
4887 [41, 31799028],
4888 [42, 31799029],
4889 [43, 31799030],
4890 [44, 31799031],
4891 [45, 31799032],
4892 [46, 31799033],
4893 [47, 31799034],
4894 [48, 31799035],
4895 [49, 31799036],
4896 [50, 31799037]
4897 ]
4898 );
4899 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4900 assert_eq!(
4901 pairs,
4902 vec![
4903 [0, 36722692],
4904 [1, 36722693],
4905 [2, 36722694],
4906 [3, 36722695],
4907 [4, 36722696],
4908 [5, 36722697],
4909 [6, 36722698],
4910 [7, 36722699],
4911 [8, 36722700],
4912 [9, 36722701],
4913 [10, 36722702],
4914 [11, 36722703],
4915 [12, 36722704],
4916 [13, 36722705],
4917 [14, 36723505],
4918 [15, 36723506],
4919 [16, 36723507],
4920 [17, 36723508],
4921 [18, 36723509],
4922 [19, 36723510],
4923 [20, 36723511],
4924 [21, 36723512],
4925 [22, 36723513],
4926 [23, 36723514],
4927 [24, 36723515],
4928 [25, 36723516],
4929 [26, 36723517],
4930 [27, 36723518],
4931 [28, 36723519],
4932 [29, 36723520],
4933 [30, 36723521],
4934 [31, 36723522],
4935 [32, 36723523],
4936 [33, 36723524],
4937 [34, 36723525],
4938 [35, 36723526],
4939 [36, 36723527],
4940 [37, 36723528],
4941 [38, 36723529],
4942 [39, 36723530],
4943 [40, 36723531],
4944 [41, 36723532],
4945 [42, 36737414],
4946 [43, 36737415],
4947 [44, 36737416],
4948 [45, 36737417],
4949 [46, 36737418],
4950 [47, 36737419],
4951 [48, 36737420]
4952 ]
4953 );
4954 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs().collect();
4955 assert_eq!(
4956 pairs,
4957 vec![
4958 [4, 44587963],
4959 [5, 44587964],
4960 [6, 44587965],
4961 [7, 44587966],
4962 [8, 44587967],
4963 [9, 44587968],
4964 [10, 44587969],
4965 [11, 44587970],
4966 [12, 44587971],
4967 [13, 44587972],
4968 [14, 44587973],
4969 [15, 44587974],
4970 [16, 44587975],
4971 [17, 44587976],
4972 [18, 44587977],
4973 [19, 44587978],
4974 [20, 44587979],
4975 [21, 44587980],
4976 [22, 44587981],
4977 [23, 44587982],
4978 [24, 44587983],
4979 [25, 44589680],
4980 [26, 44589681],
4981 [27, 44589682],
4982 [28, 44589683],
4983 [29, 44589684],
4984 [30, 44589685],
4985 [31, 44589686],
4986 [32, 44589687],
4987 [33, 44589688],
4988 [34, 44589689],
4989 [35, 44589690],
4990 [36, 44589691],
4991 [37, 44589692],
4992 [38, 44589693],
4993 [39, 44589694],
4994 [40, 44589695],
4995 [41, 44589696],
4996 [42, 44589697],
4997 [43, 44589698],
4998 [44, 44589699],
4999 [45, 44589700],
5000 [46, 44589701],
5001 [47, 44589702],
5002 [48, 44592034],
5003 [49, 44592035],
5004 [50, 44592036]
5005 ]
5006 );
5007 }
5008
5009 #[test]
5010 fn test_aligned_pairs_full() {
5011 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
5012 let mut it = bam.records();
5013 let pairs: Vec<_> = it.next().unwrap().unwrap().aligned_pairs_full().collect();
5014 assert_eq!(
5015 pairs.clone().into_iter().take(12).collect::<Vec<_>>(),
5016 vec![
5017 (Some(0), None, Cigar::SoftClip(6)),
5018 (Some(1), None, Cigar::SoftClip(6)),
5019 (Some(2), None, Cigar::SoftClip(6)),
5020 (Some(3), None, Cigar::SoftClip(6)),
5021 (Some(4), None, Cigar::SoftClip(6)),
5022 (Some(5), None, Cigar::SoftClip(6)),
5023 (Some(6), Some(16050676), Cigar::Match(45)),
5024 (Some(7), Some(16050677), Cigar::Match(45)),
5025 (Some(8), Some(16050678), Cigar::Match(45)),
5026 (Some(9), Some(16050679), Cigar::Match(45)),
5027 (Some(10), Some(16050680), Cigar::Match(45)),
5028 (Some(11), Some(16050681), Cigar::Match(45)),
5029 ]
5030 );
5031 let pairs: Vec<_> = pairs.into_iter().map(|p| [p.0, p.1]).collect();
5032 assert_eq!(
5033 pairs,
5034 vec![
5035 [Some(0), None],
5036 [Some(1), None],
5037 [Some(2), None],
5038 [Some(3), None],
5039 [Some(4), None],
5040 [Some(5), None],
5041 [Some(6), Some(16050676)],
5042 [Some(7), Some(16050677)],
5043 [Some(8), Some(16050678)],
5044 [Some(9), Some(16050679)],
5045 [Some(10), Some(16050680)],
5046 [Some(11), Some(16050681)],
5047 [Some(12), Some(16050682)],
5048 [Some(13), Some(16050683)],
5049 [Some(14), Some(16050684)],
5050 [Some(15), Some(16050685)],
5051 [Some(16), Some(16050686)],
5052 [Some(17), Some(16050687)],
5053 [Some(18), Some(16050688)],
5054 [Some(19), Some(16050689)],
5055 [Some(20), Some(16050690)],
5056 [Some(21), Some(16050691)],
5057 [Some(22), Some(16050692)],
5058 [Some(23), Some(16050693)],
5059 [Some(24), Some(16050694)],
5060 [Some(25), Some(16050695)],
5061 [Some(26), Some(16050696)],
5062 [Some(27), Some(16050697)],
5063 [Some(28), Some(16050698)],
5064 [Some(29), Some(16050699)],
5065 [Some(30), Some(16050700)],
5066 [Some(31), Some(16050701)],
5067 [Some(32), Some(16050702)],
5068 [Some(33), Some(16050703)],
5069 [Some(34), Some(16050704)],
5070 [Some(35), Some(16050705)],
5071 [Some(36), Some(16050706)],
5072 [Some(37), Some(16050707)],
5073 [Some(38), Some(16050708)],
5074 [Some(39), Some(16050709)],
5075 [Some(40), Some(16050710)],
5076 [Some(41), Some(16050711)],
5077 [Some(42), Some(16050712)],
5078 [Some(43), Some(16050713)],
5079 [Some(44), Some(16050714)],
5080 [Some(45), Some(16050715)],
5081 [Some(46), Some(16050716)],
5082 [Some(47), Some(16050717)],
5083 [Some(48), Some(16050718)],
5084 [Some(49), Some(16050719)],
5085 [Some(50), Some(16050720)]
5086 ]
5087 );
5088 let pairs: Vec<_> = it
5089 .next()
5090 .unwrap()
5091 .unwrap()
5092 .aligned_pairs_full()
5093 .map(|p| [p.0, p.1])
5094 .collect();
5095 assert_eq!(
5096 pairs,
5097 vec![
5098 [Some(0), Some(16096878)],
5099 [Some(1), Some(16096879)],
5100 [Some(2), Some(16096880)],
5101 [Some(3), Some(16096881)],
5102 [Some(4), Some(16096882)],
5103 [Some(5), Some(16096883)],
5104 [Some(6), Some(16096884)],
5105 [None, Some(16096885)],
5106 [None, Some(16096886)],
5107 [Some(7), Some(16096887)],
5108 [Some(8), Some(16096888)],
5109 [Some(9), Some(16096889)],
5110 [Some(10), Some(16096890)],
5111 [Some(11), Some(16096891)],
5112 [Some(12), Some(16096892)],
5113 [Some(13), Some(16096893)],
5114 [Some(14), Some(16096894)],
5115 [Some(15), Some(16096895)],
5116 [Some(16), Some(16096896)],
5117 [Some(17), Some(16096897)],
5118 [Some(18), Some(16096898)],
5119 [Some(19), Some(16096899)],
5120 [Some(20), Some(16096900)],
5121 [Some(21), Some(16096901)],
5122 [Some(22), Some(16096902)],
5123 [Some(23), Some(16096903)],
5124 [Some(24), Some(16096904)],
5125 [Some(25), Some(16096905)],
5126 [Some(26), Some(16096906)],
5127 [Some(27), Some(16096907)],
5128 [Some(28), Some(16096908)],
5129 [Some(29), Some(16096909)],
5130 [Some(30), Some(16096910)],
5131 [Some(31), Some(16096911)],
5132 [Some(32), Some(16096912)],
5133 [Some(33), Some(16096913)],
5134 [Some(34), Some(16096914)],
5135 [Some(35), Some(16096915)],
5136 [Some(36), Some(16096916)],
5137 [Some(37), Some(16096917)],
5138 [Some(38), Some(16096918)],
5139 [Some(39), Some(16096919)],
5140 [Some(40), Some(16096920)],
5141 [Some(41), Some(16096921)],
5142 [Some(42), Some(16096922)],
5143 [Some(43), Some(16096923)],
5144 [Some(44), Some(16096924)],
5145 [Some(45), Some(16096925)],
5146 [Some(46), Some(16096926)],
5147 [Some(47), Some(16096927)],
5148 [Some(48), Some(16096928)],
5149 [Some(49), Some(16096929)],
5150 [Some(50), Some(16096930)]
5151 ]
5152 );
5153 let pairs: Vec<_> = it
5154 .next()
5155 .unwrap()
5156 .unwrap()
5157 .aligned_pairs_full()
5158 .map(|p| [p.0, p.1])
5159 .collect();
5160 assert_eq!(
5161 pairs,
5162 vec![
5163 [Some(0), Some(16097145)],
5164 [Some(1), Some(16097146)],
5165 [Some(2), Some(16097147)],
5166 [Some(3), Some(16097148)],
5167 [Some(4), Some(16097149)],
5168 [Some(5), Some(16097150)],
5169 [Some(6), Some(16097151)],
5170 [Some(7), Some(16097152)],
5171 [Some(8), Some(16097153)],
5172 [Some(9), Some(16097154)],
5173 [Some(10), Some(16097155)],
5174 [Some(11), Some(16097156)],
5175 [Some(12), Some(16097157)],
5176 [Some(13), Some(16097158)],
5177 [Some(14), Some(16097159)],
5178 [Some(15), Some(16097160)],
5179 [Some(16), Some(16097161)],
5180 [Some(17), Some(16097162)],
5181 [Some(18), Some(16097163)],
5182 [Some(19), Some(16097164)],
5183 [Some(20), Some(16097165)],
5184 [Some(21), Some(16097166)],
5185 [Some(22), Some(16097167)],
5186 [Some(23), Some(16097168)],
5187 [Some(24), Some(16097169)],
5188 [Some(25), Some(16097170)],
5189 [Some(26), Some(16097171)],
5190 [Some(27), Some(16097172)],
5191 [Some(28), Some(16097173)],
5192 [None, Some(16097174)],
5193 [None, Some(16097175)],
5194 [Some(29), Some(16097176)],
5195 [Some(30), Some(16097177)],
5196 [Some(31), Some(16097178)],
5197 [Some(32), Some(16097179)],
5198 [Some(33), Some(16097180)],
5199 [Some(34), Some(16097181)],
5200 [Some(35), Some(16097182)],
5201 [Some(36), Some(16097183)],
5202 [Some(37), Some(16097184)],
5203 [Some(38), Some(16097185)],
5204 [Some(39), Some(16097186)],
5205 [Some(40), Some(16097187)],
5206 [Some(41), Some(16097188)],
5207 [Some(42), Some(16097189)],
5208 [Some(43), Some(16097190)],
5209 [Some(44), Some(16097191)],
5210 [Some(45), Some(16097192)],
5211 [Some(46), Some(16097193)],
5212 [Some(47), Some(16097194)],
5213 [Some(48), Some(16097195)],
5214 [Some(49), Some(16097196)],
5215 [Some(50), Some(16097197)]
5216 ]
5217 );
5218 let pairs: Vec<_> = it
5219 .next()
5220 .unwrap()
5221 .unwrap()
5222 .aligned_pairs_full()
5223 .map(|p| [p.0, p.1])
5224 .collect();
5225 assert_eq!(
5226 pairs,
5227 vec![
5228 [Some(0), Some(16117350)],
5229 [Some(1), Some(16117351)],
5230 [Some(2), Some(16117352)],
5231 [Some(3), Some(16117353)],
5232 [Some(4), Some(16117354)],
5233 [Some(5), Some(16117355)],
5234 [Some(6), Some(16117356)],
5235 [Some(7), Some(16117357)],
5236 [Some(8), Some(16117358)],
5237 [Some(9), Some(16117359)],
5238 [Some(10), Some(16117360)],
5239 [Some(11), Some(16117361)],
5240 [Some(12), Some(16117362)],
5241 [Some(13), Some(16117363)],
5242 [Some(14), Some(16117364)],
5243 [Some(15), Some(16117365)],
5244 [Some(16), Some(16117366)],
5245 [Some(17), Some(16117367)],
5246 [Some(18), Some(16117368)],
5247 [Some(19), Some(16117369)],
5248 [Some(20), Some(16117370)],
5249 [Some(21), Some(16117371)],
5250 [Some(22), Some(16117372)],
5251 [Some(23), Some(16117373)],
5252 [Some(24), Some(16117374)],
5253 [Some(25), Some(16117375)],
5254 [Some(26), Some(16117376)],
5255 [Some(27), Some(16117377)],
5256 [Some(28), Some(16117378)],
5257 [Some(29), Some(16117379)],
5258 [Some(30), Some(16117380)],
5259 [Some(31), Some(16117381)],
5260 [Some(32), Some(16117382)],
5261 [Some(33), Some(16117383)],
5262 [Some(34), Some(16117384)],
5263 [Some(35), Some(16117385)],
5264 [Some(36), Some(16117386)],
5265 [Some(37), Some(16117387)],
5266 [Some(38), Some(16117388)],
5267 [Some(39), Some(16117389)],
5268 [Some(40), Some(16117390)],
5269 [Some(41), Some(16117391)],
5270 [Some(42), Some(16117392)],
5271 [Some(43), Some(16117393)],
5272 [Some(44), Some(16117394)],
5273 [Some(45), Some(16117395)],
5274 [Some(46), Some(16117396)],
5275 [Some(47), Some(16117397)],
5276 [Some(48), Some(16117398)],
5277 [Some(49), Some(16117399)],
5278 [Some(50), Some(16117400)]
5279 ]
5280 );
5281 let pairs: Vec<_> = it
5282 .next()
5283 .unwrap()
5284 .unwrap()
5285 .aligned_pairs_full()
5286 .map(|p| [p.0, p.1])
5287 .collect();
5288 assert_eq!(
5289 pairs,
5290 vec![
5291 [Some(0), Some(16118483)],
5292 [Some(1), Some(16118484)],
5293 [Some(2), Some(16118485)],
5294 [Some(3), Some(16118486)],
5295 [Some(4), Some(16118487)],
5296 [Some(5), Some(16118488)],
5297 [Some(6), Some(16118489)],
5298 [Some(7), Some(16118490)],
5299 [Some(8), Some(16118491)],
5300 [Some(9), Some(16118492)],
5301 [Some(10), Some(16118493)],
5302 [Some(11), Some(16118494)],
5303 [Some(12), Some(16118495)],
5304 [Some(13), Some(16118496)],
5305 [Some(14), Some(16118497)],
5306 [Some(15), Some(16118498)],
5307 [Some(16), Some(16118499)],
5308 [Some(17), Some(16118500)],
5309 [Some(18), Some(16118501)],
5310 [Some(19), Some(16118502)],
5311 [Some(20), Some(16118503)],
5312 [Some(21), Some(16118504)],
5313 [Some(22), Some(16118505)],
5314 [Some(23), Some(16118506)],
5315 [Some(24), Some(16118507)],
5316 [Some(25), Some(16118508)],
5317 [Some(26), Some(16118509)],
5318 [Some(27), Some(16118510)],
5319 [Some(28), Some(16118511)],
5320 [Some(29), Some(16118512)],
5321 [Some(30), Some(16118513)],
5322 [Some(31), Some(16118514)],
5323 [Some(32), Some(16118515)],
5324 [Some(33), Some(16118516)],
5325 [Some(34), Some(16118517)],
5326 [Some(35), Some(16118518)],
5327 [Some(36), Some(16118519)],
5328 [Some(37), Some(16118520)],
5329 [Some(38), Some(16118521)],
5330 [Some(39), Some(16118522)],
5331 [Some(40), Some(16118523)],
5332 [Some(41), Some(16118524)],
5333 [Some(42), Some(16118525)],
5334 [Some(43), Some(16118526)],
5335 [Some(44), Some(16118527)],
5336 [Some(45), Some(16118528)],
5337 [Some(46), Some(16118529)],
5338 [Some(47), Some(16118530)],
5339 [Some(48), Some(16118531)],
5340 [Some(49), Some(16118532)],
5341 [Some(50), Some(16118533)]
5342 ]
5343 );
5344
5345 fn some_count(pairs: &[[Option<i64>; 2]], pos: usize) -> i64 {
5348 pairs.iter().filter(|x| x[pos].is_some()).count() as i64
5349 }
5350 fn none_count(pairs: &[[Option<i64>; 2]], pos: usize) -> i64 {
5351 pairs.iter().filter(|x| x[pos].is_none()).count() as i64
5352 }
5353
5354 let pairs: Vec<_> = it
5355 .next()
5356 .unwrap()
5357 .unwrap()
5358 .aligned_pairs_full()
5359 .map(|p| [p.0, p.1])
5360 .collect();
5361 assert_eq!(some_count(&pairs, 0), 51);
5362 assert_eq!(none_count(&pairs, 0), 0);
5363 assert_eq!(some_count(&pairs, 1), 51);
5364 assert_eq!(none_count(&pairs, 1), 0);
5365 let pairs: Vec<_> = it
5366 .next()
5367 .unwrap()
5368 .unwrap()
5369 .aligned_pairs_full()
5370 .map(|p| [p.0, p.1])
5371 .collect();
5372 assert_eq!(some_count(&pairs, 0), 51);
5373 assert_eq!(none_count(&pairs, 0), 0);
5374 assert_eq!(some_count(&pairs, 1), 51);
5375 assert_eq!(none_count(&pairs, 1), 0);
5376 let pairs: Vec<_> = it
5377 .next()
5378 .unwrap()
5379 .unwrap()
5380 .aligned_pairs_full()
5381 .map(|p| [p.0, p.1])
5382 .collect();
5383 assert_eq!(some_count(&pairs, 0), 51);
5384 assert_eq!(none_count(&pairs, 0), 0);
5385 assert_eq!(some_count(&pairs, 1), 51);
5386 assert_eq!(none_count(&pairs, 1), 0);
5387 let pairs: Vec<_> = it
5388 .next()
5389 .unwrap()
5390 .unwrap()
5391 .aligned_pairs_full()
5392 .map(|p| [p.0, p.1])
5393 .collect();
5394 assert_eq!(some_count(&pairs, 0), 51);
5395 assert_eq!(none_count(&pairs, 0), 0);
5396 assert_eq!(some_count(&pairs, 1), 51);
5397 assert_eq!(none_count(&pairs, 1), 0);
5398 let pairs: Vec<_> = it
5399 .next()
5400 .unwrap()
5401 .unwrap()
5402 .aligned_pairs_full()
5403 .map(|p| [p.0, p.1])
5404 .collect();
5405 assert_eq!(some_count(&pairs, 0), 51);
5406 assert_eq!(none_count(&pairs, 0), 0);
5407 assert_eq!(some_count(&pairs, 1), 45);
5408 assert_eq!(none_count(&pairs, 1), 6);
5409 let pairs: Vec<_> = it
5410 .next()
5411 .unwrap()
5412 .unwrap()
5413 .aligned_pairs_full()
5414 .map(|p| [p.0, p.1])
5415 .collect();
5416 assert_eq!(some_count(&pairs, 0), 51);
5417 assert_eq!(none_count(&pairs, 0), 0);
5418 assert_eq!(some_count(&pairs, 1), 41);
5419 assert_eq!(none_count(&pairs, 1), 10);
5420 let pairs: Vec<_> = it
5421 .next()
5422 .unwrap()
5423 .unwrap()
5424 .aligned_pairs_full()
5425 .map(|p| [p.0, p.1])
5426 .collect();
5427 assert_eq!(some_count(&pairs, 0), 51);
5428 assert_eq!(none_count(&pairs, 0), 0);
5429 assert_eq!(some_count(&pairs, 1), 51);
5430 assert_eq!(none_count(&pairs, 1), 0);
5431 let pairs: Vec<_> = it
5432 .next()
5433 .unwrap()
5434 .unwrap()
5435 .aligned_pairs_full()
5436 .map(|p| [p.0, p.1])
5437 .collect();
5438 assert_eq!(some_count(&pairs, 0), 51);
5439 assert_eq!(none_count(&pairs, 0), 0);
5440 assert_eq!(some_count(&pairs, 1), 51);
5441 assert_eq!(none_count(&pairs, 1), 0);
5442 let pairs: Vec<_> = it
5443 .next()
5444 .unwrap()
5445 .unwrap()
5446 .aligned_pairs_full()
5447 .map(|p| [p.0, p.1])
5448 .collect();
5449 assert_eq!(some_count(&pairs, 0), 51);
5450 assert_eq!(none_count(&pairs, 0), 0);
5451 assert_eq!(some_count(&pairs, 1), 51);
5452 assert_eq!(none_count(&pairs, 1), 0);
5453 let pairs: Vec<_> = it
5454 .next()
5455 .unwrap()
5456 .unwrap()
5457 .aligned_pairs_full()
5458 .map(|p| [p.0, p.1])
5459 .collect();
5460 assert_eq!(some_count(&pairs, 0), 51);
5461 assert_eq!(none_count(&pairs, 0), 0);
5462 assert_eq!(some_count(&pairs, 1), 51);
5463 assert_eq!(none_count(&pairs, 1), 0);
5464 let pairs: Vec<_> = it
5465 .next()
5466 .unwrap()
5467 .unwrap()
5468 .aligned_pairs_full()
5469 .map(|p| [p.0, p.1])
5470 .collect();
5471 assert_eq!(some_count(&pairs, 0), 51);
5472 assert_eq!(none_count(&pairs, 0), 0);
5473 assert_eq!(some_count(&pairs, 1), 42);
5474 assert_eq!(none_count(&pairs, 1), 9);
5475 let pairs: Vec<_> = it
5476 .next()
5477 .unwrap()
5478 .unwrap()
5479 .aligned_pairs_full()
5480 .map(|p| [p.0, p.1])
5481 .collect();
5482 assert_eq!(some_count(&pairs, 0), 51);
5483 assert_eq!(none_count(&pairs, 0), 0);
5484 assert_eq!(some_count(&pairs, 1), 51);
5485 assert_eq!(none_count(&pairs, 1), 0);
5486 let pairs: Vec<_> = it
5487 .next()
5488 .unwrap()
5489 .unwrap()
5490 .aligned_pairs_full()
5491 .map(|p| [p.0, p.1])
5492 .collect();
5493 assert_eq!(some_count(&pairs, 0), 51);
5494 assert_eq!(none_count(&pairs, 0), 0);
5495 assert_eq!(some_count(&pairs, 1), 50);
5496 assert_eq!(none_count(&pairs, 1), 1);
5497 let pairs: Vec<_> = it
5498 .next()
5499 .unwrap()
5500 .unwrap()
5501 .aligned_pairs_full()
5502 .map(|p| [p.0, p.1])
5503 .collect();
5504 assert_eq!(some_count(&pairs, 0), 51);
5505 assert_eq!(none_count(&pairs, 0), 0);
5506 assert_eq!(some_count(&pairs, 1), 45);
5507 assert_eq!(none_count(&pairs, 1), 6);
5508 let pairs: Vec<_> = it
5509 .next()
5510 .unwrap()
5511 .unwrap()
5512 .aligned_pairs_full()
5513 .map(|p| [p.0, p.1])
5514 .collect();
5515 assert_eq!(some_count(&pairs, 0), 51);
5516 assert_eq!(none_count(&pairs, 0), 0);
5517 assert_eq!(some_count(&pairs, 1), 48);
5518 assert_eq!(none_count(&pairs, 1), 3);
5519 let pairs: Vec<_> = it
5520 .next()
5521 .unwrap()
5522 .unwrap()
5523 .aligned_pairs_full()
5524 .map(|p| [p.0, p.1])
5525 .collect();
5526 assert_eq!(some_count(&pairs, 0), 51);
5527 assert_eq!(none_count(&pairs, 0), 0);
5528 assert_eq!(some_count(&pairs, 1), 42);
5529 assert_eq!(none_count(&pairs, 1), 9);
5530 let pairs: Vec<_> = it
5531 .next()
5532 .unwrap()
5533 .unwrap()
5534 .aligned_pairs_full()
5535 .map(|p| [p.0, p.1])
5536 .collect();
5537 assert_eq!(some_count(&pairs, 0), 51);
5538 assert_eq!(none_count(&pairs, 0), 0);
5539 assert_eq!(some_count(&pairs, 1), 38);
5540 assert_eq!(none_count(&pairs, 1), 13);
5541 let pairs: Vec<_> = it
5542 .next()
5543 .unwrap()
5544 .unwrap()
5545 .aligned_pairs_full()
5546 .map(|p| [p.0, p.1])
5547 .collect();
5548 assert_eq!(some_count(&pairs, 0), 51);
5549 assert_eq!(none_count(&pairs, 0), 0);
5550 assert_eq!(some_count(&pairs, 1), 44);
5551 assert_eq!(none_count(&pairs, 1), 7);
5552 let pairs: Vec<_> = it
5553 .next()
5554 .unwrap()
5555 .unwrap()
5556 .aligned_pairs_full()
5557 .map(|p| [p.0, p.1])
5558 .collect();
5559 assert_eq!(some_count(&pairs, 0), 51);
5560 assert_eq!(none_count(&pairs, 0), 0);
5561 assert_eq!(some_count(&pairs, 1), 46);
5562 assert_eq!(none_count(&pairs, 1), 5);
5563 let pairs: Vec<_> = it
5564 .next()
5565 .unwrap()
5566 .unwrap()
5567 .aligned_pairs_full()
5568 .map(|p| [p.0, p.1])
5569 .collect();
5570 assert_eq!(some_count(&pairs, 0), 51);
5571 assert_eq!(none_count(&pairs, 0), 0);
5572 assert_eq!(some_count(&pairs, 1), 47);
5573 assert_eq!(none_count(&pairs, 1), 4);
5574 let pairs: Vec<_> = it
5575 .next()
5576 .unwrap()
5577 .unwrap()
5578 .aligned_pairs_full()
5579 .map(|p| [p.0, p.1])
5580 .collect();
5581 assert_eq!(some_count(&pairs, 0), 51);
5582 assert_eq!(none_count(&pairs, 0), 0);
5583 assert_eq!(some_count(&pairs, 1), 50);
5584 assert_eq!(none_count(&pairs, 1), 1);
5585 let pairs: Vec<_> = it
5586 .next()
5587 .unwrap()
5588 .unwrap()
5589 .aligned_pairs_full()
5590 .map(|p| [p.0, p.1])
5591 .collect();
5592 assert_eq!(some_count(&pairs, 0), 51);
5593 assert_eq!(none_count(&pairs, 0), 2183);
5594 assert_eq!(some_count(&pairs, 1), 2234);
5595 assert_eq!(none_count(&pairs, 1), 0);
5596 let pairs: Vec<_> = it
5597 .next()
5598 .unwrap()
5599 .unwrap()
5600 .aligned_pairs_full()
5601 .map(|p| [p.0, p.1])
5602 .collect();
5603 assert_eq!(some_count(&pairs, 0), 51);
5604 assert_eq!(none_count(&pairs, 0), 2183);
5605 assert_eq!(some_count(&pairs, 1), 2234);
5606 assert_eq!(none_count(&pairs, 1), 0);
5607 let pairs: Vec<_> = it
5608 .next()
5609 .unwrap()
5610 .unwrap()
5611 .aligned_pairs_full()
5612 .map(|p| [p.0, p.1])
5613 .collect();
5614 assert_eq!(some_count(&pairs, 0), 51);
5615 assert_eq!(none_count(&pairs, 0), 2183);
5616 assert_eq!(some_count(&pairs, 1), 2234);
5617 assert_eq!(none_count(&pairs, 1), 0);
5618 let pairs: Vec<_> = it
5619 .next()
5620 .unwrap()
5621 .unwrap()
5622 .aligned_pairs_full()
5623 .map(|p| [p.0, p.1])
5624 .collect();
5625 assert_eq!(some_count(&pairs, 0), 51);
5626 assert_eq!(none_count(&pairs, 0), 0);
5627 assert_eq!(some_count(&pairs, 1), 33);
5628 assert_eq!(none_count(&pairs, 1), 18);
5629 let pairs: Vec<_> = it
5630 .next()
5631 .unwrap()
5632 .unwrap()
5633 .aligned_pairs_full()
5634 .map(|p| [p.0, p.1])
5635 .collect();
5636 assert_eq!(some_count(&pairs, 0), 51);
5637 assert_eq!(none_count(&pairs, 0), 0);
5638 assert_eq!(some_count(&pairs, 1), 48);
5639 assert_eq!(none_count(&pairs, 1), 3);
5640 let pairs: Vec<_> = it
5641 .next()
5642 .unwrap()
5643 .unwrap()
5644 .aligned_pairs_full()
5645 .map(|p| [p.0, p.1])
5646 .collect();
5647 assert_eq!(some_count(&pairs, 0), 51);
5648 assert_eq!(none_count(&pairs, 0), 0);
5649 assert_eq!(some_count(&pairs, 1), 45);
5650 assert_eq!(none_count(&pairs, 1), 6);
5651 let pairs: Vec<_> = it
5652 .next()
5653 .unwrap()
5654 .unwrap()
5655 .aligned_pairs_full()
5656 .map(|p| [p.0, p.1])
5657 .collect();
5658 assert_eq!(some_count(&pairs, 0), 51);
5659 assert_eq!(none_count(&pairs, 0), 11832);
5660 assert_eq!(some_count(&pairs, 1), 11883);
5661 assert_eq!(none_count(&pairs, 1), 0);
5662 let pairs: Vec<_> = it
5663 .next()
5664 .unwrap()
5665 .unwrap()
5666 .aligned_pairs_full()
5667 .map(|p| [p.0, p.1])
5668 .collect();
5669 assert_eq!(some_count(&pairs, 0), 51);
5670 assert_eq!(none_count(&pairs, 0), 12542);
5671 assert_eq!(some_count(&pairs, 1), 12593);
5672 assert_eq!(none_count(&pairs, 1), 0);
5673 let pairs: Vec<_> = it
5674 .next()
5675 .unwrap()
5676 .unwrap()
5677 .aligned_pairs_full()
5678 .map(|p| [p.0, p.1])
5679 .collect();
5680 assert_eq!(some_count(&pairs, 0), 51);
5681 assert_eq!(none_count(&pairs, 0), 12542);
5682 assert_eq!(some_count(&pairs, 1), 12593);
5683 assert_eq!(none_count(&pairs, 1), 0);
5684 let pairs: Vec<_> = it
5685 .next()
5686 .unwrap()
5687 .unwrap()
5688 .aligned_pairs_full()
5689 .map(|p| [p.0, p.1])
5690 .collect();
5691 assert_eq!(some_count(&pairs, 0), 51);
5692 assert_eq!(none_count(&pairs, 0), 12542);
5693 assert_eq!(some_count(&pairs, 1), 12593);
5694 assert_eq!(none_count(&pairs, 1), 0);
5695 let pairs: Vec<_> = it
5696 .next()
5697 .unwrap()
5698 .unwrap()
5699 .aligned_pairs_full()
5700 .map(|p| [p.0, p.1])
5701 .collect();
5702 assert_eq!(some_count(&pairs, 0), 51);
5703 assert_eq!(none_count(&pairs, 0), 12542);
5704 assert_eq!(some_count(&pairs, 1), 12593);
5705 assert_eq!(none_count(&pairs, 1), 0);
5706 let pairs: Vec<_> = it
5707 .next()
5708 .unwrap()
5709 .unwrap()
5710 .aligned_pairs_full()
5711 .map(|p| [p.0, p.1])
5712 .collect();
5713 assert_eq!(some_count(&pairs, 0), 51);
5714 assert_eq!(none_count(&pairs, 0), 12542);
5715 assert_eq!(some_count(&pairs, 1), 12593);
5716 assert_eq!(none_count(&pairs, 1), 0);
5717 let pairs: Vec<_> = it
5718 .next()
5719 .unwrap()
5720 .unwrap()
5721 .aligned_pairs_full()
5722 .map(|p| [p.0, p.1])
5723 .collect();
5724 assert_eq!(some_count(&pairs, 0), 51);
5725 assert_eq!(none_count(&pairs, 0), 12542);
5726 assert_eq!(some_count(&pairs, 1), 12593);
5727 assert_eq!(none_count(&pairs, 1), 0);
5728 let pairs: Vec<_> = it
5729 .next()
5730 .unwrap()
5731 .unwrap()
5732 .aligned_pairs_full()
5733 .map(|p| [p.0, p.1])
5734 .collect();
5735 assert_eq!(some_count(&pairs, 0), 51);
5736 assert_eq!(none_count(&pairs, 0), 12542);
5737 assert_eq!(some_count(&pairs, 1), 12593);
5738 assert_eq!(none_count(&pairs, 1), 0);
5739 let pairs: Vec<_> = it
5740 .next()
5741 .unwrap()
5742 .unwrap()
5743 .aligned_pairs_full()
5744 .map(|p| [p.0, p.1])
5745 .collect();
5746 assert_eq!(some_count(&pairs, 0), 51);
5747 assert_eq!(none_count(&pairs, 0), 12542);
5748 assert_eq!(some_count(&pairs, 1), 12593);
5749 assert_eq!(none_count(&pairs, 1), 0);
5750 let pairs: Vec<_> = it
5751 .next()
5752 .unwrap()
5753 .unwrap()
5754 .aligned_pairs_full()
5755 .map(|p| [p.0, p.1])
5756 .collect();
5757 assert_eq!(some_count(&pairs, 0), 51);
5758 assert_eq!(none_count(&pairs, 0), 1467);
5759 assert_eq!(some_count(&pairs, 1), 1517);
5760 assert_eq!(none_count(&pairs, 1), 1);
5761 let pairs: Vec<_> = it
5762 .next()
5763 .unwrap()
5764 .unwrap()
5765 .aligned_pairs_full()
5766 .map(|p| [p.0, p.1])
5767 .collect();
5768 assert_eq!(some_count(&pairs, 0), 51);
5769 assert_eq!(none_count(&pairs, 0), 1609);
5770 assert_eq!(some_count(&pairs, 1), 1660);
5771 assert_eq!(none_count(&pairs, 1), 0);
5772 let pairs: Vec<_> = it
5773 .next()
5774 .unwrap()
5775 .unwrap()
5776 .aligned_pairs_full()
5777 .map(|p| [p.0, p.1])
5778 .collect();
5779 assert_eq!(some_count(&pairs, 0), 51);
5780 assert_eq!(none_count(&pairs, 0), 1609);
5781 assert_eq!(some_count(&pairs, 1), 1660);
5782 assert_eq!(none_count(&pairs, 1), 0);
5783 let pairs: Vec<_> = it
5784 .next()
5785 .unwrap()
5786 .unwrap()
5787 .aligned_pairs_full()
5788 .map(|p| [p.0, p.1])
5789 .collect();
5790 assert_eq!(some_count(&pairs, 0), 51);
5791 assert_eq!(none_count(&pairs, 0), 1609);
5792 assert_eq!(some_count(&pairs, 1), 1660);
5793 assert_eq!(none_count(&pairs, 1), 0);
5794 let pairs: Vec<_> = it
5795 .next()
5796 .unwrap()
5797 .unwrap()
5798 .aligned_pairs_full()
5799 .map(|p| [p.0, p.1])
5800 .collect();
5801 assert_eq!(some_count(&pairs, 0), 51);
5802 assert_eq!(none_count(&pairs, 0), 95);
5803 assert_eq!(some_count(&pairs, 1), 145);
5804 assert_eq!(none_count(&pairs, 1), 1);
5805 let pairs: Vec<_> = it
5806 .next()
5807 .unwrap()
5808 .unwrap()
5809 .aligned_pairs_full()
5810 .map(|p| [p.0, p.1])
5811 .collect();
5812 assert_eq!(some_count(&pairs, 0), 51);
5813 assert_eq!(none_count(&pairs, 0), 538);
5814 assert_eq!(some_count(&pairs, 1), 588);
5815 assert_eq!(none_count(&pairs, 1), 1);
5816 let pairs: Vec<_> = it
5817 .next()
5818 .unwrap()
5819 .unwrap()
5820 .aligned_pairs_full()
5821 .map(|p| [p.0, p.1])
5822 .collect();
5823 assert_eq!(some_count(&pairs, 0), 51);
5824 assert_eq!(none_count(&pairs, 0), 538);
5825 assert_eq!(some_count(&pairs, 1), 588);
5826 assert_eq!(none_count(&pairs, 1), 1);
5827 let pairs: Vec<_> = it
5828 .next()
5829 .unwrap()
5830 .unwrap()
5831 .aligned_pairs_full()
5832 .map(|p| [p.0, p.1])
5833 .collect();
5834 assert_eq!(some_count(&pairs, 0), 51);
5835 assert_eq!(none_count(&pairs, 0), 538);
5836 assert_eq!(some_count(&pairs, 1), 588);
5837 assert_eq!(none_count(&pairs, 1), 1);
5838 let pairs: Vec<_> = it
5839 .next()
5840 .unwrap()
5841 .unwrap()
5842 .aligned_pairs_full()
5843 .map(|p| [p.0, p.1])
5844 .collect();
5845 assert_eq!(some_count(&pairs, 0), 51);
5846 assert_eq!(none_count(&pairs, 0), 1);
5847 assert_eq!(some_count(&pairs, 1), 51);
5848 assert_eq!(none_count(&pairs, 1), 1);
5849 let pairs: Vec<_> = it
5850 .next()
5851 .unwrap()
5852 .unwrap()
5853 .aligned_pairs_full()
5854 .map(|p| [p.0, p.1])
5855 .collect();
5856 assert_eq!(some_count(&pairs, 0), 51);
5857 assert_eq!(none_count(&pairs, 0), 1);
5858 assert_eq!(some_count(&pairs, 1), 49);
5859 assert_eq!(none_count(&pairs, 1), 3);
5860 let pairs: Vec<_> = it
5861 .next()
5862 .unwrap()
5863 .unwrap()
5864 .aligned_pairs_full()
5865 .map(|p| [p.0, p.1])
5866 .collect();
5867 assert_eq!(some_count(&pairs, 0), 51);
5868 assert_eq!(none_count(&pairs, 0), 1);
5869 assert_eq!(some_count(&pairs, 1), 45);
5870 assert_eq!(none_count(&pairs, 1), 7);
5871 let pairs: Vec<_> = it
5872 .next()
5873 .unwrap()
5874 .unwrap()
5875 .aligned_pairs_full()
5876 .map(|p| [p.0, p.1])
5877 .collect();
5878 assert_eq!(some_count(&pairs, 0), 51);
5879 assert_eq!(none_count(&pairs, 0), 0);
5880 assert_eq!(some_count(&pairs, 1), 39);
5881 assert_eq!(none_count(&pairs, 1), 12);
5882 let pairs: Vec<_> = it
5883 .next()
5884 .unwrap()
5885 .unwrap()
5886 .aligned_pairs_full()
5887 .map(|p| [p.0, p.1])
5888 .collect();
5889 assert_eq!(some_count(&pairs, 0), 51);
5890 assert_eq!(none_count(&pairs, 0), 1892);
5891 assert_eq!(some_count(&pairs, 1), 1938);
5892 assert_eq!(none_count(&pairs, 1), 5);
5893 let pairs: Vec<_> = it
5894 .next()
5895 .unwrap()
5896 .unwrap()
5897 .aligned_pairs_full()
5898 .map(|p| [p.0, p.1])
5899 .collect();
5900 assert_eq!(some_count(&pairs, 0), 51);
5901 assert_eq!(none_count(&pairs, 0), 1892);
5902 assert_eq!(some_count(&pairs, 1), 1941);
5903 assert_eq!(none_count(&pairs, 1), 2);
5904 let pairs: Vec<_> = it
5905 .next()
5906 .unwrap()
5907 .unwrap()
5908 .aligned_pairs_full()
5909 .map(|p| [p.0, p.1])
5910 .collect();
5911 assert_eq!(some_count(&pairs, 0), 51);
5912 assert_eq!(none_count(&pairs, 0), 2288);
5913 assert_eq!(some_count(&pairs, 1), 2338);
5914 assert_eq!(none_count(&pairs, 1), 1);
5915 let pairs: Vec<_> = it
5916 .next()
5917 .unwrap()
5918 .unwrap()
5919 .aligned_pairs_full()
5920 .map(|p| [p.0, p.1])
5921 .collect();
5922 assert_eq!(some_count(&pairs, 0), 51);
5923 assert_eq!(none_count(&pairs, 0), 14680);
5924 assert_eq!(some_count(&pairs, 1), 14729);
5925 assert_eq!(none_count(&pairs, 1), 2);
5926 let pairs: Vec<_> = it
5927 .next()
5928 .unwrap()
5929 .unwrap()
5930 .aligned_pairs_full()
5931 .map(|p| [p.0, p.1])
5932 .collect();
5933 assert_eq!(some_count(&pairs, 0), 51);
5934 assert_eq!(none_count(&pairs, 0), 4027);
5935 assert_eq!(some_count(&pairs, 1), 4074);
5936 assert_eq!(none_count(&pairs, 1), 4);
5937 }
5938
5939 #[test]
5940 fn test_aligned_block_pairs() {
5941 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
5942 let mut it = bam.records();
5943
5944 let read = it.next().unwrap().unwrap();
5945 let pairs: Vec<_> = read.aligned_pairs().collect();
5946 let block_pairs: Vec<_> = read.aligned_block_pairs().collect();
5947
5948 assert_eq!(pairs[0][0], block_pairs[0].0[0]); assert_eq!(pairs[0][1], block_pairs[0].1[0]); assert_eq!(
5954 pairs[pairs.len() - 1][0],
5955 block_pairs[block_pairs.len() - 1].0[1] - 1
5956 );
5957 assert_eq!(
5958 pairs[pairs.len() - 1][1],
5959 block_pairs[block_pairs.len() - 1].1[1] - 1
5960 );
5961
5962 for read in it {
5964 let read = read.unwrap();
5965 let pairs: Vec<_> = read.aligned_pairs().collect();
5966 let block_pairs: Vec<_> = read.aligned_block_pairs().collect();
5967 let mut ii = 0;
5968 for ([read_start, read_stop], [genome_start, genome_stop]) in block_pairs {
5969 assert_eq!(read_stop - read_start, genome_stop - genome_start);
5970 for (read_pos, genome_pos) in (read_start..read_stop).zip(genome_start..genome_stop)
5971 {
5972 assert_eq!(pairs[ii][0], read_pos);
5973 assert_eq!(pairs[ii][1], genome_pos);
5974 ii += 1;
5975 }
5976 }
5977 }
5978 }
5979
5980 #[test]
5981 fn test_get_cigar_stats() {
5982 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
5983 let mut it = bam.records();
5984
5985 fn to_arr(hm: HashMap<Cigar, i32>) -> [i32; 9] {
5986 [
5987 *hm.get(&Cigar::Match(0)).unwrap(),
5988 *hm.get(&Cigar::Ins(0)).unwrap(),
5989 *hm.get(&Cigar::Del(0)).unwrap(),
5990 *hm.get(&Cigar::RefSkip(0)).unwrap(),
5991 *hm.get(&Cigar::SoftClip(0)).unwrap(),
5992 *hm.get(&Cigar::HardClip(0)).unwrap(),
5993 *hm.get(&Cigar::Pad(0)).unwrap(),
5994 *hm.get(&Cigar::Equal(0)).unwrap(),
5995 *hm.get(&Cigar::Diff(0)).unwrap(),
5996 ]
5997 }
5998
5999 let read = it.next().unwrap().unwrap();
6000 let cigar_nucleotides = read.cigar_stats_nucleotides();
6001 assert_eq!(to_arr(cigar_nucleotides), [45, 0, 0, 0, 6, 0, 0, 0, 0]);
6002 let cigar_blocks = read.cigar_stats_blocks();
6003 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6004 let read = it.next().unwrap().unwrap();
6005 let cigar_nucleotides = read.cigar_stats_nucleotides();
6006 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 2, 0, 0, 0, 0, 0, 0]);
6007 let cigar_blocks = read.cigar_stats_blocks();
6008 assert_eq!(to_arr(cigar_blocks), [2, 0, 1, 0, 0, 0, 0, 0, 0]);
6009 let read = it.next().unwrap().unwrap();
6010 let cigar_nucleotides = read.cigar_stats_nucleotides();
6011 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 2, 0, 0, 0, 0, 0, 0]);
6012 let cigar_blocks = read.cigar_stats_blocks();
6013 assert_eq!(to_arr(cigar_blocks), [2, 0, 1, 0, 0, 0, 0, 0, 0]);
6014 let read = it.next().unwrap().unwrap();
6015 let cigar_nucleotides = read.cigar_stats_nucleotides();
6016 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6017 let cigar_blocks = read.cigar_stats_blocks();
6018 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6019 let read = it.next().unwrap().unwrap();
6020 let cigar_nucleotides = read.cigar_stats_nucleotides();
6021 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6022 let cigar_blocks = read.cigar_stats_blocks();
6023 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6024 let read = it.next().unwrap().unwrap();
6025 let cigar_nucleotides = read.cigar_stats_nucleotides();
6026 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6027 let cigar_blocks = read.cigar_stats_blocks();
6028 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6029 let read = it.next().unwrap().unwrap();
6030 let cigar_nucleotides = read.cigar_stats_nucleotides();
6031 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6032 let cigar_blocks = read.cigar_stats_blocks();
6033 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6034 let read = it.next().unwrap().unwrap();
6035 let cigar_nucleotides = read.cigar_stats_nucleotides();
6036 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6037 let cigar_blocks = read.cigar_stats_blocks();
6038 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6039 let read = it.next().unwrap().unwrap();
6040 let cigar_nucleotides = read.cigar_stats_nucleotides();
6041 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6042 let cigar_blocks = read.cigar_stats_blocks();
6043 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6044 let read = it.next().unwrap().unwrap();
6045 let cigar_nucleotides = read.cigar_stats_nucleotides();
6046 assert_eq!(to_arr(cigar_nucleotides), [45, 0, 0, 0, 6, 0, 0, 0, 0]);
6047 let cigar_blocks = read.cigar_stats_blocks();
6048 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6049 let read = it.next().unwrap().unwrap();
6050 let cigar_nucleotides = read.cigar_stats_nucleotides();
6051 assert_eq!(to_arr(cigar_nucleotides), [41, 0, 0, 0, 10, 0, 0, 0, 0]);
6052 let cigar_blocks = read.cigar_stats_blocks();
6053 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6054 let read = it.next().unwrap().unwrap();
6055 let cigar_nucleotides = read.cigar_stats_nucleotides();
6056 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6057 let cigar_blocks = read.cigar_stats_blocks();
6058 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6059 let read = it.next().unwrap().unwrap();
6060 let cigar_nucleotides = read.cigar_stats_nucleotides();
6061 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6062 let cigar_blocks = read.cigar_stats_blocks();
6063 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6064 let read = it.next().unwrap().unwrap();
6065 let cigar_nucleotides = read.cigar_stats_nucleotides();
6066 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6067 let cigar_blocks = read.cigar_stats_blocks();
6068 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6069 let read = it.next().unwrap().unwrap();
6070 let cigar_nucleotides = read.cigar_stats_nucleotides();
6071 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6072 let cigar_blocks = read.cigar_stats_blocks();
6073 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6074 let read = it.next().unwrap().unwrap();
6075 let cigar_nucleotides = read.cigar_stats_nucleotides();
6076 assert_eq!(to_arr(cigar_nucleotides), [42, 0, 0, 0, 9, 0, 0, 0, 0]);
6077 let cigar_blocks = read.cigar_stats_blocks();
6078 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6079 let read = it.next().unwrap().unwrap();
6080 let cigar_nucleotides = read.cigar_stats_nucleotides();
6081 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 0, 0, 0, 0, 0, 0]);
6082 let cigar_blocks = read.cigar_stats_blocks();
6083 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 0, 0, 0, 0, 0]);
6084 let read = it.next().unwrap().unwrap();
6085 let cigar_nucleotides = read.cigar_stats_nucleotides();
6086 assert_eq!(to_arr(cigar_nucleotides), [50, 0, 0, 0, 1, 0, 0, 0, 0]);
6087 let cigar_blocks = read.cigar_stats_blocks();
6088 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6089 let read = it.next().unwrap().unwrap();
6090 let cigar_nucleotides = read.cigar_stats_nucleotides();
6091 assert_eq!(to_arr(cigar_nucleotides), [45, 0, 0, 0, 6, 0, 0, 0, 0]);
6092 let cigar_blocks = read.cigar_stats_blocks();
6093 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6094 let read = it.next().unwrap().unwrap();
6095 let cigar_nucleotides = read.cigar_stats_nucleotides();
6096 assert_eq!(to_arr(cigar_nucleotides), [48, 0, 0, 0, 3, 0, 0, 0, 0]);
6097 let cigar_blocks = read.cigar_stats_blocks();
6098 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6099 let read = it.next().unwrap().unwrap();
6100 let cigar_nucleotides = read.cigar_stats_nucleotides();
6101 assert_eq!(to_arr(cigar_nucleotides), [42, 0, 0, 0, 9, 0, 0, 0, 0]);
6102 let cigar_blocks = read.cigar_stats_blocks();
6103 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6104 let read = it.next().unwrap().unwrap();
6105 let cigar_nucleotides = read.cigar_stats_nucleotides();
6106 assert_eq!(to_arr(cigar_nucleotides), [38, 0, 0, 0, 13, 0, 0, 0, 0]);
6107 let cigar_blocks = read.cigar_stats_blocks();
6108 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6109 let read = it.next().unwrap().unwrap();
6110 let cigar_nucleotides = read.cigar_stats_nucleotides();
6111 assert_eq!(to_arr(cigar_nucleotides), [44, 0, 0, 0, 7, 0, 0, 0, 0]);
6112 let cigar_blocks = read.cigar_stats_blocks();
6113 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6114 let read = it.next().unwrap().unwrap();
6115 let cigar_nucleotides = read.cigar_stats_nucleotides();
6116 assert_eq!(to_arr(cigar_nucleotides), [46, 0, 0, 0, 5, 0, 0, 0, 0]);
6117 let cigar_blocks = read.cigar_stats_blocks();
6118 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 1, 0, 0, 0, 0]);
6119 let read = it.next().unwrap().unwrap();
6120 let cigar_nucleotides = read.cigar_stats_nucleotides();
6121 assert_eq!(to_arr(cigar_nucleotides), [47, 4, 0, 0, 0, 0, 0, 0, 0]);
6122 let cigar_blocks = read.cigar_stats_blocks();
6123 assert_eq!(to_arr(cigar_blocks), [2, 1, 0, 0, 0, 0, 0, 0, 0]);
6124 let read = it.next().unwrap().unwrap();
6125 let cigar_nucleotides = read.cigar_stats_nucleotides();
6126 assert_eq!(to_arr(cigar_nucleotides), [50, 1, 0, 0, 0, 0, 0, 0, 0]);
6127 let cigar_blocks = read.cigar_stats_blocks();
6128 assert_eq!(to_arr(cigar_blocks), [2, 1, 0, 0, 0, 0, 0, 0, 0]);
6129 let read = it.next().unwrap().unwrap();
6130 let cigar_nucleotides = read.cigar_stats_nucleotides();
6131 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 2183, 0, 0, 0, 0, 0]);
6132 let cigar_blocks = read.cigar_stats_blocks();
6133 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 0, 0, 0, 0, 0]);
6134 let read = it.next().unwrap().unwrap();
6135 let cigar_nucleotides = read.cigar_stats_nucleotides();
6136 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 2183, 0, 0, 0, 0, 0]);
6137 let cigar_blocks = read.cigar_stats_blocks();
6138 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 0, 0, 0, 0, 0]);
6139 let read = it.next().unwrap().unwrap();
6140 let cigar_nucleotides = read.cigar_stats_nucleotides();
6141 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 2183, 0, 0, 0, 0, 0]);
6142 let cigar_blocks = read.cigar_stats_blocks();
6143 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 0, 0, 0, 0, 0]);
6144 let read = it.next().unwrap().unwrap();
6145 let cigar_nucleotides = read.cigar_stats_nucleotides();
6146 assert_eq!(to_arr(cigar_nucleotides), [33, 0, 0, 0, 18, 0, 0, 0, 0]);
6147 let cigar_blocks = read.cigar_stats_blocks();
6148 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 2, 0, 0, 0, 0]);
6149 let read = it.next().unwrap().unwrap();
6150 let cigar_nucleotides = read.cigar_stats_nucleotides();
6151 assert_eq!(to_arr(cigar_nucleotides), [48, 0, 0, 0, 3, 0, 0, 0, 0]);
6152 let cigar_blocks = read.cigar_stats_blocks();
6153 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 2, 0, 0, 0, 0]);
6154 let read = it.next().unwrap().unwrap();
6155 let cigar_nucleotides = read.cigar_stats_nucleotides();
6156 assert_eq!(to_arr(cigar_nucleotides), [45, 0, 0, 0, 6, 0, 0, 0, 0]);
6157 let cigar_blocks = read.cigar_stats_blocks();
6158 assert_eq!(to_arr(cigar_blocks), [1, 0, 0, 0, 2, 0, 0, 0, 0]);
6159 let read = it.next().unwrap().unwrap();
6160 let cigar_nucleotides = read.cigar_stats_nucleotides();
6161 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 11832, 0, 0, 0, 0, 0]);
6162 let cigar_blocks = read.cigar_stats_blocks();
6163 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 0, 0, 0, 0, 0]);
6164 let read = it.next().unwrap().unwrap();
6165 let cigar_nucleotides = read.cigar_stats_nucleotides();
6166 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 12542, 0, 0, 0, 0, 0],);
6167 let cigar_blocks = read.cigar_stats_blocks();
6168 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6169 let read = it.next().unwrap().unwrap();
6170 let cigar_nucleotides = read.cigar_stats_nucleotides();
6171 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 12542, 0, 0, 0, 0, 0],);
6172 let cigar_blocks = read.cigar_stats_blocks();
6173 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6174 let read = it.next().unwrap().unwrap();
6175 let cigar_nucleotides = read.cigar_stats_nucleotides();
6176 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 12542, 0, 0, 0, 0, 0],);
6177 let cigar_blocks = read.cigar_stats_blocks();
6178 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6179 let read = it.next().unwrap().unwrap();
6180 let cigar_nucleotides = read.cigar_stats_nucleotides();
6181 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 12542, 0, 0, 0, 0, 0],);
6182 let cigar_blocks = read.cigar_stats_blocks();
6183 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6184 let read = it.next().unwrap().unwrap();
6185 let cigar_nucleotides = read.cigar_stats_nucleotides();
6186 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 12542, 0, 0, 0, 0, 0],);
6187 let cigar_blocks = read.cigar_stats_blocks();
6188 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6189 let read = it.next().unwrap().unwrap();
6190 let cigar_nucleotides = read.cigar_stats_nucleotides();
6191 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 12542, 0, 0, 0, 0, 0],);
6192 let cigar_blocks = read.cigar_stats_blocks();
6193 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6194 let read = it.next().unwrap().unwrap();
6195 let cigar_nucleotides = read.cigar_stats_nucleotides();
6196 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 12542, 0, 0, 0, 0, 0],);
6197 let cigar_blocks = read.cigar_stats_blocks();
6198 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6199 let read = it.next().unwrap().unwrap();
6200 let cigar_nucleotides = read.cigar_stats_nucleotides();
6201 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 12542, 0, 0, 0, 0, 0],);
6202 let cigar_blocks = read.cigar_stats_blocks();
6203 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6204 let read = it.next().unwrap().unwrap();
6205 let cigar_nucleotides = read.cigar_stats_nucleotides();
6206 assert_eq!(to_arr(cigar_nucleotides), [50, 0, 0, 1467, 1, 0, 0, 0, 0]);
6207 let cigar_blocks = read.cigar_stats_blocks();
6208 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 1, 0, 0, 0, 0]);
6209 let read = it.next().unwrap().unwrap();
6210 let cigar_nucleotides = read.cigar_stats_nucleotides();
6211 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 1609, 0, 0, 0, 0, 0]);
6212 let cigar_blocks = read.cigar_stats_blocks();
6213 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6214 let read = it.next().unwrap().unwrap();
6215 let cigar_nucleotides = read.cigar_stats_nucleotides();
6216 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 1609, 0, 0, 0, 0, 0]);
6217 let cigar_blocks = read.cigar_stats_blocks();
6218 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6219 let read = it.next().unwrap().unwrap();
6220 let cigar_nucleotides = read.cigar_stats_nucleotides();
6221 assert_eq!(to_arr(cigar_nucleotides), [51, 0, 0, 1609, 0, 0, 0, 0, 0]);
6222 let cigar_blocks = read.cigar_stats_blocks();
6223 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 0, 0, 0, 0, 0]);
6224 let read = it.next().unwrap().unwrap();
6225 let cigar_nucleotides = read.cigar_stats_nucleotides();
6226 assert_eq!(to_arr(cigar_nucleotides), [50, 0, 0, 95, 1, 0, 0, 0, 0]);
6227 let cigar_blocks = read.cigar_stats_blocks();
6228 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 1, 0, 0, 0, 0]);
6229 let read = it.next().unwrap().unwrap();
6230 let cigar_nucleotides = read.cigar_stats_nucleotides();
6231 assert_eq!(to_arr(cigar_nucleotides), [50, 0, 0, 538, 1, 0, 0, 0, 0]);
6232 let cigar_blocks = read.cigar_stats_blocks();
6233 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 1, 0, 0, 0, 0]);
6234 let read = it.next().unwrap().unwrap();
6235 let cigar_nucleotides = read.cigar_stats_nucleotides();
6236 assert_eq!(to_arr(cigar_nucleotides), [50, 0, 0, 538, 1, 0, 0, 0, 0]);
6237 let cigar_blocks = read.cigar_stats_blocks();
6238 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 1, 0, 0, 0, 0]);
6239 let read = it.next().unwrap().unwrap();
6240 let cigar_nucleotides = read.cigar_stats_nucleotides();
6241 assert_eq!(to_arr(cigar_nucleotides), [50, 0, 0, 538, 1, 0, 0, 0, 0]);
6242 let cigar_blocks = read.cigar_stats_blocks();
6243 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 1, 0, 0, 0, 0]);
6244 let read = it.next().unwrap().unwrap();
6245 let cigar_nucleotides = read.cigar_stats_nucleotides();
6246 assert_eq!(to_arr(cigar_nucleotides), [50, 0, 1, 0, 1, 0, 0, 0, 0]);
6247 let cigar_blocks = read.cigar_stats_blocks();
6248 assert_eq!(to_arr(cigar_blocks), [2, 0, 1, 0, 1, 0, 0, 0, 0]);
6249 let read = it.next().unwrap().unwrap();
6250 let cigar_nucleotides = read.cigar_stats_nucleotides();
6251 assert_eq!(to_arr(cigar_nucleotides), [48, 0, 1, 0, 3, 0, 0, 0, 0]);
6252 let cigar_blocks = read.cigar_stats_blocks();
6253 assert_eq!(to_arr(cigar_blocks), [2, 0, 1, 0, 1, 0, 0, 0, 0]);
6254 let read = it.next().unwrap().unwrap();
6255 let cigar_nucleotides = read.cigar_stats_nucleotides();
6256 assert_eq!(to_arr(cigar_nucleotides), [44, 0, 1, 0, 7, 0, 0, 0, 0]);
6257 let cigar_blocks = read.cigar_stats_blocks();
6258 assert_eq!(to_arr(cigar_blocks), [2, 0, 1, 0, 1, 0, 0, 0, 0]);
6259 let read = it.next().unwrap().unwrap();
6260 let cigar_nucleotides = read.cigar_stats_nucleotides();
6261 assert_eq!(to_arr(cigar_nucleotides), [39, 1, 0, 0, 11, 0, 0, 0, 0]);
6262 let cigar_blocks = read.cigar_stats_blocks();
6263 assert_eq!(to_arr(cigar_blocks), [2, 1, 0, 0, 1, 0, 0, 0, 0]);
6264 let read = it.next().unwrap().unwrap();
6265 let cigar_nucleotides = read.cigar_stats_nucleotides();
6266 assert_eq!(to_arr(cigar_nucleotides), [46, 0, 0, 1892, 5, 0, 0, 0, 0]);
6267 let cigar_blocks = read.cigar_stats_blocks();
6268 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 1, 0, 0, 0, 0]);
6269 let read = it.next().unwrap().unwrap();
6270 let cigar_nucleotides = read.cigar_stats_nucleotides();
6271 assert_eq!(to_arr(cigar_nucleotides), [49, 0, 0, 1892, 2, 0, 0, 0, 0]);
6272 let cigar_blocks = read.cigar_stats_blocks();
6273 assert_eq!(to_arr(cigar_blocks), [2, 0, 0, 1, 1, 0, 0, 0, 0]);
6274 let read = it.next().unwrap().unwrap();
6275 let cigar_nucleotides = read.cigar_stats_nucleotides();
6276 assert_eq!(to_arr(cigar_nucleotides), [50, 0, 3, 2285, 1, 0, 0, 0, 0]);
6277 let cigar_blocks = read.cigar_stats_blocks();
6278 assert_eq!(to_arr(cigar_blocks), [3, 0, 1, 1, 1, 0, 0, 0, 0]);
6279 let read = it.next().unwrap().unwrap();
6280 let cigar_nucleotides = read.cigar_stats_nucleotides();
6281 assert_eq!(to_arr(cigar_nucleotides), [49, 0, 0, 14680, 2, 0, 0, 0, 0],);
6282 let cigar_blocks = read.cigar_stats_blocks();
6283 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 1, 0, 0, 0, 0]);
6284 let read = it.next().unwrap().unwrap();
6285 let cigar_nucleotides = read.cigar_stats_nucleotides();
6286 assert_eq!(to_arr(cigar_nucleotides), [47, 0, 0, 4027, 4, 0, 0, 0, 0]);
6287 let cigar_blocks = read.cigar_stats_blocks();
6288 assert_eq!(to_arr(cigar_blocks), [3, 0, 0, 2, 1, 0, 0, 0, 0]);
6289 }
6290
6291 #[test]
6292 fn test_reference_positions() {
6293 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
6294 let mut it = bam.records();
6295
6296 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6297 assert_eq!(
6298 rp,
6299 vec![
6300 16050676, 16050677, 16050678, 16050679, 16050680, 16050681, 16050682, 16050683,
6301 16050684, 16050685, 16050686, 16050687, 16050688, 16050689, 16050690, 16050691,
6302 16050692, 16050693, 16050694, 16050695, 16050696, 16050697, 16050698, 16050699,
6303 16050700, 16050701, 16050702, 16050703, 16050704, 16050705, 16050706, 16050707,
6304 16050708, 16050709, 16050710, 16050711, 16050712, 16050713, 16050714, 16050715,
6305 16050716, 16050717, 16050718, 16050719, 16050720
6306 ]
6307 );
6308 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6309 assert_eq!(
6310 rp,
6311 vec![
6312 16096878, 16096879, 16096880, 16096881, 16096882, 16096883, 16096884, 16096887,
6313 16096888, 16096889, 16096890, 16096891, 16096892, 16096893, 16096894, 16096895,
6314 16096896, 16096897, 16096898, 16096899, 16096900, 16096901, 16096902, 16096903,
6315 16096904, 16096905, 16096906, 16096907, 16096908, 16096909, 16096910, 16096911,
6316 16096912, 16096913, 16096914, 16096915, 16096916, 16096917, 16096918, 16096919,
6317 16096920, 16096921, 16096922, 16096923, 16096924, 16096925, 16096926, 16096927,
6318 16096928, 16096929, 16096930
6319 ]
6320 );
6321 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6322 assert_eq!(
6323 rp,
6324 vec![
6325 16097145, 16097146, 16097147, 16097148, 16097149, 16097150, 16097151, 16097152,
6326 16097153, 16097154, 16097155, 16097156, 16097157, 16097158, 16097159, 16097160,
6327 16097161, 16097162, 16097163, 16097164, 16097165, 16097166, 16097167, 16097168,
6328 16097169, 16097170, 16097171, 16097172, 16097173, 16097176, 16097177, 16097178,
6329 16097179, 16097180, 16097181, 16097182, 16097183, 16097184, 16097185, 16097186,
6330 16097187, 16097188, 16097189, 16097190, 16097191, 16097192, 16097193, 16097194,
6331 16097195, 16097196, 16097197
6332 ]
6333 );
6334 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6335 assert_eq!(
6336 rp,
6337 vec![
6338 16117350, 16117351, 16117352, 16117353, 16117354, 16117355, 16117356, 16117357,
6339 16117358, 16117359, 16117360, 16117361, 16117362, 16117363, 16117364, 16117365,
6340 16117366, 16117367, 16117368, 16117369, 16117370, 16117371, 16117372, 16117373,
6341 16117374, 16117375, 16117376, 16117377, 16117378, 16117379, 16117380, 16117381,
6342 16117382, 16117383, 16117384, 16117385, 16117386, 16117387, 16117388, 16117389,
6343 16117390, 16117391, 16117392, 16117393, 16117394, 16117395, 16117396, 16117397,
6344 16117398, 16117399, 16117400
6345 ]
6346 );
6347 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6348 assert_eq!(
6349 rp,
6350 vec![
6351 16118483, 16118484, 16118485, 16118486, 16118487, 16118488, 16118489, 16118490,
6352 16118491, 16118492, 16118493, 16118494, 16118495, 16118496, 16118497, 16118498,
6353 16118499, 16118500, 16118501, 16118502, 16118503, 16118504, 16118505, 16118506,
6354 16118507, 16118508, 16118509, 16118510, 16118511, 16118512, 16118513, 16118514,
6355 16118515, 16118516, 16118517, 16118518, 16118519, 16118520, 16118521, 16118522,
6356 16118523, 16118524, 16118525, 16118526, 16118527, 16118528, 16118529, 16118530,
6357 16118531, 16118532, 16118533
6358 ]
6359 );
6360 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6361 assert_eq!(
6362 rp,
6363 vec![
6364 16118499, 16118500, 16118501, 16118502, 16118503, 16118504, 16118505, 16118506,
6365 16118507, 16118508, 16118509, 16118510, 16118511, 16118512, 16118513, 16118514,
6366 16118515, 16118516, 16118517, 16118518, 16118519, 16118520, 16118521, 16118522,
6367 16118523, 16118524, 16118525, 16118526, 16118527, 16118528, 16118529, 16118530,
6368 16118531, 16118532, 16118533, 16118534, 16118535, 16118536, 16118537, 16118538,
6369 16118539, 16118540, 16118541, 16118542, 16118543, 16118544, 16118545, 16118546,
6370 16118547, 16118548, 16118549
6371 ]
6372 );
6373 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6374 assert_eq!(
6375 rp,
6376 vec![
6377 16118499, 16118500, 16118501, 16118502, 16118503, 16118504, 16118505, 16118506,
6378 16118507, 16118508, 16118509, 16118510, 16118511, 16118512, 16118513, 16118514,
6379 16118515, 16118516, 16118517, 16118518, 16118519, 16118520, 16118521, 16118522,
6380 16118523, 16118524, 16118525, 16118526, 16118527, 16118528, 16118529, 16118530,
6381 16118531, 16118532, 16118533, 16118534, 16118535, 16118536, 16118537, 16118538,
6382 16118539, 16118540, 16118541, 16118542, 16118543, 16118544, 16118545, 16118546,
6383 16118547, 16118548, 16118549
6384 ]
6385 );
6386 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6387 assert_eq!(
6388 rp,
6389 vec![
6390 16118499, 16118500, 16118501, 16118502, 16118503, 16118504, 16118505, 16118506,
6391 16118507, 16118508, 16118509, 16118510, 16118511, 16118512, 16118513, 16118514,
6392 16118515, 16118516, 16118517, 16118518, 16118519, 16118520, 16118521, 16118522,
6393 16118523, 16118524, 16118525, 16118526, 16118527, 16118528, 16118529, 16118530,
6394 16118531, 16118532, 16118533, 16118534, 16118535, 16118536, 16118537, 16118538,
6395 16118539, 16118540, 16118541, 16118542, 16118543, 16118544, 16118545, 16118546,
6396 16118547, 16118548, 16118549
6397 ]
6398 );
6399 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6400 assert_eq!(
6401 rp,
6402 vec![
6403 16123411, 16123412, 16123413, 16123414, 16123415, 16123416, 16123417, 16123418,
6404 16123419, 16123420, 16123421, 16123422, 16123423, 16123424, 16123425, 16123426,
6405 16123427, 16123428, 16123429, 16123430, 16123431, 16123432, 16123433, 16123434,
6406 16123435, 16123436, 16123437, 16123438, 16123439, 16123440, 16123441, 16123442,
6407 16123443, 16123444, 16123445, 16123446, 16123447, 16123448, 16123449, 16123450,
6408 16123451, 16123452, 16123453, 16123454, 16123455, 16123456, 16123457, 16123458,
6409 16123459, 16123460, 16123461
6410 ]
6411 );
6412 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6413 assert_eq!(
6414 rp,
6415 vec![
6416 16123417, 16123418, 16123419, 16123420, 16123421, 16123422, 16123423, 16123424,
6417 16123425, 16123426, 16123427, 16123428, 16123429, 16123430, 16123431, 16123432,
6418 16123433, 16123434, 16123435, 16123436, 16123437, 16123438, 16123439, 16123440,
6419 16123441, 16123442, 16123443, 16123444, 16123445, 16123446, 16123447, 16123448,
6420 16123449, 16123450, 16123451, 16123452, 16123453, 16123454, 16123455, 16123456,
6421 16123457, 16123458, 16123459, 16123460, 16123461
6422 ]
6423 );
6424 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6425 assert_eq!(
6426 rp,
6427 vec![
6428 16165860, 16165861, 16165862, 16165863, 16165864, 16165865, 16165866, 16165867,
6429 16165868, 16165869, 16165870, 16165871, 16165872, 16165873, 16165874, 16165875,
6430 16165876, 16165877, 16165878, 16165879, 16165880, 16165881, 16165882, 16165883,
6431 16165884, 16165885, 16165886, 16165887, 16165888, 16165889, 16165890, 16165891,
6432 16165892, 16165893, 16165894, 16165895, 16165896, 16165897, 16165898, 16165899,
6433 16165900
6434 ]
6435 );
6436 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6437 assert_eq!(
6438 rp,
6439 vec![
6440 16180871, 16180872, 16180873, 16180874, 16180875, 16180876, 16180877, 16180878,
6441 16180879, 16180880, 16180881, 16180882, 16180883, 16180884, 16180885, 16180886,
6442 16180887, 16180888, 16180889, 16180890, 16180891, 16180892, 16180893, 16180894,
6443 16180895, 16180896, 16180897, 16180898, 16180899, 16180900, 16180901, 16180902,
6444 16180903, 16180904, 16180905, 16180906, 16180907, 16180908, 16180909, 16180910,
6445 16180911, 16180912, 16180913, 16180914, 16180915, 16180916, 16180917, 16180918,
6446 16180919, 16180920, 16180921
6447 ]
6448 );
6449 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6450 assert_eq!(
6451 rp,
6452 vec![
6453 16189705, 16189706, 16189707, 16189708, 16189709, 16189710, 16189711, 16189712,
6454 16189713, 16189714, 16189715, 16189716, 16189717, 16189718, 16189719, 16189720,
6455 16189721, 16189722, 16189723, 16189724, 16189725, 16189726, 16189727, 16189728,
6456 16189729, 16189730, 16189731, 16189732, 16189733, 16189734, 16189735, 16189736,
6457 16189737, 16189738, 16189739, 16189740, 16189741, 16189742, 16189743, 16189744,
6458 16189745, 16189746, 16189747, 16189748, 16189749, 16189750, 16189751, 16189752,
6459 16189753, 16189754, 16189755
6460 ]
6461 );
6462 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6463 assert_eq!(
6464 rp,
6465 vec![
6466 16231271, 16231272, 16231273, 16231274, 16231275, 16231276, 16231277, 16231278,
6467 16231279, 16231280, 16231281, 16231282, 16231283, 16231284, 16231285, 16231286,
6468 16231287, 16231288, 16231289, 16231290, 16231291, 16231292, 16231293, 16231294,
6469 16231295, 16231296, 16231297, 16231298, 16231299, 16231300, 16231301, 16231302,
6470 16231303, 16231304, 16231305, 16231306, 16231307, 16231308, 16231309, 16231310,
6471 16231311, 16231312, 16231313, 16231314, 16231315, 16231316, 16231317, 16231318,
6472 16231319, 16231320, 16231321
6473 ]
6474 );
6475 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6476 assert_eq!(
6477 rp,
6478 vec![
6479 16237657, 16237658, 16237659, 16237660, 16237661, 16237662, 16237663, 16237664,
6480 16237665, 16237666, 16237667, 16237668, 16237669, 16237670, 16237671, 16237672,
6481 16237673, 16237674, 16237675, 16237676, 16237677, 16237678, 16237679, 16237680,
6482 16237681, 16237682, 16237683, 16237684, 16237685, 16237686, 16237687, 16237688,
6483 16237689, 16237690, 16237691, 16237692, 16237693, 16237694, 16237695, 16237696,
6484 16237697, 16237698, 16237699, 16237700, 16237701, 16237702, 16237703, 16237704,
6485 16237705, 16237706, 16237707
6486 ]
6487 );
6488 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6489 assert_eq!(
6490 rp,
6491 vec![
6492 16255012, 16255013, 16255014, 16255015, 16255016, 16255017, 16255018, 16255019,
6493 16255020, 16255021, 16255022, 16255023, 16255024, 16255025, 16255026, 16255027,
6494 16255028, 16255029, 16255030, 16255031, 16255032, 16255033, 16255034, 16255035,
6495 16255036, 16255037, 16255038, 16255039, 16255040, 16255041, 16255042, 16255043,
6496 16255044, 16255045, 16255046, 16255047, 16255048, 16255049, 16255050, 16255051,
6497 16255052, 16255053
6498 ]
6499 );
6500 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6501 assert_eq!(
6502 rp,
6503 vec![
6504 16255391, 16255392, 16255393, 16255394, 16255395, 16255396, 16255397, 16255398,
6505 16255399, 16255400, 16255401, 16255402, 16255403, 16255404, 16255405, 16255406,
6506 16255407, 16255408, 16255409, 16255410, 16255411, 16255412, 16255413, 16255414,
6507 16255415, 16255416, 16255417, 16255418, 16255419, 16255420, 16255421, 16255422,
6508 16255423, 16255424, 16255425, 16255426, 16255427, 16255428, 16255429, 16255430,
6509 16255431, 16255432, 16255433, 16255434, 16255435, 16255436, 16255437, 16255438,
6510 16255439, 16255440, 16255441
6511 ]
6512 );
6513 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6514 assert_eq!(
6515 rp,
6516 vec![
6517 16255392, 16255393, 16255394, 16255395, 16255396, 16255397, 16255398, 16255399,
6518 16255400, 16255401, 16255402, 16255403, 16255404, 16255405, 16255406, 16255407,
6519 16255408, 16255409, 16255410, 16255411, 16255412, 16255413, 16255414, 16255415,
6520 16255416, 16255417, 16255418, 16255419, 16255420, 16255421, 16255422, 16255423,
6521 16255424, 16255425, 16255426, 16255427, 16255428, 16255429, 16255430, 16255431,
6522 16255432, 16255433, 16255434, 16255435, 16255436, 16255437, 16255438, 16255439,
6523 16255440, 16255441
6524 ]
6525 );
6526 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6527 assert_eq!(
6528 rp,
6529 vec![
6530 16256084, 16256085, 16256086, 16256087, 16256088, 16256089, 16256090, 16256091,
6531 16256092, 16256093, 16256094, 16256095, 16256096, 16256097, 16256098, 16256099,
6532 16256100, 16256101, 16256102, 16256103, 16256104, 16256105, 16256106, 16256107,
6533 16256108, 16256109, 16256110, 16256111, 16256112, 16256113, 16256114, 16256115,
6534 16256116, 16256117, 16256118, 16256119, 16256120, 16256121, 16256122, 16256123,
6535 16256124, 16256125, 16256126, 16256127, 16256128
6536 ]
6537 );
6538 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6539 assert_eq!(
6540 rp,
6541 vec![
6542 16256224, 16256225, 16256226, 16256227, 16256228, 16256229, 16256230, 16256231,
6543 16256232, 16256233, 16256234, 16256235, 16256236, 16256237, 16256238, 16256239,
6544 16256240, 16256241, 16256242, 16256243, 16256244, 16256245, 16256246, 16256247,
6545 16256248, 16256249, 16256250, 16256251, 16256252, 16256253, 16256254, 16256255,
6546 16256256, 16256257, 16256258, 16256259, 16256260, 16256261, 16256262, 16256263,
6547 16256264, 16256265, 16256266, 16256267, 16256268, 16256269, 16256270, 16256271
6548 ]
6549 );
6550 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6551 assert_eq!(
6552 rp,
6553 vec![
6554 16325199, 16325200, 16325201, 16325202, 16325203, 16325204, 16325205, 16325206,
6555 16325207, 16325208, 16325209, 16325210, 16325211, 16325212, 16325213, 16325214,
6556 16325215, 16325216, 16325217, 16325218, 16325219, 16325220, 16325221, 16325222,
6557 16325223, 16325224, 16325225, 16325226, 16325227, 16325228, 16325229, 16325230,
6558 16325231, 16325232, 16325233, 16325234, 16325235, 16325236, 16325237, 16325238,
6559 16325239, 16325240
6560 ]
6561 );
6562 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6563 assert_eq!(
6564 rp,
6565 vec![
6566 16352865, 16352866, 16352867, 16352868, 16352869, 16352870, 16352871, 16352872,
6567 16352873, 16352874, 16352875, 16352876, 16352877, 16352878, 16352879, 16352880,
6568 16352881, 16352882, 16352883, 16352884, 16352885, 16352886, 16352887, 16352888,
6569 16352889, 16352890, 16352891, 16352892, 16352893, 16352894, 16352895, 16352896,
6570 16352897, 16352898, 16352899, 16352900, 16352901, 16352902
6571 ]
6572 );
6573 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6574 assert_eq!(
6575 rp,
6576 vec![
6577 16352968, 16352969, 16352970, 16352971, 16352972, 16352973, 16352974, 16352975,
6578 16352976, 16352977, 16352978, 16352979, 16352980, 16352981, 16352982, 16352983,
6579 16352984, 16352985, 16352986, 16352987, 16352988, 16352989, 16352990, 16352991,
6580 16352992, 16352993, 16352994, 16352995, 16352996, 16352997, 16352998, 16352999,
6581 16353000, 16353001, 16353002, 16353003, 16353004, 16353005, 16353006, 16353007,
6582 16353008, 16353009, 16353010, 16353011
6583 ]
6584 );
6585 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6586 assert_eq!(
6587 rp,
6588 vec![
6589 16414998, 16414999, 16415000, 16415001, 16415002, 16415003, 16415004, 16415005,
6590 16415006, 16415007, 16415008, 16415009, 16415010, 16415011, 16415012, 16415013,
6591 16415014, 16415015, 16415016, 16415017, 16415018, 16415019, 16415020, 16415021,
6592 16415022, 16415023, 16415024, 16415025, 16415026, 16415027, 16415028, 16415029,
6593 16415030, 16415031, 16415032, 16415033, 16415034, 16415035, 16415036, 16415037,
6594 16415038, 16415039, 16415040, 16415041, 16415042, 16415043
6595 ]
6596 );
6597 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6598 assert_eq!(
6599 rp,
6600 vec![
6601 17031591, 17031592, 17031593, 17031594, 17031595, 17031596, 17031597, 17031598,
6602 17031599, 17031600, 17031601, 17031602, 17031603, 17031604, 17031605, 17031606,
6603 17031607, 17031608, 17031609, 17031610, 17031611, 17031612, 17031613, 17031614,
6604 17031615, 17031616, 17031617, 17031618, 17031619, 17031620, 17031621, 17031622,
6605 17031623, 17031624, 17031625, 17031626, 17031627, 17031628, 17031629, 17031630,
6606 17031631, 17031632, 17031633, 17031634, 17031635, 17031636, 17031637
6607 ]
6608 );
6609 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6610 assert_eq!(
6611 rp,
6612 vec![
6613 17057382, 17057383, 17057384, 17057385, 17057386, 17057387, 17057388, 17057389,
6614 17057390, 17057391, 17057392, 17057393, 17057394, 17057395, 17057396, 17057397,
6615 17057398, 17057399, 17057400, 17057401, 17057402, 17057403, 17057404, 17057405,
6616 17057406, 17057407, 17057408, 17057409, 17057410, 17057411, 17057412, 17057413,
6617 17057414, 17057415, 17057416, 17057417, 17057418, 17057419, 17057420, 17057421,
6618 17057422, 17057423, 17057424, 17057425, 17057426, 17057427, 17057428, 17057429,
6619 17057430, 17057431
6620 ]
6621 );
6622 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6623 assert_eq!(
6624 rp,
6625 vec![
6626 17092766, 17092767, 17092768, 17092769, 17092770, 17092771, 17092772, 17092773,
6627 17092774, 17092775, 17092776, 17092777, 17092778, 17092779, 17092780, 17092781,
6628 17092782, 17094966, 17094967, 17094968, 17094969, 17094970, 17094971, 17094972,
6629 17094973, 17094974, 17094975, 17094976, 17094977, 17094978, 17094979, 17094980,
6630 17094981, 17094982, 17094983, 17094984, 17094985, 17094986, 17094987, 17094988,
6631 17094989, 17094990, 17094991, 17094992, 17094993, 17094994, 17094995, 17094996,
6632 17094997, 17094998, 17094999
6633 ]
6634 );
6635 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6636 assert_eq!(
6637 rp,
6638 vec![
6639 17092782, 17094966, 17094967, 17094968, 17094969, 17094970, 17094971, 17094972,
6640 17094973, 17094974, 17094975, 17094976, 17094977, 17094978, 17094979, 17094980,
6641 17094981, 17094982, 17094983, 17094984, 17094985, 17094986, 17094987, 17094988,
6642 17094989, 17094990, 17094991, 17094992, 17094993, 17094994, 17094995, 17094996,
6643 17094997, 17094998, 17094999, 17095000, 17095001, 17095002, 17095003, 17095004,
6644 17095005, 17095006, 17095007, 17095008, 17095009, 17095010, 17095011, 17095012,
6645 17095013, 17095014, 17095015
6646 ]
6647 );
6648 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6649 assert_eq!(
6650 rp,
6651 vec![
6652 17092782, 17094966, 17094967, 17094968, 17094969, 17094970, 17094971, 17094972,
6653 17094973, 17094974, 17094975, 17094976, 17094977, 17094978, 17094979, 17094980,
6654 17094981, 17094982, 17094983, 17094984, 17094985, 17094986, 17094987, 17094988,
6655 17094989, 17094990, 17094991, 17094992, 17094993, 17094994, 17094995, 17094996,
6656 17094997, 17094998, 17094999, 17095000, 17095001, 17095002, 17095003, 17095004,
6657 17095005, 17095006, 17095007, 17095008, 17095009, 17095010, 17095011, 17095012,
6658 17095013, 17095014, 17095015
6659 ]
6660 );
6661 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6662 assert_eq!(
6663 rp,
6664 vec![
6665 17137287, 17137288, 17137289, 17137290, 17137291, 17137292, 17137293, 17137294,
6666 17137295, 17137296, 17137297, 17137298, 17137299, 17137300, 17137301, 17137302,
6667 17137303, 17137304, 17137305, 17137306, 17137307, 17137308, 17137309, 17137310,
6668 17137311, 17137312, 17137313, 17137314, 17137315, 17137316, 17137317, 17137318,
6669 17137319
6670 ]
6671 );
6672 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6673 assert_eq!(
6674 rp,
6675 vec![
6676 17306238, 17306239, 17306240, 17306241, 17306242, 17306243, 17306244, 17306245,
6677 17306246, 17306247, 17306248, 17306249, 17306250, 17306251, 17306252, 17306253,
6678 17306254, 17306255, 17306256, 17306257, 17306258, 17306259, 17306260, 17306261,
6679 17306262, 17306263, 17306264, 17306265, 17306266, 17306267, 17306268, 17306269,
6680 17306270, 17306271, 17306272, 17306273, 17306274, 17306275, 17306276, 17306277,
6681 17306278, 17306279, 17306280, 17306281, 17306282, 17306283, 17306284, 17306285
6682 ]
6683 );
6684 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6685 assert_eq!(
6686 rp,
6687 vec![
6688 17561868, 17561869, 17561870, 17561871, 17561872, 17561873, 17561874, 17561875,
6689 17561876, 17561877, 17561878, 17561879, 17561880, 17561881, 17561882, 17561883,
6690 17561884, 17561885, 17561886, 17561887, 17561888, 17561889, 17561890, 17561891,
6691 17561892, 17561893, 17561894, 17561895, 17561896, 17561897, 17561898, 17561899,
6692 17561900, 17561901, 17561902, 17561903, 17561904, 17561905, 17561906, 17561907,
6693 17561908, 17561909, 17561910, 17561911, 17561912
6694 ]
6695 );
6696 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6697 assert_eq!(
6698 rp,
6699 vec![
6700 17566078, 17566079, 17566080, 17566081, 17566082, 17566083, 17566084, 17566085,
6701 17566086, 17566087, 17566088, 17566089, 17566090, 17566091, 17566092, 17566093,
6702 17566094, 17566095, 17566096, 17566097, 17566098, 17566099, 17566100, 17566101,
6703 17566102, 17566103, 17566104, 17566105, 17566106, 17566107, 17566108, 17566109,
6704 17566110, 17566111, 17566112, 17566113, 17566114, 17566115, 17566116, 17566117,
6705 17566118, 17577951, 17577952, 17577953, 17577954, 17577955, 17577956, 17577957,
6706 17577958, 17577959, 17577960
6707 ]
6708 );
6709 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6710 assert_eq!(
6711 rp,
6712 vec![
6713 17566108, 17566109, 17566110, 17566111, 17566112, 17566113, 17566114, 17566115,
6714 17566116, 17566117, 17566118, 17577951, 17577952, 17577953, 17577954, 17577955,
6715 17577956, 17577957, 17577958, 17577959, 17577960, 17577961, 17577962, 17577963,
6716 17577964, 17577965, 17577966, 17577967, 17577968, 17577969, 17577970, 17577971,
6717 17577972, 17577973, 17577974, 17577975, 17578686, 17578687, 17578688, 17578689,
6718 17578690, 17578691, 17578692, 17578693, 17578694, 17578695, 17578696, 17578697,
6719 17578698, 17578699, 17578700
6720 ]
6721 );
6722 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6723 assert_eq!(
6724 rp,
6725 vec![
6726 17566111, 17566112, 17566113, 17566114, 17566115, 17566116, 17566117, 17566118,
6727 17577951, 17577952, 17577953, 17577954, 17577955, 17577956, 17577957, 17577958,
6728 17577959, 17577960, 17577961, 17577962, 17577963, 17577964, 17577965, 17577966,
6729 17577967, 17577968, 17577969, 17577970, 17577971, 17577972, 17577973, 17577974,
6730 17577975, 17578686, 17578687, 17578688, 17578689, 17578690, 17578691, 17578692,
6731 17578693, 17578694, 17578695, 17578696, 17578697, 17578698, 17578699, 17578700,
6732 17578701, 17578702, 17578703
6733 ]
6734 );
6735 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6736 assert_eq!(
6737 rp,
6738 vec![
6739 17566111, 17566112, 17566113, 17566114, 17566115, 17566116, 17566117, 17566118,
6740 17577951, 17577952, 17577953, 17577954, 17577955, 17577956, 17577957, 17577958,
6741 17577959, 17577960, 17577961, 17577962, 17577963, 17577964, 17577965, 17577966,
6742 17577967, 17577968, 17577969, 17577970, 17577971, 17577972, 17577973, 17577974,
6743 17577975, 17578686, 17578687, 17578688, 17578689, 17578690, 17578691, 17578692,
6744 17578693, 17578694, 17578695, 17578696, 17578697, 17578698, 17578699, 17578700,
6745 17578701, 17578702, 17578703
6746 ]
6747 );
6748 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6749 assert_eq!(
6750 rp,
6751 vec![
6752 17566111, 17566112, 17566113, 17566114, 17566115, 17566116, 17566117, 17566118,
6753 17577951, 17577952, 17577953, 17577954, 17577955, 17577956, 17577957, 17577958,
6754 17577959, 17577960, 17577961, 17577962, 17577963, 17577964, 17577965, 17577966,
6755 17577967, 17577968, 17577969, 17577970, 17577971, 17577972, 17577973, 17577974,
6756 17577975, 17578686, 17578687, 17578688, 17578689, 17578690, 17578691, 17578692,
6757 17578693, 17578694, 17578695, 17578696, 17578697, 17578698, 17578699, 17578700,
6758 17578701, 17578702, 17578703
6759 ]
6760 );
6761 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6762 assert_eq!(
6763 rp,
6764 vec![
6765 17566111, 17566112, 17566113, 17566114, 17566115, 17566116, 17566117, 17566118,
6766 17577951, 17577952, 17577953, 17577954, 17577955, 17577956, 17577957, 17577958,
6767 17577959, 17577960, 17577961, 17577962, 17577963, 17577964, 17577965, 17577966,
6768 17577967, 17577968, 17577969, 17577970, 17577971, 17577972, 17577973, 17577974,
6769 17577975, 17578686, 17578687, 17578688, 17578689, 17578690, 17578691, 17578692,
6770 17578693, 17578694, 17578695, 17578696, 17578697, 17578698, 17578699, 17578700,
6771 17578701, 17578702, 17578703
6772 ]
6773 );
6774 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6775 assert_eq!(
6776 rp,
6777 vec![
6778 17566112, 17566113, 17566114, 17566115, 17566116, 17566117, 17566118, 17577951,
6779 17577952, 17577953, 17577954, 17577955, 17577956, 17577957, 17577958, 17577959,
6780 17577960, 17577961, 17577962, 17577963, 17577964, 17577965, 17577966, 17577967,
6781 17577968, 17577969, 17577970, 17577971, 17577972, 17577973, 17577974, 17577975,
6782 17578686, 17578687, 17578688, 17578689, 17578690, 17578691, 17578692, 17578693,
6783 17578694, 17578695, 17578696, 17578697, 17578698, 17578699, 17578700, 17578701,
6784 17578702, 17578703, 17578704
6785 ]
6786 );
6787 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6788 assert_eq!(
6789 rp,
6790 vec![
6791 17566113, 17566114, 17566115, 17566116, 17566117, 17566118, 17577951, 17577952,
6792 17577953, 17577954, 17577955, 17577956, 17577957, 17577958, 17577959, 17577960,
6793 17577961, 17577962, 17577963, 17577964, 17577965, 17577966, 17577967, 17577968,
6794 17577969, 17577970, 17577971, 17577972, 17577973, 17577974, 17577975, 17578686,
6795 17578687, 17578688, 17578689, 17578690, 17578691, 17578692, 17578693, 17578694,
6796 17578695, 17578696, 17578697, 17578698, 17578699, 17578700, 17578701, 17578702,
6797 17578703, 17578704, 17578705
6798 ]
6799 );
6800 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6801 assert_eq!(
6802 rp,
6803 vec![
6804 17566113, 17566114, 17566115, 17566116, 17566117, 17566118, 17577951, 17577952,
6805 17577953, 17577954, 17577955, 17577956, 17577957, 17577958, 17577959, 17577960,
6806 17577961, 17577962, 17577963, 17577964, 17577965, 17577966, 17577967, 17577968,
6807 17577969, 17577970, 17577971, 17577972, 17577973, 17577974, 17577975, 17578686,
6808 17578687, 17578688, 17578689, 17578690, 17578691, 17578692, 17578693, 17578694,
6809 17578695, 17578696, 17578697, 17578698, 17578699, 17578700, 17578701, 17578702,
6810 17578703, 17578704, 17578705
6811 ]
6812 );
6813 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6814 assert_eq!(
6815 rp,
6816 vec![
6817 17579733, 17579734, 17579735, 17579736, 17579737, 17579738, 17579739, 17579740,
6818 17579741, 17579742, 17579743, 17579744, 17579745, 17579746, 17579747, 17579748,
6819 17579749, 17579750, 17579751, 17579752, 17579753, 17579754, 17579755, 17579756,
6820 17579757, 17579758, 17579759, 17579760, 17579761, 17579762, 17579763, 17579764,
6821 17579765, 17579766, 17579767, 17579768, 17579769, 17579770, 17579771, 17579772,
6822 17579773, 17579774, 17579775, 17579776, 17581244, 17581245, 17581246, 17581247,
6823 17581248, 17581249
6824 ]
6825 );
6826 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6827 assert_eq!(
6828 rp,
6829 vec![
6830 17581369, 17581370, 17582885, 17582886, 17582887, 17582888, 17582889, 17582890,
6831 17582891, 17582892, 17582893, 17582894, 17582895, 17582896, 17582897, 17582898,
6832 17582899, 17582900, 17582901, 17582902, 17582903, 17582904, 17582905, 17582906,
6833 17582907, 17582908, 17582909, 17582910, 17582911, 17582912, 17582913, 17582914,
6834 17582915, 17582916, 17582917, 17582918, 17582919, 17582920, 17582921, 17582922,
6835 17582923, 17582924, 17582925, 17582926, 17582927, 17582928, 17582929, 17582930,
6836 17582931, 17582932, 17583028
6837 ]
6838 );
6839 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6840 assert_eq!(
6841 rp,
6842 vec![
6843 17581370, 17582885, 17582886, 17582887, 17582888, 17582889, 17582890, 17582891,
6844 17582892, 17582893, 17582894, 17582895, 17582896, 17582897, 17582898, 17582899,
6845 17582900, 17582901, 17582902, 17582903, 17582904, 17582905, 17582906, 17582907,
6846 17582908, 17582909, 17582910, 17582911, 17582912, 17582913, 17582914, 17582915,
6847 17582916, 17582917, 17582918, 17582919, 17582920, 17582921, 17582922, 17582923,
6848 17582924, 17582925, 17582926, 17582927, 17582928, 17582929, 17582930, 17582931,
6849 17582932, 17583028, 17583029
6850 ]
6851 );
6852 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6853 assert_eq!(
6854 rp,
6855 vec![
6856 17581370, 17582885, 17582886, 17582887, 17582888, 17582889, 17582890, 17582891,
6857 17582892, 17582893, 17582894, 17582895, 17582896, 17582897, 17582898, 17582899,
6858 17582900, 17582901, 17582902, 17582903, 17582904, 17582905, 17582906, 17582907,
6859 17582908, 17582909, 17582910, 17582911, 17582912, 17582913, 17582914, 17582915,
6860 17582916, 17582917, 17582918, 17582919, 17582920, 17582921, 17582922, 17582923,
6861 17582924, 17582925, 17582926, 17582927, 17582928, 17582929, 17582930, 17582931,
6862 17582932, 17583028, 17583029
6863 ]
6864 );
6865 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6866 assert_eq!(
6867 rp,
6868 vec![
6869 17582911, 17582912, 17582913, 17582914, 17582915, 17582916, 17582917, 17582918,
6870 17582919, 17582920, 17582921, 17582922, 17582923, 17582924, 17582925, 17582926,
6871 17582927, 17582928, 17582929, 17582930, 17582931, 17582932, 17583028, 17583029,
6872 17583030, 17583031, 17583032, 17583033, 17583034, 17583035, 17583036, 17583037,
6873 17583038, 17583039, 17583040, 17583041, 17583042, 17583043, 17583044, 17583045,
6874 17583046, 17583047, 17583048, 17583049, 17583050, 17583051, 17583052, 17583053,
6875 17583054, 17583055
6876 ]
6877 );
6878 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6879 assert_eq!(
6880 rp,
6881 vec![
6882 17588621, 17588622, 17588623, 17588624, 17588625, 17588626, 17588627, 17588628,
6883 17588629, 17588630, 17588631, 17588632, 17588633, 17588634, 17588635, 17588636,
6884 17588637, 17588638, 17588639, 17588640, 17588641, 17588642, 17588643, 17588644,
6885 17588645, 17588646, 17588647, 17588648, 17588649, 17588650, 17588651, 17588652,
6886 17588653, 17588654, 17588655, 17588656, 17588657, 17589196, 17589197, 17589198,
6887 17589199, 17589200, 17589201, 17589202, 17589203, 17589204, 17589205, 17589206,
6888 17589207, 17589208
6889 ]
6890 );
6891 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6892 assert_eq!(
6893 rp,
6894 vec![
6895 17588621, 17588622, 17588623, 17588624, 17588625, 17588626, 17588627, 17588628,
6896 17588629, 17588630, 17588631, 17588632, 17588633, 17588634, 17588635, 17588636,
6897 17588637, 17588638, 17588639, 17588640, 17588641, 17588642, 17588643, 17588644,
6898 17588645, 17588646, 17588647, 17588648, 17588649, 17588650, 17588651, 17588652,
6899 17588653, 17588654, 17588655, 17588656, 17588657, 17589196, 17589197, 17589198,
6900 17589199, 17589200, 17589201, 17589202, 17589203, 17589204, 17589205, 17589206,
6901 17589207, 17589208
6902 ]
6903 );
6904 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6905 assert_eq!(
6906 rp,
6907 vec![
6908 17588621, 17588622, 17588623, 17588624, 17588625, 17588626, 17588627, 17588628,
6909 17588629, 17588630, 17588631, 17588632, 17588633, 17588634, 17588635, 17588636,
6910 17588637, 17588638, 17588639, 17588640, 17588641, 17588642, 17588643, 17588644,
6911 17588645, 17588646, 17588647, 17588648, 17588649, 17588650, 17588651, 17588652,
6912 17588653, 17588654, 17588655, 17588656, 17588657, 17589196, 17589197, 17589198,
6913 17589199, 17589200, 17589201, 17589202, 17589203, 17589204, 17589205, 17589206,
6914 17589207, 17589208
6915 ]
6916 );
6917 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6918 assert_eq!(
6919 rp,
6920 vec![
6921 17591770, 17591771, 17591772, 17591773, 17591774, 17591775, 17591776, 17591777,
6922 17591778, 17591779, 17591780, 17591781, 17591782, 17591783, 17591784, 17591785,
6923 17591786, 17591787, 17591788, 17591789, 17591790, 17591791, 17591792, 17591793,
6924 17591794, 17591796, 17591797, 17591798, 17591799, 17591800, 17591801, 17591802,
6925 17591803, 17591804, 17591805, 17591806, 17591807, 17591808, 17591809, 17591810,
6926 17591811, 17591812, 17591813, 17591814, 17591815, 17591816, 17591817, 17591818,
6927 17591819, 17591820
6928 ]
6929 );
6930 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6931 assert_eq!(
6932 rp,
6933 vec![
6934 17593855, 17593856, 17593857, 17593858, 17593859, 17593860, 17593861, 17593862,
6935 17593863, 17593864, 17593865, 17593866, 17593867, 17593868, 17593869, 17593870,
6936 17593871, 17593872, 17593873, 17593874, 17593875, 17593876, 17593877, 17593878,
6937 17593880, 17593881, 17593882, 17593883, 17593884, 17593885, 17593886, 17593887,
6938 17593888, 17593889, 17593890, 17593891, 17593892, 17593893, 17593894, 17593895,
6939 17593896, 17593897, 17593898, 17593899, 17593900, 17593901, 17593902, 17593903
6940 ]
6941 );
6942 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6943 assert_eq!(
6944 rp,
6945 vec![
6946 17593863, 17593864, 17593865, 17593866, 17593867, 17593868, 17593869, 17593870,
6947 17593871, 17593872, 17593873, 17593874, 17593875, 17593876, 17593877, 17593878,
6948 17593880, 17593881, 17593882, 17593883, 17593884, 17593885, 17593886, 17593887,
6949 17593888, 17593889, 17593890, 17593891, 17593892, 17593893, 17593894, 17593895,
6950 17593896, 17593897, 17593898, 17593899, 17593900, 17593901, 17593902, 17593903,
6951 17593904, 17593905, 17593906, 17593907
6952 ]
6953 );
6954 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6955 assert_eq!(
6956 rp,
6957 vec![
6958 17596476, 17596477, 17596478, 17596479, 17596480, 17596481, 17596482, 17596483,
6959 17596484, 17596485, 17596486, 17596487, 17596488, 17596489, 17596490, 17596491,
6960 17596492, 17596493, 17596494, 17596495, 17596496, 17596497, 17596498, 17596499,
6961 17596500, 17596501, 17596502, 17596503, 17596504, 17596505, 17596506, 17596507,
6962 17596508, 17596509, 17596510, 17596511, 17596512, 17596513, 17596514
6963 ]
6964 );
6965 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6966 assert_eq!(
6967 rp,
6968 vec![
6969 17624012, 17624013, 17624014, 17624015, 17624016, 17624017, 17624018, 17624019,
6970 17624020, 17625913, 17625914, 17625915, 17625916, 17625917, 17625918, 17625919,
6971 17625920, 17625921, 17625922, 17625923, 17625924, 17625925, 17625926, 17625927,
6972 17625928, 17625929, 17625930, 17625931, 17625932, 17625933, 17625934, 17625935,
6973 17625936, 17625937, 17625938, 17625939, 17625940, 17625941, 17625942, 17625943,
6974 17625944, 17625945, 17625946, 17625947, 17625948, 17625949
6975 ]
6976 );
6977 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6978 assert_eq!(
6979 rp,
6980 vec![
6981 17624012, 17624013, 17624014, 17624015, 17624016, 17624017, 17624018, 17624019,
6982 17624020, 17625913, 17625914, 17625915, 17625916, 17625917, 17625918, 17625919,
6983 17625920, 17625921, 17625922, 17625923, 17625924, 17625925, 17625926, 17625927,
6984 17625928, 17625929, 17625930, 17625931, 17625932, 17625933, 17625934, 17625935,
6985 17625936, 17625937, 17625938, 17625939, 17625940, 17625941, 17625942, 17625943,
6986 17625944, 17625945, 17625946, 17625947, 17625948, 17625949, 17625950, 17625951,
6987 17625952
6988 ]
6989 );
6990 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
6991 assert_eq!(
6992 rp,
6993 vec![
6994 31796700, 31796701, 31796702, 31796703, 31796704, 31796705, 31796706, 31796710,
6995 31796711, 31796712, 31796713, 31796714, 31796715, 31796716, 31796717, 31796718,
6996 31796719, 31796720, 31796721, 31796722, 31796723, 31796724, 31796725, 31796726,
6997 31796727, 31796728, 31799014, 31799015, 31799016, 31799017, 31799018, 31799019,
6998 31799020, 31799021, 31799022, 31799023, 31799024, 31799025, 31799026, 31799027,
6999 31799028, 31799029, 31799030, 31799031, 31799032, 31799033, 31799034, 31799035,
7000 31799036, 31799037
7001 ]
7002 );
7003 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
7004 assert_eq!(
7005 rp,
7006 vec![
7007 36722692, 36722693, 36722694, 36722695, 36722696, 36722697, 36722698, 36722699,
7008 36722700, 36722701, 36722702, 36722703, 36722704, 36722705, 36723505, 36723506,
7009 36723507, 36723508, 36723509, 36723510, 36723511, 36723512, 36723513, 36723514,
7010 36723515, 36723516, 36723517, 36723518, 36723519, 36723520, 36723521, 36723522,
7011 36723523, 36723524, 36723525, 36723526, 36723527, 36723528, 36723529, 36723530,
7012 36723531, 36723532, 36737414, 36737415, 36737416, 36737417, 36737418, 36737419,
7013 36737420
7014 ]
7015 );
7016 let rp: Vec<i64> = it.next().unwrap().unwrap().reference_positions().collect();
7017 assert_eq!(
7018 rp,
7019 vec![
7020 44587963, 44587964, 44587965, 44587966, 44587967, 44587968, 44587969, 44587970,
7021 44587971, 44587972, 44587973, 44587974, 44587975, 44587976, 44587977, 44587978,
7022 44587979, 44587980, 44587981, 44587982, 44587983, 44589680, 44589681, 44589682,
7023 44589683, 44589684, 44589685, 44589686, 44589687, 44589688, 44589689, 44589690,
7024 44589691, 44589692, 44589693, 44589694, 44589695, 44589696, 44589697, 44589698,
7025 44589699, 44589700, 44589701, 44589702, 44592034, 44592035, 44592036
7026 ]
7027 );
7028 }
7029
7030 #[test]
7031 fn test_reference_positions_full() {
7032 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
7033 let mut it = bam.records();
7034
7035 let rp: Vec<_> = it
7036 .next()
7037 .unwrap()
7038 .unwrap()
7039 .reference_positions_full()
7040 .collect();
7041 assert_eq!(
7042 rp,
7043 vec![
7044 None,
7045 None,
7046 None,
7047 None,
7048 None,
7049 None,
7050 Some(16050676),
7051 Some(16050677),
7052 Some(16050678),
7053 Some(16050679),
7054 Some(16050680),
7055 Some(16050681),
7056 Some(16050682),
7057 Some(16050683),
7058 Some(16050684),
7059 Some(16050685),
7060 Some(16050686),
7061 Some(16050687),
7062 Some(16050688),
7063 Some(16050689),
7064 Some(16050690),
7065 Some(16050691),
7066 Some(16050692),
7067 Some(16050693),
7068 Some(16050694),
7069 Some(16050695),
7070 Some(16050696),
7071 Some(16050697),
7072 Some(16050698),
7073 Some(16050699),
7074 Some(16050700),
7075 Some(16050701),
7076 Some(16050702),
7077 Some(16050703),
7078 Some(16050704),
7079 Some(16050705),
7080 Some(16050706),
7081 Some(16050707),
7082 Some(16050708),
7083 Some(16050709),
7084 Some(16050710),
7085 Some(16050711),
7086 Some(16050712),
7087 Some(16050713),
7088 Some(16050714),
7089 Some(16050715),
7090 Some(16050716),
7091 Some(16050717),
7092 Some(16050718),
7093 Some(16050719),
7094 Some(16050720)
7095 ]
7096 );
7097 let rp: Vec<_> = it
7098 .next()
7099 .unwrap()
7100 .unwrap()
7101 .reference_positions_full()
7102 .collect();
7103 assert_eq!(
7104 rp,
7105 vec![
7106 Some(16096878),
7107 Some(16096879),
7108 Some(16096880),
7109 Some(16096881),
7110 Some(16096882),
7111 Some(16096883),
7112 Some(16096884),
7113 Some(16096887),
7114 Some(16096888),
7115 Some(16096889),
7116 Some(16096890),
7117 Some(16096891),
7118 Some(16096892),
7119 Some(16096893),
7120 Some(16096894),
7121 Some(16096895),
7122 Some(16096896),
7123 Some(16096897),
7124 Some(16096898),
7125 Some(16096899),
7126 Some(16096900),
7127 Some(16096901),
7128 Some(16096902),
7129 Some(16096903),
7130 Some(16096904),
7131 Some(16096905),
7132 Some(16096906),
7133 Some(16096907),
7134 Some(16096908),
7135 Some(16096909),
7136 Some(16096910),
7137 Some(16096911),
7138 Some(16096912),
7139 Some(16096913),
7140 Some(16096914),
7141 Some(16096915),
7142 Some(16096916),
7143 Some(16096917),
7144 Some(16096918),
7145 Some(16096919),
7146 Some(16096920),
7147 Some(16096921),
7148 Some(16096922),
7149 Some(16096923),
7150 Some(16096924),
7151 Some(16096925),
7152 Some(16096926),
7153 Some(16096927),
7154 Some(16096928),
7155 Some(16096929),
7156 Some(16096930)
7157 ]
7158 );
7159 let rp: Vec<_> = it
7160 .next()
7161 .unwrap()
7162 .unwrap()
7163 .reference_positions_full()
7164 .collect();
7165 assert_eq!(
7166 rp,
7167 vec![
7168 Some(16097145),
7169 Some(16097146),
7170 Some(16097147),
7171 Some(16097148),
7172 Some(16097149),
7173 Some(16097150),
7174 Some(16097151),
7175 Some(16097152),
7176 Some(16097153),
7177 Some(16097154),
7178 Some(16097155),
7179 Some(16097156),
7180 Some(16097157),
7181 Some(16097158),
7182 Some(16097159),
7183 Some(16097160),
7184 Some(16097161),
7185 Some(16097162),
7186 Some(16097163),
7187 Some(16097164),
7188 Some(16097165),
7189 Some(16097166),
7190 Some(16097167),
7191 Some(16097168),
7192 Some(16097169),
7193 Some(16097170),
7194 Some(16097171),
7195 Some(16097172),
7196 Some(16097173),
7197 Some(16097176),
7198 Some(16097177),
7199 Some(16097178),
7200 Some(16097179),
7201 Some(16097180),
7202 Some(16097181),
7203 Some(16097182),
7204 Some(16097183),
7205 Some(16097184),
7206 Some(16097185),
7207 Some(16097186),
7208 Some(16097187),
7209 Some(16097188),
7210 Some(16097189),
7211 Some(16097190),
7212 Some(16097191),
7213 Some(16097192),
7214 Some(16097193),
7215 Some(16097194),
7216 Some(16097195),
7217 Some(16097196),
7218 Some(16097197)
7219 ]
7220 );
7221 let rp: Vec<_> = it
7222 .next()
7223 .unwrap()
7224 .unwrap()
7225 .reference_positions_full()
7226 .collect();
7227 assert_eq!(
7228 rp,
7229 vec![
7230 Some(16117350),
7231 Some(16117351),
7232 Some(16117352),
7233 Some(16117353),
7234 Some(16117354),
7235 Some(16117355),
7236 Some(16117356),
7237 Some(16117357),
7238 Some(16117358),
7239 Some(16117359),
7240 Some(16117360),
7241 Some(16117361),
7242 Some(16117362),
7243 Some(16117363),
7244 Some(16117364),
7245 Some(16117365),
7246 Some(16117366),
7247 Some(16117367),
7248 Some(16117368),
7249 Some(16117369),
7250 Some(16117370),
7251 Some(16117371),
7252 Some(16117372),
7253 Some(16117373),
7254 Some(16117374),
7255 Some(16117375),
7256 Some(16117376),
7257 Some(16117377),
7258 Some(16117378),
7259 Some(16117379),
7260 Some(16117380),
7261 Some(16117381),
7262 Some(16117382),
7263 Some(16117383),
7264 Some(16117384),
7265 Some(16117385),
7266 Some(16117386),
7267 Some(16117387),
7268 Some(16117388),
7269 Some(16117389),
7270 Some(16117390),
7271 Some(16117391),
7272 Some(16117392),
7273 Some(16117393),
7274 Some(16117394),
7275 Some(16117395),
7276 Some(16117396),
7277 Some(16117397),
7278 Some(16117398),
7279 Some(16117399),
7280 Some(16117400)
7281 ]
7282 );
7283 let rp: Vec<_> = it
7284 .next()
7285 .unwrap()
7286 .unwrap()
7287 .reference_positions_full()
7288 .collect();
7289 assert_eq!(
7290 rp,
7291 vec![
7292 Some(16118483),
7293 Some(16118484),
7294 Some(16118485),
7295 Some(16118486),
7296 Some(16118487),
7297 Some(16118488),
7298 Some(16118489),
7299 Some(16118490),
7300 Some(16118491),
7301 Some(16118492),
7302 Some(16118493),
7303 Some(16118494),
7304 Some(16118495),
7305 Some(16118496),
7306 Some(16118497),
7307 Some(16118498),
7308 Some(16118499),
7309 Some(16118500),
7310 Some(16118501),
7311 Some(16118502),
7312 Some(16118503),
7313 Some(16118504),
7314 Some(16118505),
7315 Some(16118506),
7316 Some(16118507),
7317 Some(16118508),
7318 Some(16118509),
7319 Some(16118510),
7320 Some(16118511),
7321 Some(16118512),
7322 Some(16118513),
7323 Some(16118514),
7324 Some(16118515),
7325 Some(16118516),
7326 Some(16118517),
7327 Some(16118518),
7328 Some(16118519),
7329 Some(16118520),
7330 Some(16118521),
7331 Some(16118522),
7332 Some(16118523),
7333 Some(16118524),
7334 Some(16118525),
7335 Some(16118526),
7336 Some(16118527),
7337 Some(16118528),
7338 Some(16118529),
7339 Some(16118530),
7340 Some(16118531),
7341 Some(16118532),
7342 Some(16118533)
7343 ]
7344 );
7345 let rp: Vec<_> = it
7346 .next()
7347 .unwrap()
7348 .unwrap()
7349 .reference_positions_full()
7350 .collect();
7351 assert_eq!(
7352 rp,
7353 vec![
7354 Some(16118499),
7355 Some(16118500),
7356 Some(16118501),
7357 Some(16118502),
7358 Some(16118503),
7359 Some(16118504),
7360 Some(16118505),
7361 Some(16118506),
7362 Some(16118507),
7363 Some(16118508),
7364 Some(16118509),
7365 Some(16118510),
7366 Some(16118511),
7367 Some(16118512),
7368 Some(16118513),
7369 Some(16118514),
7370 Some(16118515),
7371 Some(16118516),
7372 Some(16118517),
7373 Some(16118518),
7374 Some(16118519),
7375 Some(16118520),
7376 Some(16118521),
7377 Some(16118522),
7378 Some(16118523),
7379 Some(16118524),
7380 Some(16118525),
7381 Some(16118526),
7382 Some(16118527),
7383 Some(16118528),
7384 Some(16118529),
7385 Some(16118530),
7386 Some(16118531),
7387 Some(16118532),
7388 Some(16118533),
7389 Some(16118534),
7390 Some(16118535),
7391 Some(16118536),
7392 Some(16118537),
7393 Some(16118538),
7394 Some(16118539),
7395 Some(16118540),
7396 Some(16118541),
7397 Some(16118542),
7398 Some(16118543),
7399 Some(16118544),
7400 Some(16118545),
7401 Some(16118546),
7402 Some(16118547),
7403 Some(16118548),
7404 Some(16118549)
7405 ]
7406 );
7407 let rp: Vec<_> = it
7408 .next()
7409 .unwrap()
7410 .unwrap()
7411 .reference_positions_full()
7412 .collect();
7413 assert_eq!(
7414 rp,
7415 vec![
7416 Some(16118499),
7417 Some(16118500),
7418 Some(16118501),
7419 Some(16118502),
7420 Some(16118503),
7421 Some(16118504),
7422 Some(16118505),
7423 Some(16118506),
7424 Some(16118507),
7425 Some(16118508),
7426 Some(16118509),
7427 Some(16118510),
7428 Some(16118511),
7429 Some(16118512),
7430 Some(16118513),
7431 Some(16118514),
7432 Some(16118515),
7433 Some(16118516),
7434 Some(16118517),
7435 Some(16118518),
7436 Some(16118519),
7437 Some(16118520),
7438 Some(16118521),
7439 Some(16118522),
7440 Some(16118523),
7441 Some(16118524),
7442 Some(16118525),
7443 Some(16118526),
7444 Some(16118527),
7445 Some(16118528),
7446 Some(16118529),
7447 Some(16118530),
7448 Some(16118531),
7449 Some(16118532),
7450 Some(16118533),
7451 Some(16118534),
7452 Some(16118535),
7453 Some(16118536),
7454 Some(16118537),
7455 Some(16118538),
7456 Some(16118539),
7457 Some(16118540),
7458 Some(16118541),
7459 Some(16118542),
7460 Some(16118543),
7461 Some(16118544),
7462 Some(16118545),
7463 Some(16118546),
7464 Some(16118547),
7465 Some(16118548),
7466 Some(16118549)
7467 ]
7468 );
7469 let rp: Vec<_> = it
7470 .next()
7471 .unwrap()
7472 .unwrap()
7473 .reference_positions_full()
7474 .collect();
7475 assert_eq!(
7476 rp,
7477 vec![
7478 Some(16118499),
7479 Some(16118500),
7480 Some(16118501),
7481 Some(16118502),
7482 Some(16118503),
7483 Some(16118504),
7484 Some(16118505),
7485 Some(16118506),
7486 Some(16118507),
7487 Some(16118508),
7488 Some(16118509),
7489 Some(16118510),
7490 Some(16118511),
7491 Some(16118512),
7492 Some(16118513),
7493 Some(16118514),
7494 Some(16118515),
7495 Some(16118516),
7496 Some(16118517),
7497 Some(16118518),
7498 Some(16118519),
7499 Some(16118520),
7500 Some(16118521),
7501 Some(16118522),
7502 Some(16118523),
7503 Some(16118524),
7504 Some(16118525),
7505 Some(16118526),
7506 Some(16118527),
7507 Some(16118528),
7508 Some(16118529),
7509 Some(16118530),
7510 Some(16118531),
7511 Some(16118532),
7512 Some(16118533),
7513 Some(16118534),
7514 Some(16118535),
7515 Some(16118536),
7516 Some(16118537),
7517 Some(16118538),
7518 Some(16118539),
7519 Some(16118540),
7520 Some(16118541),
7521 Some(16118542),
7522 Some(16118543),
7523 Some(16118544),
7524 Some(16118545),
7525 Some(16118546),
7526 Some(16118547),
7527 Some(16118548),
7528 Some(16118549)
7529 ]
7530 );
7531 let rp: Vec<_> = it
7532 .next()
7533 .unwrap()
7534 .unwrap()
7535 .reference_positions_full()
7536 .collect();
7537 assert_eq!(
7538 rp,
7539 vec![
7540 Some(16123411),
7541 Some(16123412),
7542 Some(16123413),
7543 Some(16123414),
7544 Some(16123415),
7545 Some(16123416),
7546 Some(16123417),
7547 Some(16123418),
7548 Some(16123419),
7549 Some(16123420),
7550 Some(16123421),
7551 Some(16123422),
7552 Some(16123423),
7553 Some(16123424),
7554 Some(16123425),
7555 Some(16123426),
7556 Some(16123427),
7557 Some(16123428),
7558 Some(16123429),
7559 Some(16123430),
7560 Some(16123431),
7561 Some(16123432),
7562 Some(16123433),
7563 Some(16123434),
7564 Some(16123435),
7565 Some(16123436),
7566 Some(16123437),
7567 Some(16123438),
7568 Some(16123439),
7569 Some(16123440),
7570 Some(16123441),
7571 Some(16123442),
7572 Some(16123443),
7573 Some(16123444),
7574 Some(16123445),
7575 Some(16123446),
7576 Some(16123447),
7577 Some(16123448),
7578 Some(16123449),
7579 Some(16123450),
7580 Some(16123451),
7581 Some(16123452),
7582 Some(16123453),
7583 Some(16123454),
7584 Some(16123455),
7585 Some(16123456),
7586 Some(16123457),
7587 Some(16123458),
7588 Some(16123459),
7589 Some(16123460),
7590 Some(16123461)
7591 ]
7592 );
7593 let rp: Vec<_> = it
7594 .next()
7595 .unwrap()
7596 .unwrap()
7597 .reference_positions_full()
7598 .collect();
7599 assert_eq!(
7600 rp,
7601 vec![
7602 None,
7603 None,
7604 None,
7605 None,
7606 None,
7607 None,
7608 Some(16123417),
7609 Some(16123418),
7610 Some(16123419),
7611 Some(16123420),
7612 Some(16123421),
7613 Some(16123422),
7614 Some(16123423),
7615 Some(16123424),
7616 Some(16123425),
7617 Some(16123426),
7618 Some(16123427),
7619 Some(16123428),
7620 Some(16123429),
7621 Some(16123430),
7622 Some(16123431),
7623 Some(16123432),
7624 Some(16123433),
7625 Some(16123434),
7626 Some(16123435),
7627 Some(16123436),
7628 Some(16123437),
7629 Some(16123438),
7630 Some(16123439),
7631 Some(16123440),
7632 Some(16123441),
7633 Some(16123442),
7634 Some(16123443),
7635 Some(16123444),
7636 Some(16123445),
7637 Some(16123446),
7638 Some(16123447),
7639 Some(16123448),
7640 Some(16123449),
7641 Some(16123450),
7642 Some(16123451),
7643 Some(16123452),
7644 Some(16123453),
7645 Some(16123454),
7646 Some(16123455),
7647 Some(16123456),
7648 Some(16123457),
7649 Some(16123458),
7650 Some(16123459),
7651 Some(16123460),
7652 Some(16123461)
7653 ]
7654 );
7655 let rp: Vec<_> = it
7656 .next()
7657 .unwrap()
7658 .unwrap()
7659 .reference_positions_full()
7660 .collect();
7661 assert_eq!(
7662 rp,
7663 vec![
7664 Some(16165860),
7665 Some(16165861),
7666 Some(16165862),
7667 Some(16165863),
7668 Some(16165864),
7669 Some(16165865),
7670 Some(16165866),
7671 Some(16165867),
7672 Some(16165868),
7673 Some(16165869),
7674 Some(16165870),
7675 Some(16165871),
7676 Some(16165872),
7677 Some(16165873),
7678 Some(16165874),
7679 Some(16165875),
7680 Some(16165876),
7681 Some(16165877),
7682 Some(16165878),
7683 Some(16165879),
7684 Some(16165880),
7685 Some(16165881),
7686 Some(16165882),
7687 Some(16165883),
7688 Some(16165884),
7689 Some(16165885),
7690 Some(16165886),
7691 Some(16165887),
7692 Some(16165888),
7693 Some(16165889),
7694 Some(16165890),
7695 Some(16165891),
7696 Some(16165892),
7697 Some(16165893),
7698 Some(16165894),
7699 Some(16165895),
7700 Some(16165896),
7701 Some(16165897),
7702 Some(16165898),
7703 Some(16165899),
7704 Some(16165900),
7705 None,
7706 None,
7707 None,
7708 None,
7709 None,
7710 None,
7711 None,
7712 None,
7713 None,
7714 None
7715 ]
7716 );
7717 let rp: Vec<_> = it
7718 .next()
7719 .unwrap()
7720 .unwrap()
7721 .reference_positions_full()
7722 .collect();
7723 assert_eq!(
7724 rp,
7725 vec![
7726 Some(16180871),
7727 Some(16180872),
7728 Some(16180873),
7729 Some(16180874),
7730 Some(16180875),
7731 Some(16180876),
7732 Some(16180877),
7733 Some(16180878),
7734 Some(16180879),
7735 Some(16180880),
7736 Some(16180881),
7737 Some(16180882),
7738 Some(16180883),
7739 Some(16180884),
7740 Some(16180885),
7741 Some(16180886),
7742 Some(16180887),
7743 Some(16180888),
7744 Some(16180889),
7745 Some(16180890),
7746 Some(16180891),
7747 Some(16180892),
7748 Some(16180893),
7749 Some(16180894),
7750 Some(16180895),
7751 Some(16180896),
7752 Some(16180897),
7753 Some(16180898),
7754 Some(16180899),
7755 Some(16180900),
7756 Some(16180901),
7757 Some(16180902),
7758 Some(16180903),
7759 Some(16180904),
7760 Some(16180905),
7761 Some(16180906),
7762 Some(16180907),
7763 Some(16180908),
7764 Some(16180909),
7765 Some(16180910),
7766 Some(16180911),
7767 Some(16180912),
7768 Some(16180913),
7769 Some(16180914),
7770 Some(16180915),
7771 Some(16180916),
7772 Some(16180917),
7773 Some(16180918),
7774 Some(16180919),
7775 Some(16180920),
7776 Some(16180921)
7777 ]
7778 );
7779 let rp: Vec<_> = it
7780 .next()
7781 .unwrap()
7782 .unwrap()
7783 .reference_positions_full()
7784 .collect();
7785 assert_eq!(
7786 rp,
7787 vec![
7788 Some(16189705),
7789 Some(16189706),
7790 Some(16189707),
7791 Some(16189708),
7792 Some(16189709),
7793 Some(16189710),
7794 Some(16189711),
7795 Some(16189712),
7796 Some(16189713),
7797 Some(16189714),
7798 Some(16189715),
7799 Some(16189716),
7800 Some(16189717),
7801 Some(16189718),
7802 Some(16189719),
7803 Some(16189720),
7804 Some(16189721),
7805 Some(16189722),
7806 Some(16189723),
7807 Some(16189724),
7808 Some(16189725),
7809 Some(16189726),
7810 Some(16189727),
7811 Some(16189728),
7812 Some(16189729),
7813 Some(16189730),
7814 Some(16189731),
7815 Some(16189732),
7816 Some(16189733),
7817 Some(16189734),
7818 Some(16189735),
7819 Some(16189736),
7820 Some(16189737),
7821 Some(16189738),
7822 Some(16189739),
7823 Some(16189740),
7824 Some(16189741),
7825 Some(16189742),
7826 Some(16189743),
7827 Some(16189744),
7828 Some(16189745),
7829 Some(16189746),
7830 Some(16189747),
7831 Some(16189748),
7832 Some(16189749),
7833 Some(16189750),
7834 Some(16189751),
7835 Some(16189752),
7836 Some(16189753),
7837 Some(16189754),
7838 Some(16189755)
7839 ]
7840 );
7841 let rp: Vec<_> = it
7842 .next()
7843 .unwrap()
7844 .unwrap()
7845 .reference_positions_full()
7846 .collect();
7847 assert_eq!(
7848 rp,
7849 vec![
7850 Some(16231271),
7851 Some(16231272),
7852 Some(16231273),
7853 Some(16231274),
7854 Some(16231275),
7855 Some(16231276),
7856 Some(16231277),
7857 Some(16231278),
7858 Some(16231279),
7859 Some(16231280),
7860 Some(16231281),
7861 Some(16231282),
7862 Some(16231283),
7863 Some(16231284),
7864 Some(16231285),
7865 Some(16231286),
7866 Some(16231287),
7867 Some(16231288),
7868 Some(16231289),
7869 Some(16231290),
7870 Some(16231291),
7871 Some(16231292),
7872 Some(16231293),
7873 Some(16231294),
7874 Some(16231295),
7875 Some(16231296),
7876 Some(16231297),
7877 Some(16231298),
7878 Some(16231299),
7879 Some(16231300),
7880 Some(16231301),
7881 Some(16231302),
7882 Some(16231303),
7883 Some(16231304),
7884 Some(16231305),
7885 Some(16231306),
7886 Some(16231307),
7887 Some(16231308),
7888 Some(16231309),
7889 Some(16231310),
7890 Some(16231311),
7891 Some(16231312),
7892 Some(16231313),
7893 Some(16231314),
7894 Some(16231315),
7895 Some(16231316),
7896 Some(16231317),
7897 Some(16231318),
7898 Some(16231319),
7899 Some(16231320),
7900 Some(16231321)
7901 ]
7902 );
7903 let rp: Vec<_> = it
7904 .next()
7905 .unwrap()
7906 .unwrap()
7907 .reference_positions_full()
7908 .collect();
7909 assert_eq!(
7910 rp,
7911 vec![
7912 Some(16237657),
7913 Some(16237658),
7914 Some(16237659),
7915 Some(16237660),
7916 Some(16237661),
7917 Some(16237662),
7918 Some(16237663),
7919 Some(16237664),
7920 Some(16237665),
7921 Some(16237666),
7922 Some(16237667),
7923 Some(16237668),
7924 Some(16237669),
7925 Some(16237670),
7926 Some(16237671),
7927 Some(16237672),
7928 Some(16237673),
7929 Some(16237674),
7930 Some(16237675),
7931 Some(16237676),
7932 Some(16237677),
7933 Some(16237678),
7934 Some(16237679),
7935 Some(16237680),
7936 Some(16237681),
7937 Some(16237682),
7938 Some(16237683),
7939 Some(16237684),
7940 Some(16237685),
7941 Some(16237686),
7942 Some(16237687),
7943 Some(16237688),
7944 Some(16237689),
7945 Some(16237690),
7946 Some(16237691),
7947 Some(16237692),
7948 Some(16237693),
7949 Some(16237694),
7950 Some(16237695),
7951 Some(16237696),
7952 Some(16237697),
7953 Some(16237698),
7954 Some(16237699),
7955 Some(16237700),
7956 Some(16237701),
7957 Some(16237702),
7958 Some(16237703),
7959 Some(16237704),
7960 Some(16237705),
7961 Some(16237706),
7962 Some(16237707)
7963 ]
7964 );
7965 let rp: Vec<_> = it
7966 .next()
7967 .unwrap()
7968 .unwrap()
7969 .reference_positions_full()
7970 .collect();
7971 assert_eq!(
7972 rp,
7973 vec![
7974 None,
7975 None,
7976 None,
7977 None,
7978 None,
7979 None,
7980 None,
7981 None,
7982 None,
7983 Some(16255012),
7984 Some(16255013),
7985 Some(16255014),
7986 Some(16255015),
7987 Some(16255016),
7988 Some(16255017),
7989 Some(16255018),
7990 Some(16255019),
7991 Some(16255020),
7992 Some(16255021),
7993 Some(16255022),
7994 Some(16255023),
7995 Some(16255024),
7996 Some(16255025),
7997 Some(16255026),
7998 Some(16255027),
7999 Some(16255028),
8000 Some(16255029),
8001 Some(16255030),
8002 Some(16255031),
8003 Some(16255032),
8004 Some(16255033),
8005 Some(16255034),
8006 Some(16255035),
8007 Some(16255036),
8008 Some(16255037),
8009 Some(16255038),
8010 Some(16255039),
8011 Some(16255040),
8012 Some(16255041),
8013 Some(16255042),
8014 Some(16255043),
8015 Some(16255044),
8016 Some(16255045),
8017 Some(16255046),
8018 Some(16255047),
8019 Some(16255048),
8020 Some(16255049),
8021 Some(16255050),
8022 Some(16255051),
8023 Some(16255052),
8024 Some(16255053)
8025 ]
8026 );
8027 let rp: Vec<_> = it
8028 .next()
8029 .unwrap()
8030 .unwrap()
8031 .reference_positions_full()
8032 .collect();
8033 assert_eq!(
8034 rp,
8035 vec![
8036 Some(16255391),
8037 Some(16255392),
8038 Some(16255393),
8039 Some(16255394),
8040 Some(16255395),
8041 Some(16255396),
8042 Some(16255397),
8043 Some(16255398),
8044 Some(16255399),
8045 Some(16255400),
8046 Some(16255401),
8047 Some(16255402),
8048 Some(16255403),
8049 Some(16255404),
8050 Some(16255405),
8051 Some(16255406),
8052 Some(16255407),
8053 Some(16255408),
8054 Some(16255409),
8055 Some(16255410),
8056 Some(16255411),
8057 Some(16255412),
8058 Some(16255413),
8059 Some(16255414),
8060 Some(16255415),
8061 Some(16255416),
8062 Some(16255417),
8063 Some(16255418),
8064 Some(16255419),
8065 Some(16255420),
8066 Some(16255421),
8067 Some(16255422),
8068 Some(16255423),
8069 Some(16255424),
8070 Some(16255425),
8071 Some(16255426),
8072 Some(16255427),
8073 Some(16255428),
8074 Some(16255429),
8075 Some(16255430),
8076 Some(16255431),
8077 Some(16255432),
8078 Some(16255433),
8079 Some(16255434),
8080 Some(16255435),
8081 Some(16255436),
8082 Some(16255437),
8083 Some(16255438),
8084 Some(16255439),
8085 Some(16255440),
8086 Some(16255441)
8087 ]
8088 );
8089 let rp: Vec<_> = it
8090 .next()
8091 .unwrap()
8092 .unwrap()
8093 .reference_positions_full()
8094 .collect();
8095 assert_eq!(
8096 rp,
8097 vec![
8098 Some(16255392),
8099 Some(16255393),
8100 Some(16255394),
8101 Some(16255395),
8102 Some(16255396),
8103 Some(16255397),
8104 Some(16255398),
8105 Some(16255399),
8106 Some(16255400),
8107 Some(16255401),
8108 Some(16255402),
8109 Some(16255403),
8110 Some(16255404),
8111 Some(16255405),
8112 Some(16255406),
8113 Some(16255407),
8114 Some(16255408),
8115 Some(16255409),
8116 Some(16255410),
8117 Some(16255411),
8118 Some(16255412),
8119 Some(16255413),
8120 Some(16255414),
8121 Some(16255415),
8122 Some(16255416),
8123 Some(16255417),
8124 Some(16255418),
8125 Some(16255419),
8126 Some(16255420),
8127 Some(16255421),
8128 Some(16255422),
8129 Some(16255423),
8130 Some(16255424),
8131 Some(16255425),
8132 Some(16255426),
8133 Some(16255427),
8134 Some(16255428),
8135 Some(16255429),
8136 Some(16255430),
8137 Some(16255431),
8138 Some(16255432),
8139 Some(16255433),
8140 Some(16255434),
8141 Some(16255435),
8142 Some(16255436),
8143 Some(16255437),
8144 Some(16255438),
8145 Some(16255439),
8146 Some(16255440),
8147 Some(16255441),
8148 None
8149 ]
8150 );
8151 let rp: Vec<_> = it
8152 .next()
8153 .unwrap()
8154 .unwrap()
8155 .reference_positions_full()
8156 .collect();
8157 assert_eq!(
8158 rp,
8159 vec![
8160 Some(16256084),
8161 Some(16256085),
8162 Some(16256086),
8163 Some(16256087),
8164 Some(16256088),
8165 Some(16256089),
8166 Some(16256090),
8167 Some(16256091),
8168 Some(16256092),
8169 Some(16256093),
8170 Some(16256094),
8171 Some(16256095),
8172 Some(16256096),
8173 Some(16256097),
8174 Some(16256098),
8175 Some(16256099),
8176 Some(16256100),
8177 Some(16256101),
8178 Some(16256102),
8179 Some(16256103),
8180 Some(16256104),
8181 Some(16256105),
8182 Some(16256106),
8183 Some(16256107),
8184 Some(16256108),
8185 Some(16256109),
8186 Some(16256110),
8187 Some(16256111),
8188 Some(16256112),
8189 Some(16256113),
8190 Some(16256114),
8191 Some(16256115),
8192 Some(16256116),
8193 Some(16256117),
8194 Some(16256118),
8195 Some(16256119),
8196 Some(16256120),
8197 Some(16256121),
8198 Some(16256122),
8199 Some(16256123),
8200 Some(16256124),
8201 Some(16256125),
8202 Some(16256126),
8203 Some(16256127),
8204 Some(16256128),
8205 None,
8206 None,
8207 None,
8208 None,
8209 None,
8210 None
8211 ]
8212 );
8213 let rp: Vec<_> = it
8214 .next()
8215 .unwrap()
8216 .unwrap()
8217 .reference_positions_full()
8218 .collect();
8219 assert_eq!(
8220 rp,
8221 vec![
8222 None,
8223 None,
8224 None,
8225 Some(16256224),
8226 Some(16256225),
8227 Some(16256226),
8228 Some(16256227),
8229 Some(16256228),
8230 Some(16256229),
8231 Some(16256230),
8232 Some(16256231),
8233 Some(16256232),
8234 Some(16256233),
8235 Some(16256234),
8236 Some(16256235),
8237 Some(16256236),
8238 Some(16256237),
8239 Some(16256238),
8240 Some(16256239),
8241 Some(16256240),
8242 Some(16256241),
8243 Some(16256242),
8244 Some(16256243),
8245 Some(16256244),
8246 Some(16256245),
8247 Some(16256246),
8248 Some(16256247),
8249 Some(16256248),
8250 Some(16256249),
8251 Some(16256250),
8252 Some(16256251),
8253 Some(16256252),
8254 Some(16256253),
8255 Some(16256254),
8256 Some(16256255),
8257 Some(16256256),
8258 Some(16256257),
8259 Some(16256258),
8260 Some(16256259),
8261 Some(16256260),
8262 Some(16256261),
8263 Some(16256262),
8264 Some(16256263),
8265 Some(16256264),
8266 Some(16256265),
8267 Some(16256266),
8268 Some(16256267),
8269 Some(16256268),
8270 Some(16256269),
8271 Some(16256270),
8272 Some(16256271)
8273 ]
8274 );
8275 let rp: Vec<_> = it
8276 .next()
8277 .unwrap()
8278 .unwrap()
8279 .reference_positions_full()
8280 .collect();
8281 assert_eq!(
8282 rp,
8283 vec![
8284 Some(16325199),
8285 Some(16325200),
8286 Some(16325201),
8287 Some(16325202),
8288 Some(16325203),
8289 Some(16325204),
8290 Some(16325205),
8291 Some(16325206),
8292 Some(16325207),
8293 Some(16325208),
8294 Some(16325209),
8295 Some(16325210),
8296 Some(16325211),
8297 Some(16325212),
8298 Some(16325213),
8299 Some(16325214),
8300 Some(16325215),
8301 Some(16325216),
8302 Some(16325217),
8303 Some(16325218),
8304 Some(16325219),
8305 Some(16325220),
8306 Some(16325221),
8307 Some(16325222),
8308 Some(16325223),
8309 Some(16325224),
8310 Some(16325225),
8311 Some(16325226),
8312 Some(16325227),
8313 Some(16325228),
8314 Some(16325229),
8315 Some(16325230),
8316 Some(16325231),
8317 Some(16325232),
8318 Some(16325233),
8319 Some(16325234),
8320 Some(16325235),
8321 Some(16325236),
8322 Some(16325237),
8323 Some(16325238),
8324 Some(16325239),
8325 Some(16325240),
8326 None,
8327 None,
8328 None,
8329 None,
8330 None,
8331 None,
8332 None,
8333 None,
8334 None
8335 ]
8336 );
8337 let rp: Vec<_> = it
8338 .next()
8339 .unwrap()
8340 .unwrap()
8341 .reference_positions_full()
8342 .collect();
8343 assert_eq!(
8344 rp,
8345 vec![
8346 None,
8347 None,
8348 None,
8349 None,
8350 None,
8351 None,
8352 None,
8353 None,
8354 None,
8355 None,
8356 None,
8357 None,
8358 None,
8359 Some(16352865),
8360 Some(16352866),
8361 Some(16352867),
8362 Some(16352868),
8363 Some(16352869),
8364 Some(16352870),
8365 Some(16352871),
8366 Some(16352872),
8367 Some(16352873),
8368 Some(16352874),
8369 Some(16352875),
8370 Some(16352876),
8371 Some(16352877),
8372 Some(16352878),
8373 Some(16352879),
8374 Some(16352880),
8375 Some(16352881),
8376 Some(16352882),
8377 Some(16352883),
8378 Some(16352884),
8379 Some(16352885),
8380 Some(16352886),
8381 Some(16352887),
8382 Some(16352888),
8383 Some(16352889),
8384 Some(16352890),
8385 Some(16352891),
8386 Some(16352892),
8387 Some(16352893),
8388 Some(16352894),
8389 Some(16352895),
8390 Some(16352896),
8391 Some(16352897),
8392 Some(16352898),
8393 Some(16352899),
8394 Some(16352900),
8395 Some(16352901),
8396 Some(16352902)
8397 ]
8398 );
8399 let rp: Vec<_> = it
8400 .next()
8401 .unwrap()
8402 .unwrap()
8403 .reference_positions_full()
8404 .collect();
8405 assert_eq!(
8406 rp,
8407 vec![
8408 Some(16352968),
8409 Some(16352969),
8410 Some(16352970),
8411 Some(16352971),
8412 Some(16352972),
8413 Some(16352973),
8414 Some(16352974),
8415 Some(16352975),
8416 Some(16352976),
8417 Some(16352977),
8418 Some(16352978),
8419 Some(16352979),
8420 Some(16352980),
8421 Some(16352981),
8422 Some(16352982),
8423 Some(16352983),
8424 Some(16352984),
8425 Some(16352985),
8426 Some(16352986),
8427 Some(16352987),
8428 Some(16352988),
8429 Some(16352989),
8430 Some(16352990),
8431 Some(16352991),
8432 Some(16352992),
8433 Some(16352993),
8434 Some(16352994),
8435 Some(16352995),
8436 Some(16352996),
8437 Some(16352997),
8438 Some(16352998),
8439 Some(16352999),
8440 Some(16353000),
8441 Some(16353001),
8442 Some(16353002),
8443 Some(16353003),
8444 Some(16353004),
8445 Some(16353005),
8446 Some(16353006),
8447 Some(16353007),
8448 Some(16353008),
8449 Some(16353009),
8450 Some(16353010),
8451 Some(16353011),
8452 None,
8453 None,
8454 None,
8455 None,
8456 None,
8457 None,
8458 None
8459 ]
8460 );
8461 let rp: Vec<_> = it
8462 .next()
8463 .unwrap()
8464 .unwrap()
8465 .reference_positions_full()
8466 .collect();
8467 assert_eq!(
8468 rp,
8469 vec![
8470 None,
8471 None,
8472 None,
8473 None,
8474 None,
8475 Some(16414998),
8476 Some(16414999),
8477 Some(16415000),
8478 Some(16415001),
8479 Some(16415002),
8480 Some(16415003),
8481 Some(16415004),
8482 Some(16415005),
8483 Some(16415006),
8484 Some(16415007),
8485 Some(16415008),
8486 Some(16415009),
8487 Some(16415010),
8488 Some(16415011),
8489 Some(16415012),
8490 Some(16415013),
8491 Some(16415014),
8492 Some(16415015),
8493 Some(16415016),
8494 Some(16415017),
8495 Some(16415018),
8496 Some(16415019),
8497 Some(16415020),
8498 Some(16415021),
8499 Some(16415022),
8500 Some(16415023),
8501 Some(16415024),
8502 Some(16415025),
8503 Some(16415026),
8504 Some(16415027),
8505 Some(16415028),
8506 Some(16415029),
8507 Some(16415030),
8508 Some(16415031),
8509 Some(16415032),
8510 Some(16415033),
8511 Some(16415034),
8512 Some(16415035),
8513 Some(16415036),
8514 Some(16415037),
8515 Some(16415038),
8516 Some(16415039),
8517 Some(16415040),
8518 Some(16415041),
8519 Some(16415042),
8520 Some(16415043)
8521 ]
8522 );
8523 let rp: Vec<_> = it
8524 .next()
8525 .unwrap()
8526 .unwrap()
8527 .reference_positions_full()
8528 .collect();
8529 assert_eq!(
8530 rp,
8531 vec![
8532 Some(17031591),
8533 Some(17031592),
8534 Some(17031593),
8535 Some(17031594),
8536 Some(17031595),
8537 Some(17031596),
8538 Some(17031597),
8539 Some(17031598),
8540 Some(17031599),
8541 Some(17031600),
8542 Some(17031601),
8543 Some(17031602),
8544 Some(17031603),
8545 Some(17031604),
8546 Some(17031605),
8547 Some(17031606),
8548 Some(17031607),
8549 Some(17031608),
8550 Some(17031609),
8551 Some(17031610),
8552 Some(17031611),
8553 Some(17031612),
8554 Some(17031613),
8555 None,
8556 None,
8557 None,
8558 None,
8559 Some(17031614),
8560 Some(17031615),
8561 Some(17031616),
8562 Some(17031617),
8563 Some(17031618),
8564 Some(17031619),
8565 Some(17031620),
8566 Some(17031621),
8567 Some(17031622),
8568 Some(17031623),
8569 Some(17031624),
8570 Some(17031625),
8571 Some(17031626),
8572 Some(17031627),
8573 Some(17031628),
8574 Some(17031629),
8575 Some(17031630),
8576 Some(17031631),
8577 Some(17031632),
8578 Some(17031633),
8579 Some(17031634),
8580 Some(17031635),
8581 Some(17031636),
8582 Some(17031637)
8583 ]
8584 );
8585 let rp: Vec<_> = it
8586 .next()
8587 .unwrap()
8588 .unwrap()
8589 .reference_positions_full()
8590 .collect();
8591 assert_eq!(
8592 rp,
8593 vec![
8594 Some(17057382),
8595 Some(17057383),
8596 Some(17057384),
8597 Some(17057385),
8598 Some(17057386),
8599 Some(17057387),
8600 Some(17057388),
8601 Some(17057389),
8602 Some(17057390),
8603 Some(17057391),
8604 Some(17057392),
8605 Some(17057393),
8606 Some(17057394),
8607 Some(17057395),
8608 Some(17057396),
8609 Some(17057397),
8610 Some(17057398),
8611 Some(17057399),
8612 None,
8613 Some(17057400),
8614 Some(17057401),
8615 Some(17057402),
8616 Some(17057403),
8617 Some(17057404),
8618 Some(17057405),
8619 Some(17057406),
8620 Some(17057407),
8621 Some(17057408),
8622 Some(17057409),
8623 Some(17057410),
8624 Some(17057411),
8625 Some(17057412),
8626 Some(17057413),
8627 Some(17057414),
8628 Some(17057415),
8629 Some(17057416),
8630 Some(17057417),
8631 Some(17057418),
8632 Some(17057419),
8633 Some(17057420),
8634 Some(17057421),
8635 Some(17057422),
8636 Some(17057423),
8637 Some(17057424),
8638 Some(17057425),
8639 Some(17057426),
8640 Some(17057427),
8641 Some(17057428),
8642 Some(17057429),
8643 Some(17057430),
8644 Some(17057431)
8645 ]
8646 );
8647 let rp: Vec<_> = it
8648 .next()
8649 .unwrap()
8650 .unwrap()
8651 .reference_positions_full()
8652 .collect();
8653 assert_eq!(
8654 rp,
8655 vec![
8656 Some(17092766),
8657 Some(17092767),
8658 Some(17092768),
8659 Some(17092769),
8660 Some(17092770),
8661 Some(17092771),
8662 Some(17092772),
8663 Some(17092773),
8664 Some(17092774),
8665 Some(17092775),
8666 Some(17092776),
8667 Some(17092777),
8668 Some(17092778),
8669 Some(17092779),
8670 Some(17092780),
8671 Some(17092781),
8672 Some(17092782),
8673 Some(17094966),
8674 Some(17094967),
8675 Some(17094968),
8676 Some(17094969),
8677 Some(17094970),
8678 Some(17094971),
8679 Some(17094972),
8680 Some(17094973),
8681 Some(17094974),
8682 Some(17094975),
8683 Some(17094976),
8684 Some(17094977),
8685 Some(17094978),
8686 Some(17094979),
8687 Some(17094980),
8688 Some(17094981),
8689 Some(17094982),
8690 Some(17094983),
8691 Some(17094984),
8692 Some(17094985),
8693 Some(17094986),
8694 Some(17094987),
8695 Some(17094988),
8696 Some(17094989),
8697 Some(17094990),
8698 Some(17094991),
8699 Some(17094992),
8700 Some(17094993),
8701 Some(17094994),
8702 Some(17094995),
8703 Some(17094996),
8704 Some(17094997),
8705 Some(17094998),
8706 Some(17094999)
8707 ]
8708 );
8709 let rp: Vec<_> = it
8710 .next()
8711 .unwrap()
8712 .unwrap()
8713 .reference_positions_full()
8714 .collect();
8715 assert_eq!(
8716 rp,
8717 vec![
8718 Some(17092782),
8719 Some(17094966),
8720 Some(17094967),
8721 Some(17094968),
8722 Some(17094969),
8723 Some(17094970),
8724 Some(17094971),
8725 Some(17094972),
8726 Some(17094973),
8727 Some(17094974),
8728 Some(17094975),
8729 Some(17094976),
8730 Some(17094977),
8731 Some(17094978),
8732 Some(17094979),
8733 Some(17094980),
8734 Some(17094981),
8735 Some(17094982),
8736 Some(17094983),
8737 Some(17094984),
8738 Some(17094985),
8739 Some(17094986),
8740 Some(17094987),
8741 Some(17094988),
8742 Some(17094989),
8743 Some(17094990),
8744 Some(17094991),
8745 Some(17094992),
8746 Some(17094993),
8747 Some(17094994),
8748 Some(17094995),
8749 Some(17094996),
8750 Some(17094997),
8751 Some(17094998),
8752 Some(17094999),
8753 Some(17095000),
8754 Some(17095001),
8755 Some(17095002),
8756 Some(17095003),
8757 Some(17095004),
8758 Some(17095005),
8759 Some(17095006),
8760 Some(17095007),
8761 Some(17095008),
8762 Some(17095009),
8763 Some(17095010),
8764 Some(17095011),
8765 Some(17095012),
8766 Some(17095013),
8767 Some(17095014),
8768 Some(17095015)
8769 ]
8770 );
8771 let rp: Vec<_> = it
8772 .next()
8773 .unwrap()
8774 .unwrap()
8775 .reference_positions_full()
8776 .collect();
8777 assert_eq!(
8778 rp,
8779 vec![
8780 Some(17092782),
8781 Some(17094966),
8782 Some(17094967),
8783 Some(17094968),
8784 Some(17094969),
8785 Some(17094970),
8786 Some(17094971),
8787 Some(17094972),
8788 Some(17094973),
8789 Some(17094974),
8790 Some(17094975),
8791 Some(17094976),
8792 Some(17094977),
8793 Some(17094978),
8794 Some(17094979),
8795 Some(17094980),
8796 Some(17094981),
8797 Some(17094982),
8798 Some(17094983),
8799 Some(17094984),
8800 Some(17094985),
8801 Some(17094986),
8802 Some(17094987),
8803 Some(17094988),
8804 Some(17094989),
8805 Some(17094990),
8806 Some(17094991),
8807 Some(17094992),
8808 Some(17094993),
8809 Some(17094994),
8810 Some(17094995),
8811 Some(17094996),
8812 Some(17094997),
8813 Some(17094998),
8814 Some(17094999),
8815 Some(17095000),
8816 Some(17095001),
8817 Some(17095002),
8818 Some(17095003),
8819 Some(17095004),
8820 Some(17095005),
8821 Some(17095006),
8822 Some(17095007),
8823 Some(17095008),
8824 Some(17095009),
8825 Some(17095010),
8826 Some(17095011),
8827 Some(17095012),
8828 Some(17095013),
8829 Some(17095014),
8830 Some(17095015)
8831 ]
8832 );
8833 let rp: Vec<_> = it
8834 .next()
8835 .unwrap()
8836 .unwrap()
8837 .reference_positions_full()
8838 .collect();
8839 assert_eq!(
8840 rp,
8841 vec![
8842 None,
8843 None,
8844 None,
8845 None,
8846 None,
8847 None,
8848 None,
8849 None,
8850 None,
8851 Some(17137287),
8852 Some(17137288),
8853 Some(17137289),
8854 Some(17137290),
8855 Some(17137291),
8856 Some(17137292),
8857 Some(17137293),
8858 Some(17137294),
8859 Some(17137295),
8860 Some(17137296),
8861 Some(17137297),
8862 Some(17137298),
8863 Some(17137299),
8864 Some(17137300),
8865 Some(17137301),
8866 Some(17137302),
8867 Some(17137303),
8868 Some(17137304),
8869 Some(17137305),
8870 Some(17137306),
8871 Some(17137307),
8872 Some(17137308),
8873 Some(17137309),
8874 Some(17137310),
8875 Some(17137311),
8876 Some(17137312),
8877 Some(17137313),
8878 Some(17137314),
8879 Some(17137315),
8880 Some(17137316),
8881 Some(17137317),
8882 Some(17137318),
8883 Some(17137319),
8884 None,
8885 None,
8886 None,
8887 None,
8888 None,
8889 None,
8890 None,
8891 None,
8892 None
8893 ]
8894 );
8895 let rp: Vec<_> = it
8896 .next()
8897 .unwrap()
8898 .unwrap()
8899 .reference_positions_full()
8900 .collect();
8901 assert_eq!(
8902 rp,
8903 vec![
8904 None,
8905 None,
8906 Some(17306238),
8907 Some(17306239),
8908 Some(17306240),
8909 Some(17306241),
8910 Some(17306242),
8911 Some(17306243),
8912 Some(17306244),
8913 Some(17306245),
8914 Some(17306246),
8915 Some(17306247),
8916 Some(17306248),
8917 Some(17306249),
8918 Some(17306250),
8919 Some(17306251),
8920 Some(17306252),
8921 Some(17306253),
8922 Some(17306254),
8923 Some(17306255),
8924 Some(17306256),
8925 Some(17306257),
8926 Some(17306258),
8927 Some(17306259),
8928 Some(17306260),
8929 Some(17306261),
8930 Some(17306262),
8931 Some(17306263),
8932 Some(17306264),
8933 Some(17306265),
8934 Some(17306266),
8935 Some(17306267),
8936 Some(17306268),
8937 Some(17306269),
8938 Some(17306270),
8939 Some(17306271),
8940 Some(17306272),
8941 Some(17306273),
8942 Some(17306274),
8943 Some(17306275),
8944 Some(17306276),
8945 Some(17306277),
8946 Some(17306278),
8947 Some(17306279),
8948 Some(17306280),
8949 Some(17306281),
8950 Some(17306282),
8951 Some(17306283),
8952 Some(17306284),
8953 Some(17306285),
8954 None
8955 ]
8956 );
8957 let rp: Vec<_> = it
8958 .next()
8959 .unwrap()
8960 .unwrap()
8961 .reference_positions_full()
8962 .collect();
8963 assert_eq!(
8964 rp,
8965 vec![
8966 None,
8967 None,
8968 None,
8969 None,
8970 Some(17561868),
8971 Some(17561869),
8972 Some(17561870),
8973 Some(17561871),
8974 Some(17561872),
8975 Some(17561873),
8976 Some(17561874),
8977 Some(17561875),
8978 Some(17561876),
8979 Some(17561877),
8980 Some(17561878),
8981 Some(17561879),
8982 Some(17561880),
8983 Some(17561881),
8984 Some(17561882),
8985 Some(17561883),
8986 Some(17561884),
8987 Some(17561885),
8988 Some(17561886),
8989 Some(17561887),
8990 Some(17561888),
8991 Some(17561889),
8992 Some(17561890),
8993 Some(17561891),
8994 Some(17561892),
8995 Some(17561893),
8996 Some(17561894),
8997 Some(17561895),
8998 Some(17561896),
8999 Some(17561897),
9000 Some(17561898),
9001 Some(17561899),
9002 Some(17561900),
9003 Some(17561901),
9004 Some(17561902),
9005 Some(17561903),
9006 Some(17561904),
9007 Some(17561905),
9008 Some(17561906),
9009 Some(17561907),
9010 Some(17561908),
9011 Some(17561909),
9012 Some(17561910),
9013 Some(17561911),
9014 Some(17561912),
9015 None,
9016 None
9017 ]
9018 );
9019 let rp: Vec<_> = it
9020 .next()
9021 .unwrap()
9022 .unwrap()
9023 .reference_positions_full()
9024 .collect();
9025 assert_eq!(
9026 rp,
9027 vec![
9028 Some(17566078),
9029 Some(17566079),
9030 Some(17566080),
9031 Some(17566081),
9032 Some(17566082),
9033 Some(17566083),
9034 Some(17566084),
9035 Some(17566085),
9036 Some(17566086),
9037 Some(17566087),
9038 Some(17566088),
9039 Some(17566089),
9040 Some(17566090),
9041 Some(17566091),
9042 Some(17566092),
9043 Some(17566093),
9044 Some(17566094),
9045 Some(17566095),
9046 Some(17566096),
9047 Some(17566097),
9048 Some(17566098),
9049 Some(17566099),
9050 Some(17566100),
9051 Some(17566101),
9052 Some(17566102),
9053 Some(17566103),
9054 Some(17566104),
9055 Some(17566105),
9056 Some(17566106),
9057 Some(17566107),
9058 Some(17566108),
9059 Some(17566109),
9060 Some(17566110),
9061 Some(17566111),
9062 Some(17566112),
9063 Some(17566113),
9064 Some(17566114),
9065 Some(17566115),
9066 Some(17566116),
9067 Some(17566117),
9068 Some(17566118),
9069 Some(17577951),
9070 Some(17577952),
9071 Some(17577953),
9072 Some(17577954),
9073 Some(17577955),
9074 Some(17577956),
9075 Some(17577957),
9076 Some(17577958),
9077 Some(17577959),
9078 Some(17577960)
9079 ]
9080 );
9081 let rp: Vec<_> = it
9082 .next()
9083 .unwrap()
9084 .unwrap()
9085 .reference_positions_full()
9086 .collect();
9087 assert_eq!(
9088 rp,
9089 vec![
9090 Some(17566108),
9091 Some(17566109),
9092 Some(17566110),
9093 Some(17566111),
9094 Some(17566112),
9095 Some(17566113),
9096 Some(17566114),
9097 Some(17566115),
9098 Some(17566116),
9099 Some(17566117),
9100 Some(17566118),
9101 Some(17577951),
9102 Some(17577952),
9103 Some(17577953),
9104 Some(17577954),
9105 Some(17577955),
9106 Some(17577956),
9107 Some(17577957),
9108 Some(17577958),
9109 Some(17577959),
9110 Some(17577960),
9111 Some(17577961),
9112 Some(17577962),
9113 Some(17577963),
9114 Some(17577964),
9115 Some(17577965),
9116 Some(17577966),
9117 Some(17577967),
9118 Some(17577968),
9119 Some(17577969),
9120 Some(17577970),
9121 Some(17577971),
9122 Some(17577972),
9123 Some(17577973),
9124 Some(17577974),
9125 Some(17577975),
9126 Some(17578686),
9127 Some(17578687),
9128 Some(17578688),
9129 Some(17578689),
9130 Some(17578690),
9131 Some(17578691),
9132 Some(17578692),
9133 Some(17578693),
9134 Some(17578694),
9135 Some(17578695),
9136 Some(17578696),
9137 Some(17578697),
9138 Some(17578698),
9139 Some(17578699),
9140 Some(17578700)
9141 ]
9142 );
9143 let rp: Vec<_> = it
9144 .next()
9145 .unwrap()
9146 .unwrap()
9147 .reference_positions_full()
9148 .collect();
9149 assert_eq!(
9150 rp,
9151 vec![
9152 Some(17566111),
9153 Some(17566112),
9154 Some(17566113),
9155 Some(17566114),
9156 Some(17566115),
9157 Some(17566116),
9158 Some(17566117),
9159 Some(17566118),
9160 Some(17577951),
9161 Some(17577952),
9162 Some(17577953),
9163 Some(17577954),
9164 Some(17577955),
9165 Some(17577956),
9166 Some(17577957),
9167 Some(17577958),
9168 Some(17577959),
9169 Some(17577960),
9170 Some(17577961),
9171 Some(17577962),
9172 Some(17577963),
9173 Some(17577964),
9174 Some(17577965),
9175 Some(17577966),
9176 Some(17577967),
9177 Some(17577968),
9178 Some(17577969),
9179 Some(17577970),
9180 Some(17577971),
9181 Some(17577972),
9182 Some(17577973),
9183 Some(17577974),
9184 Some(17577975),
9185 Some(17578686),
9186 Some(17578687),
9187 Some(17578688),
9188 Some(17578689),
9189 Some(17578690),
9190 Some(17578691),
9191 Some(17578692),
9192 Some(17578693),
9193 Some(17578694),
9194 Some(17578695),
9195 Some(17578696),
9196 Some(17578697),
9197 Some(17578698),
9198 Some(17578699),
9199 Some(17578700),
9200 Some(17578701),
9201 Some(17578702),
9202 Some(17578703)
9203 ]
9204 );
9205 let rp: Vec<_> = it
9206 .next()
9207 .unwrap()
9208 .unwrap()
9209 .reference_positions_full()
9210 .collect();
9211 assert_eq!(
9212 rp,
9213 vec![
9214 Some(17566111),
9215 Some(17566112),
9216 Some(17566113),
9217 Some(17566114),
9218 Some(17566115),
9219 Some(17566116),
9220 Some(17566117),
9221 Some(17566118),
9222 Some(17577951),
9223 Some(17577952),
9224 Some(17577953),
9225 Some(17577954),
9226 Some(17577955),
9227 Some(17577956),
9228 Some(17577957),
9229 Some(17577958),
9230 Some(17577959),
9231 Some(17577960),
9232 Some(17577961),
9233 Some(17577962),
9234 Some(17577963),
9235 Some(17577964),
9236 Some(17577965),
9237 Some(17577966),
9238 Some(17577967),
9239 Some(17577968),
9240 Some(17577969),
9241 Some(17577970),
9242 Some(17577971),
9243 Some(17577972),
9244 Some(17577973),
9245 Some(17577974),
9246 Some(17577975),
9247 Some(17578686),
9248 Some(17578687),
9249 Some(17578688),
9250 Some(17578689),
9251 Some(17578690),
9252 Some(17578691),
9253 Some(17578692),
9254 Some(17578693),
9255 Some(17578694),
9256 Some(17578695),
9257 Some(17578696),
9258 Some(17578697),
9259 Some(17578698),
9260 Some(17578699),
9261 Some(17578700),
9262 Some(17578701),
9263 Some(17578702),
9264 Some(17578703)
9265 ]
9266 );
9267 let rp: Vec<_> = it
9268 .next()
9269 .unwrap()
9270 .unwrap()
9271 .reference_positions_full()
9272 .collect();
9273 assert_eq!(
9274 rp,
9275 vec![
9276 Some(17566111),
9277 Some(17566112),
9278 Some(17566113),
9279 Some(17566114),
9280 Some(17566115),
9281 Some(17566116),
9282 Some(17566117),
9283 Some(17566118),
9284 Some(17577951),
9285 Some(17577952),
9286 Some(17577953),
9287 Some(17577954),
9288 Some(17577955),
9289 Some(17577956),
9290 Some(17577957),
9291 Some(17577958),
9292 Some(17577959),
9293 Some(17577960),
9294 Some(17577961),
9295 Some(17577962),
9296 Some(17577963),
9297 Some(17577964),
9298 Some(17577965),
9299 Some(17577966),
9300 Some(17577967),
9301 Some(17577968),
9302 Some(17577969),
9303 Some(17577970),
9304 Some(17577971),
9305 Some(17577972),
9306 Some(17577973),
9307 Some(17577974),
9308 Some(17577975),
9309 Some(17578686),
9310 Some(17578687),
9311 Some(17578688),
9312 Some(17578689),
9313 Some(17578690),
9314 Some(17578691),
9315 Some(17578692),
9316 Some(17578693),
9317 Some(17578694),
9318 Some(17578695),
9319 Some(17578696),
9320 Some(17578697),
9321 Some(17578698),
9322 Some(17578699),
9323 Some(17578700),
9324 Some(17578701),
9325 Some(17578702),
9326 Some(17578703)
9327 ]
9328 );
9329 let rp: Vec<_> = it
9330 .next()
9331 .unwrap()
9332 .unwrap()
9333 .reference_positions_full()
9334 .collect();
9335 assert_eq!(
9336 rp,
9337 vec![
9338 Some(17566111),
9339 Some(17566112),
9340 Some(17566113),
9341 Some(17566114),
9342 Some(17566115),
9343 Some(17566116),
9344 Some(17566117),
9345 Some(17566118),
9346 Some(17577951),
9347 Some(17577952),
9348 Some(17577953),
9349 Some(17577954),
9350 Some(17577955),
9351 Some(17577956),
9352 Some(17577957),
9353 Some(17577958),
9354 Some(17577959),
9355 Some(17577960),
9356 Some(17577961),
9357 Some(17577962),
9358 Some(17577963),
9359 Some(17577964),
9360 Some(17577965),
9361 Some(17577966),
9362 Some(17577967),
9363 Some(17577968),
9364 Some(17577969),
9365 Some(17577970),
9366 Some(17577971),
9367 Some(17577972),
9368 Some(17577973),
9369 Some(17577974),
9370 Some(17577975),
9371 Some(17578686),
9372 Some(17578687),
9373 Some(17578688),
9374 Some(17578689),
9375 Some(17578690),
9376 Some(17578691),
9377 Some(17578692),
9378 Some(17578693),
9379 Some(17578694),
9380 Some(17578695),
9381 Some(17578696),
9382 Some(17578697),
9383 Some(17578698),
9384 Some(17578699),
9385 Some(17578700),
9386 Some(17578701),
9387 Some(17578702),
9388 Some(17578703)
9389 ]
9390 );
9391 let rp: Vec<_> = it
9392 .next()
9393 .unwrap()
9394 .unwrap()
9395 .reference_positions_full()
9396 .collect();
9397 assert_eq!(
9398 rp,
9399 vec![
9400 Some(17566112),
9401 Some(17566113),
9402 Some(17566114),
9403 Some(17566115),
9404 Some(17566116),
9405 Some(17566117),
9406 Some(17566118),
9407 Some(17577951),
9408 Some(17577952),
9409 Some(17577953),
9410 Some(17577954),
9411 Some(17577955),
9412 Some(17577956),
9413 Some(17577957),
9414 Some(17577958),
9415 Some(17577959),
9416 Some(17577960),
9417 Some(17577961),
9418 Some(17577962),
9419 Some(17577963),
9420 Some(17577964),
9421 Some(17577965),
9422 Some(17577966),
9423 Some(17577967),
9424 Some(17577968),
9425 Some(17577969),
9426 Some(17577970),
9427 Some(17577971),
9428 Some(17577972),
9429 Some(17577973),
9430 Some(17577974),
9431 Some(17577975),
9432 Some(17578686),
9433 Some(17578687),
9434 Some(17578688),
9435 Some(17578689),
9436 Some(17578690),
9437 Some(17578691),
9438 Some(17578692),
9439 Some(17578693),
9440 Some(17578694),
9441 Some(17578695),
9442 Some(17578696),
9443 Some(17578697),
9444 Some(17578698),
9445 Some(17578699),
9446 Some(17578700),
9447 Some(17578701),
9448 Some(17578702),
9449 Some(17578703),
9450 Some(17578704)
9451 ]
9452 );
9453 let rp: Vec<_> = it
9454 .next()
9455 .unwrap()
9456 .unwrap()
9457 .reference_positions_full()
9458 .collect();
9459 assert_eq!(
9460 rp,
9461 vec![
9462 Some(17566113),
9463 Some(17566114),
9464 Some(17566115),
9465 Some(17566116),
9466 Some(17566117),
9467 Some(17566118),
9468 Some(17577951),
9469 Some(17577952),
9470 Some(17577953),
9471 Some(17577954),
9472 Some(17577955),
9473 Some(17577956),
9474 Some(17577957),
9475 Some(17577958),
9476 Some(17577959),
9477 Some(17577960),
9478 Some(17577961),
9479 Some(17577962),
9480 Some(17577963),
9481 Some(17577964),
9482 Some(17577965),
9483 Some(17577966),
9484 Some(17577967),
9485 Some(17577968),
9486 Some(17577969),
9487 Some(17577970),
9488 Some(17577971),
9489 Some(17577972),
9490 Some(17577973),
9491 Some(17577974),
9492 Some(17577975),
9493 Some(17578686),
9494 Some(17578687),
9495 Some(17578688),
9496 Some(17578689),
9497 Some(17578690),
9498 Some(17578691),
9499 Some(17578692),
9500 Some(17578693),
9501 Some(17578694),
9502 Some(17578695),
9503 Some(17578696),
9504 Some(17578697),
9505 Some(17578698),
9506 Some(17578699),
9507 Some(17578700),
9508 Some(17578701),
9509 Some(17578702),
9510 Some(17578703),
9511 Some(17578704),
9512 Some(17578705)
9513 ]
9514 );
9515 let rp: Vec<_> = it
9516 .next()
9517 .unwrap()
9518 .unwrap()
9519 .reference_positions_full()
9520 .collect();
9521 assert_eq!(
9522 rp,
9523 vec![
9524 Some(17566113),
9525 Some(17566114),
9526 Some(17566115),
9527 Some(17566116),
9528 Some(17566117),
9529 Some(17566118),
9530 Some(17577951),
9531 Some(17577952),
9532 Some(17577953),
9533 Some(17577954),
9534 Some(17577955),
9535 Some(17577956),
9536 Some(17577957),
9537 Some(17577958),
9538 Some(17577959),
9539 Some(17577960),
9540 Some(17577961),
9541 Some(17577962),
9542 Some(17577963),
9543 Some(17577964),
9544 Some(17577965),
9545 Some(17577966),
9546 Some(17577967),
9547 Some(17577968),
9548 Some(17577969),
9549 Some(17577970),
9550 Some(17577971),
9551 Some(17577972),
9552 Some(17577973),
9553 Some(17577974),
9554 Some(17577975),
9555 Some(17578686),
9556 Some(17578687),
9557 Some(17578688),
9558 Some(17578689),
9559 Some(17578690),
9560 Some(17578691),
9561 Some(17578692),
9562 Some(17578693),
9563 Some(17578694),
9564 Some(17578695),
9565 Some(17578696),
9566 Some(17578697),
9567 Some(17578698),
9568 Some(17578699),
9569 Some(17578700),
9570 Some(17578701),
9571 Some(17578702),
9572 Some(17578703),
9573 Some(17578704),
9574 Some(17578705)
9575 ]
9576 );
9577 let rp: Vec<_> = it
9578 .next()
9579 .unwrap()
9580 .unwrap()
9581 .reference_positions_full()
9582 .collect();
9583 assert_eq!(
9584 rp,
9585 vec![
9586 None,
9587 Some(17579733),
9588 Some(17579734),
9589 Some(17579735),
9590 Some(17579736),
9591 Some(17579737),
9592 Some(17579738),
9593 Some(17579739),
9594 Some(17579740),
9595 Some(17579741),
9596 Some(17579742),
9597 Some(17579743),
9598 Some(17579744),
9599 Some(17579745),
9600 Some(17579746),
9601 Some(17579747),
9602 Some(17579748),
9603 Some(17579749),
9604 Some(17579750),
9605 Some(17579751),
9606 Some(17579752),
9607 Some(17579753),
9608 Some(17579754),
9609 Some(17579755),
9610 Some(17579756),
9611 Some(17579757),
9612 Some(17579758),
9613 Some(17579759),
9614 Some(17579760),
9615 Some(17579761),
9616 Some(17579762),
9617 Some(17579763),
9618 Some(17579764),
9619 Some(17579765),
9620 Some(17579766),
9621 Some(17579767),
9622 Some(17579768),
9623 Some(17579769),
9624 Some(17579770),
9625 Some(17579771),
9626 Some(17579772),
9627 Some(17579773),
9628 Some(17579774),
9629 Some(17579775),
9630 Some(17579776),
9631 Some(17581244),
9632 Some(17581245),
9633 Some(17581246),
9634 Some(17581247),
9635 Some(17581248),
9636 Some(17581249)
9637 ]
9638 );
9639 let rp: Vec<_> = it
9640 .next()
9641 .unwrap()
9642 .unwrap()
9643 .reference_positions_full()
9644 .collect();
9645 assert_eq!(
9646 rp,
9647 vec![
9648 Some(17581369),
9649 Some(17581370),
9650 Some(17582885),
9651 Some(17582886),
9652 Some(17582887),
9653 Some(17582888),
9654 Some(17582889),
9655 Some(17582890),
9656 Some(17582891),
9657 Some(17582892),
9658 Some(17582893),
9659 Some(17582894),
9660 Some(17582895),
9661 Some(17582896),
9662 Some(17582897),
9663 Some(17582898),
9664 Some(17582899),
9665 Some(17582900),
9666 Some(17582901),
9667 Some(17582902),
9668 Some(17582903),
9669 Some(17582904),
9670 Some(17582905),
9671 Some(17582906),
9672 Some(17582907),
9673 Some(17582908),
9674 Some(17582909),
9675 Some(17582910),
9676 Some(17582911),
9677 Some(17582912),
9678 Some(17582913),
9679 Some(17582914),
9680 Some(17582915),
9681 Some(17582916),
9682 Some(17582917),
9683 Some(17582918),
9684 Some(17582919),
9685 Some(17582920),
9686 Some(17582921),
9687 Some(17582922),
9688 Some(17582923),
9689 Some(17582924),
9690 Some(17582925),
9691 Some(17582926),
9692 Some(17582927),
9693 Some(17582928),
9694 Some(17582929),
9695 Some(17582930),
9696 Some(17582931),
9697 Some(17582932),
9698 Some(17583028)
9699 ]
9700 );
9701 let rp: Vec<_> = it
9702 .next()
9703 .unwrap()
9704 .unwrap()
9705 .reference_positions_full()
9706 .collect();
9707 assert_eq!(
9708 rp,
9709 vec![
9710 Some(17581370),
9711 Some(17582885),
9712 Some(17582886),
9713 Some(17582887),
9714 Some(17582888),
9715 Some(17582889),
9716 Some(17582890),
9717 Some(17582891),
9718 Some(17582892),
9719 Some(17582893),
9720 Some(17582894),
9721 Some(17582895),
9722 Some(17582896),
9723 Some(17582897),
9724 Some(17582898),
9725 Some(17582899),
9726 Some(17582900),
9727 Some(17582901),
9728 Some(17582902),
9729 Some(17582903),
9730 Some(17582904),
9731 Some(17582905),
9732 Some(17582906),
9733 Some(17582907),
9734 Some(17582908),
9735 Some(17582909),
9736 Some(17582910),
9737 Some(17582911),
9738 Some(17582912),
9739 Some(17582913),
9740 Some(17582914),
9741 Some(17582915),
9742 Some(17582916),
9743 Some(17582917),
9744 Some(17582918),
9745 Some(17582919),
9746 Some(17582920),
9747 Some(17582921),
9748 Some(17582922),
9749 Some(17582923),
9750 Some(17582924),
9751 Some(17582925),
9752 Some(17582926),
9753 Some(17582927),
9754 Some(17582928),
9755 Some(17582929),
9756 Some(17582930),
9757 Some(17582931),
9758 Some(17582932),
9759 Some(17583028),
9760 Some(17583029)
9761 ]
9762 );
9763 let rp: Vec<_> = it
9764 .next()
9765 .unwrap()
9766 .unwrap()
9767 .reference_positions_full()
9768 .collect();
9769 assert_eq!(
9770 rp,
9771 vec![
9772 Some(17581370),
9773 Some(17582885),
9774 Some(17582886),
9775 Some(17582887),
9776 Some(17582888),
9777 Some(17582889),
9778 Some(17582890),
9779 Some(17582891),
9780 Some(17582892),
9781 Some(17582893),
9782 Some(17582894),
9783 Some(17582895),
9784 Some(17582896),
9785 Some(17582897),
9786 Some(17582898),
9787 Some(17582899),
9788 Some(17582900),
9789 Some(17582901),
9790 Some(17582902),
9791 Some(17582903),
9792 Some(17582904),
9793 Some(17582905),
9794 Some(17582906),
9795 Some(17582907),
9796 Some(17582908),
9797 Some(17582909),
9798 Some(17582910),
9799 Some(17582911),
9800 Some(17582912),
9801 Some(17582913),
9802 Some(17582914),
9803 Some(17582915),
9804 Some(17582916),
9805 Some(17582917),
9806 Some(17582918),
9807 Some(17582919),
9808 Some(17582920),
9809 Some(17582921),
9810 Some(17582922),
9811 Some(17582923),
9812 Some(17582924),
9813 Some(17582925),
9814 Some(17582926),
9815 Some(17582927),
9816 Some(17582928),
9817 Some(17582929),
9818 Some(17582930),
9819 Some(17582931),
9820 Some(17582932),
9821 Some(17583028),
9822 Some(17583029)
9823 ]
9824 );
9825 let rp: Vec<_> = it
9826 .next()
9827 .unwrap()
9828 .unwrap()
9829 .reference_positions_full()
9830 .collect();
9831 assert_eq!(
9832 rp,
9833 vec![
9834 None,
9835 Some(17582911),
9836 Some(17582912),
9837 Some(17582913),
9838 Some(17582914),
9839 Some(17582915),
9840 Some(17582916),
9841 Some(17582917),
9842 Some(17582918),
9843 Some(17582919),
9844 Some(17582920),
9845 Some(17582921),
9846 Some(17582922),
9847 Some(17582923),
9848 Some(17582924),
9849 Some(17582925),
9850 Some(17582926),
9851 Some(17582927),
9852 Some(17582928),
9853 Some(17582929),
9854 Some(17582930),
9855 Some(17582931),
9856 Some(17582932),
9857 Some(17583028),
9858 Some(17583029),
9859 Some(17583030),
9860 Some(17583031),
9861 Some(17583032),
9862 Some(17583033),
9863 Some(17583034),
9864 Some(17583035),
9865 Some(17583036),
9866 Some(17583037),
9867 Some(17583038),
9868 Some(17583039),
9869 Some(17583040),
9870 Some(17583041),
9871 Some(17583042),
9872 Some(17583043),
9873 Some(17583044),
9874 Some(17583045),
9875 Some(17583046),
9876 Some(17583047),
9877 Some(17583048),
9878 Some(17583049),
9879 Some(17583050),
9880 Some(17583051),
9881 Some(17583052),
9882 Some(17583053),
9883 Some(17583054),
9884 Some(17583055)
9885 ]
9886 );
9887 let rp: Vec<_> = it
9888 .next()
9889 .unwrap()
9890 .unwrap()
9891 .reference_positions_full()
9892 .collect();
9893 assert_eq!(
9894 rp,
9895 vec![
9896 Some(17588621),
9897 Some(17588622),
9898 Some(17588623),
9899 Some(17588624),
9900 Some(17588625),
9901 Some(17588626),
9902 Some(17588627),
9903 Some(17588628),
9904 Some(17588629),
9905 Some(17588630),
9906 Some(17588631),
9907 Some(17588632),
9908 Some(17588633),
9909 Some(17588634),
9910 Some(17588635),
9911 Some(17588636),
9912 Some(17588637),
9913 Some(17588638),
9914 Some(17588639),
9915 Some(17588640),
9916 Some(17588641),
9917 Some(17588642),
9918 Some(17588643),
9919 Some(17588644),
9920 Some(17588645),
9921 Some(17588646),
9922 Some(17588647),
9923 Some(17588648),
9924 Some(17588649),
9925 Some(17588650),
9926 Some(17588651),
9927 Some(17588652),
9928 Some(17588653),
9929 Some(17588654),
9930 Some(17588655),
9931 Some(17588656),
9932 Some(17588657),
9933 Some(17589196),
9934 Some(17589197),
9935 Some(17589198),
9936 Some(17589199),
9937 Some(17589200),
9938 Some(17589201),
9939 Some(17589202),
9940 Some(17589203),
9941 Some(17589204),
9942 Some(17589205),
9943 Some(17589206),
9944 Some(17589207),
9945 Some(17589208),
9946 None
9947 ]
9948 );
9949 let rp: Vec<_> = it
9950 .next()
9951 .unwrap()
9952 .unwrap()
9953 .reference_positions_full()
9954 .collect();
9955 assert_eq!(
9956 rp,
9957 vec![
9958 Some(17588621),
9959 Some(17588622),
9960 Some(17588623),
9961 Some(17588624),
9962 Some(17588625),
9963 Some(17588626),
9964 Some(17588627),
9965 Some(17588628),
9966 Some(17588629),
9967 Some(17588630),
9968 Some(17588631),
9969 Some(17588632),
9970 Some(17588633),
9971 Some(17588634),
9972 Some(17588635),
9973 Some(17588636),
9974 Some(17588637),
9975 Some(17588638),
9976 Some(17588639),
9977 Some(17588640),
9978 Some(17588641),
9979 Some(17588642),
9980 Some(17588643),
9981 Some(17588644),
9982 Some(17588645),
9983 Some(17588646),
9984 Some(17588647),
9985 Some(17588648),
9986 Some(17588649),
9987 Some(17588650),
9988 Some(17588651),
9989 Some(17588652),
9990 Some(17588653),
9991 Some(17588654),
9992 Some(17588655),
9993 Some(17588656),
9994 Some(17588657),
9995 Some(17589196),
9996 Some(17589197),
9997 Some(17589198),
9998 Some(17589199),
9999 Some(17589200),
10000 Some(17589201),
10001 Some(17589202),
10002 Some(17589203),
10003 Some(17589204),
10004 Some(17589205),
10005 Some(17589206),
10006 Some(17589207),
10007 Some(17589208),
10008 None
10009 ]
10010 );
10011 let rp: Vec<_> = it
10012 .next()
10013 .unwrap()
10014 .unwrap()
10015 .reference_positions_full()
10016 .collect();
10017 assert_eq!(
10018 rp,
10019 vec![
10020 Some(17588621),
10021 Some(17588622),
10022 Some(17588623),
10023 Some(17588624),
10024 Some(17588625),
10025 Some(17588626),
10026 Some(17588627),
10027 Some(17588628),
10028 Some(17588629),
10029 Some(17588630),
10030 Some(17588631),
10031 Some(17588632),
10032 Some(17588633),
10033 Some(17588634),
10034 Some(17588635),
10035 Some(17588636),
10036 Some(17588637),
10037 Some(17588638),
10038 Some(17588639),
10039 Some(17588640),
10040 Some(17588641),
10041 Some(17588642),
10042 Some(17588643),
10043 Some(17588644),
10044 Some(17588645),
10045 Some(17588646),
10046 Some(17588647),
10047 Some(17588648),
10048 Some(17588649),
10049 Some(17588650),
10050 Some(17588651),
10051 Some(17588652),
10052 Some(17588653),
10053 Some(17588654),
10054 Some(17588655),
10055 Some(17588656),
10056 Some(17588657),
10057 Some(17589196),
10058 Some(17589197),
10059 Some(17589198),
10060 Some(17589199),
10061 Some(17589200),
10062 Some(17589201),
10063 Some(17589202),
10064 Some(17589203),
10065 Some(17589204),
10066 Some(17589205),
10067 Some(17589206),
10068 Some(17589207),
10069 Some(17589208),
10070 None
10071 ]
10072 );
10073 let rp: Vec<_> = it
10074 .next()
10075 .unwrap()
10076 .unwrap()
10077 .reference_positions_full()
10078 .collect();
10079 assert_eq!(
10080 rp,
10081 vec![
10082 None,
10083 Some(17591770),
10084 Some(17591771),
10085 Some(17591772),
10086 Some(17591773),
10087 Some(17591774),
10088 Some(17591775),
10089 Some(17591776),
10090 Some(17591777),
10091 Some(17591778),
10092 Some(17591779),
10093 Some(17591780),
10094 Some(17591781),
10095 Some(17591782),
10096 Some(17591783),
10097 Some(17591784),
10098 Some(17591785),
10099 Some(17591786),
10100 Some(17591787),
10101 Some(17591788),
10102 Some(17591789),
10103 Some(17591790),
10104 Some(17591791),
10105 Some(17591792),
10106 Some(17591793),
10107 Some(17591794),
10108 Some(17591796),
10109 Some(17591797),
10110 Some(17591798),
10111 Some(17591799),
10112 Some(17591800),
10113 Some(17591801),
10114 Some(17591802),
10115 Some(17591803),
10116 Some(17591804),
10117 Some(17591805),
10118 Some(17591806),
10119 Some(17591807),
10120 Some(17591808),
10121 Some(17591809),
10122 Some(17591810),
10123 Some(17591811),
10124 Some(17591812),
10125 Some(17591813),
10126 Some(17591814),
10127 Some(17591815),
10128 Some(17591816),
10129 Some(17591817),
10130 Some(17591818),
10131 Some(17591819),
10132 Some(17591820)
10133 ]
10134 );
10135 let rp: Vec<_> = it
10136 .next()
10137 .unwrap()
10138 .unwrap()
10139 .reference_positions_full()
10140 .collect();
10141 assert_eq!(
10142 rp,
10143 vec![
10144 Some(17593855),
10145 Some(17593856),
10146 Some(17593857),
10147 Some(17593858),
10148 Some(17593859),
10149 Some(17593860),
10150 Some(17593861),
10151 Some(17593862),
10152 Some(17593863),
10153 Some(17593864),
10154 Some(17593865),
10155 Some(17593866),
10156 Some(17593867),
10157 Some(17593868),
10158 Some(17593869),
10159 Some(17593870),
10160 Some(17593871),
10161 Some(17593872),
10162 Some(17593873),
10163 Some(17593874),
10164 Some(17593875),
10165 Some(17593876),
10166 Some(17593877),
10167 Some(17593878),
10168 Some(17593880),
10169 Some(17593881),
10170 Some(17593882),
10171 Some(17593883),
10172 Some(17593884),
10173 Some(17593885),
10174 Some(17593886),
10175 Some(17593887),
10176 Some(17593888),
10177 Some(17593889),
10178 Some(17593890),
10179 Some(17593891),
10180 Some(17593892),
10181 Some(17593893),
10182 Some(17593894),
10183 Some(17593895),
10184 Some(17593896),
10185 Some(17593897),
10186 Some(17593898),
10187 Some(17593899),
10188 Some(17593900),
10189 Some(17593901),
10190 Some(17593902),
10191 Some(17593903),
10192 None,
10193 None,
10194 None
10195 ]
10196 );
10197 let rp: Vec<_> = it
10198 .next()
10199 .unwrap()
10200 .unwrap()
10201 .reference_positions_full()
10202 .collect();
10203 assert_eq!(
10204 rp,
10205 vec![
10206 Some(17593863),
10207 Some(17593864),
10208 Some(17593865),
10209 Some(17593866),
10210 Some(17593867),
10211 Some(17593868),
10212 Some(17593869),
10213 Some(17593870),
10214 Some(17593871),
10215 Some(17593872),
10216 Some(17593873),
10217 Some(17593874),
10218 Some(17593875),
10219 Some(17593876),
10220 Some(17593877),
10221 Some(17593878),
10222 Some(17593880),
10223 Some(17593881),
10224 Some(17593882),
10225 Some(17593883),
10226 Some(17593884),
10227 Some(17593885),
10228 Some(17593886),
10229 Some(17593887),
10230 Some(17593888),
10231 Some(17593889),
10232 Some(17593890),
10233 Some(17593891),
10234 Some(17593892),
10235 Some(17593893),
10236 Some(17593894),
10237 Some(17593895),
10238 Some(17593896),
10239 Some(17593897),
10240 Some(17593898),
10241 Some(17593899),
10242 Some(17593900),
10243 Some(17593901),
10244 Some(17593902),
10245 Some(17593903),
10246 Some(17593904),
10247 Some(17593905),
10248 Some(17593906),
10249 Some(17593907),
10250 None,
10251 None,
10252 None,
10253 None,
10254 None,
10255 None,
10256 None
10257 ]
10258 );
10259 let rp: Vec<_> = it
10260 .next()
10261 .unwrap()
10262 .unwrap()
10263 .reference_positions_full()
10264 .collect();
10265 assert_eq!(
10266 rp,
10267 vec![
10268 None,
10269 None,
10270 None,
10271 None,
10272 None,
10273 None,
10274 None,
10275 None,
10276 None,
10277 None,
10278 None,
10279 Some(17596476),
10280 Some(17596477),
10281 Some(17596478),
10282 Some(17596479),
10283 Some(17596480),
10284 Some(17596481),
10285 Some(17596482),
10286 None,
10287 Some(17596483),
10288 Some(17596484),
10289 Some(17596485),
10290 Some(17596486),
10291 Some(17596487),
10292 Some(17596488),
10293 Some(17596489),
10294 Some(17596490),
10295 Some(17596491),
10296 Some(17596492),
10297 Some(17596493),
10298 Some(17596494),
10299 Some(17596495),
10300 Some(17596496),
10301 Some(17596497),
10302 Some(17596498),
10303 Some(17596499),
10304 Some(17596500),
10305 Some(17596501),
10306 Some(17596502),
10307 Some(17596503),
10308 Some(17596504),
10309 Some(17596505),
10310 Some(17596506),
10311 Some(17596507),
10312 Some(17596508),
10313 Some(17596509),
10314 Some(17596510),
10315 Some(17596511),
10316 Some(17596512),
10317 Some(17596513),
10318 Some(17596514)
10319 ]
10320 );
10321 let rp: Vec<_> = it
10322 .next()
10323 .unwrap()
10324 .unwrap()
10325 .reference_positions_full()
10326 .collect();
10327 assert_eq!(
10328 rp,
10329 vec![
10330 None,
10331 None,
10332 None,
10333 None,
10334 None,
10335 Some(17624012),
10336 Some(17624013),
10337 Some(17624014),
10338 Some(17624015),
10339 Some(17624016),
10340 Some(17624017),
10341 Some(17624018),
10342 Some(17624019),
10343 Some(17624020),
10344 Some(17625913),
10345 Some(17625914),
10346 Some(17625915),
10347 Some(17625916),
10348 Some(17625917),
10349 Some(17625918),
10350 Some(17625919),
10351 Some(17625920),
10352 Some(17625921),
10353 Some(17625922),
10354 Some(17625923),
10355 Some(17625924),
10356 Some(17625925),
10357 Some(17625926),
10358 Some(17625927),
10359 Some(17625928),
10360 Some(17625929),
10361 Some(17625930),
10362 Some(17625931),
10363 Some(17625932),
10364 Some(17625933),
10365 Some(17625934),
10366 Some(17625935),
10367 Some(17625936),
10368 Some(17625937),
10369 Some(17625938),
10370 Some(17625939),
10371 Some(17625940),
10372 Some(17625941),
10373 Some(17625942),
10374 Some(17625943),
10375 Some(17625944),
10376 Some(17625945),
10377 Some(17625946),
10378 Some(17625947),
10379 Some(17625948),
10380 Some(17625949)
10381 ]
10382 );
10383 let rp: Vec<_> = it
10384 .next()
10385 .unwrap()
10386 .unwrap()
10387 .reference_positions_full()
10388 .collect();
10389 assert_eq!(
10390 rp,
10391 vec![
10392 None,
10393 None,
10394 Some(17624012),
10395 Some(17624013),
10396 Some(17624014),
10397 Some(17624015),
10398 Some(17624016),
10399 Some(17624017),
10400 Some(17624018),
10401 Some(17624019),
10402 Some(17624020),
10403 Some(17625913),
10404 Some(17625914),
10405 Some(17625915),
10406 Some(17625916),
10407 Some(17625917),
10408 Some(17625918),
10409 Some(17625919),
10410 Some(17625920),
10411 Some(17625921),
10412 Some(17625922),
10413 Some(17625923),
10414 Some(17625924),
10415 Some(17625925),
10416 Some(17625926),
10417 Some(17625927),
10418 Some(17625928),
10419 Some(17625929),
10420 Some(17625930),
10421 Some(17625931),
10422 Some(17625932),
10423 Some(17625933),
10424 Some(17625934),
10425 Some(17625935),
10426 Some(17625936),
10427 Some(17625937),
10428 Some(17625938),
10429 Some(17625939),
10430 Some(17625940),
10431 Some(17625941),
10432 Some(17625942),
10433 Some(17625943),
10434 Some(17625944),
10435 Some(17625945),
10436 Some(17625946),
10437 Some(17625947),
10438 Some(17625948),
10439 Some(17625949),
10440 Some(17625950),
10441 Some(17625951),
10442 Some(17625952)
10443 ]
10444 );
10445 let rp: Vec<_> = it
10446 .next()
10447 .unwrap()
10448 .unwrap()
10449 .reference_positions_full()
10450 .collect();
10451 assert_eq!(
10452 rp,
10453 vec![
10454 None,
10455 Some(31796700),
10456 Some(31796701),
10457 Some(31796702),
10458 Some(31796703),
10459 Some(31796704),
10460 Some(31796705),
10461 Some(31796706),
10462 Some(31796710),
10463 Some(31796711),
10464 Some(31796712),
10465 Some(31796713),
10466 Some(31796714),
10467 Some(31796715),
10468 Some(31796716),
10469 Some(31796717),
10470 Some(31796718),
10471 Some(31796719),
10472 Some(31796720),
10473 Some(31796721),
10474 Some(31796722),
10475 Some(31796723),
10476 Some(31796724),
10477 Some(31796725),
10478 Some(31796726),
10479 Some(31796727),
10480 Some(31796728),
10481 Some(31799014),
10482 Some(31799015),
10483 Some(31799016),
10484 Some(31799017),
10485 Some(31799018),
10486 Some(31799019),
10487 Some(31799020),
10488 Some(31799021),
10489 Some(31799022),
10490 Some(31799023),
10491 Some(31799024),
10492 Some(31799025),
10493 Some(31799026),
10494 Some(31799027),
10495 Some(31799028),
10496 Some(31799029),
10497 Some(31799030),
10498 Some(31799031),
10499 Some(31799032),
10500 Some(31799033),
10501 Some(31799034),
10502 Some(31799035),
10503 Some(31799036),
10504 Some(31799037)
10505 ]
10506 );
10507 let rp: Vec<_> = it
10508 .next()
10509 .unwrap()
10510 .unwrap()
10511 .reference_positions_full()
10512 .collect();
10513 assert_eq!(
10514 rp,
10515 vec![
10516 Some(36722692),
10517 Some(36722693),
10518 Some(36722694),
10519 Some(36722695),
10520 Some(36722696),
10521 Some(36722697),
10522 Some(36722698),
10523 Some(36722699),
10524 Some(36722700),
10525 Some(36722701),
10526 Some(36722702),
10527 Some(36722703),
10528 Some(36722704),
10529 Some(36722705),
10530 Some(36723505),
10531 Some(36723506),
10532 Some(36723507),
10533 Some(36723508),
10534 Some(36723509),
10535 Some(36723510),
10536 Some(36723511),
10537 Some(36723512),
10538 Some(36723513),
10539 Some(36723514),
10540 Some(36723515),
10541 Some(36723516),
10542 Some(36723517),
10543 Some(36723518),
10544 Some(36723519),
10545 Some(36723520),
10546 Some(36723521),
10547 Some(36723522),
10548 Some(36723523),
10549 Some(36723524),
10550 Some(36723525),
10551 Some(36723526),
10552 Some(36723527),
10553 Some(36723528),
10554 Some(36723529),
10555 Some(36723530),
10556 Some(36723531),
10557 Some(36723532),
10558 Some(36737414),
10559 Some(36737415),
10560 Some(36737416),
10561 Some(36737417),
10562 Some(36737418),
10563 Some(36737419),
10564 Some(36737420),
10565 None,
10566 None
10567 ]
10568 );
10569 let rp: Vec<_> = it
10570 .next()
10571 .unwrap()
10572 .unwrap()
10573 .reference_positions_full()
10574 .collect();
10575 assert_eq!(
10576 rp,
10577 vec![
10578 None,
10579 None,
10580 None,
10581 None,
10582 Some(44587963),
10583 Some(44587964),
10584 Some(44587965),
10585 Some(44587966),
10586 Some(44587967),
10587 Some(44587968),
10588 Some(44587969),
10589 Some(44587970),
10590 Some(44587971),
10591 Some(44587972),
10592 Some(44587973),
10593 Some(44587974),
10594 Some(44587975),
10595 Some(44587976),
10596 Some(44587977),
10597 Some(44587978),
10598 Some(44587979),
10599 Some(44587980),
10600 Some(44587981),
10601 Some(44587982),
10602 Some(44587983),
10603 Some(44589680),
10604 Some(44589681),
10605 Some(44589682),
10606 Some(44589683),
10607 Some(44589684),
10608 Some(44589685),
10609 Some(44589686),
10610 Some(44589687),
10611 Some(44589688),
10612 Some(44589689),
10613 Some(44589690),
10614 Some(44589691),
10615 Some(44589692),
10616 Some(44589693),
10617 Some(44589694),
10618 Some(44589695),
10619 Some(44589696),
10620 Some(44589697),
10621 Some(44589698),
10622 Some(44589699),
10623 Some(44589700),
10624 Some(44589701),
10625 Some(44589702),
10626 Some(44592034),
10627 Some(44592035),
10628 Some(44592036)
10629 ]
10630 );
10631 }
10632
10633 #[test]
10634 fn test_reference_start_end() {
10635 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
10636 let mut it = bam.records();
10637 let read = it.next().unwrap().unwrap();
10638 assert_eq!(read.reference_start(), 16050676);
10639 assert_eq!(read.reference_end(), 16050721);
10640 let read = it.next().unwrap().unwrap();
10641 assert_eq!(read.reference_start(), 16096878);
10642 assert_eq!(read.reference_end(), 16096931);
10643 let read = it.next().unwrap().unwrap();
10644 assert_eq!(read.reference_start(), 16097145);
10645 assert_eq!(read.reference_end(), 16097198);
10646 let read = it.next().unwrap().unwrap();
10647 assert_eq!(read.reference_start(), 16117350);
10648 assert_eq!(read.reference_end(), 16117401);
10649 let read = it.next().unwrap().unwrap();
10650 assert_eq!(read.reference_start(), 16118483);
10651 assert_eq!(read.reference_end(), 16118534);
10652 let read = it.next().unwrap().unwrap();
10653 assert_eq!(read.reference_start(), 16118499);
10654 assert_eq!(read.reference_end(), 16118550);
10655 let read = it.next().unwrap().unwrap();
10656 assert_eq!(read.reference_start(), 16118499);
10657 assert_eq!(read.reference_end(), 16118550);
10658 let read = it.next().unwrap().unwrap();
10659 assert_eq!(read.reference_start(), 16118499);
10660 assert_eq!(read.reference_end(), 16118550);
10661 let read = it.next().unwrap().unwrap();
10662 assert_eq!(read.reference_start(), 16123411);
10663 assert_eq!(read.reference_end(), 16123462);
10664 let read = it.next().unwrap().unwrap();
10665 assert_eq!(read.reference_start(), 16123417);
10666 assert_eq!(read.reference_end(), 16123462);
10667 let read = it.next().unwrap().unwrap();
10668 assert_eq!(read.reference_start(), 16165860);
10669 assert_eq!(read.reference_end(), 16165901);
10670 let read = it.next().unwrap().unwrap();
10671 assert_eq!(read.reference_start(), 16180871);
10672 assert_eq!(read.reference_end(), 16180922);
10673 let read = it.next().unwrap().unwrap();
10674 assert_eq!(read.reference_start(), 16189705);
10675 assert_eq!(read.reference_end(), 16189756);
10676 let read = it.next().unwrap().unwrap();
10677 assert_eq!(read.reference_start(), 16231271);
10678 assert_eq!(read.reference_end(), 16231322);
10679 let read = it.next().unwrap().unwrap();
10680 assert_eq!(read.reference_start(), 16237657);
10681 assert_eq!(read.reference_end(), 16237708);
10682 let read = it.next().unwrap().unwrap();
10683 assert_eq!(read.reference_start(), 16255012);
10684 assert_eq!(read.reference_end(), 16255054);
10685 let read = it.next().unwrap().unwrap();
10686 assert_eq!(read.reference_start(), 16255391);
10687 assert_eq!(read.reference_end(), 16255442);
10688 let read = it.next().unwrap().unwrap();
10689 assert_eq!(read.reference_start(), 16255392);
10690 assert_eq!(read.reference_end(), 16255442);
10691 let read = it.next().unwrap().unwrap();
10692 assert_eq!(read.reference_start(), 16256084);
10693 assert_eq!(read.reference_end(), 16256129);
10694 let read = it.next().unwrap().unwrap();
10695 assert_eq!(read.reference_start(), 16256224);
10696 assert_eq!(read.reference_end(), 16256272);
10697 let read = it.next().unwrap().unwrap();
10698 assert_eq!(read.reference_start(), 16325199);
10699 assert_eq!(read.reference_end(), 16325241);
10700 let read = it.next().unwrap().unwrap();
10701 assert_eq!(read.reference_start(), 16352865);
10702 assert_eq!(read.reference_end(), 16352903);
10703 let read = it.next().unwrap().unwrap();
10704 assert_eq!(read.reference_start(), 16352968);
10705 assert_eq!(read.reference_end(), 16353012);
10706 let read = it.next().unwrap().unwrap();
10707 assert_eq!(read.reference_start(), 16414998);
10708 assert_eq!(read.reference_end(), 16415044);
10709 let read = it.next().unwrap().unwrap();
10710 assert_eq!(read.reference_start(), 17031591);
10711 assert_eq!(read.reference_end(), 17031638);
10712 let read = it.next().unwrap().unwrap();
10713 assert_eq!(read.reference_start(), 17057382);
10714 assert_eq!(read.reference_end(), 17057432);
10715 let read = it.next().unwrap().unwrap();
10716 assert_eq!(read.reference_start(), 17092766);
10717 assert_eq!(read.reference_end(), 17095000);
10718 let read = it.next().unwrap().unwrap();
10719 assert_eq!(read.reference_start(), 17092782);
10720 assert_eq!(read.reference_end(), 17095016);
10721 let read = it.next().unwrap().unwrap();
10722 assert_eq!(read.reference_start(), 17092782);
10723 assert_eq!(read.reference_end(), 17095016);
10724 let read = it.next().unwrap().unwrap();
10725 assert_eq!(read.reference_start(), 17137287);
10726 assert_eq!(read.reference_end(), 17137320);
10727 let read = it.next().unwrap().unwrap();
10728 assert_eq!(read.reference_start(), 17306238);
10729 assert_eq!(read.reference_end(), 17306286);
10730 let read = it.next().unwrap().unwrap();
10731 assert_eq!(read.reference_start(), 17561868);
10732 assert_eq!(read.reference_end(), 17561913);
10733 let read = it.next().unwrap().unwrap();
10734 assert_eq!(read.reference_start(), 17566078);
10735 assert_eq!(read.reference_end(), 17577961);
10736 let read = it.next().unwrap().unwrap();
10737 assert_eq!(read.reference_start(), 17566108);
10738 assert_eq!(read.reference_end(), 17578701);
10739 let read = it.next().unwrap().unwrap();
10740 assert_eq!(read.reference_start(), 17566111);
10741 assert_eq!(read.reference_end(), 17578704);
10742 let read = it.next().unwrap().unwrap();
10743 assert_eq!(read.reference_start(), 17566111);
10744 assert_eq!(read.reference_end(), 17578704);
10745 let read = it.next().unwrap().unwrap();
10746 assert_eq!(read.reference_start(), 17566111);
10747 assert_eq!(read.reference_end(), 17578704);
10748 let read = it.next().unwrap().unwrap();
10749 assert_eq!(read.reference_start(), 17566111);
10750 assert_eq!(read.reference_end(), 17578704);
10751 let read = it.next().unwrap().unwrap();
10752 assert_eq!(read.reference_start(), 17566112);
10753 assert_eq!(read.reference_end(), 17578705);
10754 let read = it.next().unwrap().unwrap();
10755 assert_eq!(read.reference_start(), 17566113);
10756 assert_eq!(read.reference_end(), 17578706);
10757 let read = it.next().unwrap().unwrap();
10758 assert_eq!(read.reference_start(), 17566113);
10759 assert_eq!(read.reference_end(), 17578706);
10760 let read = it.next().unwrap().unwrap();
10761 assert_eq!(read.reference_start(), 17579733);
10762 assert_eq!(read.reference_end(), 17581250);
10763 let read = it.next().unwrap().unwrap();
10764 assert_eq!(read.reference_start(), 17581369);
10765 assert_eq!(read.reference_end(), 17583029);
10766 let read = it.next().unwrap().unwrap();
10767 assert_eq!(read.reference_start(), 17581370);
10768 assert_eq!(read.reference_end(), 17583030);
10769 let read = it.next().unwrap().unwrap();
10770 assert_eq!(read.reference_start(), 17581370);
10771 assert_eq!(read.reference_end(), 17583030);
10772 let read = it.next().unwrap().unwrap();
10773 assert_eq!(read.reference_start(), 17582911);
10774 assert_eq!(read.reference_end(), 17583056);
10775 let read = it.next().unwrap().unwrap();
10776 assert_eq!(read.reference_start(), 17588621);
10777 assert_eq!(read.reference_end(), 17589209);
10778 let read = it.next().unwrap().unwrap();
10779 assert_eq!(read.reference_start(), 17588621);
10780 assert_eq!(read.reference_end(), 17589209);
10781 let read = it.next().unwrap().unwrap();
10782 assert_eq!(read.reference_start(), 17588621);
10783 assert_eq!(read.reference_end(), 17589209);
10784 let read = it.next().unwrap().unwrap();
10785 assert_eq!(read.reference_start(), 17591770);
10786 assert_eq!(read.reference_end(), 17591821);
10787 let read = it.next().unwrap().unwrap();
10788 assert_eq!(read.reference_start(), 17593855);
10789 assert_eq!(read.reference_end(), 17593904);
10790 let read = it.next().unwrap().unwrap();
10791 assert_eq!(read.reference_start(), 17593863);
10792 assert_eq!(read.reference_end(), 17593908);
10793 let read = it.next().unwrap().unwrap();
10794 assert_eq!(read.reference_start(), 17596476);
10795 assert_eq!(read.reference_end(), 17596515);
10796 let read = it.next().unwrap().unwrap();
10797 assert_eq!(read.reference_start(), 17624012);
10798 assert_eq!(read.reference_end(), 17625950);
10799 let read = it.next().unwrap().unwrap();
10800 assert_eq!(read.reference_start(), 17624012);
10801 assert_eq!(read.reference_end(), 17625953);
10802 let read = it.next().unwrap().unwrap();
10803 assert_eq!(read.reference_start(), 31796700);
10804 assert_eq!(read.reference_end(), 31799038);
10805 let read = it.next().unwrap().unwrap();
10806 assert_eq!(read.reference_start(), 36722692);
10807 assert_eq!(read.reference_end(), 36737421);
10808 let read = it.next().unwrap().unwrap();
10809 assert_eq!(read.reference_start(), 44587963);
10810 assert_eq!(read.reference_end(), 44592037);
10811 }
10812
10813 #[test]
10814 fn test_infer_seq_len() {
10815 use std::convert::TryFrom;
10816 let mut bam = bam::Reader::from_path("./test/test_spliced_reads.bam").unwrap();
10817 for read in bam.records() {
10818 let read = read.unwrap();
10819 assert_eq!(read.seq_len_from_cigar(false), 51);
10820 assert_eq!(read.seq_len_from_cigar(true), 51);
10821 }
10822
10823 let mut read = bam::Record::new();
10824 for (input_cigar, supposed_length_wo_hard_clip, supposed_length_with_hard_clip) in &[
10825 ("40M", 40, 40),
10826 ("40=", 40, 40),
10827 ("40X", 40, 40),
10828 ("20M5I20M", 45, 45),
10829 ("20M5D20M", 40, 40),
10830 ("5H35M", 35, 40),
10831 ("5S35M", 40, 40),
10832 ("35M5H", 35, 40),
10833 ("35M5S", 40, 40),
10834 ("", 0, 0),
10835 ] {
10836 read.set(
10837 b"test",
10838 Some(&CigarString::try_from(*input_cigar).unwrap()),
10839 b"agtc",
10840 b"BBBB",
10841 );
10842 assert_eq!(
10843 &read.seq_len_from_cigar(false),
10844 supposed_length_wo_hard_clip
10845 );
10846 assert_eq!(
10847 &read.seq_len_from_cigar(true),
10848 supposed_length_with_hard_clip
10849 );
10850 }
10851 }
10852}