- Samples
- 18
- Format
- VCF
- Build
- GRCh38high
- Method
- three-marker
- Markers
- 4/4
- Phase
- unphased
1. Results
Sample flow
ABO group distribution
Confidence
Table 1. Confidence counts for this run.
| Level | n |
|---|---|
| high | 0 |
| medium | 9 |
| low | 2 |
| none | 7 |
Diplotypes
Table 2. Diplotype counts for this run.
| ABO_genotype | n |
|---|---|
| unknown | 9 |
| O/O | 3 |
| A/A | 2 |
| A/B | 1 |
| A/O | 1 |
| B/B | 1 |
| B/O | 1 |
QC summary
Table 3. Quality-control summary.
| Metric | Value |
|---|---|
| Ambiguous diplotypes | 0 |
| Unknown phenotype | 9 |
| Low confidence | 2 |
| Any QC issue (unique samples) | 9 |
| Missing required markers | 7 |
| Method reason | User-selected method: three-marker |
Sample preview
Table 4. Showing 18 of 18 samples (QC-flagged samples listed first; 9 flagged).
| FID | IID | ABO_group | ABO_genotype | confidence | qc_status | qc_reason |
|---|---|---|---|---|---|---|
| S09_missO | S09_missO | unknown | unknown | none | MISSING_MARKER | rs8176719 missing |
| S10_missAB6 | S10_missAB6 | unknown | unknown | none | MISSING_MARKER | rs8176746 missing |
| S11_missAB7 | S11_missAB7 | unknown | unknown | none | MISSING_MARKER | rs8176747 missing |
| S12_missAll | S12_missAll | unknown | unknown | none | MISSING_MARKER | rs8176719 missing |
| S13_missO_proxy | S13_missO_proxy | unknown | unknown | none | MISSING_MARKER | rs8176719 missing |
| S15_conflictB | S15_conflictB | unknown | unknown | low | CONFLICT | rs8176746 and rs8176747 disagree on A vs B |
| S16_conflictB_rev | S16_conflictB_rev | unknown | unknown | low | CONFLICT | rs8176746 and rs8176747 disagree on A vs B |
| S17_missRequired | S17_missRequired | unknown | unknown | none | MISSING_MARKER | rs8176719 missing |
| S18_hetO_missAB | S18_hetO_missAB | unknown | unknown | none | MISSING_MARKER | rs8176746 missing |
| S01_AA | S01_AA | A | A/A | medium | PASS | — |
| S02_AO | S02_AO | A | A/O | medium | PASS | — |
| S03_BB | S03_BB | B | B/B | medium | PASS | — |
| S04_BO | S04_BO | B | B/O | medium | PASS | — |
| S05_AB | S05_AB | AB | A/B | medium | PASS | — |
| S06_OO | S06_OO | O | O/O | medium | PASS | — |
| S07_AA_dup | S07_AA_dup | A | A/A | medium | PASS | — |
| S08_OO_dup | S08_OO_dup | O | O/O | medium | PASS | — |
| S14_missProxy | S14_missProxy | O | O/O | medium | PASS | — |
2. Output
ABO_group is the inferred phenotype (A, B, AB, or O). In .abo.tsv an unassigned group is NA; HTML reports may display that as unknown. ABO_genotype is the diplotype (for example A/O); ambiguous means more than one diplotype was compatible with the unphased genotypes. n_unknown counts samples with no phenotype (including ambiguous rows). Population A/B/AB/O percentages are informational only; samples are never rejected for frequency deviation.
Files written
Table 5. Files written for this run.
| File | Path |
|---|---|
| Per-sample calls (TSV) | examples/out/vcf_hg38.abo.tsv |
| Cohort QC metrics (TSV) | examples/out/vcf_hg38.qc.tsv |
| Plain-text summary | examples/out/vcf_hg38.summary.txt |
| This HTML report | docs/examples/reports/vcf_hg38.report.html |
Per-sample columns (.abo.tsv)
Table 6. Columns in the per-sample calls file (.abo.tsv).
| Column | Description |
|---|---|
FID | Family or cohort identifier from the input file |
IID | Individual sample identifier |
ABO_group | Inferred phenotype: A, B, AB, or O. Unassigned is NA in the TSV (HTML may show unknown) |
ABO_genotype | Diplotype label (for example A/O), ambiguous, or NA |
ABO_allele1 | First haplotype allele after alphabetical sort (A < B < O) |
ABO_allele2 | Second haplotype allele after alphabetical sort |
haplotype1 | Chromosome copy 1 when phased; otherwise the same sorted allele as ABO_allele1 |
haplotype2 | Chromosome copy 2 when phased; otherwise the same sorted allele as ABO_allele2 |
method | Inference method used for this sample |
geno_mode | Requested genotype mode (hardcall, dosage, probability, auto); not the resolved GP/DS/GT source |
phase_mode | Whether haplotypes used phase (phased) or copy-count rules (unphased) |
build | Genome assembly used for marker coordinates |
confidence | high, medium, low, or none (not a calibrated probability) |
qc_status | PASS, AMBIGUOUS, MISSING_MARKER, CONFLICT, or LOW_CONFIDENCE |
qc_reason | Free-text explanation of QC status |
possible_diplotypes | Compatible diplotypes when ABO_genotype is ambiguous |
ukb_haplotype | UK Biobank Field 23165 haplotype code (ukb method only) |
isbt_alleles | Matched ISBT allele IDs (extended method only) |
3. Input
Genotype file and run settings. Only ABO tag SNPs are fetched; the full variant set is not loaded.
Table 7. Run settings and marker availability.
| Field | Value |
|---|---|
| Input path | examples/data/hg38/cohort.vcf |
| Format | VCF |
| Samples | 18 |
| Build (requested → resolved) | hg38 → GRCh38 (high) |
| Method (requested → selected) | three-marker → three-marker |
| Method reason | User-selected method: three-marker |
| Genotype mode | auto |
| Phase (requested → resolved) | auto → unphased |
| Assume BO (unphased double-het) | yes (--assume-bo) |
| Dosage hardcall threshold | 0.1 |
| Minimum genotype probability | 0.9 |
| Strict method | no |
| Markers found | rs505922, rs8176719, rs8176746, rs8176747 |
| Markers missing | none |
Markers in this file
Table 8. ABO tag SNPs located in the input file.
| Marker | Found | Position | Call rate | INFO |
|---|---|---|---|---|
| rs8176719 | yes | chr9:133257521 | 0.778 | — |
| rs8176746 | yes | chr9:133255935 | 0.778 | — |
| rs8176747 | yes | chr9:133255928 | 0.833 | — |
| rs505922 | yes | chr9:133273813 | 0.889 | — |
4. Methods
genoABO fetches only ABO tag SNPs (rs8176719, rs8176746, rs8176747, rs505922) from the input file. Variants are matched by rsID, contig and position (including chr-prefixed and RefSeq contig aliases), then by allele-aware keys.
Genome build is resolved from marker coordinates and VCF header tokens such as ##reference=, or taken from an explicit --build setting. Conflicting evidence is an error; the build is never guessed silently. Chromosome-length matching is not used by the caller.
Per-sample genotypes are interpreted from hardcalls (GT), dosage (DS), or genotype probabilities (GP) according to the selected genotype mode. REF/ALT alleles are then mapped to biological marker states. Inference rules never operate on raw VCF alleles.
The selected method applies haplotype and diplotype rules and emits ABO_group, ABO_genotype, confidence, and QC fields.
Selected method: three-marker
3-marker inference (+ rs8176747); useful for East Asian datasets
Markers: rs8176719, rs8176746, rs8176747
- Markers: rs8176719, rs8176746, and rs8176747 (additional
A/Bcheck). - Haplotype rules match the common method, with rs8176747 confirming B vs A.
- If rs8176746 and rs8176747 disagree on B vs A, qc_status is CONFLICT and confidence is low; no phenotype is assigned.
Diplotype to phenotype
Table 9. Diplotype to ABO phenotype.
| Diplotype | Phenotype |
|---|---|
A/A | A |
A/O | A |
B/B | B |
B/O | B |
A/B | AB |
O/O | O |
Confidence
Table 10. Confidence levels (not calibrated probabilities).
| Level | Criteria |
|---|---|
| high | Direct functional markers; consistent genotypes; phase sufficient |
| medium | Unphased but uniquely inferable |
| low | Proxy marker (rs505922), or three-marker A/B SNP disagreement |
| none | Missing required markers, or dosage/GP below the hardcall threshold |
Confidence is not a calibrated probability.
Genotype modes
Table 11. Genotype interpretation modes.
| Mode | Behavior |
|---|---|
| hardcall | Discrete GT (0/0, 0/1, 1/1, or phased) |
| dosage | Threshold ALT dosage into 0/1/2 copies; otherwise uncertain |
| probability | Argmax GP if max(P) meets the minimum probability threshold; otherwise uncertain |
| auto | GP, then DS, then hardcall GT, in that order of precedence (GP/DS replace leftover phased GT) |
This run used genotype mode auto and phase mode unphased.
5. Citations
Software
genoABO: genetically determined ABO blood group inference from genotype datasets. v0.3.0. Yunye He. 2026. https://github.com/cloufield/genoABO
Method (three-marker)
- [primary] Fry AE, Griffiths MJ, Auburn S, Diakite M, Forton JT, Green A, et al. Common variation in the ABO glycosyltransferase is associated with susceptibility to severe Plasmodium falciparum malaria. Hum Mol Genet. 2008;17:567-576 — DOI: 10.1093/hmg/ddm331; PMID: 18003641; Designed large-scale assays for rs8176719, rs8176746, and rs8176747 (plus rs8176743)
6. Limitations
Research use only. Genotype-inferred ABO groups do not capture all rare, weak, cis-AB, structural, or otherwise atypical ABO alleles and must not be used for transfusion or clinical decision-making.
- Common A/
B/O/AB inference uses four SNP markers and six common diplotypes under standard assumptions. Rare, weak, cis-AB, null, hybrid, and structural ABO alleles may be misclassified. - Non-deletional O alleles are not modelled. The extended method is limited to ABO*A.01, ABO*B.01, and ABO*O.01; it is not ISBT-comprehensive.
- rs505922 is an LD proxy for the O haplotype, not a functional variant. When it is used (UKB fallback), confidence is capped at low. 1000 Genomes 30x hg38 haplotype r² with rs8176719: EAS 0.946, EUR 0.869, AMR 0.820, AFR 0.437.
- On GRCh37/GRCh38 the reference allele at rs8176719 is the O-associated sequence. VCF files often encode an insertion for
A/Brather than a deletion for O; normalization is required and representation varies by pipeline. - The default
--assume-borule (O deletion on an A background, resolving unphased double heterozygotes toB/Orather thanA/O) is a common-allele assumption. On 1000 Genomes 30x hg38 (phased GT, not serology), AMR/EAS/EUR double-hets were allB/O; AFR 8/113 wereA/O. Pass--no-assume-boto mark those samples ambiguous. - Low imputation INFO is reported in inspect/QC when present but does not change confidence. Missing genotypes and dosages or GP values below the hardcall thresholds are treated as missing markers (confidence none).
- genoABO has not been validated against serological typing across ancestries. Outputs are intended for population-genetics, epidemiology, GWAS, PheWAS, and biobank research.
- Marker disagreement between rs8176746 and rs8176747 is flagged as CONFLICT, not resolved into a forced phenotype.
- rs8176746 and rs8176747 have haplotype r² = 1.000 in 1000 Genomes AFR/AMR/EAS/EUR (NYGC 30x hg38); disagreement is rare.
7. Marker determination
ABO phenotype is inferred from biological marker states after REF/ALT normalization, not from raw VCF alleles. The selected method of this run is named below; unused markers are shown for reference.
This run used method three-marker with markers rs8176719, rs8176746, rs8176747.
Table 12. Tag SNPs used for ABO inference and their biological states.
| Marker | HGVS | States | Role |
|---|---|---|---|
| rs8176719 | c.261delG | O_DEL / NON_O | O vs A/B background |
| rs8176746 | c.796C>A | A_ALLELE / B_ALLELE | A vs B |
| rs8176747 | c.803G>C | A_ALLELE / B_ALLELE | A vs B confirmation (three-marker) |
| rs505922 | — | O_PROXY / NON_O_PROXY | LD proxy for O (ukb only; not functional) |
Table 13. Haplotype call on each chromosome copy.
| Condition | Haplotype |
|---|---|
rs8176719 = O_DEL | O |
else rs8176746 = B_ALLELE (and rs8176747 = B_ALLELE when three-marker) | B |
else rs8176746 = A_ALLELE | A |
| else | unknown |
If rs8176746 and rs8176747 disagree on B vs A, qc_status is CONFLICT and confidence is low; no phenotype is assigned.
Table 14. Unphased diploid combinations of rs8176719 and rs8176746 (common and three-marker). States are biological, not REF/ALT.
| rs8176719 | rs8176746 | Diplotype | Phenotype |
|---|---|---|---|
O_DEL / O_DEL | any | O/O | O |
NON_O / NON_O | A / A | A/A | A |
O_DEL / NON_O | A / A | A/O | A |
NON_O / NON_O | B / B | B/B | B |
O_DEL / NON_O | A / B | B/O | B |
NON_O / NON_O | A / B | A/B | AB |
- This run used
--assume-bo(default): unphasedO_DEL/NON_O×A/BisB/O. Use--no-assume-boto leave those samples ambiguous. - three-marker also requires rs8176747 to agree with rs8176746.
- ukb may substitute rs505922 as an O proxy; confidence is then capped at low.
- Inference rules never operate on raw VCF REF/ALT.
--no-assume-boleavesO_DEL/NON_O×A/Bambiguous (A/OorB/O).