Skip to content

1000 Genomes --assume-bo check

Phased NYGC 30x GRCh38 panels (AFR, AMR, EAS, EUR) as cis/trans truth for the unphased double-heterozygote rule.

Research use only

Phased 1000 Genomes genotypes are not serological ABO types. This check asks whether unphased --assume-bo matches phase at rs8176719 × rs8176746. It is not a clinical validation.

Panels: ~/.gwaslab/{ANC}.ALL.split_norm_af.1kg_30x.hg38.vcf.gz (override with GENOABO_1KG_<ANC>_VCF). EAS falls back to the bundled extract if the full panel is absent.

#!/usr/bin/env bash
# Compare unphased --assume-bo to phased 1KG AFR/AMR/EAS/EUR diplotypes.
# Panels: GENOABO_1KG_<ANC>_VCF, else ~/.gwaslab/<ANC>.ALL.split_norm_af.1kg_30x.hg38.vcf.gz
# EAS falls back to the bundled four-marker extract.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"
mkdir -p "$ROOT/out"
python "$ROOT/verify_assume_bo_1kg.py" --out-dir "$ROOT/out"
echo "Summary: $ROOT/out/assume_bo_1kg.summary.txt"
./examples/run_1kg_assume_bo.sh

Writes examples/out/assume_bo_1kg.summary.tsv, .discordant.tsv, and .summary.txt.

Operational metric (the flag)

Unphased O_DEL/NON_O × A_ALLELE/B_ALLELE is compatible with A/O or B/O. --no-assume-bo leaves those samples ambiguous; default --assume-bo assigns B/O. Concordance is the fraction of that double-het set whose phased genotype is B/O.

Super-population n Double-het Phased B/O Phased A/O Concordance
AFR 661 113 105 8 105/113 (92.9%)
AMR 347 20 20 0 20/20 (100%)
EAS 504 124 124 0 124/124 (100%)
EUR 503 41 41 0 41/41 (100%)

In AMR, EAS, and EUR every unphased double-het is B/O in phase, so --assume-bo matches the phased diplotype (and phenotype). In AFR, 8/113 double-hets are A/O: --assume-bo would emit group B instead of A. Default --assume-bo is unchanged; for unphased African-ancestry data, --no-assume-bo leaves those samples ambiguous.

Homozygous O_DEL is called O/O without phase even when rs8176746 carries B (O-cis-B). An earlier genoABO build left those samples unphased-ambiguous (25 AFR in the 30x panel); they are no longer expected failures. Re-run ./examples/run_1kg_assume_bo.sh to refresh discordant-row counts if you have local panels.

Haplotype metric (O deletion background)

Among phased O haplotypes, cis allele at rs8176746. A_ALLELE matches the “O arose on A” story; B_ALLELE does not. This also counts O-cis-B configurations that unphased genotypes resolve uniquely (so the flag never applies).

Super-population O haplotypes O cis A O cis B O cis unknown
AFR 933 867 41 25
AMR 533 533 0 0
EAS 625 625 0 0
EUR 609 609 0 0

Unknown AFR counts in the table below include O haplotypes whose cis A/B allele was not assigned by the verification script’s unphased shortcuts. Re-run the script after this release if you need an updated cis-unknown tally; the operational double-het table above does not depend on that.

See Assumptions and Inference methods (double-heterozygote resolution).