variant_key |
str |
required |
|
Frozen authored identity this row resolves (rsid, else chrom:start:ref) |
rsid |
str | None |
optional |
|
Resolved dbSNP identifier |
chrom |
str | None |
optional |
|
Chromosome without 'chr' prefix |
start |
int | None |
optional |
|
1-based genomic position (VCF POS convention; matches the Ensembl and ClinVar snapshots) |
ref |
str | None |
optional |
|
Reference allele |
alts |
str | None |
optional |
|
Alt allele(s), comma-separated |
genome_build |
str |
defaulted |
|
Assembly the coordinate is in (the RM15 forward hook; GRCh38 today) |
locus_index |
int |
defaulted |
|
0 for a 1:1 resolution; 0..N-1 for a one-to-many rsid expansion |
vrs_id |
str | None |
optional |
|
GA4GH VRS allele id (ga4gh:VA.…) — one per ALT, comma-joined and positionally aligned with alts, so a single-alt row carries a bare id and a multi-allelic one names each of its alleles in the same order. An empty member is a hole: that allele's id could not be minted (an indel in an offline run, an off-assembly contig). Minted locally by vrs.derive_vrs_allele_id for a substitution, by the enricher's normalization path for an indel, and cross-checked against a source's own id (gnomAD serves one) where available. |
vrs_spec |
str | None |
optional |
|
VRS spec version the id was minted under ('2.0'). Recorded to disambiguate an embedded location id, not because the allele id drifts — a substitution's VA is identical under 1.x and 2.0. |
caid |
str | None |
optional |
|
ClinGen Allele Registry canonical allele id (CA<digits>) |
source |
str | None |
optional |
|
Which link filled this: cache|ensembl-graphql|ensembl-rest|manual|reversed (open) |
authority |
str | None |
optional |
|
The licensed data source the link speaks for — ensembl for ensembl-rest/ensembl-graphql/cache, clinvar for the snapshot, gnomad for the last-resort link. Joins sources.csv.source. Empty when there is no external authority to declare (authored, reversed, manual: the module's own bytes or a human). |
status |
str | None |
optional |
one of: ambiguous, not_found, resolved |
Resolution outcome: resolved|not_found|ambiguous |
rsid_alternates |
str | None |
optional |
|
When a reverse (position→rsid) back-fill hit several candidate rsIDs for the same exact allele (a genuine dbSNP merge), the full sorted candidate list (comma-separated); rsid carries the deterministic pick (lowest id) and status is 'ambiguous'. Empty otherwise. Provenance — EXCLUDED from resolution_signature (0.5, provisional). |
rsid_current |
str | None |
optional |
|
The rsID dbSNP serves today when the authored one has been merged away (e.g. rs3051860 for an authored rs3216883). Recorded, never substituted — weights.parquet carries the rsID as identity, so writing the new label into the artifact would migrate variant_key by network lookup and break the round-trip fixed point (Principle 7). |
rsid_status |
str | None |
optional |
one of: absent, live, merged, withdrawn |
What dbSNP currently says about rsid: live|merged|absent|withdrawn. The automated check never emits withdrawn — a retracted rsID is byte-identical to a never-assigned one through every live endpoint — so it reports absent and names both readings. withdrawn is for a curator who has established the retraction by hand, and it refuses in BOTH modes where absent refuses only under strict, because a retracted variant may invalidate the annotation rather than merely dating it. Provenance — EXCLUDED from resolution_signature (time-varying external state). |
fetched_at |
str | None |
optional |
|
ISO-8601 UTC timestamp, second resolution (e.g. '2026-08-03T02:03:23Z'). Canonicalized on load; records when this row was last written by a pass, not when the source published anything |