def test_two_pairs_unordered(self): self.fastq1 = StringIO("""\ @A:B:C X:Y ACGT + QUAL @A:B:E X:Y AAGT + QUAL """) self.fastq2 = StringIO("""\ @A:B:E Q:R TAGA + LAUQ @A:B:C Q:R TTGG + LAUQ """) expected_reads = [ ("A:B:C", ("X:Y", "ACGT", "QUAL"), ("Q:R", "TTGG", "LAUQ")), ("A:B:E", ("X:Y", "AAGT", "QUAL"), ("Q:R", "TAGA", "LAUQ")) ] reader = FastqReader(self.fastq1, self.fastq2) reads = list(reader) self.assertEqual(expected_reads, reads)
def align_untrimmed_reads(fastq): v3loop_ref = extract_v3loop_ref() score_counts = Counter() for _, (_, nucs, _) in FastqReader.get_reads(fastq): _, _, score = align_it(v3loop_ref, nucs, GAP_OPEN_COST, GAP_EXTEND_COST, USE_TERMINAL_COST) score_counts[score] += 1 return score_counts
def align_reads(fastq1, fastq2): v3loop_ref = extract_v3loop_ref() reader = FastqReader(fastq1, fastq2) merged_reads = merge_reads(reader) score_counts = Counter() for _ in trim_reads(merged_reads, v3loop_ref, score_counts): pass return score_counts
def test_unmatched_pair(self): self.fastq1 = StringIO("""\ @A:B:C X:Y ACGT + QUAL """) self.fastq2 = StringIO("""\ @A:B:X Q:R TTGG + LAUQ """) reader = FastqReader(self.fastq1, self.fastq2) with self.assertRaisesRegex(FastqError, 'No match for read A:B:C.'): list(reader)
def test_extra_description(self): self.fastq1 = StringIO("""\ @A:B:C X:Y Z ACGT + QUAL """) self.fastq2 = StringIO("""\ @A:B:C Q:R TTGG + LAUQ """) expected_reads = [("A:B:C", ("X:Y Z", "ACGT", "QUAL"), ("Q:R", "TTGG", "LAUQ"))] reader = FastqReader(self.fastq1, self.fastq2) reads = list(reader) self.assertEqual(expected_reads, reads)