Exemplo n.º 1
0
def add_global_af(ht: hl.Table, temp: str) -> hl.Table:
    '''
    Adds gnomAD global AF annotation to Table

    :param Table ht: Input Table
    :param str temp: Path to temp bucket (to store intermediary files)
    :return: Table with gnomAD global AF annotation
    :rtype: Table
    '''
    # checkpoint table after completing both gnomAD exomes and gnomAD genomes join
    temp_path = f'{temp}/join.ht'
    ht = ht.checkpoint(temp_path)

    # set gnomAD ACs and ANs to 0 if they are missing after the join
    ht = ht.transmute(
        gnomad_exomes_AC=hl.if_else(hl.is_defined(ht.gnomad_exomes_AC),
                                    ht.gnomad_exomes_AC, 0),
        gnomad_genomes_AC=hl.if_else(hl.is_defined(ht.gnomad_genomes_AC),
                                     ht.gnomad_genomes_AC, 0),
        gnomad_exomes_AN=hl.if_else(hl.is_defined(ht.gnomad_exomes_AN),
                                    ht.gnomad_exomes_AN, 0),
        gnomad_genomes_AN=hl.if_else(hl.is_defined(ht.gnomad_genomes_AN),
                                     ht.gnomad_genomes_AN, 0),
    )

    ht = ht.annotate(gnomad_global_AF=(
        hl.if_else(((ht.gnomad_exomes_AN == 0)
                    & (ht.gnomad_genomes_AN == 0)), 0.0,
                   hl.float((ht.gnomad_exomes_AC + ht.gnomad_genomes_AC) /
                            (ht.gnomad_exomes_AN + ht.gnomad_genomes_AN)))))
    ht.describe()
    return ht
Exemplo n.º 2
0
def join_tables(ht: hl.Table, exomes: bool) -> hl.Table:
    '''
    Joins seqr variant table to gnomAD table. NOTE code was written assuming most recent gnomAD release is v3

    :param Table ht: Table with variants downloaded from seqr
    :param bool exomes: Whether to join with gnomAD exomes table or genomes table
    :return: seqr variants Table joined with gnomAD table
    :rtype: hl.Table
    '''
    if exomes:
        # read in exomes table
        gnomad_ht = hl.read_table(
            get_gnomad_liftover_data_path('exomes', version='2.1.1'))
        gnomad_ht = gnomad_ht.select('freq', 'popmax')
        gnomad_ht = gnomad_ht.select_globals()
        gnomad_ht = gnomad_ht.transmute(
            gnomad_exomes_AC=gnomad_ht.freq[0].AC,
            gnomad_exomes_AN=gnomad_ht.freq[0].AN,
            gnomad_exomes_popmax_AF=gnomad_ht.popmax[0].AF,
            gnomad_exomes_popmax_pop=gnomad_ht.popmax[0].pop)
        gnomad_ht.describe()
    else:
        # read in genomes table
        gnomad_ht = hl.read_table(
            'gs://gnomad-public/release/3.0/ht/genomes/gnomad.genomes.r3.0.sites.ht'
        )
        gnomad_ht = gnomad_ht.select('freq')
        gnomad_ht = gnomad_ht.transmute(gnomad_genomes_AC=gnomad_ht.freq[0].AC,
                                        gnomad_genomes_AN=gnomad_ht.freq[0].AN)
        gnomad_ht = gnomad_ht.select_globals()
        gnomad_ht.describe()

    ht = ht.annotate(**gnomad_ht[ht.key])
    ht.describe()
    return ht