scout/build/genes/hgnc_gene.py
def build_hgnc_gene(gene_info, build='37'):
    """Build a hgnc_gene object

        Args:
            gene_info(dict): Gene information

        Returns:
            gene_obj(dict)
    
            {
                '_id': ObjectId(),
                # This is the hgnc id, required:
                'hgnc_id': int, 
                # The primary symbol, required 
                'hgnc_symbol': str,
                'ensembl_id': str, # required
                'build': str, # '37' or '38', defaults to '37', required
                
                'chromosome': str, # required
                'start': int, # required
                'end': int, # required
                
                'description': str, # Gene description
                'aliases': list(), # Gene symbol aliases, includes hgnc_symbol, str
                'entrez_id': int,
                'omim_id': int,
                'pli_score': float,
                'primary_transcripts': list(), # List of refseq transcripts (str)
                'ucsc_id': str,
                'uniprot_ids': list(), # List of str
                'vega_id': str,
                'transcripts': list(), # List of hgnc_transcript
                
                # Inheritance information
                'inheritance_models': list(), # List of model names
                'incomplete_penetrance': bool, # Acquired from HPO
                
                # Phenotype information
                'phenotypes': list(), # List of dictionaries with phenotype information
            }
    """
    try:
        hgnc_id = int(gene_info['hgnc_id'])
    except KeyError as err:
        raise KeyError("Gene has to have a hgnc_id")
    except ValueError as err:
        raise ValueError("hgnc_id has to be integer")
    
    try:
        hgnc_symbol = gene_info['hgnc_symbol']
    except KeyError as err:
        raise KeyError("Gene has to have a hgnc_symbol")

    try:
        ensembl_id = gene_info['ensembl_gene_id']
    except KeyError as err:
        raise KeyError("Gene has to have a ensembl_id")

    try:
        chromosome = gene_info['chromosome']
    except KeyError as err:
        raise KeyError("Gene has to have a chromosome")
    
    try:
        start = int(gene_info['start'])
    except KeyError as err:
        raise KeyError("Gene has to have a start position")
    except TypeError as err:
        raise TypeError("Gene start has to be a integer")

    try:
        end = int(gene_info['end'])
    except KeyError as err:
        raise KeyError("Gene has to have a end position")
    except TypeError as err:
        raise TypeError("Gene end has to be a integer")

    gene_obj = HgncGene(
        hgnc_id=hgnc_id, 
        hgnc_symbol=hgnc_symbol, 
        ensembl_id=ensembl_id, 
        chrom=chromosome, 
        start=start, 
        end=end,
        build=build,
    )
    
    if gene_info.get('description'):
        gene_obj['description'] = gene_info['description']
        # LOG.debug("Adding info %s", gene_info['description'])
    
    if gene_info.get('previous_symbols'):
        gene_obj['aliases'] = gene_info['previous_symbols']

    if gene_info.get('entrez_id'):
        gene_obj['entrez_id'] = int(gene_info['entrez_id'])
    
    if gene_info.get('omim_id'):
        gene_obj['omim_id'] = int(gene_info['omim_id'])

    if gene_info.get('pli_score'):
        gene_obj['pli_score'] = float(gene_info['pli_score'])
    
    if gene_info.get('ref_seq'):
        gene_obj['primary_transcripts'] = gene_info['ref_seq']
    
    if gene_info.get('ucsc_id'):
        gene_obj['ucsc_id'] = gene_info['ucsc_id']
    
    if gene_info.get('uniprot_ids'):
        gene_obj['uniprot_ids'] = gene_info['uniprot_ids']

    if gene_info.get('vega_id'):
        gene_obj['vega_id'] = gene_info['vega_id']
    
    if gene_info.get('incomplete_penetrance'):
        gene_obj['incomplete_penetrance'] = True

    if gene_info.get('inheritance_models'):
        gene_obj['inheritance_models'] = gene_info['inheritance_models']

    phenotype_objs = []
    for phenotype_info in gene_info.get('phenotypes', []):
        phenotype_objs.append(build_phenotype(phenotype_info))
    
    if phenotype_objs:
        gene_obj['phenotypes'] = phenotype_objs

    for key in list(gene_obj):
        if gene_obj[key] is None:
            gene_obj.pop(key)

    return gene_obj
def build_hgnc_gene(gene_info, build='37'):
    try:
        hgnc_id = int(gene_info['hgnc_id'])
    except KeyError as err:
        raise KeyError("Gene has to have a hgnc_id")
    except ValueError as err:
        raise ValueError("hgnc_id has to be integer")
    
    try:
        hgnc_symbol = gene_info['hgnc_symbol']
    except KeyError as err:
        raise KeyError("Gene has to have a hgnc_symbol")

    try:
        ensembl_id = gene_info['ensembl_gene_id']
    except KeyError as err:
        raise KeyError("Gene has to have a ensembl_id")

    try:
        chromosome = gene_info['chromosome']
    except KeyError as err:
        raise KeyError("Gene has to have a chromosome")
    
    try:
        start = int(gene_info['start'])
    except KeyError as err:
        raise KeyError("Gene has to have a start position")
    except TypeError as err:
        raise TypeError("Gene start has to be a integer")

    try:
        end = int(gene_info['end'])
    except KeyError as err:
        raise KeyError("Gene has to have a end position")
    except TypeError as err:
        raise TypeError("Gene end has to be a integer")

    gene_obj = HgncGene(
        hgnc_id=hgnc_id, 
        hgnc_symbol=hgnc_symbol, 
        ensembl_id=ensembl_id, 
        chrom=chromosome, 
        start=start, 
        end=end,
        build=build,
    )
    
    if gene_info.get('description'):
        gene_obj['description'] = gene_info['description']
        # LOG.debug("Adding info %s", gene_info['description'])
    
    if gene_info.get('previous_symbols'):
        gene_obj['aliases'] = gene_info['previous_symbols']

    if gene_info.get('entrez_id'):
        gene_obj['entrez_id'] = int(gene_info['entrez_id'])
    
    if gene_info.get('omim_id'):
        gene_obj['omim_id'] = int(gene_info['omim_id'])

    if gene_info.get('pli_score'):
        gene_obj['pli_score'] = float(gene_info['pli_score'])
    
    if gene_info.get('ref_seq'):
        gene_obj['primary_transcripts'] = gene_info['ref_seq']
    
    if gene_info.get('ucsc_id'):
        gene_obj['ucsc_id'] = gene_info['ucsc_id']
    
    if gene_info.get('uniprot_ids'):
        gene_obj['uniprot_ids'] = gene_info['uniprot_ids']

    if gene_info.get('vega_id'):
        gene_obj['vega_id'] = gene_info['vega_id']
    
    if gene_info.get('incomplete_penetrance'):
        gene_obj['incomplete_penetrance'] = True

    if gene_info.get('inheritance_models'):
        gene_obj['inheritance_models'] = gene_info['inheritance_models']

    phenotype_objs = []
    for phenotype_info in gene_info.get('phenotypes', []):
        phenotype_objs.append(build_phenotype(phenotype_info))
    
    if phenotype_objs:
        gene_obj['phenotypes'] = phenotype_objs

    for key in list(gene_obj):
        if gene_obj[key] is None:
            gene_obj.pop(key)

    return gene_obj
def build_hgnc_gene ( gene_info , build = '37' ) : try : hgnc_id = int ( gene_info [ 'hgnc_id' ] ) except KeyError as err : raise KeyError ( "Gene has to have a hgnc_id" ) except ValueError as err : raise ValueError ( "hgnc_id has to be integer" ) try : hgnc_symbol = gene_info [ 'hgnc_symbol' ] except KeyError as err : raise KeyError ( "Gene has to have a hgnc_symbol" ) try : ensembl_id = gene_info [ 'ensembl_gene_id' ] except KeyError as err : raise KeyError ( "Gene has to have a ensembl_id" ) try : chromosome = gene_info [ 'chromosome' ] except KeyError as err : raise KeyError ( "Gene has to have a chromosome" ) try : start = int ( gene_info [ 'start' ] ) except KeyError as err : raise KeyError ( "Gene has to have a start position" ) except TypeError as err : raise TypeError ( "Gene start has to be a integer" ) try : end = int ( gene_info [ 'end' ] ) except KeyError as err : raise KeyError ( "Gene has to have a end position" ) except TypeError as err : raise TypeError ( "Gene end has to be a integer" ) gene_obj = HgncGene ( hgnc_id = hgnc_id , hgnc_symbol = hgnc_symbol , ensembl_id = ensembl_id , chrom = chromosome , start = start , end = end , build = build , ) if gene_info . get ( 'description' ) : gene_obj [ 'description' ] = gene_info [ 'description' ] # LOG.debug("Adding info %s", gene_info['description']) if gene_info . get ( 'previous_symbols' ) : gene_obj [ 'aliases' ] = gene_info [ 'previous_symbols' ] if gene_info . get ( 'entrez_id' ) : gene_obj [ 'entrez_id' ] = int ( gene_info [ 'entrez_id' ] ) if gene_info . get ( 'omim_id' ) : gene_obj [ 'omim_id' ] = int ( gene_info [ 'omim_id' ] ) if gene_info . get ( 'pli_score' ) : gene_obj [ 'pli_score' ] = float ( gene_info [ 'pli_score' ] ) if gene_info . get ( 'ref_seq' ) : gene_obj [ 'primary_transcripts' ] = gene_info [ 'ref_seq' ] if gene_info . get ( 'ucsc_id' ) : gene_obj [ 'ucsc_id' ] = gene_info [ 'ucsc_id' ] if gene_info . get ( 'uniprot_ids' ) : gene_obj [ 'uniprot_ids' ] = gene_info [ 'uniprot_ids' ] if gene_info . get ( 'vega_id' ) : gene_obj [ 'vega_id' ] = gene_info [ 'vega_id' ] if gene_info . get ( 'incomplete_penetrance' ) : gene_obj [ 'incomplete_penetrance' ] = True if gene_info . get ( 'inheritance_models' ) : gene_obj [ 'inheritance_models' ] = gene_info [ 'inheritance_models' ] phenotype_objs = [ ] for phenotype_info in gene_info . get ( 'phenotypes' , [ ] ) : phenotype_objs . append ( build_phenotype ( phenotype_info ) ) if phenotype_objs : gene_obj [ 'phenotypes' ] = phenotype_objs for key in list ( gene_obj ) : if gene_obj [ key ] is None : gene_obj . pop ( key ) return gene_obj
Build a hgnc_gene object

        Args:
            gene_info(dict): Gene information

        Returns:
            gene_obj(dict)
    
            {
                '_id': ObjectId(),
                # This is the hgnc id, required:
                'hgnc_id': int, 
                # The primary symbol, required 
                'hgnc_symbol': str,
                'ensembl_id': str, # required
                'build': str, # '37' or '38', defaults to '37', required
                
                'chromosome': str, # required
                'start': int, # required
                'end': int, # required
                
                'description': str, # Gene description
                'aliases': list(), # Gene symbol aliases, includes hgnc_symbol, str
                'entrez_id': int,
                'omim_id': int,
                'pli_score': float,
                'primary_transcripts': list(), # List of refseq transcripts (str)
                'ucsc_id': str,
                'uniprot_ids': list(), # List of str
                'vega_id': str,
                'transcripts': list(), # List of hgnc_transcript
                
                # Inheritance information
                'inheritance_models': list(), # List of model names
                'incomplete_penetrance': bool, # Acquired from HPO
                
                # Phenotype information
                'phenotypes': list(), # List of dictionaries with phenotype information
            }
Build a hgnc_gene object