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
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