def test_no_id(self, vcf_translocation): bpp_list = _convert_tool_row( _parse_vcf_record(vcf_translocation)[0], SUPPORTED_TOOL.VCF, False ) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.data[COLUMNS.tracking_id]
def test_non_trans_bnd_from_mate(self): row = Mock( chrom='chr1', pos=234912188, id='MantaBND:207:0:1:0:0:0:1', info=dict( SVTYPE='BND', MATEID='MantaBND:207:0:1:0:0:0:0', SVINSLEN=7, SVINSSEQ='ATGGGGC', BND_DEPTH=5, MATE_BND_DEPTH=4, ), ref='A', alts=['[chr1:17051724[ATGGGGCA'], ) vcf_list = _parse_vcf_record(row) bpp_list = _convert_tool_row(vcf_list[0], SUPPORTED_TOOL.MANTA, False) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.chr == '1' assert bpp.break2.chr == '1' assert bpp.break1.start == 17051724 assert bpp.break2.start == 234912188 assert bpp.break1.orient == 'R' assert bpp.break2.orient == 'R' assert bpp.data['tracking_id'] == 'manta-MantaBND:207:0:1:0:0:0:1' assert len(bpp_list) == 1
def test_id_given(self, vcf_translocation): vcf_translocation.id = 'thing-1' bpp_list = _convert_tool_row( _parse_vcf_record(vcf_translocation)[0], SUPPORTED_TOOL.VCF, False ) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.data[COLUMNS.tracking_id] == 'vcf-thing-1'
def test_no_ci(self, vcf_translocation): bpp_list = _convert_tool_row( _parse_vcf_record(vcf_translocation)[0], SUPPORTED_TOOL.VCF, False ) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.start == 21673582 assert bpp.break1.end == 21673582 assert bpp.break2.start == 58921502 assert bpp.break2.end == 58921502
def test_precise_flag_ignores_ci(self, vcf_translocation): vcf_translocation.info.update({'CIEND': [-700, 700], 'CIPOS': [-700, 700], 'PRECISE': True}) bpp_list = _convert_tool_row( _parse_vcf_record(vcf_translocation)[0], SUPPORTED_TOOL.VCF, False ) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.start == 21673582 assert bpp.break1.end == 21673582 assert bpp.break2.start == 58921502 assert bpp.break2.end == 58921502
def test_ci(self, vcf_translocation): vcf_translocation.info.update({'CIEND': [-700, 700], 'CIPOS': [-700, 700]}) bpp_list = _convert_tool_row( _parse_vcf_record(vcf_translocation)[0], SUPPORTED_TOOL.VCF, False ) assert len(bpp_list) == 1 bpp = bpp_list[0] print(bpp) assert bpp.break1.start == 21673582 - 700 assert bpp.break1.end == 21673582 + 700 assert bpp.break2.start == 58921502 - 700 assert bpp.break2.end == 58921502 + 700
def testMalformated(self): event = Mock( chrom='1', pos=53678660, id=None, info={'SVTYPE': 'BND'}, ref='C', alts=('CTTTTAAATGTAACATGACATAATATATTTCCTAAATAATTTAAAATAATC.',), stop=53678660, ) with pytest.raises(NotImplementedError): _convert_tool_row(_parse_vcf_record(event)[0], SUPPORTED_TOOL.STRELKA, False)
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) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.start == 724986 assert bpp.break1.end == 724986 assert bpp.break2.start == 724986 assert bpp.break2.end == 724986 assert bpp.event_type == SVTYPE.INS
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) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.chr == '1' assert bpp.break1.start == 247760043 - 10 assert bpp.break1.end == 247760043 + 10 assert bpp.break1.orient == ORIENT.LEFT assert bpp.break1.strand == STRAND.NS assert bpp.break2.start == 247760044 - 10 assert bpp.break2.end == 247760044 + 10 assert bpp.break2.orient == ORIENT.RIGHT assert bpp.break2.strand == STRAND.NS assert bpp.break2.chr == '1' assert bpp.event_type == SVTYPE.INS assert bpp.untemplated_seq is None bpp_list = _convert_tool_row( _parse_vcf_record(row)[0], SUPPORTED_TOOL.DELLY, False, assume_no_untemplated=True ) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.untemplated_seq is None assert bpp.untemplated_seq != ''
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) assert len(bpp_list) == 1 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) assert len(bpp_list) == 4
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) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.chr == '1' assert bpp.break2.chr == '1' assert bpp.data['tracking_id'] == 'manta-MantaDUP:TANDEM:22477:0:1:0:9:0'
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) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.start == 1265353 assert bpp.break1.end == 1265353 assert bpp.break2.start == 1265366 assert bpp.break2.end == 1265366 assert bpp.event_type == SVTYPE.DEL
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) assert len(bpp_list) == 2 bpp = sorted(bpp_list, key=lambda x: x.break1)[0] assert bpp.break1.chr == '21' assert bpp.break2.chr == '21' assert bpp.event_type == SVTYPE.INV assert bpp.break1.start == row.pos assert bpp.break1.end == row.pos assert bpp.break2.start == row.stop assert bpp.break2.end == row.stop assert bpp.break1.orient == ORIENT.LEFT assert bpp.break1.strand == STRAND.NS assert bpp.break2.orient == ORIENT.LEFT assert bpp.break2.strand == STRAND.NS assert bpp.stranded is False assert bpp.opposing_strands is True
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) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.chr == '21' assert bpp.break2.chr == '21' assert bpp.event_type == SVTYPE.DEL assert bpp.break1.start == row.pos assert bpp.break1.end == row.pos assert bpp.break2.start == row.stop assert bpp.break2.end == row.stop assert bpp.break1.orient == ORIENT.LEFT assert bpp.break1.strand == STRAND.NS assert bpp.break2.orient == ORIENT.RIGHT assert bpp.break2.strand == STRAND.NS assert bpp.stranded is False assert bpp.opposing_strands is False
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) assert len(bpp_list) == 1 bpp = bpp_list[0] assert bpp.break1.chr == '21' assert bpp.break1.start == 9412306 assert bpp.break1.end == 9412310 assert bpp.break2.start == 9412400 assert bpp.break2.end == 9412404 assert bpp.break2.chr == '21' print(bpp, bpp.data['tracking_id']) assert bpp.data['tracking_id'] == 'manta-MantaDEL:20644:0:2:0:0:0'