def test_add_thousand_g(self, variant):
     adapter = GeminiPlugin()
     gemini_variant = {'aaf_1kg_all':0.01}
     adapter._add_thousand_g(variant, gemini_variant)
     
     assert variant.thousand_g == 0.01
     assert len(variant.frequencies) == 1
Example #2
0
def test_is_variant(case_obj):
    adapter = GeminiPlugin()
    genotypes = ['G/A', 'G/A', 'G/G', 'G/G', './.']
    ind_objs = [
        Individual(ind_id=0, ind_index=0),
        Individual(ind_id=1, ind_index=1),
    ]
    #Mock a gemini variant
    gemini_variant = {
        'gts':genotypes,
        'alt':'A'
    }
    
    assert adapter._is_variant(gemini_variant, ind_objs)
    
    #Check with individuals that are hom ref
    ind_objs = [
        Individual(ind_id=0, ind_index=2),
        Individual(ind_id=1, ind_index=3),
    ]

    assert not adapter._is_variant(gemini_variant, ind_objs)

    #Check with individual that has no call
    ind_objs = [
        Individual(ind_id=0, ind_index=4),
    ]

    assert not adapter._is_variant(gemini_variant, ind_objs)
    def test_add_exac(self, variant):
        adapter = GeminiPlugin()
        gemini_variant = {'aaf_exac_all': 0.01}
        adapter._add_exac(variant, gemini_variant)

        assert variant.thousand_g == None
        assert len(variant.frequencies) == 1
Example #4
0
 def test_filters_consequence(self, gemini_path):
     adapter = GeminiPlugin(db=gemini_path)
     filters = {'consequence':['stop_gained']}
     variants = []
     for variant in adapter.variants('643594', filters=filters):
         variants.append(variant)
     assert len(variants) == 2
    def test_add_gmaf_no_frequency(self, variant):
        adapter = GeminiPlugin()
        gemini_variant = {'max_aaf_all': None}
        adapter._add_gmaf(variant, gemini_variant)

        assert len(variant.frequencies) == 0
        assert variant.max_freq == None
    def test_add_genotypes(self, variant):
        adapter = GeminiPlugin()
        gemini_variant = {
            'gts': ['G/A', 'G/A', './.', './.', './.'],
            'gt_depths': [17, 19, -1, -1, -1],
            'gt_ref_depths': [10, 13, -1, -1, -1],
            'gt_alt_depths': [7, 6, -1, -1, -1],
            'gt_quals': [99, 99, -1, -1, -1],
            
        }
        ind = DotDict()
        ind.ind_index = 0
        ind.ind_id = '1'
        ind.case_id = 'Case_1'
        ind.phenotype = 2
        ind_objs = [ind]

        adapter._add_genotypes(variant, gemini_variant, ind_objs)
        
        genotype = variant.individuals[0]

        assert genotype.sample_id == ind.ind_id
        assert genotype.sample_id == ind.ind_id
        assert genotype.genotype == 'G/A'
        assert genotype.case_id == ind.case_id
        assert genotype.phenotype == ind.phenotype
        assert genotype.ref_depth == 10
        assert genotype.alt_depth == 7
        assert genotype.depth == 17
        assert genotype.genotype_quality == 99
    def test_add_genotypes(self, variant):
        adapter = GeminiPlugin()
        gemini_variant = {
            'gts': ['G/A', 'G/A', './.', './.', './.'],
            'gt_depths': [17, 19, -1, -1, -1],
            'gt_ref_depths': [10, 13, -1, -1, -1],
            'gt_alt_depths': [7, 6, -1, -1, -1],
            'gt_quals': [99, 99, -1, -1, -1],
        }
        ind = DotDict()
        ind.ind_index = 0
        ind.ind_id = '1'
        ind.phenotype = 2
        ind_objs = [ind]

        adapter._add_genotypes(variant, gemini_variant, 'dummy', ind_objs)

        genotype = variant.individuals[0]

        assert genotype.sample_id == ind.ind_id
        assert genotype.sample_id == ind.ind_id
        assert genotype.genotype == 'G/A'
        assert genotype.case_id == 'dummy'
        assert genotype.phenotype == ind.phenotype
        assert genotype.ref_depth == 10
        assert genotype.alt_depth == 7
        assert genotype.depth == 17
        assert genotype.genotype_quality == 99
def test_is_variant(gemini_case_obj):
    plugin = GeminiPlugin()
    genotypes = ['G/A', 'G/A', 'G/G', 'G/G', './.']
    gt_types = [1, 1, 0, 0, 2]
    ind_objs = [
        Individual(ind_id=0, ind_index=0),
        Individual(ind_id=1, ind_index=1),
    ]
    #Mock a gemini variant
    gemini_variant = {'gts': genotypes, 'gt_types': gt_types, 'alt': 'A'}

    assert plugin._is_variant(gemini_variant, ind_objs)

    #Check with individuals that are hom ref
    ind_objs = [
        Individual(ind_id=0, ind_index=2),
        Individual(ind_id=1, ind_index=3),
    ]

    assert not plugin._is_variant(gemini_variant, ind_objs)

    #Check with individual that has no call
    ind_objs = [
        Individual(ind_id=0, ind_index=4),
    ]

    assert not plugin._is_variant(gemini_variant, ind_objs)
 def test_add_gmaf_no_frequency(self, variant):
     adapter = GeminiPlugin()
     gemini_variant = {'max_aaf_all':None}
     adapter._add_gmaf(variant, gemini_variant)
     
     assert len(variant.frequencies) == 0
     assert variant.max_freq == None
    def test_add_thousand_g(self, variant):
        adapter = GeminiPlugin()
        gemini_variant = {'aaf_1kg_all': 0.01}
        adapter._add_thousand_g(variant, gemini_variant)

        assert variant.thousand_g == 0.01
        assert len(variant.frequencies) == 1
 def test_add_exac(self, variant):
     adapter = GeminiPlugin()
     gemini_variant = {'aaf_exac_all':0.01}
     adapter._add_exac(variant, gemini_variant)
     
     assert variant.thousand_g == None
     assert len(variant.frequencies) == 1
Example #12
0
 def test_filters_gene_ids(self, gemini_path):
     adapter = GeminiPlugin(db=gemini_path)
     filters = {'gene_ids':['HLA-DRB5']}
     variants = []
     for variant in adapter.variants('643594', filters=filters):
         variants.append(variant)
     assert len(variants) == 5
Example #13
0
 def test_filters_impact_severities(self, gemini_path):
     adapter = GeminiPlugin(db=gemini_path)
     filters = {'impact_severities':['HIGH']}
     variants = []
     for variant in adapter.variants('643594', filters=filters):
         variants.append(variant)
     assert len(variants) == 2
Example #14
0
 def test_filters_cadd(self, gemini_path):
     adapter = GeminiPlugin(db=gemini_path)
     filters = {'cadd':'20'}
     variants = []
     for variant in adapter.variants('643594', filters=filters):
         variants.append(variant)
     assert len(variants) == 4
Example #15
0
 def test_filters_frequency(self, gemini_path):
     adapter = GeminiPlugin(db=gemini_path)
     filters = {'frequency':'0.01'}
     variants = []
     for variant in adapter.variants('643594', filters=filters):
         variants.append(variant)
     assert len(variants) == 13
Example #16
0
def test_get_all_variants(gemini_path):
    """Test to get some variants from the gemini adapter"""
    adapter = GeminiPlugin(db=gemini_path)
    variants = []
    for variant in adapter.variants('643594'):
        variants.append(variant)

    assert len(variants) == 14
    def test_no_filters_sv(self, gemini_sv_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_sv_case_obj)

        filters = {}
        result = plugin.variants('hapmap', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        assert nr_of_variants == 513
    def test_filters_no_filters(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        assert nr_of_variants == 14
def test_variant(gemini_case_obj):
    """Test to get one variant"""
    plugin = GeminiPlugin()
    plugin.add_case(gemini_case_obj)

    variant = plugin.variant(case_id='643594', variant_id=4)

    assert variant['CHROM'] == '6'
    assert variant['POS'] == '32487163'
    assert type(variant['genes']) == type([])
def test_build_gemini_query():
    plugin = GeminiPlugin()
    query = "SELECT * from variants"
    extra_info = "max_aaf_all < 0.01"
    new_query = plugin.build_gemini_query(query, extra_info)
    assert new_query == "SELECT * from variants WHERE max_aaf_all < 0.01"

    extra_info = "cadd_score > 10"
    new_query = plugin.build_gemini_query(new_query, extra_info)
    assert new_query == "SELECT * from variants WHERE max_aaf_all < 0.01 AND cadd_score > 10"
    def test_filters_no_filters(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        assert nr_of_variants == 14
Example #22
0
def test_build_gemini_query():
    adapter = GeminiPlugin()
    query = "SELECT * from variants"
    extra_info = "max_aaf_all < 0.01"
    new_query = adapter.build_gemini_query(query, extra_info)
    assert new_query == "SELECT * from variants WHERE max_aaf_all < 0.01"
    
    extra_info = "cadd_score > 10"
    new_query = adapter.build_gemini_query(new_query, extra_info)
    assert new_query == "SELECT * from variants WHERE max_aaf_all < 0.01 AND cadd_score > 10"
    def test_no_filters_sv(self, gemini_sv_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_sv_case_obj)

        filters = {}
        result = plugin.variants('hapmap', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants
        
        assert nr_of_variants == 513
def test_get_all_variants(gemini_case_obj):
    """Test to get some variants from the gemini adapter"""
    plugin = GeminiPlugin()
    plugin.add_case(gemini_case_obj)

    filters = {}
    result = plugin.variants('643594', filters=filters, count=1000)
    variants = result.variants
    nr_of_variants = result.nr_of_variants

    assert nr_of_variants == 14
def test_get_all_variants(gemini_case_obj):
    """Test to get some variants from the gemini adapter"""
    plugin = GeminiPlugin()
    plugin.add_case(gemini_case_obj)

    filters = {}
    result = plugin.variants('643594', filters=filters, count=1000)
    variants = result.variants
    nr_of_variants = result.nr_of_variants

    assert nr_of_variants == 14
Example #26
0
def test_variant(gemini_path):
    """Test to get one variant"""
    adapter = GeminiPlugin(db=gemini_path)
    variant = adapter.variant(
        case_id='643594',
        variant_id=4
    )

    assert variant['CHROM'] == '6'
    assert variant['POS'] == '32487163'
    assert type(variant['genes']) == type([])
    def test_filters_impact_severities_medium(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'impact_severities':['MEDIUM']}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants
        
        for variant_obj in variants:
            assert variant_obj.impact_severity == 'MEDIUM'
        assert nr_of_variants == 10
    def test_filters_impact_severities_medium(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'impact_severities': ['MEDIUM']}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        for variant_obj in variants:
            assert variant_obj.impact_severity == 'MEDIUM'
        assert nr_of_variants == 10
    def test_filters_sv_len(self, gemini_sv_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_sv_case_obj)

        filters = {'sv_len': '800'}
        result = plugin.variants('hapmap', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        for variant_obj in variants:
            assert variant_obj.sv_len >= 800

        assert nr_of_variants == 176
    def test_filters_sv_len(self, gemini_sv_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_sv_case_obj)

        filters = {'sv_len':'800'}
        result = plugin.variants('hapmap', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants
        
        for variant_obj in variants:
            assert variant_obj.sv_len >= 800
        
        assert nr_of_variants == 176
    def test_filters_gene_ids(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'gene_ids':['HLA-DRB5']}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants
        
        for variant_obj in variants:
            assert 'HLA-DRB5' in variant_obj.gene_symbols
        
        assert nr_of_variants == 5
def test_variant(gemini_case_obj):
    """Test to get one variant"""
    plugin = GeminiPlugin()
    plugin.add_case(gemini_case_obj)

    variant = plugin.variant(
        case_id='643594',
        variant_id=4
    )

    assert variant['CHROM'] == '6'
    assert variant['POS'] == '32487163'
    assert type(variant['genes']) == type([])
    def test_filters_cadd(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'cadd':'20'}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants
        
        for variant_obj in variants:
            assert variant_obj.cadd_score > 20
        
        assert nr_of_variants == 4
    def test_filters_gene_ids(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'gene_ids': ['HLA-DRB5']}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        for variant_obj in variants:
            assert 'HLA-DRB5' in variant_obj.gene_symbols

        assert nr_of_variants == 5
    def test_filters_consequence(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'consequence': ['stop_gained']}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        for variant_obj in variants:
            assert 'stop_gained' in variant_obj.consequences

        assert nr_of_variants == 2
    def test_filters_frequency(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'frequency': '0.01'}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        for variant_obj in variants:
            assert variant_obj.max_freq < 0.01

        assert nr_of_variants == 13
    def test_filters_frequency(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'frequency':'0.01'}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants
        
        for variant_obj in variants:
            assert variant_obj.max_freq < 0.01
        
        assert nr_of_variants == 13
    def test_filters_consequence(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'consequence':['stop_gained']}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants
        
        for variant_obj in variants:
            assert 'stop_gained' in variant_obj.consequences
        
        assert nr_of_variants == 2
    def test_filters_cadd(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        filters = {'cadd': '20'}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        for variant_obj in variants:
            assert variant_obj.cadd_score > 20

        assert nr_of_variants == 4
    def test_filters_range(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        start = 92498060
        end = 92498100

        filters = {'range': {'chromosome': 'chr1', 'start': start, 'end':end}}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants
        
        for variant_obj in variants:
            assert variant_obj.start >= start
            assert variant_obj.stop <= end
        
        assert nr_of_variants == 1
    def test_filters_range(self, gemini_case_obj):
        plugin = GeminiPlugin()
        plugin.add_case(gemini_case_obj)

        start = 92498060
        end = 92498100

        filters = {'range': {'chromosome': 'chr1', 'start': start, 'end': end}}
        result = plugin.variants('643594', filters=filters, count=1000)
        variants = result.variants
        nr_of_variants = result.nr_of_variants

        for variant_obj in variants:
            assert variant_obj.start >= start
            assert variant_obj.stop <= end

        assert nr_of_variants == 1
Example #42
0
def test_get_transcripts(gemini_path):
    adapter = GeminiPlugin(db=gemini_path)
    gemini_variant = {'variant_id': 1}
    transcripts = []
    for transcript in adapter._get_transcripts(gemini_variant):
        transcripts.append(transcript)
    
    assert len(transcripts) == 2
    
    first_transcript = transcripts[0]
    
    assert first_transcript.transcript_id == 'ENST00000370383'
    assert first_transcript.hgnc_symbol == 'EPHX4'
    assert first_transcript.consequence == 'missense_variant'
    assert first_transcript.ensembl_id == None
    assert first_transcript.biotype == 'protein_coding'
    assert first_transcript.sift == 'deleterious'
    assert first_transcript.polyphen == 'probably_damaging'
Example #43
0
def test_check_gemini_db(gemini_path, vcf_file):
    adapter = GeminiPlugin()
    adapter.db = gemini_path
    assert adapter.test_gemini_db()
    
    adapter.db = vcf_file
    with pytest.raises(DatabaseError):
        adapter.test_gemini_db()
Example #44
0
def test_setup_no_db():
    """Test to initialize a gemini database without any file"""

    adapter = GeminiPlugin()
    assert adapter.db == None
    
    assert adapter.variant_type == 'snv'
    
    assert adapter.filters.can_filter_gene == True
    assert adapter.filters.can_filter_inheritance == False
Example #45
0
def test_get_genotypes(gemini_variant):
    adapter = GeminiPlugin()
    ind = DotDict()
    ind.ind_index = 0
    ind.ind_id = '1'
    ind.case_id = 'Case_1'
    ind.phenotype = 2
    ind_objs = [ind]
    
    individual = adapter._get_genotypes(gemini_variant, ind_objs)[0]
    
    assert individual.sample_id == ind.ind_id
    assert individual.sample_id == ind.ind_id
    assert individual.genotype == 'G/A'
    assert individual.case_id == ind.case_id
    assert individual.phenotype == ind.phenotype
    assert individual.ref_depth == 10
    assert individual.alt_depth == 7
    assert individual.depth == 17
    assert individual.genotype_quality == 99
Example #46
0
def test_check_gemini_db(gemini_path, vcf_file):
    adapter = GeminiPlugin()
    adapter.db = gemini_path
    assert adapter.test_gemini_db()

    adapter.db = vcf_file
    with pytest.raises(DatabaseError):
        adapter.test_gemini_db()
Example #47
0
class TestGeminiAdapter(object):
    """Setup and test a gemini adapter"""

    def setup(self):
        """docstring for setup"""

        self.adapter = GeminiPlugin(GEMINI_DB)

    def test_gemini_individuals(self):
        """docstring for test_gemini_individuals"""
        ind_ids = set([individual['ind_id']
                       for individual in self.adapter.individuals])
        assert ind_ids == set(['NA12877', 'NA12878', 'NA12882'])

    def test_gemini_cases(self):
        """docstring for test_gemini_individuals"""
        cases = set([case['name']
                    for case in self.adapter.cases()])
        assert cases == set(['643594'])

    def test_get_variants(self):
        """Test to get some variants from the gemini adapter"""
        variants = []
        for variant in self.adapter.variants('643594', count=5):
            variants.append(variant)

        assert len(variants) == 5

    def test_get_variant(self):
        """Test to get one variant"""
        variant = self.adapter.variant(
            case_id='643594',
            variant_id=4
        )

        assert variant['CHROM'] == '6'
        assert variant['POS'] == '32487163'
Example #48
0
    def select_plugin(self, case_obj):
        """Select and initialize the correct plugin for the case."""
        if case_obj.variant_mode == 'vcf':
            logger.debug("Using vcf plugin")
            plugin = VcfPlugin(case_obj.variant_type)
        elif case_obj.variant_mode == 'gemini':
            logger.debug("Using gemini plugin")
            plugin = GeminiPlugin(case_obj.variant_type)

        #Add case to plugin
        plugin.add_case(case_obj)

        self.variant_type = case_obj.variant_type

        case_id = case_obj.case_id
        return plugin, case_id
Example #49
0
def browser_puzzle(args):
    host = args.host
    port = args.port

    try:
        # Puzzle browser plugin
        from puzzle.server import factory as puzzle_app
        from puzzle.plugins import GeminiPlugin
        from puzzle.server.settings import BaseConfig
    except ImportError as e:
        raise ImportError("%s\nPlease 'pip install puzzle' if you want to run it\n" % e)

    plugin = GeminiPlugin(db=args.db, vtype="sv")
    root = os.path.expanduser("~/.puzzle")

    BaseConfig.PUZZLE_BACKEND = plugin
    BaseConfig.UPLOAD_DIR = os.path.join(root, 'resources')

    puzzle_srv = puzzle_app.create_app(config_obj=BaseConfig)
    webbrowser.open_new_tab("http://{}:{}".format(host, port))
    run(puzzle_srv, host=host, port=port)
    def test_add_transcripts(self, gemini_case_obj, variant):
        adapter = GeminiPlugin()
        adapter.add_case(gemini_case_obj)
        adapter.db = gemini_case_obj.variant_source

        gemini_variant = {'variant_id': 1}
        adapter._add_transcripts(variant, gemini_variant)

        transcripts = variant.transcripts

        assert len(transcripts) == 2

        first_transcript = transcripts[0]

        assert first_transcript.transcript_id == 'ENST00000370383'
        assert first_transcript.hgnc_symbol == 'EPHX4'
        assert first_transcript.consequence == 'missense_variant'
        assert first_transcript.ensembl_id == None
        assert first_transcript.biotype == 'protein_coding'
        assert first_transcript.sift == 'deleterious'
        assert first_transcript.polyphen == 'probably_damaging'
    def test_add_transcripts(self, gemini_case_obj, variant):
        adapter = GeminiPlugin()
        adapter.add_case(gemini_case_obj)
        adapter.db = gemini_case_obj.variant_source
    
        gemini_variant = {'variant_id': 1}
        adapter._add_transcripts(variant, gemini_variant)
        
        transcripts = variant.transcripts
        
        assert len(transcripts) == 2

        first_transcript = transcripts[0]

        assert first_transcript.transcript_id == 'ENST00000370383'
        assert first_transcript.hgnc_symbol == 'EPHX4'
        assert first_transcript.consequence == 'missense_variant'
        assert first_transcript.ensembl_id == None
        assert first_transcript.biotype == 'protein_coding'
        assert first_transcript.sift == 'deleterious'
        assert first_transcript.polyphen == 'probably_damaging'
Example #52
0
def test_setup_with_variant_type(gemini_path):
    adapter = GeminiPlugin('sv')
    assert adapter.variant_type == 'sv'
    def test_add_exac_no_frequency(self, variant):
        adapter = GeminiPlugin()
        gemini_variant = {'aaf_exac_all': None}
        adapter._add_exac(variant, gemini_variant)

        assert len(variant.frequencies) == 0
 def test_add_exac_no_frequency(self, variant):
     adapter = GeminiPlugin()
     gemini_variant = {'aaf_exac_all':None}
     adapter._add_exac(variant, gemini_variant)
     
     assert len(variant.frequencies) == 0