def test_interleave(self): 'It interleaves two iterators with paired reads' file1 = os.path.join(TEST_DATA_DIR, 'pairend1.sfastq') file2 = os.path.join(TEST_DATA_DIR, 'pairend2.sfastq') fwd_seqs = list(read_seqs([open(file1)], 'fastq')) rev_seqs = list(read_seqs([open(file2)], 'fastq')) try: list(interleave_pairs(fwd_seqs, rev_seqs)) self.fail('InterleaveError expected') except InterleaveError: pass # we skip the tests seqs = list(interleave_pairs(fwd_seqs, rev_seqs, skip_checks=True)) assert len(seqs) == 8 file1 = os.path.join(TEST_DATA_DIR, 'pairend1.sfastq') file2 = os.path.join(TEST_DATA_DIR, 'pairend1b.sfastq') fwd_seqs = read_seqs([open(file1)], 'fastq') rev_seqs = read_seqs([open(file2)], 'fastq') seqs = list(interleave_pairs(fwd_seqs, rev_seqs)) assert len(seqs) == 8
def test_deinterleave(self): 'It de-interleaves an iterator of alternating fwd and rev reads' fhand1 = os.path.join(TEST_DATA_DIR, 'pairend1.sfastq') fhand2 = os.path.join(TEST_DATA_DIR, 'pairend1b.sfastq') fwd_seqs = read_seqs([open(fhand1)], 'fastq') rev_seqs = read_seqs([open(fhand2)], 'fastq') seqs = interleave_pairs(fwd_seqs, rev_seqs) out_fhand1 = StringIO() out_fhand2 = StringIO() out_format = 'fastq' deinterleave_pairs(seqs, out_fhand1, out_fhand2, out_format) result1 = out_fhand1.getvalue() result2 = out_fhand2.getvalue() assert result1.strip() == open(fhand1).read().strip() assert result2.strip() == open(fhand2).read().strip()