def test_load(self): def compare(read, values): assert read.qname == values[0] assert read.flag == values[1] assert read.ref == values[2] assert read.pos == values[3] assert read.mapq == values[4] assert np.array_equal(read.cigar, values[5]) assert read.rnext == values[6] assert read.pnext == values[7] assert read.tlen == values[8] assert read.seq == values[9] assert read.qual == values[10] assert len(read.tags) == values[11] assert read.strand == values[12] reads = Reads() reads.load(self.sam1_file) compare(reads[0], [ 'SRR038105.1', 0, 'chrXI', 128390, 35, [(0, 15)], -1, -1, 0, 'GATATGATGGATTTG', 'FDFFFFFFFFFFFCF', 9, 1 ]) # SRR038105.1000167 0 chrXIV 703158 42 15M * 0 0 TACGGTATTGGTCGG FFFFCFFFFFFFFCF AS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:15 YT:Z:UU res = reads.get_read_by_qname('SRR038105.1000167') compare(res, [ 'SRR038105.1000167', 0, 'chrXIV', 703158, 42, [(0, 15)], -1, -1, 0, 'TACGGTATTGGTCGG', 'FFFFCFFFFFFFFCF', 8, 1 ]) # SRR038105.1000320 0 chrXVI 577162 35 15M * 0 0 TTGATAAAATAGTCC <<@FF<FFFFAFAFA AS:i:0 XS:i:-5 XN:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:15 YT:Z:UU res = reads.get_read_by_qname('SRR038105.1000320') compare(res, [ 'SRR038105.1000320', 0, 'chrXVI', 577162, 35, [(0, 15)], -1, -1, 0, 'TTGATAAAATAGTCC', '<<@FF<FFFFAFAFA', 9, 1 ]) # check unpaired right # SRR038105.1000002 16 chrIV 203242 42 16M * 0 0 ACCCATTATTTCTCGA IIIIIFIICIFIIIII AS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:16 YT:Z:UU res = reads.get_read_by_qname('SRR038105.1000002') assert res is None # check unpaired left # SRR038105.1000011 16 chrIV 526796 42 16M * 0 0 GGTGAATTAGAAGATA FFFFFFFFFFFFFFFF AS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:16 YT:Z:UU res = reads.get_read_by_qname('SRR038105.1000011') compare(res, [ 'SRR038105.1000011', 16, 'chrIV', 526796, 42, [(0, 16)], -1, -1, 0, 'GGTGAATTAGAAGATA', 'FFFFFFFFFFFFFFFF', 8, -1 ]) reads.close()
class TestBWAFragmentMappedReads: def setup_method(self, method): self.dir = os.path.dirname(os.path.realpath(__file__)) sam1_file = self.dir + "/test_seq/test_bwa1.sam" sam2_file = self.dir + "/test_seq/test_bwa2.sam" self.reads1 = Reads() self.reads2 = Reads() self.reads1.load(sam1_file) self.reads2.load(sam2_file) self.reads1.filter_unmapped() self.reads2.filter_unmapped() self.genome = Genome.from_folder(self.dir + "/test_seq/dmel_genome/") self.pairs = FragmentMappedReadPairs() regions = self.genome.get_regions('MboI') self.pairs.load(self.reads1, self.reads2, regions=regions) regions.close() def teardown_method(self, method): self.reads1.close() self.reads2.close() self.genome.close() self.pairs.close() def test_loaded_bwamem_pairs(self): assert self.pairs._single_count == 896 assert self.pairs._pair_count == 515 def test_pcr_duplicate_filter(self): mask = self.pairs.add_mask_description( 'pcr_duplicate', 'Mask suspected PCR duplicates.') pcr_duplicate_filter = PCRDuplicateFilter(pairs=self.pairs, threshold=3) assert len(self.pairs) == 515 self.pairs.filter(pcr_duplicate_filter) assert len(self.pairs) == 512
def test_build_from_scratch(self): reads = Reads() reads.load(self.sam1_file) assert len(reads) == 271 reads.close()