Abstract
This sprint was asked: "For LCT, is the ClinVar pathogenic-vs-benign allele-frequency gap larger than for a comparable housekeeping gene?" The scoped, falsifiable version of this question asks whether the population allele-frequency distribution of ClinVar pathogenic LCT variants differs from the population allele-frequency distribution of ClinVar benign LCT variants, and whether that difference is larger for LCT than for a comparable housekeeping gene (e.g. GAPDH). Answering it requires (1) ClinVar pathogenicity classifications for variants in each gene, and (2) modern population allele frequencies for those same variants (e.g. gnomAD), so the two classification groups can be compared per gene and then across genes.
The capability gate for this exact run pinned the analysis template to ancient_selection_trajectory, which measures a different quantity: whether a single known-selected allele (e.g. LCT/MCM6 rs4988235) changed frequency across ancient-DNA sample dates (years BP) in the Allen Ancient DNA Resource. That template consumes no ClinVar classifications, no modern population allele frequencies, and no comparison gene. It therefore cannot honestly answer the scoped question. Per the run protocol — use exactly the gated template and never substitute another allowlisted analysis, and never reshape the idea to make an incompatible template fit — this run publishes an explicit failed capability disclosure with outcome: failed. No dataset was fetched, no analysis was executed, and no statistic or figure is reported because none was computed.
Question
Idea (verbatim): For LCT, is the ClinVar pathogenic-vs-benign allele-frequency gap larger than for a comparable housekeeping gene?
Scoped question: For the LCT gene, does the population allele-frequency distribution of ClinVar pathogenic variants differ from that of ClinVar benign variants, and is that difference larger for LCT than for a comparable housekeeping gene (e.g. GAPDH)?
Measurable outcome if this were runnable: per gene, a comparison of the population allele-frequency distributions of ClinVar pathogenic and benign variants (e.g. a test statistic on the two distributions, or a median/mean gap), then the LCT difference compared against the housekeeping-gene difference. None of this was computed, because the required template cannot supply it.
Why the gated template cannot answer this
The gated template is ancient_selection_trajectory (scripts/reference_analyses/ancient_selection_trajectory.py). It regresses each ancient sample's ALT-allele dosage (0/1/2 copies) on its sample date in years BP by OLS and tests the date-slope for non-zero trend. Its only input is a CSV from fetch_aadr.py (columns: geneticid, groupid, politicalentity, latitude, longitude, datebp, refallele, altallele, alt_dosage).
That input and computation contain none of the three ingredients the scoped question needs:
- No ClinVar pathogenicity classifications. AADR carries no ClinVar pathogenic/benign labels, so no variant can be assigned to a ClinVar class.
- No modern population allele frequencies. The template analyzes ancient DNA dosage over time, not present-day population allele frequencies (e.g. gnomAD) of the ClinVar variant set.
- No comparison gene. The template is a single-locus scan; it has no machinery for a second (housekeeping) gene, let alone a cross-gene comparison of a pathogenic-vs-benign gap.
Running ancient_selection_trajectory on LCT would produce a number about LCT allele-frequency change across ancient DNA — a real but different finding that would not answer (and could not be presented as answering) the scoped ClinVar question. Per the protocol that is a capability mismatch, and the honest output is this disclosure.
Why the gate routed here. The mismatch is a deterministic consequence of the engine's capability matcher, not of anything this run chose. The idea text matches the matcher patterns of both ancient_selection_trajectory (its \b(?:LCT|MCM6|SLC24A5)\b pattern hits "LCT") and clinvar_gnomad_ensembl (its \bclinvar\b, \bpathogenic\b, and \bbenign\b patterns all hit the idea text). ancient_selection_trajectory appears earlier in the gate's TEMPLATE_PRIORITY list, so within Genomics it is selected first and becomes this run's execution template. The routing is internally consistent but semantically wrong for this idea, because the "LCT" match alone cannot make an ancient-DNA template answer a ClinVar allele-frequency question. A future fix would need to make the ClinVar/classification signals out-rank the gene-name match for such questions.
What was attempted and what stopped
- Stage (a) — scope: completed. The scoped question was fixed and the required template was checked against it; the mismatch is the reason for this failed outcome.
- Stage (b) — data: not attempted. Fetching data would not make the gated template able to answer a ClinVar question, so no zero-auth dataset slice was downloaded (
download_bytes = 0). - Stage (c) — analysis: not attempted. No analysis was executed, so there is no
stats.json, nofigure.png, and noanalysis.duration_s. - Stage (d) — write: this paper.
The absence of every downstream artifact is intentional and disclosed here; the run did not compute, and no number is fabricated or implied.
What a re-run would need
The question is answerable by the engine's allowlisted clinvar_gnomad_ensembl anchor analysis ("For gene G, do pathogenic variants differ in population frequency from benign ones?"). It would be run per gene — once for LCT and once for a comparable housekeeping gene such as GAPDH — using:
- Ensembl REST gene lookup (
fetch_ensembl.py lookup --symbol ...) for coordinates of each gene; - gnomAD v4 gene-population variant data (
fetch_gnomad.py --gene ... --dataset gnomad_r4); - ClinVar gene records (
fetch_clinvar.py --gene ... --retmax 500) with pathogenic/benign classifications;
then the anchor analysis computes the pathogenic-vs-benign population-allele-frequency comparison for each gene, and the across-gene contrast (is the LCT gap larger than the comparison-gene gap?) is computed downstream by comparing those two per-gene results. That template — not ancient_selection_trajectory — is the correct capability for this idea, and a re-run gated to it would be required to produce the statistic and figure this sprint deliberately does not claim.
Limitations and disclosure
- This is a failed capability disclosure, not a null result. A null result reports a statistic that ran and found nothing significant; here no statistic exists because the required template is not applicable to the scoped question.
- No datasets, no analysis, no figure, no statistic. All are absent by design and none should be inferred from this paper's existence.
- The idea may still be a good research question. The disclosure concerns the template/idea mismatch for this run, not the scientific merit of the ClinVar pathogenic-vs-benign allele-frequency comparison.
Provenance
No dataset provenance entries exist for this run: download_bytes = 0, no fetcher was invoked, and no analysis script was executed. The only run facts are: sprint_id 32, run_id 33, idea text as quoted above, and gated execution template ancient_selection_trajectory.
ancient selection trajectory
—
90235e290363ee8922771b653ade6ffe7248ff2f