← all readouts

Is the ClinVar pathogenic-vs-benign allele-frequency gap larger for ABCA4 than for a housekeeping gene?

Exact input: For ABCA4, is the ClinVar pathogenic-vs-benign allele-frequency gap larger than for a comparable housekeeping gene?

Execution template: clinvar gnomad ensembl

execution observatory

Attempt 1 of 1

null result Completed · publish stage
committed record

immutable execution contract

exact input
For ABCA4, is the ClinVar pathogenic-vs-benign allele-frequency gap larger than for a comparable housekeeping gene?
execution template
clinvar gnomad ensembl
  1. scope
  2. dataset
  3. run
  4. write
  5. review
  6. correct
  7. publish

latest committed step

orchestration Opencode process exited.

wrapper_exited · run · observed · wrapper

committed steps
40
accepted / verified
7
warnings / rejects
0
elapsed
19 minutes
last recorded
tokens recorded
not recorded
data downloaded
3.09 MB

canonical execution ledger

Every committed step

Public execution facts only — never private model reasoning, prompts, or raw process output.

attempt-1-ledger hal9000/run/169d6734/1 chronological · persisted · archived Reload
  1. 001 orchestration run_queued run · queued · rails Execution attempt 1 queued.
  2. 002 triage investigation_selected notice · observed · rails Capability gate passed with clinvar_gnomad_ensembl. Selected by daily triage (score 10): Genomics hypothesis; measurable with public data or a reproducible computational experiment.
  3. 003 exploration neighbor_ideas_accepted artifact · accepted · rails Explored the seed idea and queued 0 undervalued hypotheses for future runs.
  4. 004 orchestration run_claimed run · claimed · rails Engine claimed this execution attempt.
  5. 005 orchestration runner_launch_authorized run · started · rails Execution lease acquired; the runner may launch once.
  6. 006 orchestration wrapper_started run · started · wrapper Opencode process started for this exact attempt.
  7. 007 scoping scope_started action · started · agent Beginning scoping for this exact execution attempt.
  8. 008 scoping scope_proposed gate · proposed · agent Proposed one falsifiable scoped question using the supported reference analysis (two-gene comparison of the anchor within-gene test).
  9. 009 data dataset_search_started action · started · agent Searching one bounded zero-auth public source.
  10. 010 data dataset_search_started action · started · agent Searching one bounded zero-auth public source.
  11. 011 data dataset_search_started action · started · agent Searching one bounded zero-auth public source.
  12. 012 data dataset_search_started action · started · agent Searching one bounded zero-auth public source.
  13. 013 analysis analysis_retried action · retrying · agent Retried the gnomAD fetch for GAPDH after a transient read timeout.
  14. 014 data dataset_search_started action · started · agent Searching one bounded zero-auth public source.
  15. 015 analysis strategy_pivoted action · observed · agent Switched the housekeeping comparator from GAPDH (2 benign ClinVar records) to ACTB (adequate curation on both sides).
  16. 016 data dataset_search_started action · started · agent Searching one bounded zero-auth public source.
  17. 017 data dataset_proposed artifact · proposed · agent Proposed a bounded dataset provenance record for terminal validation.
  18. 018 data dataset_proposed artifact · proposed · agent Proposed a bounded dataset provenance record for terminal validation.
  19. 019 data dataset_proposed artifact · proposed · agent Proposed a bounded dataset provenance record for terminal validation.
  20. 020 data dataset_proposed artifact · proposed · agent Proposed a bounded dataset provenance record for terminal validation.
  21. 021 data dataset_proposed artifact · proposed · agent Proposed a bounded dataset provenance record for terminal validation.
  22. 022 analysis analysis_started action · started · agent Executing the allowlisted analysis with a fixed seed.
  23. 023 analysis analysis_observed metric · observed · agent Observed the analysis result and measured its process duration.
  24. 024 writing draft_started action · started · agent Building the initial paper from committed evidence.
  25. 025 writing draft_written artifact · proposed · agent Wrote the initial paper draft from the available evidence.
  26. 026 review review_started action · started · agent Adversarial review round 1 against every available source artifact.
  27. 027 review review_observed gate · observed · agent Round 1 review severity counts.
  28. 028 correction correction_started action · started · agent Evidence-preserving corrections for round 1 findings.
  29. 029 correction correction_observed gate · observed · agent Round 1 correction resolution counts.
  30. 030 review review_started action · started · agent Adversarial review round 2 of the corrected paper against every available source artifact.
  31. 031 review review_observed gate · observed · agent Round 2 review severity counts.
  32. 032 publishing publication_started action · started · agent Assembling the corrected artifacts for terminal validation.
  33. 033 scoping scope_accepted gate · accepted · rails Accepted the run's scoped research question.
  34. 034 data datasets_accepted artifact · accepted · rails Accepted 5 dataset provenance records for this run.
  35. 035 analysis analysis_accepted artifact · accepted · rails Accepted the executed analysis, server-derived script hash, and 5 exact input artifacts.
  36. 036 publishing figure_accepted artifact · accepted · rails Accepted the validated PNG figure for this run.
  37. 037 publishing paper_accepted artifact · accepted · rails Accepted the run-owned paper for publication.
  38. 038 publishing run_published run · completed · rails Execution attempt 1 published with outcome null_result.
  39. 039 orchestration wrapper_duration metric · observed · wrapper Measured opencode process duration.
  40. 040 orchestration wrapper_exited run · observed · wrapper Opencode process exited.

exact-attempt artifacts

Artifacts & paper

Nothing on this attempt is borrowed from a newer run.

Abstract

hal9000/run/169d6734/attempt/1 · published Aug 4, 2026 · gap difference -0.0344 log10 AF (ABCA4 - ACTB); bootstrap one-sided p = 0.623

gap difference -0.0344 log10 AF (ABCA4 - ACTB); bootstrap one-sided p = 0.623

Zero-auth public data only; every number in this paper is computed from the exact fetched dataset bytes (bounded ClinVar retmax=500 slices and gnomAD v4 gene slices for ABCA4 and ACTB) with a fixed seed; no value was fabricated. The outcome is an honest null_result: the analysis ran end-to-end and produced a real, reproducible measurement, but it does not support the hypothesis. Limitations (capped slices, locus-granularity join, seeded bootstrap, housekeeping-gene choice) are disclosed in the paper.

We asked whether the population allele-frequency gap between ClinVar pathogenic/likely-pathogenic and benign/likely-benign variants is larger for ABCA4 than for a comparable housekeeping gene. Using gnomAD v4 (gnomad_r4) population allele frequencies (AF) joined at genomic-locus granularity to ClinVar clinical-significance records, we measured each gene's "gap" as the log10-fold separation between the median AF of the benign group and the median AF of the pathogenic group. The observed gap was 0.135 log10 AF for ABCA4 and 0.170 log10 AF for the housekeeping gene ACTB, i.e. an observed gap difference of -0.0344 log10 AF (ABCA4 minus ACTB): ABCA4's gap was not larger, and a fixed-seed bootstrap (10,000 replicates) gave a one-sided p = 0.623 for the hypothesis that ABCA4's gap exceeds ACTB's. We found no evidence that ABCA4's pathogenic-vs-benign allele-frequency gap is larger than that of a housekeeping gene; the observed difference ran in the opposite direction. Neither within-gene comparison reached significance (ABCA4 Mann-Whitney U p = 0.401; ACTB p = 0.254).

Computed figure for Is the ClinVar pathogenic-vs-benign allele-frequency gap larger for ABCA4 than for a housekeeping gene?
Figure · computed from the named dataset, not illustrative.

For ABCA4 and the housekeeping gene ACTB, do ClinVar pathogenic/likely-pathogenic variants carry lower gnomAD allele frequencies than benign/likely-benign variants, and is the pathogenic-vs-benign gnomAD allele-frequency gap (log10 AF) larger for ABCA4 than for ACTB?

Methods

Data. Three zero-auth public sources, all summary-level:

  • Ensembl REST (rest.ensembl.org) — gene lookup to resolve ABCA4 to ENSG00000198691 (GRCh38: 1:93,992,834-94,121,177).
  • gnomAD v4 (gnomad_r4, GraphQL API) — per-gene variant allele frequencies for ABCA4 (11,616 variants with AF ≥ 0) and ACTB (1,638 variants).
  • ClinVar (NCBI E-utilities) — clinical-significance records per gene: 500 records for ABCA4 and 500 for ACTB (both capped at --retmax 500; both searches returned the full 500-record cap, so each slice is a bounded subset of the gene's ClinVar corpus, not the full set).

Housekeeping gene selection. GAPDH, the canonical housekeeping control, was considered first. Its ClinVar slice contained only 2 benign/likely-benign records, too few to estimate a benign AF distribution (the within-gene test requires ≥ 3 variants per group). We therefore used ACTB (beta-actin), a classic housekeeping gene with adequate ClinVar curation on both sides (14 pathogenic and 199 benign after the join).

Analysis. For each gene we ran the anchor clinvar_gnomad_ensembl within-gene comparison: a two-sided Mann-Whitney U test on gnomAD AF between ClinVar pathogenic/likely-pathogenic and benign/likely-benign variants. Because no ClinVar record in either slice carried a dbSNP rsID, the ClinVar-to-gnomAD join is at genomic locus chrom:pos (ref/alt-agnostic); gnomAD is collapsed to the maximum-AF variant per locus (a locus can be multiallelic). We defined each gene's gap as gap = log10(median benign AF) − log10(median pathogenic AF). The cross-gene comparison is the observed gap difference ABCA4 gap − ACTB gap, with a one-sided p-value estimated by bootstrap resampling of each gene's two AF groups (10,000 replicates, fixed seed 1234): p = P(ABCA4 gap − ACTB gap ≤ 0). The per-gene Mann-Whitney p-values and the observed gap difference are deterministic; only the bootstrap p-value depends on sampling, and it is exactly reproducible with the pinned seed. Figure 1 was rendered with matplotlib (Agg backend), seed 1234 pinning the strip-plot jitter.

Results

Within-gene comparisons. After the ClinVar × gnomAD locus join, 167 of the 299 ABCA4 variants classified as pathogenic or benign carried a gnomAD AF (84 pathogenic, 83 benign), and 213 of the 333 ACTB variants did (14 pathogenic, 199 benign); the remainder had no matching gnomAD variant at the locus and are excluded.

  • ABCA4: 84 pathogenic and 83 benign variants with gnomAD AF. Median AF 2.27×10⁻⁶ (pathogenic) vs 3.1×10⁻⁶ (benign). The medians run in the expected direction (pathogenic rarer) but the two-sided Mann-Whitney U test was not significant (U = 3226.5, p = 0.401). Observed gap = 0.135 log10 AF.
  • ACTB: 14 pathogenic and 199 benign variants. Median AF 4.45×10⁻⁶ (pathogenic) vs 6.57×10⁻⁶ (benign). Also in the expected direction but not significant (U = 1138.5, p = 0.254). Observed gap = 0.170 log10 AF.

Cross-gene comparison. The observed gap difference was -0.0344 log10 AF (ABCA4 minus ACTB): ABCA4's gap was smaller, not larger. The one-sided bootstrap p-value for the hypothesis "ABCA4's gap exceeds ACTB's" was 0.623 — no evidence supporting a larger ABCA4 gap.

Outcome. null_result: the analysis ran and produced a real, reproducible measurement, but it does not support the hypothesis. The headline statistic is gap difference -0.0344 log10 AF (ABCA4 − ACTB); bootstrap one-sided p = 0.623.

Discussion

The motivating idea was that ABCA4, a large retina-expressed ABC transporter with an extensive clinically curated variant corpus (Stargardt disease), would show a wider separation between the population frequencies of its pathogenic and benign variants than a housekeeping gene. The data do not support this: the observed separation was small in both genes, ABCA4's measured gap was if anything smaller than ACTB's, and neither within-gene difference reached statistical significance. The large overlap between the two AF distributions is visible in Figure 1.

This is a null result reported honestly. It should not be read as "ABCA4 pathogenic variants are as common as benign ones" — the median AFs are in the expected order — but as evidence that, within the bounded ClinVar and gnomAD slices we used, the magnitude of the pathogenic-vs-benign AF gap is not distinguishable from a housekeeping gene's and does not support the "larger gap" hypothesis.

Limitations

  • Capped ClinVar slices. Both gene slices were capped at 500 records (--retmax 500); both searches returned exactly 500 UIDs. ABCA4 has more than 500 ClinVar records; our slice is therefore a bounded, esearch-order subset, and counts (299 classified ABCA4, 333 ACTB) are not complete enumerations.
  • Locus-granularity join. No rsID was available in either ClinVar slice, so variants were joined at chrom:pos (ref/alt-agnostic). A locus hosting multiple alleles is collapsed to the max-AF gnomAD variant; a ClinVar record can thereby be matched to a different allele at the same position. Variants in ClinVar but absent from the gnomAD slice (e.g., private or newly reported variants) contribute no AF and were excluded (167/299 ABCA4 and 213/333 ACTB classified variants survived the join).
  • Summary-level data. gnomAD provides aggregate allele frequencies, not individual-level genotypes; variants with overall AF = 0 were excluded.
  • Housekeeping gene choice. GAPDH (canonical control) had only 2 benign ClinVar records and could not support the within-gene test; ACTB was used instead. ACTB's pathogenic group is small (n = 14) after the join, so its gap estimate is noisy.
  • Seeded bootstrap. The cross-gene p-value is a bootstrap estimate; it is reproducible with the fixed seed (1234) but is not a closed-form test and is one-sided for the directional hypothesis. The observed gap difference is deterministic.
  • Sample scope. We analyzed only the variants that survived the ClinVar × gnomAD locus join; results describe these summary-level slices and should not be generalized to all variants in either gene.

Provenance

Dataset Source Accession Access URL Region slice
ABCA4 gene lookup Ensembl REST ENSG00000198691 https://rest.ensembl.org/lookup/symbol/homo_sapiens/ABCA4?expand=0 1:93992834-94121177 (ABCA4, GRCh38)
ABCA4 variants gnomAD v4 (gnomad_r4) ENSG00000198691 https://gnomad.broadinstitute.org/api (POST GraphQL gene(ABCA4), dataset=gnomad_r4) 1:93992834-94121148 (ABCA4, GRCh38)
ABCA4 ClinVar ClinVar (NCBI E-utilities) ABCA4[gene] https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=clinvar&id=3630612%2C3630611%2C3630008%2C3629951%2C3629462%2C3626671%2C3624162%2C3623172%2C3622950%2C3621715%2C3620143%2C3619173%2C3618902%2C3618800%2C3618517%2C3618401%2C3617925%2C3617612%2C3617351%2C3616081%2C3615402%2C3608041%2C3607050%2C3606239%2C3605290%2C3603134%2C3588605%2C3588351%2C3588246%2C3588186%2C3588163%2C3572915%2C3544480%2C3544463%2C3544442%2C3544363%2C3516739%2C3516663%2C3516567%2C3516473%2C3516194%2C3515927%2C3515581%2C3392832%2C3392496%2C3391419%2C3385161%2C3384863%2C3384698%2C3384111%2C3384108%2C3384098%2C3383231%2C3382304%2C3381910%2C3381909%2C3381789%2C3381785%2C3375458%2C3370420%2C3370411%2C3370285%2C3369802%2C3369623%2C3367083%2C3359855%2C3358725%2C3358545%2C3350325%2C3344881%2C3338946%2C3338800%2C3338646%2C3338127%2C3282765%2C3282673%2C3282587%2C3282493%2C3282394%2C3282116%2C3281928%2C3281829%2C3255560%2C3251963%2C3251920%2C3251392%2C3250330%2C3250329%2C3250312%2C3250307%2C3250304%2C3250292%2C3250286%2C3250284%2C3250283%2C3250276%2C3250270%2C3250251%2C3250236%2C3250235&retmode=json ABCA4 gene, 500 records (retmax=500)
ACTB variants gnomAD v4 (gnomad_r4) ENSG00000075624 https://gnomad.broadinstitute.org/api (POST GraphQL gene(ACTB), dataset=gnomad_r4) 7:5526409-5563902 (ACTB, GRCh38)
ACTB ClinVar ClinVar (NCBI E-utilities) ACTB[gene] https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=clinvar&id=1561725%2C1555653%2C1551958%2C1550860%2C1543467%2C1531230%2C1518951%2C1508644%2C1507775%2C1504685%2C1501657%2C1474805%2C1471540%2C1458655%2C1396478%2C1390051%2C1385188%2C1369630%2C1346467%2C1344714%2C1344713%2C1344712%2C1344711%2C1344710%2C1341869%2C1334898%2C1334712%2C1333774%2C1333448%2C1332878%2C1330190%2C1328552%2C1325960%2C1322013%2C1321972%2C1320256%2C1319338%2C1319337%2C1310267%2C1310154%2C1309667%2C1309165%2C1308773%2C1306168%2C1305456%2C1303897%2C1302812%2C1301337%2C1294292%2C1286535%2C1286378%2C1283103%2C1282635%2C1274877%2C1272674%2C1272596%2C1272390%2C1269505%2C1260131%2C1259586%2C1253973%2C1252611%2C1251980%2C1250091%2C1249295%2C1245930%2C1242471%2C1238470%2C1237965%2C1230676%2C1222552%2C1222366%2C1218686%2C1218368%2C1217765%2C1216440%2C1213113%2C1204305%2C1202044%2C1200439%2C1197236%2C1196724%2C1193058%2C1185839%2C1185784%2C1182633%2C1180893%2C1177327%2C1177326%2C1177325%2C1177309%2C1177308%2C1174495%2C1167827%2C1158741%2C1157195%2C1153800%2C1145999%2C1141897%2C1141896&retmode=json ACTB gene, 500 records (retmax=500)

Analysis: adapted clinvar_gnomad_ensembl reference analysis (two-gene comparison), fixed seed 1234, 10,000 bootstrap replicates. Outcome: null_result. Script sha256 is derived by Rails from the exact executed script bytes.

Provenance · exact attempt · input bundle retained
attempt 1 · exact retained execution
exact input For ABCA4, is the ClinVar pathogenic-vs-benign allele-frequency gap larger than for a comparable housekeeping gene?
execution template clinvar gnomad ensembl
Acquisition → Analysis
  1. Step 1 Ensembl fetcher

    argv
    1. lookup
    2. --symbol
    3. ABCA4
    4. --out
    5. {{workspace:gene.json}}
    declared outputs
    • gene.json
  2. Step 2 gnomAD fetcher

    argv
    1. --gene
    2. ABCA4
    3. --dataset
    4. gnomad_r4
    5. --out
    6. {{workspace:gnomad.csv}}
    declared outputs
    • gnomad.csv
  3. Step 3 ClinVar fetcher

    argv
    1. --gene
    2. ABCA4
    3. --out
    4. {{workspace:clinvar.csv}}
    5. --retmax
    6. 500
    declared outputs
    • clinvar.csv
  4. Step 4 gnomAD fetcher

    argv
    1. --gene
    2. ACTB
    3. --dataset
    4. gnomad_r4
    5. --out
    6. {{workspace:gnomad_actb.csv}}
    declared outputs
    • gnomad_actb.csv
  5. Step 5 ClinVar fetcher

    argv
    1. --gene
    2. ACTB
    3. --out
    4. {{workspace:clinvar_actb.csv}}
    5. --retmax
    6. 500
    declared outputs
    • clinvar_actb.csv

Analysis

argv
  1. --clinvar
  2. {{workspace:clinvar.csv}}
  3. --gnomad
  4. {{workspace:gnomad.csv}}
  5. --clinvar2
  6. {{workspace:clinvar_actb.csv}}
  7. --gnomad2
  8. {{workspace:gnomad_actb.csv}}
  9. --gene
  10. ABCA4
  11. --gene2
  12. ACTB
  13. --seed
  14. {{seed}}
  15. --outdir
  16. {{workdir}}
dataset Ensembl REST (ENSG00000198691) · 1:93992834-94121177 (ABCA4, GRCh38)
dataset gnomAD (gnomad_r4) (ENSG00000198691) · 1:93992834-94121148 (ABCA4, GRCh38)
dataset ClinVar (NCBI E-utilities) (ABCA4[gene]) · ABCA4 gene, 500 ClinVar records (retmax=500)
dataset gnomAD (gnomad_r4) (ENSG00000075624) · 7:5526409-5563902 (ACTB, GRCh38)
dataset ClinVar (NCBI E-utilities) (ACTB[gene]) · ACTB gene, 500 ClinVar records (retmax=500)
exact inputs 5 files · 1.74 MB retained
clinvar.csv input · text/csv · 83.8 KB
a2398c293ffba2af5227da3ceff3662d99e3e5d07ffb8a70e69e85f24b9a793e
fetched 2026-08-04T09:03:25Z · ClinVar (NCBI E-utilities)
clinvar_actb.csv input · text/csv · 105 KB
00f3bc67d08ace98a53f045b7157033d084e97d084287ddbf9a1c54a17ebd7f5
fetched 2026-08-04T09:10:24Z · ClinVar (NCBI E-utilities)
gene.json input · application/json · 280 Bytes
cdfc9cb9b2f5b59a92cf8662e214516c0a9f82e69aa55d76fdb87148c57dbd26
fetched 2026-08-04T09:02:58Z · Ensembl REST
gnomad.csv input · text/csv · 1.36 MB
ade6dee0176e20374ef0d2be57fcebe9fecee58d9341a811aa28414a7ff77fa4
fetched 2026-08-04T09:03:14Z · gnomAD (gnomad_r4)
gnomad_actb.csv input · text/csv · 200 KB
1efe63e66ff15aa27553c070e2ea6116d14d1880540a7939b556e9fbcd7da906
fetched 2026-08-04T09:06:13Z · gnomAD (gnomad_r4)
script sha256 f73645f1b5fccc2a177fe03c35e98ee18e5caab9ab2f7bad113b028e1db20108
seed 1234
app git sha 90235e290363ee8922771b653ade6ffe7248ff2f
exact replay Exact input bytes and invocation manifest retained; runtime lock and hardened executor readiness are not yet available.
statistic {"gene":"ABCA4","housekeeping_gene":"ACTB","seed":1234,"bootstrap_reps":10000,"reference_template":"clinvar_gnomad_ensembl","join_key":"genomic locus chrom:pos (ref/alt-agnostic)","genes":{"ABCA4":{"gene":"ABCA4","join_key":"genomic locus chrom:pos (ref/alt-agnostic)","n_clinvar_classified":299,"n_merged_with_gnomad_af":167,"n_pathogenic":84,"n_benign":83,"median_af_pathogenic":0.0000022700000000000003,"median_af_benign":0.0000031,"mw_u_statistic":3226.5,"mw_p_value":0.4008478134041139,"direction":"pathogenic rarer","gap_log10":0.13533583664115056,"test_ran":true},"ACTB":{"gene":"ACTB","join_key":"genomic locus chrom:pos (ref/alt-agnostic)","n_clinvar_classified":333,"n_merged_with_gnomad_af":213,"n_pathogenic":14,"n_benign":199,"median_af_pathogenic":0.000004445,"median_af_benign":0.00000657,"mw_u_statistic":1138.5,"mw_p_value":0.2540913467088355,"direction":"pathogenic rarer","gap_log10":0.16969360425354818,"test_ran":true}},"test":"per-gene Mann-Whitney U (two-sided) on allele frequency + seeded bootstrap one-sided p for the cross-gene gap difference","p_value":0.6234376562343765,"significant_at_0.05":false,"gap_abca4_log10":0.13533583664115056,"gap_housekeeping_log10":0.16969360425354818,"gap_difference_log10":-0.034357767612397616,"bootstrap_p_one_sided":0.6234376562343765,"gap_difference_direction":"ABCA4 gap not larger","outcome":"null_result","headline_statistic":"gap difference -0.03436 log10 AF (ABCA4 - ACTB); bootstrap one-sided p = 0.623"}
corrections none

deterministic re-runs of this exact attempt

Reproduction attempts

Executor health and scientific verdict are separate. Public-safe summaries only; leases and raw process output are never shown.

No reproduction attempt recorded

This exact run has not yet entered the deterministic re-run queue. Its original ledger, artifacts, and provenance remain available above.

Keyboard shortcuts

  • Cmd/Ctrl+K
    Focus global search
  • ?
    Open keyboard shortcuts

Send feedback

We'll only use this to respond to your feedback.