def test_id_given(self): self.tra.id = 'thing-1' bpp_list = _convert_tool_row( _parse_vcf_record(self.tra)[0], SUPPORTED_TOOL.VCF, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual('vcf-thing-1', bpp.data[COLUMNS.tracking_id])
def test_N_id(self): self.tra.id = 'N' bpp_list = _convert_tool_row( _parse_vcf_record(self.tra)[0], SUPPORTED_TOOL.VCF, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertTrue(bpp.data[COLUMNS.tracking_id]) self.assertNotEqual('N', bpp.data[COLUMNS.tracking_id])
def test_no_ci(self): bpp_list = _convert_tool_row( _parse_vcf_record(self.tra)[0], SUPPORTED_TOOL.VCF, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual(21673582, bpp.break1.start) self.assertEqual(21673582, bpp.break1.end) self.assertEqual(58921502, bpp.break2.start) self.assertEqual(58921502, bpp.break2.end)
def test_ci(self): self.tra.info.update({'CIEND': [-700, 700], 'CIPOS': [-700, 700]}) bpp_list = _convert_tool_row( _parse_vcf_record(self.tra)[0], SUPPORTED_TOOL.VCF, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] print(bpp) self.assertEqual(21673582 - 700, bpp.break1.start) self.assertEqual(21673582 + 700, bpp.break1.end) self.assertEqual(58921502 - 700, bpp.break2.start) self.assertEqual(58921502 + 700, bpp.break2.end)
def testMalformated(self): event = Mock( chrom='1', pos=53678660, id=None, info={'SVTYPE': 'BND'}, ref='C', alts=('CTTTTAAATGTAACATGACATAATATATTTCCTAAATAATTTAAAATAATC.', ), stop=53678660) with self.assertRaises(NotImplementedError): _convert_tool_row( _parse_vcf_record(event)[0], SUPPORTED_TOOL.STRELKA, False)
def test_convert_insertion(self): row = Mock(chrom='1', pos=247760043, id='1DEL00000330', info={ 'SVTYPE': 'INS', 'CT': 'NtoN', 'CHR2': '1', 'CIEND': [-10, 10], 'CIPOS': [-10, 10] }, stop=247760044, alts=[]) bpp_list = _convert_tool_row( _parse_vcf_record(row)[0], SUPPORTED_TOOL.DELLY, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual('1', bpp.break1.chr) self.assertEqual(247760043 - 10, bpp.break1.start) self.assertEqual(247760043 + 10, bpp.break1.end) self.assertEqual(ORIENT.LEFT, bpp.break1.orient) self.assertEqual(STRAND.NS, bpp.break1.strand) self.assertEqual(247760044 - 10, bpp.break2.start) self.assertEqual(247760044 + 10, bpp.break2.end) self.assertEqual(ORIENT.RIGHT, bpp.break2.orient) self.assertEqual(STRAND.NS, bpp.break2.strand) self.assertEqual('1', bpp.break2.chr) self.assertEqual(SVTYPE.INS, bpp.event_type) self.assertEqual(None, bpp.untemplated_seq) bpp_list = _convert_tool_row(_parse_vcf_record(row)[0], SUPPORTED_TOOL.DELLY, False, assume_no_untemplated=True) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual(None, bpp.untemplated_seq) self.assertNotEqual('', bpp.untemplated_seq)
def test_precise_flag_ignores_ci(self): self.tra.info.update({ 'CIEND': [-700, 700], 'CIPOS': [-700, 700], 'PRECISE': True }) bpp_list = _convert_tool_row( _parse_vcf_record(self.tra)[0], SUPPORTED_TOOL.VCF, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual(21673582, bpp.break1.start) self.assertEqual(21673582, bpp.break1.end) self.assertEqual(58921502, bpp.break2.start) self.assertEqual(58921502, bpp.break2.end)
def test_convert_convert_translocation(self): row = Mock(chrom='7', pos=21673582, id='TRA00016056', info={ 'SVTYPE': 'TRA', 'CT': '5to5', 'CIEND': [-700, 700], 'CIPOS': [-700, 700], 'CHR2': '2' }, stop=58921502, alts=[]) bpp_list = _convert_tool_row( _parse_vcf_record(row)[0], SUPPORTED_TOOL.DELLY, False) for b in bpp_list: print(b) self.assertEqual(1, len(bpp_list)) row.info['CT'] = 'NtoN' bpp_list = _convert_tool_row( _parse_vcf_record(row)[0], SUPPORTED_TOOL.DELLY, False) for b in bpp_list: print(b) self.assertEqual(4, len(bpp_list))
def testDeletion(self): event = Mock(chrom='1', pos=1265353, id=None, info={}, ref='GCGTGTGCCATGCA', stop=1265366, alts=('G', )) bpp_list = _convert_tool_row( _parse_vcf_record(event)[0], SUPPORTED_TOOL.STRELKA, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual(1265353, bpp.break1.start) self.assertEqual(1265353, bpp.break1.end) self.assertEqual(1265366, bpp.break2.start) self.assertEqual(1265366, bpp.break2.end) self.assertEqual(SVTYPE.DEL, bpp.event_type)
def testInsertion(self): event = Mock(chrom='1', pos=724986, id=None, info={}, ref='G', stop=724986, alts=('GGAATT', )) bpp_list = _convert_tool_row( _parse_vcf_record(event)[0], SUPPORTED_TOOL.STRELKA, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual(724986, bpp.break1.start) self.assertEqual(724986, bpp.break1.end) self.assertEqual(724986, bpp.break2.start) self.assertEqual(724986, bpp.break2.end) self.assertEqual(SVTYPE.INS, bpp.event_type)
def test_convert_duplication(self): row = Mock(chrom='1', pos=224646602, id='MantaDUP:TANDEM:22477:0:1:0:9:0', info={ 'SVTYPE': 'DUP', 'SVINSSEQ': 'CAAAACTTACTATAGCAGTTCTGTGAGCTGCTCTAGC' }, stop=224800120, alts=[]) bpp_list = _convert_tool_row( _parse_vcf_record(row)[0], SUPPORTED_TOOL.MANTA, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual('1', bpp.break1.chr) self.assertEqual('1', bpp.break2.chr) self.assertEqual('manta-MantaDUP:TANDEM:22477:0:1:0:9:0', bpp.tracking_id)
def test_convert_deletion(self): row = Mock(chrom='21', pos=9412306, id='MantaDEL:20644:0:2:0:0:0', info={ 'SVTYPE': 'DEL', 'CIPOS': [0, 4], 'CIEND': [0, 4] }, stop=9412400, alts=[]) bpp_list = _convert_tool_row( _parse_vcf_record(row)[0], SUPPORTED_TOOL.MANTA, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual('21', bpp.break1.chr) self.assertEqual(9412306, bpp.break1.start) self.assertEqual(9412310, bpp.break1.end) self.assertEqual(9412400, bpp.break2.start) self.assertEqual(9412404, bpp.break2.end) self.assertEqual('21', bpp.break2.chr) print(bpp, bpp.tracking_id) self.assertEqual('manta-MantaDEL:20644:0:2:0:0:0', bpp.tracking_id)
def test_convert_inversion(self): row = Mock(chrom='21', pos=9412306, info={'SVTYPE': 'INV'}, stop=9412400, id=None, alts=[]) bpp_list = _convert_tool_row( _parse_vcf_record(row)[0], SUPPORTED_TOOL.PINDEL, False) self.assertEqual(2, len(bpp_list)) bpp = sorted(bpp_list, key=lambda x: x.break1)[0] self.assertEqual('21', bpp.break1.chr) self.assertEqual('21', bpp.break2.chr) self.assertEqual(SVTYPE.INV, bpp.event_type) self.assertEqual(row.pos, bpp.break1.start) self.assertEqual(row.pos, bpp.break1.end) self.assertEqual(row.stop, bpp.break2.start) self.assertEqual(row.stop, bpp.break2.end) self.assertEqual(ORIENT.LEFT, bpp.break1.orient) self.assertEqual(STRAND.NS, bpp.break1.strand) self.assertEqual(ORIENT.LEFT, bpp.break2.orient) self.assertEqual(STRAND.NS, bpp.break2.strand) self.assertEqual(False, bpp.stranded) self.assertEqual(True, bpp.opposing_strands)
def test_convert_deletion(self): row = Mock(chrom='21', pos=9412306, info={'SVTYPE': 'DEL'}, stop=9412400, id=None, alts=[]) bpp_list = _convert_tool_row( _parse_vcf_record(row)[0], SUPPORTED_TOOL.PINDEL, False) self.assertEqual(1, len(bpp_list)) bpp = bpp_list[0] self.assertEqual('21', bpp.break1.chr) self.assertEqual('21', bpp.break2.chr) self.assertEqual(SVTYPE.DEL, bpp.event_type) self.assertEqual(row.pos, bpp.break1.start) self.assertEqual(row.pos, bpp.break1.end) self.assertEqual(row.stop, bpp.break2.start) self.assertEqual(row.stop, bpp.break2.end) self.assertEqual(ORIENT.LEFT, bpp.break1.orient) self.assertEqual(STRAND.NS, bpp.break1.strand) self.assertEqual(ORIENT.RIGHT, bpp.break2.orient) self.assertEqual(STRAND.NS, bpp.break2.strand) self.assertEqual(False, bpp.stranded) self.assertEqual(False, bpp.opposing_strands)