- Samples
- 503
- Format
- VCF
- Build
- GRCh38high
- Method
- two-marker
- Ancestry
- auto → unknown
- Markers
- 3/3
- Phase
- phased
1. Results
Sample flow
Secretor-status distribution
Confidence
Table 1. Confidence counts for this run.
| Level | n |
|---|---|
| high | 503 |
| medium | 0 |
| low | 0 |
| none | 0 |
Diplotypes
Table 2. Diplotype counts for this run.
| fut2_genotype | n |
|---|---|
| Se/se | 234 |
| Se/Se | 164 |
| se/se | 105 |
QC summary
Table 3. Quality-control summary.
| Metric | Value |
|---|---|
| Ambiguous diplotypes | 0 |
| Unknown phenotype | 0 |
| Low confidence | 0 |
| Any QC issue (unique samples) | 0 |
| Missing required markers | 0 |
| Method reason | rs601338 and rs1047781 available |
| Ancestry | unknown |
| rs601338 LOF AF | 0.4414 |
| rs1047781 WEAK AF | 0.0000 |
Sample preview
Table 4. Showing 25 of 503 samples.
| FID | IID | secretor_status | fut2_genotype | confidence | qc_status | qc_reason |
|---|---|---|---|---|---|---|
| HG00096 | HG00096 | secretor | Se/Se | high | PASS | — |
| HG00097 | HG00097 | secretor | Se/Se | high | PASS | — |
| HG00099 | HG00099 | secretor | Se/se | high | PASS | — |
| HG00100 | HG00100 | secretor | Se/se | high | PASS | — |
| HG00101 | HG00101 | secretor | Se/se | high | PASS | — |
| HG00102 | HG00102 | non-secretor | se/se | high | PASS | — |
| HG00103 | HG00103 | non-secretor | se/se | high | PASS | — |
| HG00105 | HG00105 | secretor | Se/se | high | PASS | — |
| HG00106 | HG00106 | non-secretor | se/se | high | PASS | — |
| HG00107 | HG00107 | non-secretor | se/se | high | PASS | — |
| HG00108 | HG00108 | non-secretor | se/se | high | PASS | — |
| HG00109 | HG00109 | secretor | Se/se | high | PASS | — |
| HG00110 | HG00110 | secretor | Se/se | high | PASS | — |
| HG00111 | HG00111 | secretor | Se/se | high | PASS | — |
| HG00112 | HG00112 | non-secretor | se/se | high | PASS | — |
| HG00113 | HG00113 | non-secretor | se/se | high | PASS | — |
| HG00114 | HG00114 | secretor | Se/se | high | PASS | — |
| HG00115 | HG00115 | secretor | Se/se | high | PASS | — |
| HG00116 | HG00116 | secretor | Se/Se | high | PASS | — |
| HG00117 | HG00117 | secretor | Se/se | high | PASS | — |
| HG00118 | HG00118 | secretor | Se/Se | high | PASS | — |
| HG00119 | HG00119 | secretor | Se/se | high | PASS | — |
| HG00120 | HG00120 | secretor | Se/Se | high | PASS | — |
| HG00121 | HG00121 | non-secretor | se/se | high | PASS | — |
| HG00122 | HG00122 | secretor | Se/Se | high | PASS | — |
2. Output
secretor_status is the inferred phenotype (secretor, weak-secretor, or non-secretor). unknown means the method could not assign a status. Default --phenotype-coding biochemical reports Se^w/Se^w and Se^w/se as weak-secretor. --phenotype-coding gwas recodes those diplotypes as non-secretor. fut2_genotype is the diplotype (for example Se/se) and always keeps Se^w; ambiguous means more than one diplotype was compatible with the unphased genotypes. Population 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/1kg_eur.secretor.tsv |
| Cohort QC metrics (TSV) | examples/out/1kg_eur.qc.tsv |
| Plain-text summary | examples/out/1kg_eur.summary.txt |
| This HTML report | docs/examples/reports/1kg_eur.report.html |
Per-sample columns (.secretor.tsv)
Table 6. Columns in the per-sample calls file (.secretor.tsv).
| Column | Description |
|---|---|
FID | Family or cohort identifier from the input file |
IID | Individual sample identifier |
secretor_status | Inferred phenotype: secretor, weak-secretor, non-secretor, or unknown (GWAS coding recodes weak-secretor as non-secretor) |
fut2_genotype | Diplotype label (for example Se/se), or ambiguous |
fut2_allele1 | First haplotype allele after sort (Se < Se^w < se) |
fut2_allele2 | Second haplotype allele after sort |
haplotype1 | Haplotype call on chromosome copy 1 |
haplotype2 | Haplotype call on chromosome copy 2 |
method | Inference method used for this sample |
geno_mode | Genotype interpretation mode (hardcall, dosage, probability, auto) |
phase_mode | Whether haplotypes used phase (phased) or enumeration (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 fut2_genotype is ambiguous |
3. Input
Genotype file and run settings. Only FUT2 tag SNPs are fetched; the full variant set is not loaded.
Table 7. Run settings and marker availability.
| Field | Value |
|---|---|
| Input path | examples/data/1kg/eur_hg38.vcf.gz |
| Format | VCF |
| Samples | 503 |
| Build (requested → resolved) | hg38 → GRCh38 (high) |
| Method (requested → selected) | auto → two-marker |
| Method reason | rs601338 and rs1047781 available |
| Ancestry (requested → resolved) | auto → unknown |
| rs601338 LOF AF | 0.4414 |
| rs1047781 WEAK AF | 0.0000 |
| Genotype mode | auto |
| Phase (requested → resolved) | auto → phased |
| Assume trans (unphased double-het) | yes (--assume-trans) |
| Phenotype coding | biochemical (--phenotype-coding biochemical) |
| Dosage hardcall threshold | 0.1 |
| Minimum genotype probability | 0.9 |
| Strict method | no |
| Markers found | rs1047781, rs601338, rs602662 |
| Markers missing | none |
Markers in this file
Table 8. FUT2 tag SNPs located in the input file.
| Marker | Found | Position | Call rate | INFO |
|---|---|---|---|---|
| rs601338 | yes | chr19:48703417 | 1.000 | — |
| rs1047781 | yes | chr19:48703374 | 1.000 | — |
| rs602662 | yes | chr19:48703728 | 1.000 | — |
4. Methods
genoSecretor fetches only FUT2 tag SNPs (rs601338, rs1047781, rs602662) 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, file-header metadata, and contig lengths, or taken from an explicit --build setting. Conflicting evidence is an error; the build is never guessed silently.
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 secretor_status, fut2_genotype, confidence, and QC fields. Auto method selection is ancestry-aware (--ancestry): East Asian–like files missing rs1047781 are not typed with common.
Selected method: two-marker
Ancestry-aware 2-marker inference (rs601338 + rs1047781)
Markers: rs601338, rs1047781
Method was auto-selected: rs601338 and rs1047781 available
- Markers: rs601338 (complete LoF se428 / W143X) and rs1047781 (weak se385 / I129F).
- A haplotype with rs601338
LOFis se. Otherwise rs1047781WEAKyieldsSe^wandFUNCTIONALyields Se. - Phenotype is recessive:
se/seis non-secretor;Se^w/Se^wandSe^w/se are weak-secretor under--phenotype-codingbiochemical (default) or non-secretor under gwas; any Se haplotype is secretor. - When both markers are heterozygous and unphased,
--assume-trans(default) assignsSe^w/se;--no-assume-transleaves the call ambiguous (Se^w/se orSe/sewith both variants in cis).
Diplotype to phenotype
Table 9. Diplotype to secretor phenotype.
| Diplotype | Phenotype |
|---|---|
Se/Se | secretor |
Se/se | secretor |
Se/Se^w | secretor |
Se^w/Se^w | weak-secretor |
Se^w/se | weak-secretor |
se/se | non-secretor |
This run used --phenotype-coding biochemical. Haplotypes always keep Se^w in fut2_genotype; only secretor_status is recoded.
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, uncertain dosage, or unusual marker combinations |
| none | Insufficient or conflicting evidence |
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 |
This run used genotype mode auto and phase mode phased.
5. Citations
Software
genoSecretor: genetically determined FUT2 secretor status inference from genotype datasets. v0.2.0. Yunye He. 2026. https://github.com/cloufield/genoSecretor
Method (two-marker)
- [primary] Smyth DJ, Cooper JD, Howson JMM, Clarke P, Downes K, Mistry T, et al. FUT2 Nonsecretor Status Links Type 1 Diabetes Susceptibility and Resistance to Infection. Diabetes. 2011;60:3081-3084 — DOI: 10.2337/db11-0138; PMID: 22042020; Defines non-secretor status from se428 (rs601338) in Europeans/Africans and se385 (rs1047781) in East/Southeast Asians; match with --phenotype-coding gwas
6. Limitations
Research use only. Genotype-inferred FUT2 secretor status does not capture all rare, weak, or otherwise atypical FUT2 alleles and must not be used for clinical decision-making, transfusion, or infection-risk counselling.
- Common secretor inference uses three SNP markers and six common diplotypes under standard assumptions. Rare FUT2 nulls, fusions, and regulatory alleles may be misclassified as functional Se.
- rs1047781 T/T is reported as weak-secretor under
--phenotype-codingbiochemical (default; reduced FUT2 activity). Pass--phenotype-codinggwas to recodeSe^w/Se^wandSe^w/se as non-secretor (Smyth 2011; BBJ-style binary coding). The diplotype column always preservesSe^w. - rs602662 is an LD proxy for se428, not a functional variant. When it is used, confidence is capped at low. The proxy is not a substitute for rs1047781 in East Asian data.
- The default
--assume-transrule (unphased double-het →Se^w/se) is an ancestral-haplotype assumption. Pass--no-assume-transto mark those samples ambiguous. - Low imputation INFO, missing genotypes, and uncertain dosages propagate to low-confidence or unknown calls.
- genoSecretor has not been validated against salivary ABH serology across ancestries. Outputs are intended for population-genetics, epidemiology, GWAS, PheWAS, and biobank research. FUT3/Lewis typing is out of scope.
- Rare FUT2 nulls other than se428 and se385 are not modelled and may be misclassified as Se.
- The default
--assume-transrule (compound heterozygote in trans) is an ancestral-haplotype assumption: se428 and se385 are typically mutually exclusive across continents. Pass--no-assume-transto leave those samples ambiguous.
7. Marker determination
Secretor 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 two-marker with markers rs601338, rs1047781.
Table 12. Tag SNPs used for FUT2 secretor inference and their biological states.
| Marker | HGVS | States | Role |
|---|---|---|---|
| rs601338 | c.461G>A (W143X / se428) | FUNCTIONAL / LOF | Complete null vs Se |
| rs1047781 | c.418A>T (I129F / se385) | FUNCTIONAL / WEAK | Weak Se^w vs Se |
| rs602662 | c.772G>A (G258S) | SE_PROXY / NON_SE_PROXY | LD proxy for se428 (proxy only; not functional) |
Table 13. Haplotype call on each chromosome copy.
| Condition | Haplotype |
|---|---|
rs601338 = LOF | se |
else rs1047781 = WEAK | Se^w |
| else | Se |
se428 is epistatic to se385 on the same haplotype: a truncated FUT2 is se even if I129F is also present.
Table 14. Unphased diploid combinations of rs601338 and rs1047781 (two-marker). States are biological, not REF/ALT.
| rs601338 | rs1047781 | Diplotype | Phenotype |
|---|---|---|---|
LOF / LOF | any | se/se | non-secretor |
FUNCTIONAL / FUNCTIONAL | FUNCTIONAL / FUNCTIONAL | Se/Se | secretor |
LOF / FUNCTIONAL | FUNCTIONAL / FUNCTIONAL | Se/se | secretor |
FUNCTIONAL / FUNCTIONAL | WEAK / WEAK | Se^w/Se^w | weak-secretor |
FUNCTIONAL / FUNCTIONAL | FUNCTIONAL / WEAK | Se/Se^w | secretor |
LOF / FUNCTIONAL | FUNCTIONAL / WEAK | Se^w/se | weak-secretor |
- This run used
--phenotype-codingbiochemical (default):Se^w/Se^wandSe^w/se are weak-secretor. Pass--phenotype-codinggwas to recode them as non-secretor. - This run used
--assume-trans(default): unphased rs601338 × rs1047781 double-het isSe^w/se. Use--no-assume-transto leave those samples ambiguous. - common uses rs601338 only and never emits weak-secretor.
- eas uses rs1047781 only and never emits
se/sefrom W143X. - proxy may substitute rs602662 as an se428 proxy; confidence is then capped at low.
- Inference rules never operate on raw VCF REF/ALT.
--no-assume-transleavesLOF/FUNCTIONAL×FUNCTIONAL/WEAKambiguous (Se^w/se orSe/secis).