scout/parse/panel.py
def parse_gene(gene_info):
    """Parse a gene line with information from a panel file

        Args:
            gene_info(dict): dictionary with gene info

        Returns:
            gene(dict): A dictionary with the gene information
                {
                'hgnc_id': int,
                'hgnc_symbol': str,
                'disease_associated_transcripts': list(str),
                'inheritance_models': list(str),
                'mosaicism': bool,
                'reduced_penetrance': bool,
                'database_entry_version': str,
                }

    """
    gene = {}
    # This is either hgnc id or hgnc symbol
    identifier = None

    hgnc_id = None
    try:
        if 'hgnc_id' in gene_info:
            hgnc_id = int(gene_info['hgnc_id'])
        elif 'hgnc_idnumber' in gene_info:
            hgnc_id = int(gene_info['hgnc_idnumber'])
        elif 'hgncid' in gene_info:
            hgnc_id = int(gene_info['hgncid'])
    except ValueError as e:
        raise SyntaxError("Invalid hgnc id: {0}".format(hgnc_id))

    gene['hgnc_id'] = hgnc_id
    identifier = hgnc_id

    hgnc_symbol = None
    if 'hgnc_symbol' in gene_info:
        hgnc_symbol = gene_info['hgnc_symbol']
    elif 'hgncsymbol' in gene_info:
        hgnc_symbol = gene_info['hgncsymbol']
    elif 'symbol' in gene_info:
        hgnc_symbol = gene_info['symbol']

    gene['hgnc_symbol'] = hgnc_symbol

    if not identifier:
        if hgnc_symbol:
            identifier = hgnc_symbol
        else:
            raise SyntaxError("No gene identifier could be found")
    gene['identifier'] = identifier
    # Disease associated transcripts is a ','-separated list of
    # manually curated transcripts
    transcripts = ""
    if 'disease_associated_transcripts' in gene_info:
        transcripts = gene_info['disease_associated_transcripts']
    elif 'disease_associated_transcript' in gene_info:
        transcripts = gene_info['disease_associated_transcript']
    elif 'transcripts' in gene_info:
        transcripts = gene_info['transcripts']

    gene['transcripts'] = [
            transcript.strip() for transcript in
            transcripts.split(',') if transcript
        ]

    # Genetic disease models is a ','-separated list of manually curated
    # inheritance patterns that are followed for a gene
    models = ""
    if 'genetic_disease_models' in gene_info:
        models = gene_info['genetic_disease_models']
    elif 'genetic_disease_model' in gene_info:
        models = gene_info['genetic_disease_model']
    elif 'inheritance_models' in gene_info:
        models = gene_info['inheritance_models']
    elif 'genetic_inheritance_models' in gene_info:
        models = gene_info['genetic_inheritance_models']

    gene['inheritance_models'] = [
        model.strip() for model in models.split(',')
        if model.strip() in VALID_MODELS
    ]

    # If a gene is known to be associated with mosaicism this is annotated
    gene['mosaicism'] = True if gene_info.get('mosaicism') else False

    # If a gene is known to have reduced penetrance this is annotated
    gene['reduced_penetrance'] = True if gene_info.get('reduced_penetrance') else False

    # The database entry version is a way to track when a a gene was added or
    # modified, optional
    gene['database_entry_version'] = gene_info.get('database_entry_version')

    return gene
def parse_gene(gene_info):
    gene = {}
    # This is either hgnc id or hgnc symbol
    identifier = None

    hgnc_id = None
    try:
        if 'hgnc_id' in gene_info:
            hgnc_id = int(gene_info['hgnc_id'])
        elif 'hgnc_idnumber' in gene_info:
            hgnc_id = int(gene_info['hgnc_idnumber'])
        elif 'hgncid' in gene_info:
            hgnc_id = int(gene_info['hgncid'])
    except ValueError as e:
        raise SyntaxError("Invalid hgnc id: {0}".format(hgnc_id))

    gene['hgnc_id'] = hgnc_id
    identifier = hgnc_id

    hgnc_symbol = None
    if 'hgnc_symbol' in gene_info:
        hgnc_symbol = gene_info['hgnc_symbol']
    elif 'hgncsymbol' in gene_info:
        hgnc_symbol = gene_info['hgncsymbol']
    elif 'symbol' in gene_info:
        hgnc_symbol = gene_info['symbol']

    gene['hgnc_symbol'] = hgnc_symbol

    if not identifier:
        if hgnc_symbol:
            identifier = hgnc_symbol
        else:
            raise SyntaxError("No gene identifier could be found")
    gene['identifier'] = identifier
    # Disease associated transcripts is a ','-separated list of
    # manually curated transcripts
    transcripts = ""
    if 'disease_associated_transcripts' in gene_info:
        transcripts = gene_info['disease_associated_transcripts']
    elif 'disease_associated_transcript' in gene_info:
        transcripts = gene_info['disease_associated_transcript']
    elif 'transcripts' in gene_info:
        transcripts = gene_info['transcripts']

    gene['transcripts'] = [
            transcript.strip() for transcript in
            transcripts.split(',') if transcript
        ]

    # Genetic disease models is a ','-separated list of manually curated
    # inheritance patterns that are followed for a gene
    models = ""
    if 'genetic_disease_models' in gene_info:
        models = gene_info['genetic_disease_models']
    elif 'genetic_disease_model' in gene_info:
        models = gene_info['genetic_disease_model']
    elif 'inheritance_models' in gene_info:
        models = gene_info['inheritance_models']
    elif 'genetic_inheritance_models' in gene_info:
        models = gene_info['genetic_inheritance_models']

    gene['inheritance_models'] = [
        model.strip() for model in models.split(',')
        if model.strip() in VALID_MODELS
    ]

    # If a gene is known to be associated with mosaicism this is annotated
    gene['mosaicism'] = True if gene_info.get('mosaicism') else False

    # If a gene is known to have reduced penetrance this is annotated
    gene['reduced_penetrance'] = True if gene_info.get('reduced_penetrance') else False

    # The database entry version is a way to track when a a gene was added or
    # modified, optional
    gene['database_entry_version'] = gene_info.get('database_entry_version')

    return gene
def parse_gene ( gene_info ) : gene = { } # This is either hgnc id or hgnc symbol identifier = None hgnc_id = None try : if 'hgnc_id' in gene_info : hgnc_id = int ( gene_info [ 'hgnc_id' ] ) elif 'hgnc_idnumber' in gene_info : hgnc_id = int ( gene_info [ 'hgnc_idnumber' ] ) elif 'hgncid' in gene_info : hgnc_id = int ( gene_info [ 'hgncid' ] ) except ValueError as e : raise SyntaxError ( "Invalid hgnc id: {0}" . format ( hgnc_id ) ) gene [ 'hgnc_id' ] = hgnc_id identifier = hgnc_id hgnc_symbol = None if 'hgnc_symbol' in gene_info : hgnc_symbol = gene_info [ 'hgnc_symbol' ] elif 'hgncsymbol' in gene_info : hgnc_symbol = gene_info [ 'hgncsymbol' ] elif 'symbol' in gene_info : hgnc_symbol = gene_info [ 'symbol' ] gene [ 'hgnc_symbol' ] = hgnc_symbol if not identifier : if hgnc_symbol : identifier = hgnc_symbol else : raise SyntaxError ( "No gene identifier could be found" ) gene [ 'identifier' ] = identifier # Disease associated transcripts is a ','-separated list of # manually curated transcripts transcripts = "" if 'disease_associated_transcripts' in gene_info : transcripts = gene_info [ 'disease_associated_transcripts' ] elif 'disease_associated_transcript' in gene_info : transcripts = gene_info [ 'disease_associated_transcript' ] elif 'transcripts' in gene_info : transcripts = gene_info [ 'transcripts' ] gene [ 'transcripts' ] = [ transcript . strip ( ) for transcript in transcripts . split ( ',' ) if transcript ] # Genetic disease models is a ','-separated list of manually curated # inheritance patterns that are followed for a gene models = "" if 'genetic_disease_models' in gene_info : models = gene_info [ 'genetic_disease_models' ] elif 'genetic_disease_model' in gene_info : models = gene_info [ 'genetic_disease_model' ] elif 'inheritance_models' in gene_info : models = gene_info [ 'inheritance_models' ] elif 'genetic_inheritance_models' in gene_info : models = gene_info [ 'genetic_inheritance_models' ] gene [ 'inheritance_models' ] = [ model . strip ( ) for model in models . split ( ',' ) if model . strip ( ) in VALID_MODELS ] # If a gene is known to be associated with mosaicism this is annotated gene [ 'mosaicism' ] = True if gene_info . get ( 'mosaicism' ) else False # If a gene is known to have reduced penetrance this is annotated gene [ 'reduced_penetrance' ] = True if gene_info . get ( 'reduced_penetrance' ) else False # The database entry version is a way to track when a a gene was added or # modified, optional gene [ 'database_entry_version' ] = gene_info . get ( 'database_entry_version' ) return gene
Parse a gene line with information from a panel file

        Args:
            gene_info(dict): dictionary with gene info

        Returns:
            gene(dict): A dictionary with the gene information
                {
                'hgnc_id': int,
                'hgnc_symbol': str,
                'disease_associated_transcripts': list(str),
                'inheritance_models': list(str),
                'mosaicism': bool,
                'reduced_penetrance': bool,
                'database_entry_version': str,
                }
Parse a gene line with information from a panel file