Exemple #1
0
 def test_dict_two_variants(self):
     var1 = Variant('var1')
     var2 = Variant('var2')
     obj = ValOutput([var1, var2], self.vv)
     res = obj.format_as_dict(with_meta=False)
     self.assertIsInstance(res, dict)
     self.assertEqual(list(res), ['flag', 'validation_warning_1', 'validation_warning_2'])
     self.assertEqual(res['flag'], 'warning')
     self.assertEqual(res['validation_warning_1']['submitted_variant'], 'var1')
     self.assertEqual(res['validation_warning_2']['submitted_variant'], 'var2')
Exemple #2
0
 def test_table_intergenic(self):
     var1 = Variant('var1')
     var1.output_type_flag = 'intergenic'
     obj = ValOutput([var1], self.vv)
     res = obj.format_as_table(with_meta=False)
     print(res)
     self.assertIsInstance(res, list)
     self.assertEqual(res[1], ['var1', '', None, None, None, None, None, None, None, '', '', '', '', '', '', '',
                               '', '', '', '', '', '', '', '', '', ''])
     self.assertEqual(len(res), 2)
Exemple #3
0
 def test_dict_one_intergenic(self):
     var1 = Variant('var1')
     var1.output_type_flag = 'intergenic'
     var2 = Variant('var2')
     obj = ValOutput([var1, var2], self.vv)
     res = obj.format_as_dict(with_meta=False)
     print(res)
     self.assertIsInstance(res, dict)
     self.assertEqual(list(res), ['flag', 'intergenic_variant_1', 'validation_warning_1'])
     self.assertEqual(res['flag'], 'intergenic')
     self.assertEqual(res['intergenic_variant_1']['submitted_variant'], 'var1')
     self.assertEqual(res['validation_warning_1']['submitted_variant'], 'var2')
Exemple #4
0
 def test_dict_one_variant(self):
     var = Variant('')
     obj = ValOutput([var], self.vv)
     res = obj.format_as_dict(with_meta=False)
     self.assertIsInstance(res, dict)
     self.assertEqual(list(res), ['flag', 'validation_warning_1'])
     self.assertEqual(res['flag'], 'warning')
Exemple #5
0
 def test_json(self):
     var = Variant('')
     obj = ValOutput([var], self.vv)
     res = obj.format_as_json(with_meta=False)
     self.assertIsInstance(res, str)
     self.assertIn('"flag": "warning"', res)
     self.assertIn('"validation_warning_1": {"selected_assembly": false, "submitted_variant": ""', res)
     self.assertEqual(json.loads(res), obj.format_as_dict(with_meta=False))
Exemple #6
0
 def test_table_one_gene(self):
     var1 = Variant('var1')
     var1.output_type_flag = 'gene'
     obj = ValOutput([var1], self.vv)
     res = obj.format_as_table(with_meta=False)
     print(res)
     self.assertIsInstance(res, list)
     self.assertEqual(res[0], ['Input', 'Warnings', 'Select transcript', 'HGVS_transcript',
                               'HGVS_intronic_chr_context',
                               'HGVS_intronic_rsg_context', 'HGVS_RefSeqGene', 'HGVS_LRG',
                               'HGVS_LRG_transcript', 'HGVS_Predicted_Protein', 'HGVS_Genomic_GRCh37', 'GRCh37_CHR',
                               'GRCh37_POS', 'GRCh37_ID', 'GRCh37_REF', 'GRCh37_ALT', 'HGVS_Genomic_GRCh38',
                               'GRCh38_CHR', 'GRCh38_POS', 'GRCh38_ID', 'GRCh38_REF', 'GRCh38_ALT',
                               'Gene_Symbol', 'HGNC_Gene_ID', 'Transcript_description', 'Alt_genomic_loci'])
     self.assertEqual(res[1], ['var1', '', None, None, None, None, None, None, None, '', '', '', '', '', '', '', '',
                               '', '', '', '', '', '', '', '', ''])
     self.assertEqual(len(res), 2)
Exemple #7
0
    def test_create_all_init(self):
        var = Variant('NM_015120.4:c.34=',
                      quibble='NM_015120.4:c.34=',
                      warnings=['Got a warning'],
                      write=False,
                      primary_assembly='GRCh37',
                      order=1)

        self.assertEqual(var.quibble, 'NM_015120.4:c.34=')
        self.assertEqual(var.warnings, ['Got a warning'])
        self.assertFalse(var.write)
        self.assertEqual(var.primary_assembly, 'GRCh37')
        self.assertEqual(var.order, 1)
Exemple #8
0
 def test_dict_one_intergenic_and_one_gene_reversed(self):
     var1 = Variant('var1')
     var1.output_type_flag = 'intergenic'
     var2 = Variant('var2')
     var2.output_type_flag = 'gene'
     obj = ValOutput([var2, var1], self.vv)
     res = obj.format_as_dict(with_meta=False)
     print(res)
     self.assertIsInstance(res, dict)
     self.assertEqual(list(res), ['flag', 'None', 'intergenic_variant_1'])
     self.assertEqual(res['flag'], 'intergenic')
     self.assertEqual(res['intergenic_variant_1']['submitted_variant'], 'var1')
     self.assertEqual(res['None']['submitted_variant'], 'var2')
Exemple #9
0
    def test_all_defaults(self):
        var = Variant('NM_015120.4:c.34=')

        self.assertEqual(var.hgvs_formatted, None)
        self.assertEqual(var.hgvs_genomic, None)
        self.assertEqual(var.hgvs_coding, None)
        self.assertEqual(var.post_format_conversion, None)
        self.assertEqual(var.pre_RNA_conversion, None)
        self.assertEqual(var.input_parses, None)

        self.assertEqual(var.description, '')
        self.assertEqual(var.coding, '')
        self.assertEqual(var.coding_g, '')
        self.assertEqual(var.genomic_r, '')
        self.assertEqual(var.genomic_g, '')
        self.assertEqual(var.protein, '')
        self.assertEqual(var.output_type_flag, 'warning')
        self.assertEqual(var.gene_symbol, '')

        self.assertEqual(var.timing, {})

        self.assertEqual(var.refsource, None)
        self.assertEqual(var.reftype, None)

        # Normalizers
        self.assertEqual(var.hn, None)
        self.assertEqual(var.reverse_normalizer, None)
        self.assertEqual(var.evm, None)
        self.assertEqual(var.no_norm_evm, None)
        self.assertEqual(var.min_evm, None)
        self.assertEqual(var.lose_vm, None)

        # Required for output
        self.assertEqual(var.hgvs_transcript_variant, None)
        self.assertEqual(var.genome_context_intronic_sequence, None)
        self.assertEqual(var.refseqgene_context_intronic_sequence, None)
        self.assertEqual(var.hgvs_refseqgene_variant, None)
        self.assertEqual(var.hgvs_predicted_protein_consequence, None)
        self.assertEqual(var.hgvs_lrg_transcript_variant, None)
        self.assertEqual(var.hgvs_lrg_variant, None)
        self.assertEqual(var.alt_genomic_loci, None)
        self.assertEqual(var.primary_assembly_loci, None)
        self.assertEqual(var.reference_sequence_records, None)
        self.assertEqual(var.validated, False)
Exemple #10
0
 def test_warnings_type_int(self):
     var = Variant('NM_015120.4:c.34=', warnings=0)
     self.assertEqual(var.warnings, [0])
Exemple #11
0
    def test_table_intergenic_warnings(self):
        var1 = Variant('var1')
        var1.output_type_flag = 'intergenic'
        var1.warnings = ['Validation error']
        var2 = Variant('var2')
        var2.output_type_flag = 'intergenic'
        var2.warnings = ['obsolete']
        var3 = Variant('var3')
        var3.output_type_flag = 'intergenic'
        var3.warnings = ['obsolete']
        var3.hgvs_transcript_variant = ''

        obj = ValOutput([var1, var2, var3], self.vv)
        res = obj.format_as_table(with_meta=False)
        self.assertIsInstance(res, list)
        self.assertEqual(res[1], [
            'var1', 'Validation error', None, None, None, None, None, None, '',
            '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''
        ])
        self.assertEqual(res[2], [
            'var2', 'obsolete', None, None, None, None, None, None, '', '', '',
            '', '', '', '', '', '', '', '', '', '', '', '', '', ''
        ])
        self.assertEqual(res[3], [
            'var3', 'obsolete', '', None, None, None, None, None, '', '', '',
            '', '', '', '', '', '', '', '', '', '', '', '', '', ''
        ])
        self.assertEqual(len(res), 4)
Exemple #12
0
    def test_dict_each_obsolete(self):
        var1 = Variant('var1')
        var1.warnings = ['obsolete']
        var1.output_type_flag = 'gene'
        var2 = Variant('var2')
        var2.warnings = ['obsolete']
        var2.output_type_flag = 'intergenic'
        var3 = Variant('var3')
        var3.warnings = ['obsolete']
        var4 = Variant('var4')
        var4.warnings = ['obsolete']
        var4.output_type_flag = 'gene'
        var4.hgvs_transcript_variant = ''

        obj = ValOutput([var1, var2, var3, var4], self.vv)
        res = obj.format_as_dict(with_meta=False)
        print(res)

        self.assertIsInstance(res, dict)
        self.assertEqual(list(res), [
            'flag', 'None', 'intergenic_variant_1', 'obsolete_record_1',
            'obsolete_record_2'
        ])
        self.assertEqual(res['flag'], 'gene_variant')
        self.assertEqual(res['None']['submitted_variant'], 'var1')
        self.assertEqual(res['intergenic_variant_1']['submitted_variant'],
                         'var2')
        self.assertEqual(res['obsolete_record_1']['submitted_variant'], 'var3')
        self.assertEqual(res['obsolete_record_2']['submitted_variant'], 'var4')
Exemple #13
0
    def test_dict_each_with_error_in_warnings(self):
        var1 = Variant('var1')
        var1.warnings = ['Validation error']
        var1.output_type_flag = 'gene'
        var2 = Variant('var2')
        var2.warnings = ['Validation error']
        var2.output_type_flag = 'intergenic'
        var3 = Variant('var3')
        var3.warnings = ['Validation error']

        obj = ValOutput([var1, var2, var3], self.vv)
        res = obj.format_as_dict(with_meta=False)
        print(res)

        self.assertIsInstance(res, dict)
        self.assertEqual(list(res), [
            'flag', 'validation_error_1', 'intergenic_variant_1',
            'validation_error_2'
        ])
        self.assertEqual(res['flag'], 'intergenic')
        self.assertEqual(res['validation_error_1']['submitted_variant'],
                         'var1')
        self.assertEqual(res['intergenic_variant_1']['submitted_variant'],
                         'var2')
        self.assertEqual(res['validation_error_2']['submitted_variant'],
                         'var3')
Exemple #14
0
    def test_create(self):
        var = Variant('NM_015120.4:c.34=')

        self.assertIsInstance(var, Variant)
        self.assertEqual(var.original, 'NM_015120.4:c.34=')
Exemple #15
0
 def test_order_not_set(self):
     var = Variant('NM_015120.4:c.34=')
     self.assertEqual(var.order, False)
Exemple #16
0
 def test_write_not_set(self):
     var = Variant('NM_015120.4:c.34=')
     self.assertEqual(var.write, True)
Exemple #17
0
 def test_primary_assembly_not_set(self):
     var = Variant('NM_015120.4:c.34=')
     self.assertEqual(var.primary_assembly, False)
Exemple #18
0
 def test_warnings_not_set(self):
     var = Variant('NM_015120.4:c.34=')
     self.assertEqual(var.warnings, [])
Exemple #19
0
 def test_write_type(self):
     var = Variant('NM_015120.4:c.34=', write='banana')
     self.assertEqual(var.write, 'banana')
Exemple #20
0
class TestMethods(TestCase):
    """ Test each method in the Variant Obj"""
    def setUp(self):
        self.var = Variant('NM_015120.4:c.34=')

    def test_is_ascii(self):
        self.assertTrue(self.var.is_ascii())

    def test_is_ascii_false(self):
        self.var.quibble = 'NM_015120.4:c.34=\u0086'
        self.assertFalse(self.var.is_ascii())

    def test_is_ascii_false2(self):
        self.var.quibble = 'NM_015120.4:c.34=†'
        self.assertFalse(self.var.is_ascii())

    def test_get_non_ascii(self):
        chars, pos = self.var.get_non_ascii()
        self.assertEqual(chars, [])
        self.assertEqual(pos, [])

    def test_get_non_ascii_encoded(self):
        self.var.quibble = 'NM_\u0086015120.4:c.34='
        chars, pos = self.var.get_non_ascii()
        self.assertEqual(chars, ['†'])
        self.assertEqual(pos, [4])

    def test_get_non_ascii_decoded(self):
        self.var.quibble = 'NM_015120.4:c.34=†'
        chars, pos = self.var.get_non_ascii()
        self.assertEqual(chars, ['†'])
        self.assertEqual(pos, [18])

    def test_get_non_ascii_pair(self):
        self.var.quibble = 'NM_\u0086015120.†4:c.34='
        chars, pos = self.var.get_non_ascii()
        self.assertEqual(chars, ['†', '†'])
        self.assertEqual(pos, [4, 12])

    def test_remove_whitespace(self):
        self.var.remove_whitespace()
        self.assertEqual(self.var.quibble, 'NM_015120.4:c.34=')

    def test_remove_whitespace_space(self):
        self.var.quibble = 'NM_015120  .4:c. 34='
        self.var.remove_whitespace()
        self.assertEqual(self.var.quibble, 'NM_015120.4:c.34=')

    def test_remove_whitespace_tab(self):
        self.var.quibble = 'NM_015120.\t4:c.34  ='
        self.var.remove_whitespace()
        self.assertEqual(self.var.quibble, 'NM_015120.4:c.34=')

    def test_remove_whitespace_newline(self):
        self.var.quibble = 'NM_015120.4:c\n.34='
        self.var.remove_whitespace()
        self.assertEqual(self.var.quibble, 'NM_015120.4:c.34=')

    def test_format_quibble(self):
        output = self.var.format_quibble()
        self.assertEqual(self.var.quibble, 'NM_015120.4:c.34=')
        self.assertFalse(output)

    def test_format_quibble_brackets(self):
        self.var.quibble = 'NM_0151(REMOVE)20.4:c.34='
        output = self.var.format_quibble()
        self.assertEqual(self.var.quibble, 'NM_015120.4:c.34=')
        self.assertFalse(output)

    def test_format_quibble_source_fail(self):
        self.var.quibble = 'F_015120.4:c.34='
        output = self.var.format_quibble()
        self.assertTrue(output)
        self.assertEqual(self.var.quibble, 'F_015120.4:c.34=')

    def test_format_quibble_type_fail(self):
        self.var.quibble = 'NM_015120.4:w.34='
        output = self.var.format_quibble()
        self.assertTrue(output)
        self.assertEqual(self.var.quibble, 'NM_015120.4:w.34=')

    def test_set_reftype(self):
        self.var.set_reftype()
        self.assertEqual(self.var.reftype, ':c.')

    def test_set_reftype_rna(self):
        self.var.quibble = 'NM_015120.4:r.34='
        self.var.set_reftype()
        self.assertEqual(self.var.reftype, ':r.')

    def test_set_reftype_nucl(self):
        self.var.quibble = 'NM_015120.4:n.34='
        self.var.set_reftype()
        self.assertEqual(self.var.reftype, ':n.')

    def test_set_reftype_mito(self):
        self.var.quibble = 'NM_015120.4:m.34='
        self.var.set_reftype()
        self.assertEqual(self.var.reftype, ':m.')

    def test_set_reftype_genome(self):
        self.var.quibble = 'NM_015120.4:g.34='
        self.var.set_reftype()
        self.assertEqual(self.var.reftype, ':g.')

    def test_set_reftype_prot(self):
        self.var.quibble = 'NM_015120.4:p.34='
        self.var.set_reftype()
        self.assertEqual(self.var.reftype, ':p.')

    def test_set_reftype_est(self):
        self.var.quibble = 'NM_015120.4:3.34='
        self.var.set_reftype()
        self.assertEqual(self.var.reftype, 'est')

    def test_set_reftype_none(self):
        self.var.quibble = 'NM_015120.4:.34='
        with self.assertRaises(VariantValidatorError):
            self.var.set_reftype()

    def test_set_source(self):
        self.var.set_refsource()
        self.assertEqual(self.var.refsource, 'RefSeq')

    def test_set_source_refseq_min(self):
        self.var.quibble = 'N'
        self.var.set_refsource()
        self.assertEqual(self.var.refsource, 'RefSeq')

    def test_set_source_lrg(self):
        self.var.quibble = 'LRG_015120.4:c.34='
        self.var.set_refsource()
        self.assertEqual(self.var.refsource, 'LRG')

    def test_set_source_lrg_min(self):
        self.var.quibble = 'LRG'
        self.var.set_refsource()
        self.assertEqual(self.var.refsource, 'LRG')

    def test_set_source_ens(self):
        self.var.quibble = 'ENSG_015120.4:c.34='
        self.var.set_refsource()
        self.assertEqual(self.var.refsource, 'ENS')

    def test_set_source_ens_min(self):
        self.var.quibble = 'ENS'
        self.var.set_refsource()
        self.assertEqual(self.var.refsource, 'ENS')

    def test_set_source_none(self):
        self.var.quibble = 'SOMETHING ELSE'
        with self.assertRaises(VariantValidatorError):
            self.var.set_refsource()

    def test_set_quibble(self):
        self.var.set_quibble('New:c.var')
        self.assertEqual(self.var.quibble, 'New:c.var')
        self.assertEqual(self.var.refsource, 'RefSeq')
        self.assertEqual(self.var.reftype, ':c.')

    def test_is_obsolete(self):
        self.assertFalse(self.var.is_obsolete())

    def test_is_obsolete_false(self):
        self.var.warnings = ['Nearly obso', 'lete']
        self.assertFalse(self.var.is_obsolete())

    def test_is_obsolete_true(self):
        self.var.warnings = ['obsoleteANDother']
        self.assertTrue(self.var.is_obsolete())

    def test_process_warnings(self):
        output = self.var.process_warnings()
        self.assertIsInstance(output, list)
        self.assertEqual(output, [])

    def test_process_warnings_sub(self):
        self.var.warnings = ['variantdelATGCTAGCTA']
        output = self.var.process_warnings()
        self.assertEqual(output, ['variantdel'])

    def test_process_warnings_sub_not(self):
        self.var.warnings = ['variantdelATG']
        output = self.var.process_warnings()
        self.assertEqual(output, ['variantdelATG'])

    def test_process_warnings_strip(self):
        self.var.warnings = [' warning ']
        output = self.var.process_warnings()
        self.assertEqual(output, ['warning'])

    def test_process_warnings_replace(self):
        self.var.warnings = ['\'warning\'']
        output = self.var.process_warnings()
        self.assertEqual(output, ['warning'])

    def test_process_warnings_unique(self):
        self.var.warnings = ['one', 'two', 'one']
        output = self.var.process_warnings()
        self.assertEqual(output, ['one', 'two'])

    def test_output_dict_empty(self):
        output = self.var.output_dict()
        self.assertIsInstance(output, dict)
        self.assertEqual(
            output, {
                'submitted_variant': 'NM_015120.4:c.34=',
                'gene_ids': None,
                'gene_symbol': '',
                'transcript_description': '',
                'hgvs_transcript_variant': None,
                'genome_context_intronic_sequence': None,
                'refseqgene_context_intronic_sequence': None,
                'hgvs_refseqgene_variant': None,
                'hgvs_predicted_protein_consequence': None,
                'validation_warnings': [],
                'hgvs_lrg_transcript_variant': None,
                'hgvs_lrg_variant': None,
                'alt_genomic_loci': None,
                'primary_assembly_loci': None,
                'reference_sequence_records': None,
            })

    def test_output_dict_set(self):
        self.var.gene_symbol = 'Symbol'
        self.var.description = 'Desc'
        self.var.stable_gene_ids = 'My_id'
        self.var.hgvs_transcript_variant = 'hgvsvar'
        self.var.genome_context_intronic_sequence = 'gintronic'
        self.var.refseqgene_context_intronic_sequence = 'rintronic'
        self.var.hgvs_refseqgene_variant = 'refseq'
        self.var.hgvs_predicted_protein_consequence = 'prot'
        self.var.warnings = ['warning']
        self.var.hgvs_lrg_transcript_variant = 'lrgT'
        self.var.hgvs_lrg_variant = 'lrg'
        self.var.alt_genomic_loci = 'alt'
        self.var.primary_assembly_loci = 'primary'
        self.var.reference_sequence_records = 'records'
        output = self.var.output_dict()
        self.assertIsInstance(output, dict)
        self.assertEqual(
            output, {
                'submitted_variant': 'NM_015120.4:c.34=',
                'gene_symbol': 'Symbol',
                'gene_ids': 'My_id',
                'transcript_description': 'Desc',
                'hgvs_transcript_variant': 'hgvsvar',
                'genome_context_intronic_sequence': 'gintronic',
                'refseqgene_context_intronic_sequence': 'rintronic',
                'hgvs_refseqgene_variant': 'refseq',
                'hgvs_predicted_protein_consequence': 'prot',
                'validation_warnings': ['warning'],
                'hgvs_lrg_transcript_variant': 'lrgT',
                'hgvs_lrg_variant': 'lrg',
                'alt_genomic_loci': 'alt',
                'primary_assembly_loci': 'primary',
                'reference_sequence_records': 'records',
            })
Exemple #21
0
 def test_warnings_type(self):
     var = Variant('NM_015120.4:c.34=', warnings='string')
     self.assertEqual(var.warnings, ['string'])
Exemple #22
0
 def test_quibble_not_set(self):
     var = Variant('NM_015120.4:c.34=')
     self.assertEqual(var.quibble, 'NM_015120.4:c.34=')
Exemple #23
0
 def test_quibble_type(self):
     var = Variant('NM_015120.4:c.34=', quibble=0)
     self.assertEqual(var.quibble, 0)
Exemple #24
0
 def setUp(self):
     self.var = Variant('NM_015120.4:c.34=')