diff --git a/claude/plans/new_analyses_plan.md b/claude/plans/new_analyses_plan.md new file mode 100644 index 0000000..5be2dc6 --- /dev/null +++ b/claude/plans/new_analyses_plan.md @@ -0,0 +1,191 @@ +# New analyses to do for the paper (deferred) + +From Dave's feedback (`claude/paper_feedbac_2026-08-19.md`, 2026-08-19). These need +re-running scripts / new data work, so they are parked here. The prose/framing edits +that do **not** need new data have already been applied to the paper. + +Constraint reminder: never run against full datasets (CLAUDE.md). Use samples / local +UTA / committed test data. No `cdot_private` example strings in-repo. + +--- + +## 1. Fair time-bucketed sampling of the ClinVar submitted (SCV) corpus [R2] + +**Why:** the current submitted-corpus sample is a single fixed-seed flat draw over all +unique (AlleleID, string) pairs, which has recency bias (ClinVar grows over time, so a +flat draw over-represents recent submissions). + +**Do:** +- In `build_clinvar_submitted_pairs.py`, add time-bucketed sampling: bucket SCV records + by submission date (or release/version era) and draw evenly across buckets, so + historical submissions are represented fairly. +- Keep a **second** run that is a whole-file random sample, reported alongside and + explicitly labelled as recency-biased (reflects the live distribution). +- Report both. The time-bucketed one is the fair "what labs submitted over the years" + number; the random one is "what the current file looks like". + +**Touches:** R2 numbers in `results.md`, `clinvar_submitted.csv`, Methods description of +the sampling. + +**Code DONE 2026-08-19 (run pending):** `build_clinvar_submitted_pairs.py` now captures +each pair's earliest SCV `SubmissionDate` from the VCV XML and writes it as a trailing +`submit_date` corpus column (downstream `iter_vcf_pairs` reads by name, so it is +ignored there). Two draws: `--sample-out` (the existing whole-file random draw, +recency-biased) and `--time-bucketed-out` (new, even across submission-year eras, +`--bucket-years` width, short eras drawn fully with the deficit redistributed). Both can +be emitted from one build/`--from-pairs`. Validated on synthetic skewed corpora + a tiny +synthetic VCV XML (earliest-date tracking, SCV collapse, even allocation, undated-drop, +and the missing-column error path). STILL TO RUN (needs full VCV XML + VCF, a big job): +rebuild the corpus with dates, emit both samples, resolve each via +`resolve_clinvar_pass.py`, then update the R2 numbers + Methods prose to report both. +Note: the committed `clinvar_submitted_500.tsv` predates the date column and should be +regenerated when the corpus is rebuilt. + +**RUN DONE 2026-08-19 (results pending prose):** rebuilt from `ClinVarVCVRelease_2026-06`. +New corpus = 3,198,528 unique (AlleleID, string) pairs, 100% RefSeq / 0 Ensembl, all with +a submission date, 19 eras 2008-2026. (Corpus is larger than the committed 2,933,667: the +XML path scans to the first *transcript* HGVS per assertion, capturing SCVs whose first +HGVS attribute is genomic/protein, which the CSV-extraction path dropped. More complete +and self-contained.) Raw distribution is heavily recency-skewed: 2024 = 1.14M, 2025 = +1.21M pairs vs a few thousand per year in 2010-2013. + +cdot resolution (0.2.34 refseq GRCh38, FastaSeqFetcher, --with-fixes) on 3,000-pair +seed-42 samples, VCF-coordinate scored: + +| | correct (after fix) | residual | 2008-2015 | 2016-2020 | 2021-2026 | +|---|---|---|---|---|---| +| RANDOM (recency-biased) | 2969 (99.0%) | 31 (1.0%) | 96.9% (n=32) | 99.2% | 99.0% | +| TIME-BUCKETED (fair) | 2939 (98.0%) | 61 (2.0%) | 95.6% (n=1072) | 99.2% | 99.3% | + +The fair draw is 2x harder (2.0% vs 1.0% residual) because it up-weights old submissions: +the random draw holds only 32 pre-2016 pairs (1%), the fair draw 1072 (36%), and pre-2016 +strings resolve at ~95.6% vs ~99% for recent ones. Residual composition also differs: +random residual is mostly `no_data` (recent strings citing versions cdot lacks), fair +residual is mostly `incorrect`/`error` (old versions projecting to drifted/invalid coords). +Pass CSVs: scratchpad `random_pass_cdot.csv`, `bucketed_pass_cdot.csv`. Corpus + samples +under `/data/clinvar/`. + +Dave's decisions 2026-08-19: ADOPT the 3.20M corpus; run UTA head-to-head on the samples +(done); HOLD item 1. + +Full measured numbers (new 3.20M corpus, cdot 0.2.34 refseq GRCh38, local uta_20241220): + +cdot-vs-UTA head-to-head (VCF-scored): +| draw | cdot correct | UTA correct | UTA no_data | cdot-only | uta-only | +|---|---|---|---|---|---| +| RANDOM (recency-biased) | 2969 (99.0%) | 2466 (82.2%) | 530 (17.7%) | 504 (16.8pts) | 1 | +| TIME-BUCKETED (fair) | 2939 (98.0%) | 2396 (79.9%) | 586 (19.5%) | 544 (18.1pts) | 1 | + +The fair draw WIDENS the cdot advantage (16.8 -> 18.1 pts): historical submissions cite +more superseded versions UTA holds no GRCh38 alignment for. + +Version-age on the new corpus (`version_age_new.csv`): version_not_current 75.1% (was +81.8% on the old 2.93M CSV-path corpus - the drop is the corpus redefinition), +scv_weighted_not_current 69.8%, base_retired 0.7%, not_current_in_cdot 99.3%, +absent_cdot_grch38 0.6%. + +STILL TODO (R2 prose/CSV rewrite): report BOTH samples (bucketed = fair headline, random += recency-biased); restructure `clinvar_submitted.csv` to carry both draws; pick which +sample the abstract reports; recompute the residual taxonomy +(`clinvar_submitted_residual.csv`) for the headline sample; regenerate committed +`clinvar_submitted_500.tsv` from the new corpus. Pass CSVs in scratchpad: +{random,bucketed}_pass_{cdot,uta}.csv. + +## PR #128 review comments (Dave, 2026-08-19) - addressed in parallel + +- DONE: renamed R2 heading "What laboratories submitted" -> "ClinVar submissions as a + historical record of transcripts used" (+ reworded lead-in). +- DONE: turned the hardcoded R4 cleaning-corpus constants into a vibepaper fact + (`cleaning_corpus.csv`, wired into Snakefile FROZEN_FACTS); templated N, rescued, + rates, residual across results.md Table 2 + supplementary S6. Render verified. +- DONE (draft, for Dave review): abstract motivation now leads with the Shariant origin + story. Intro already had the Shariant paragraph (lines 33-38). + +## 2. Run local UTA over (all of) ClinVar [R2 / R3] + +**Why:** we currently only sample the cdot-vs-UTA comparison "because UTA is slow", but +that caveat is for the *remote* server. The **local** `uta_20241220` may be able to do +the whole ClinVar set in a few hours. + +**Do:** run the full ClinVar resolution through local UTA (background job), so the +head-to-head is full-scale, not sampled. Removes the "gated to a sample by UTA +throughput" caveat for the local case. + +**Touches:** R2 (drop/reduce the sampling caveat), possibly R3. + +## 3. Why is version substitution needed at all? (submitter attribution) [new analysis] + +**Why:** we ingest every RefSeq/Ensembl release off the FTP sites, so in principle we +should have every published version. Yet labs cite versions we don't hold. Dave's +hypothesis: those transcripts come from a small number of labs that align transcripts +to the genome themselves (so the version never appeared in an official annotation +release). + +**Do (exploratory first, time-boxed):** +- Take the cited transcript versions that are absent from cdot's data. +- Group by submitter (SCV submitter / lab) in the ClinVar VCV XML. +- Test whether the absent-version citations concentrate in a small number of submitters, + or whether specific labs dominate. +- Characterise: are these self-aligned transcripts, pre-release versions, or genuine + gaps in our ingest? + +**Scope risk:** this is a genuinely new result and could balloon. Decide whether it +earns a place in the paper (probably a short paragraph in R2 or Discussion) before +investing heavily. + +## 4. Warm-cache benchmark rerun [R3] + +**Why:** the full-scale R3 paragraph currently says the local-JSON and REST runs' "cache +conditions differed, so their small difference is not evidence of REST outrunning local +JSON." That is a hand-wave. Replace it with a hot-cache protocol. + +**Do:** for the full-scale runs, do one throwaway pass to warm the sequence-layer cache, +discard it, then time the next pass. Report the hot-cache time and note it is only +marginally slower than cold. Removes the "cache conditions differed" sentence entirely. + +**Touches:** R3 full-scale paragraph, `benchmark.csv` (if regenerated), Methods. + +## 5. Drop non-HGVS input from the cleaning residual corpus [R4] — DONE 2026-08-19 + +**Why:** the R4 residual currently includes "non-HGVS input (pasted URLs, report +templates, prose)". Dave's point: that is a data-collection artifact, not a measure of +tool correctness, and should be removed from the denominator before counting the +residual, since it does not reflect what the cleaner could ever be expected to fix. + +**Do:** filter non-HGVS input out of the production cleaning corpus before computing the +residual rate, so the residual reflects genuine HGVS-repair ceiling only. Recompute the +R4 residual number and the Table S6 taxonomy denominators. + +**Touches:** R4 residual paragraph + Table 2 context, `cleaning.csv`, Supplementary +Table S6. + +**Done:** the R4/S6 residual and cleaning-rate numbers are literal frozen constants in +the prose (not a facts CSV; `cleaning.csv` is the unrelated injection benchmark and was +not touched). Kept the frozen LLM per-class taxonomy counts and moved the 81 non-HGVS +queries out of the corpus. Reran `cdot_private/analyze_cleaning.py` to confirm the +frozen baseline reproduces (as-is 29,956, after 31,676, residual 1,076 vs frozen 1,075, +±1 code drift). Recomputed against N = 32,752 − 81 = 32,671: + +| quantity | was | now | +|---|---|---| +| corpus N | 32,752 | 32,671 | +| parseable as-submitted | 91.5% | 91.7% (29,956/32,671) | +| parseable after cleaning | 96.7% | 97.0% (31,677/32,671) | +| absolute gain | +5.3% | +5.3% (1,721/32,671 = 5.27%) | +| share of as-submitted failures rescued | ~62% of 8.5 pp | ~63% of 8.3 pp (1,721/2,715) | +| residual | 3.3% (1,075 q) | 3.0% (994 q) | +| S6 class %s | of 1,075 | of 994 (counts unchanged) | + +The "826 unique strings" figure was dropped (the unique count *within* the 81 non-HGVS +needs the lost per-string LLM labels; residual is now reported in queries only). + +Edited: `results.md` (main R4 para, Table 2 header, residual para), `supplementary.md` +(S6 header + table %s), `paper/README.md` (Tier-2 rate note). Paper re-rendered OK. + +--- + +## Also consider (from feedback, smaller) + +- ~~**VEP + RefSeq alignment gaps citation:**~~ DONE. R1 now cites Ensembl/ensembl-vep + issue #1053 (`@VepHgvsGaps` in references.bib) for the claim that VEP does not apply + transcript-to-genome alignment gaps when converting c. to genomic coordinates. diff --git a/paper/README.md b/paper/README.md index 71986ff..0627538 100644 --- a/paper/README.md +++ b/paper/README.md @@ -82,7 +82,7 @@ snakemake -s paper/Snakefile full --config pdf=true --cores 1 \ ### Full build — regenerates every fact, then renders -Recomputes the reproducible (Tier-1) facts from scratch, refreshes the +Recomputes the reproducible (public-data) facts from scratch, refreshes the `paper/empirical_results/` snapshot, then renders. Slow, and needs the inputs each fact requires. ```bash @@ -103,7 +103,7 @@ needs are absent, it copies the committed CSV instead, so a build always renders | `coverage.csv` | `paper/scripts/compute_coverage.py` over the release JSON.gz files | `data_dir` | | `benchmark.csv` | `paper/scripts/compute_benchmark.py` (Table 1 throughput) | `data_dir`, `uta_uri`, SeqRepo | | `version_stability.csv`, `positional_drift.csv` | `paper/scripts/compute_version_stability.py` | `data_dir` | -| `cleaning.csv` | `paper/scripts/inject_and_clean.py` (Tier-1 injection benchmark) | committed test data (none) | +| `cleaning.csv` | `paper/scripts/inject_and_clean.py` (public-data injection benchmark) | committed test data (none) | | `lovd_comparison.csv` | `paper/scripts/lovd_head_to_head.py` | `lovd_checker` (local PHP CLI) | | `sources.csv` | `paper/scripts/compute_sources.py` over `cdot_transcripts.yaml` | committed (none) | @@ -119,17 +119,17 @@ copies them into the facts dir. To change one, edit the CSV and update its entry The full-scale ClinVar throughput runs take ~1.5 h each — see `claude/benchmark_plan.md`. -### Two-tier facts and the private corpus +### Public and private facts -- **Tier 1 (reproducible)** lives in the fact CSVs above and regenerates from public - data committed here. -- **Tier 2 (production validation, not reproducible)** — the cleaning rescue rate - (91.5% → 96.7%), the per-fix rescue distribution (Results Table 2), and the residual - error taxonomy — comes from the private `cdot_private` corpus and is written into +- **Public data (reproducible)** lives in the fact CSVs above and regenerates from + public data committed here. +- **Private data (production validation, not reproducible):** the cleaning rescue rate + (91.7% → 97.0%), the per-fix rescue distribution (Results Table 2), and the residual + error taxonomy come from the private `cdot_private` corpus and are written into `results.md` as **literal frozen constants**, not regenerable facts. No corpus string ever enters this repo. When the corpus is re-analysed (`cdot_private/analyze_cleaning.py`), transcribe the new aggregate numbers into `results.md` by hand. These are flagged - `[Tier 2]` in the text. + `[private data]` in the text. To refresh the committed snapshot without a full data run (e.g. after editing one analysis script), regenerate that one CSV into `output/facts/` and copy it into diff --git a/paper/Snakefile b/paper/Snakefile index 50f961a..c11fa8f 100644 --- a/paper/Snakefile +++ b/paper/Snakefile @@ -88,7 +88,8 @@ FROZEN_FACTS = ["literature.csv", "clinvar_submitted.csv", "clinvar_submitted_residual.csv", "clinvar_vcf.csv", "clinvar_vcf_residual.csv", "clinvar_residual_positions.csv", "genomic_mismatch.csv", - "historical.csv", "version_safety_validation.csv"] + "historical.csv", "version_safety_validation.csv", + "cleaning_corpus.csv"] FACT_FILES = COMPUTED_FACTS + FROZEN_FACTS diff --git a/paper/abstract.md b/paper/abstract.md index 3fde1cd..a63191d 100644 --- a/paper/abstract.md +++ b/paper/abstract.md @@ -4,12 +4,16 @@ **Motivation:** -Resolving a transcript-level HGVS variant description to genomic coordinates requires -accurate, versioned transcript-to-genome alignments. The standard source for this, -UTA, requires a PostgreSQL database, covers only -~{{ literature.uta_count | commas }} alignments, retains limited transcript history, -and omits Ensembl, while the descriptions real pipelines receive are often malformed or -cite retired transcript versions. +cdot was built for the Australian Genomics Shariant project [@Tudini2022], which pools +variant classifications from clinical laboratories across the country, each recorded +against whatever transcript version the submitting lab used at the time. Making that +shared history usable meant resolving as many real-world transcript-level HGVS +descriptions as possible, including the malformed strings and long-retired transcript +versions that accumulate in variant databases and clinical records. The standard +transcript source for the Python HGVS libraries, UTA, forces a tradeoff between a +locally installed PostgreSQL database and a slow public server that many clinical +networks firewall; it covers only ~{{ literature.uta_count | commas }} RefSeq +alignments, retains limited transcript history, and omits Ensembl. **Results:** @@ -21,16 +25,18 @@ the Python HGVS libraries, T2T-CHM13v2.0, as a single gzipped JSON file or a RES version that is no longer current, cdot resolved {{ clinvar_submitted.cdot_resolved_pct | dp(1) }}% versus {{ clinvar_submitted.uta_resolved_pct | dp(1) }}% for UTA. Loaded in memory, cdot -resolves ~{{ benchmark.cdot_local_tps | commas }} HGVS/second, nearly four orders of -magnitude above the public UTA server. A parser-independent cleaning step +resolves ~{{ benchmark.cdot_local_tps | commas }} HGVS/second, about four times a +locally installed UTA, and compared remote-to-remote its REST API is roughly two orders +of magnitude faster than the public UTA server. A parser-independent cleaning step (`clean_hgvs()`) repairs common formatting errors before resolution, and an opt-in -fallback substitutes a retired transcript version only when a coordinate-safety check -confirms the substitution does not move the variant. +version-substitution step supplies a retired transcript version only when a +coordinate-safety check confirms it does not change the variant's coordinate. **Availability and Implementation:** -https://github.com/SACGF/cdot; `pip install cdot`; MIT licence. Data files (JSON.gz) at -cdotlib.org and [Zenodo DOI]. +https://github.com/SACGF/cdot; `pip install cdot`; MIT licence. Data files (JSON.gz) are +published on the GitHub releases page and archived at [Zenodo DOI]; a REST API is served +at cdotlib.org. **Contact:** [email] diff --git a/paper/discussion.md b/paper/discussion.md index bb1f54d..b4d6828 100644 --- a/paper/discussion.md +++ b/paper/discussion.md @@ -1,19 +1,26 @@ # Discussion -For biocommons/hgvs users, cdot removes UTA's constraints (a PostgreSQL database, -RefSeq only, limited history) with a drop-in provider that adds Ensembl, +cdot is, first, a general-purpose source of versioned transcript-to-genome alignments: +RefSeq and Ensembl together, across GRCh37, GRCh38, and T2T-CHM13v2.0, with the full +release history, in a JSON format that parses far faster than the GTF/GFF files it is +built from and can be read from any language, not only Python. The per-release JSON on +the GitHub releases page is a faster-loading drop-in for the corresponding GTF/GFF, and +the REST API returns transcript coordinates on demand and in batches, so thin clients +need not bundle large annotation downloads. + +For biocommons/hgvs users specifically, cdot removes UTA's constraints (a PostgreSQL +database, RefSeq only, limited history) with a drop-in provider that adds Ensembl, T2T-CHM13v2.0, and the full release history. For the wider HGVS ecosystem, it recovers -the malformed and version-drifted descriptions real pipelines receive, with every -change reported for audit and a version substitution refused unless verified -coordinate-safe. +the malformed and version-drifted descriptions real pipelines receive, with every change +reported for audit and a version substitution refused unless verified coordinate-safe. -cdot also integrates Ensembl TARK: `EnsemblTarkDataProvider` is, to our knowledge, the -only client that exposes the Ensembl Transcript Archive through the biocommons/hgvs -data-provider interface, for pipelines that require Ensembl's own authoritative source. -Tools such as VariantValidator [@Freeman2018], built on biocommons/hgvs with a -self-hosted copy of UTA, and Mutalyzer [@Lefter2021], which uses its own normalisation -stack, are widely used to check and correct HGVS descriptions; cdot is complementary to -them, supplying the transcript-coordinate layer, not a validation service. +For pipelines that require Ensembl's own authoritative source, +`EnsemblTarkDataProvider` also exposes the Ensembl Transcript Archive (TARK) through the +same interface. Tools such as VariantValidator [@Freeman2018], built on biocommons/hgvs +with a self-hosted copy of UTA, and Mutalyzer [@Lefter2021], which uses its own +normalisation stack, are widely used to check and correct HGVS descriptions; cdot is +complementary to them, supplying the transcript-coordinate layer, not a validation +service. Nor is cdot the first tool to repair broken HGVS. VariantValidator corrects the mistakes it can interpret [@Freeman2018]; Mutalyzer's Name Checker returned a corrected @@ -57,16 +64,12 @@ carry the checker's ranked suggestions alongside the validation error, although service does not apply them. The LOVD measurement above therefore also characterises the syntax-repair layer surfaced by a current VariantValidator pipeline. -Beyond HGVS resolution, the JSON representation is useful in its own right. It parses -far faster than the GTF/GFF files it is built from, and the per-release JSON published -on the GitHub releases page is a faster-loading drop-in for the corresponding GTF/GFF. -The REST API returns transcript coordinates on demand and in batches, so thin clients -need not bundle large annotation downloads; Ensembl's public REST service covers only -Ensembl transcripts at the latest version, while cdot serves both consortia with -history. The format is also read outside Python: ferro-hgvs [@FerroHgvs], an -independent HGVS parser and normaliser written in Rust, loads cdot JSON directly as its -transcript-to-genome alignment source. A consumer in another language needs only a JSON -parser, not an HGVS library or the Python data-provider interface. +The general-purpose value of the format shows in reuse beyond Python and beyond +biocommons/hgvs. Where Ensembl's public REST service covers only Ensembl transcripts at +the latest version, cdot serves both consortia with history; and ferro-hgvs [@FerroHgvs], +an independent HGVS parser and normaliser written in Rust, loads cdot JSON directly as +its transcript-to-genome alignment source, needing only a JSON parser, not an HGVS +library or the Python data-provider interface. cdot separates unambiguous string cleaning, safe to apply automatically, from heuristics that can be wrong (an adjacent transcript version, a canonical transcript diff --git a/paper/empirical_results/PROVENANCE.md b/paper/empirical_results/PROVENANCE.md index a59bd27..2d6e821 100644 --- a/paper/empirical_results/PROVENANCE.md +++ b/paper/empirical_results/PROVENANCE.md @@ -82,51 +82,99 @@ comparison on strings as the submitting labs wrote them. The variant_summary-based corpora take c.HGVS from ClinVar's recomputed `Name` column, always at the current transcript version, so they are a current-version ceiling. This corpus instead uses the per-SCV HGVS attributes of the VCV XML (submitted strings -verbatim), joined to the ClinVar VCF coordinate via AlleleID. The corpus (built from a -ClinVar XML download) is not committed, but a 500-pair seed-42 sample is +verbatim), joined to the ClinVar VCF coordinate via AlleleID, and tags each pair with +the earliest SCV submission date so it can be sampled by era. The corpus (built from a +ClinVar XML download) is not committed, but a 500-pair seed-42 random sample is (`tests/test_data/clinvar_hgvs/clinvar_submitted_500.tsv`). -Measured 2026-08-17 (ClinVarVCVRelease_2026-06, cdot 0.2.34 refseq GRCh38, local -uta_20241220): +Two 3,000-pair samples are scored (seed 42): a whole-file **random** draw (reflects the +live file, recency-biased) and a **time-bucketed** draw (even across submission-year +eras 2008-2026, the fair historical picture). R2 leads with the fair sample; the random +draw's numbers are the `rnd_*` columns. The fair draw is harder and widens the cdot-UTA +gap because it up-weights old submissions citing superseded versions. + +Measured 2026-08-19 (ClinVarVCVRelease_2026-06, cdot 0.2.34 refseq GRCh38, local +uta_20241220, SeqRepo for UTA sequence): ```bash -# corpus: 5,652,560 SCV HGVS values -> 3,495,275 transcript c./n. strings -# -> 2,933,667 unique (AlleleID, string) pairs; 100.00% RefSeq, 0 ENST +# corpus: 4,027,987 SCV transcript expressions -> 3,198,528 unique (AlleleID, string) +# pairs; 100% RefSeq, 0 ENST; all dated (2008-2026). Larger than the earlier 2,933,667: +# the XML path scans to the first *transcript* HGVS per assertion, capturing SCVs whose +# first HGVS attribute is genomic/protein (the --scv-csv-dir path dropped those). python paper/scripts/build_clinvar_submitted_pairs.py \ --xml ClinVarVCVRelease_2026-06.xml.gz clinvar.GRCh38.vcf.gz \ - clinvar_submitted_pairs.GRCh38.tsv # (or --scv-csv-dir extraction) + clinvar_submitted_pairs_dated.GRCh38.tsv --sample 3000 --seed 42 \ + --sample-out submitted_random_3000.tsv \ + --time-bucketed-out submitted_bucketed_3000.tsv -# version age vs the current annotation release (RS_2025_08, auto-detected -# from per-transcript source URLs in the cdot JSON): +# version age vs the current annotation release (RS_2025_08): 75.13% not-current python paper/scripts/compute_submitted_version_age.py \ - clinvar_submitted_pairs.GRCh38.tsv \ + clinvar_submitted_pairs_dated.GRCh38.tsv \ --refseq-grch38 cdot-0.2.34.refseq.GRCh38.json.gz \ --refseq-allbuilds cdot-0.2.34.all-builds-refseq-....json.gz -# resolution on the seed-42 3,000-pair sample (VCF-coordinate scoring): +# resolution on each sample (VCF-coordinate scoring), cdot then UTA: F=GCF_000001405.39_GRCh38.p13_genomic.fna.gz -python paper/scripts/resolve_clinvar_pass.py clinvar_submitted_sample3000.tsv \ - --json cdot-0.2.34.refseq.GRCh38.json.gz --fasta $F --with-fixes \ - --out submitted_pass_cdot_3000.csv -UTA_DB_URL=... HGVS_SEQREPO_DIR=... python paper/scripts/resolve_clinvar_pass.py \ - clinvar_submitted_sample3000.tsv --uta --out submitted_pass_uta_3000.csv +for S in random bucketed; do + python paper/scripts/resolve_clinvar_pass.py submitted_${S}_3000.tsv \ + --json cdot-0.2.34.refseq.GRCh38.json.gz --fasta $F --with-fixes \ + --out ${S}_pass_cdot.csv + UTA_DB_URL=postgresql://postgres@127.0.0.1:5433/uta/uta_20241220 \ + HGVS_SEQREPO_DIR=... python paper/scripts/resolve_clinvar_pass.py \ + submitted_${S}_3000.tsv --uta --out ${S}_pass_uta.csv +done ``` -`clinvar_submitted_residual.csv` is derived from the cdot pass rows with -`fixed_bucket != correct` (37 of 3,000): +`clinvar_submitted_residual.csv` is derived from the **time-bucketed** (headline) cdot +pass rows with `fixed_bucket != correct` (61 of 3,000), the error subtypes recovered by +re-resolving the residual strings and catching the exception class: -* `version_refused` (26): cited version absent from the data; the adjacent-version +* `coordinate_drift` (29): resolves through the cited historical version to a coordinate + that differs from ClinVar's current interpretation (`incorrect` bucket). +* `reference_mismatch` (18): the cited reference base does not exist on the cited + version (`HGVSInvalidVariantError`). +* `version_refused` (5): cited version absent from the data; the adjacent-version fallback declined to substitute because coordinate-safety could not be verified - (REFUSED_UNSAFE_VERSION; no false rescues by design). Split from `no_data` via - `summarize_clinvar_pass.py --split-no-data` (26 unknown-version). -* `unknown_accession` (1): no version of the accession in the data. -* `coordinate_drift` (4): resolves through the cited historical version to a - coordinate that differs from ClinVar's current interpretation. -* `position_out_of_bounds` (3) / `reference_mismatch` (1): the cited position or base - does not exist on the cited version (raises `HGVSInvalidIntervalError` / - `HGVSInvalidVariantError`). -* `grammar_unsupported` (2): repeat `ref[N]` and allele `[..]` notation the biocommons - grammar rejects. + (`no_data` where the accession holds other versions, via `get_tx_versions`). +* `grammar_unsupported` (5): repeat `ref[N]` / allele `[..]` notation the biocommons + grammar rejects (`HGVSParseError`). +* `position_out_of_bounds` (4): the cited position does not exist on the cited version + (`HGVSInvalidIntervalError`). +* `unknown_accession` (0): no version of the accession in the data. + +## injection_benchmark.csv, residual_taxonomy.csv (table CSVs, not facts) + +Multi-row table CSVs rendered inline by the `` directive in +`supplementary.md` (Tables S5 and S6), so the numbers live in a CSV rather than hardcoded +in the markdown. `vibepaper`'s fact loader skips multi-row CSVs, so these are not `{{ }}` +facts; edit the CSV to change the table. + +* `injection_benchmark.csv` (Table S5): per-category recovery of `clean_hgvs()` vs LOVD / + VariantValidator / Mutalyzer on the injection benchmark. Body rows from + `inject_and_clean.py` + the LOVD / VV / Mutalyzer head-to-heads; the **Total** row is + the frozen aggregate (matches `lovd_comparison.csv` / `vv_mutalyzer_comparison.csv`). + Refresh by re-running those scripts and re-transcribing. +* `residual_taxonomy.csv` (Table S6): the seven repair-relevant residual classes of the + private cleaning corpus (frozen LLM classification; see `cleaning_corpus.csv`). Percentages + are of the 994 genuine-HGVS residual queries. + +## cleaning_corpus.csv (frozen, Tier 2) + +R4 production cleaning-corpus headline numbers, transcribed from a deterministic run of +`cdot_private/analyze_cleaning.py` (`clean_hgvs()` plus provider-verified accession +restoration) over the private search-box corpus (issue #112). Not reproducible here (the +corpus is private); these are the literal constants R4 / Table 2 / Table S6 render from. + +`corpus_n` (32,671) is the loosely-HGVS search-box corpus after removing a small residue +of non-HGVS input (81 queries: pasted URLs, report templates, prose) that slipped the +collection regex and is a data-collection artifact, not something cleaning could repair +(issue #112 feedback). Removing it from the denominator: as-submitted parseable +`as_submitted_pct` 91.7%, after-cleaning `after_pct` 97.0% (`gain_pct` +5.3%, `rescued` +1,721 = `rescued_share_pct` ~63% of the `failed_pp` 8.3 points that failed +as-submitted), residual `residual_n` 994 (`residual_pct` 3.0%); `nonhgvs_n` 81. The +per-fix Table 2 counts and the Table S6 residual taxonomy stay literal (LLM +classification, not re-run). Refresh by re-running `analyze_cleaning.py` and editing +this CSV. ## historical.csv (frozen, Tier 2) diff --git a/paper/empirical_results/cleaning_corpus.csv b/paper/empirical_results/cleaning_corpus.csv new file mode 100644 index 0000000..aa7406b --- /dev/null +++ b/paper/empirical_results/cleaning_corpus.csv @@ -0,0 +1,2 @@ +corpus_n,as_submitted_pct,after_pct,gain_pct,rescued,failed_pp,rescued_share_pct,residual_n,residual_pct,nonhgvs_n +32671,91.7,97.0,5.3,1721,8.3,63,994,3.0,81 diff --git a/paper/empirical_results/clinvar_submitted.csv b/paper/empirical_results/clinvar_submitted.csv index a552f88..20b8635 100644 --- a/paper/empirical_results/clinvar_submitted.csv +++ b/paper/empirical_results/clinvar_submitted.csv @@ -1,2 +1,2 @@ -n_scv_tx_strings,n_unique_pairs,ensembl_pct,version_not_current_pct,scv_weighted_not_current_pct,base_retired_pct,not_current_in_cdot_pct,absent_cdot_pct,n_sample,sample_seed,cdot_resolved_pct,cdot_matched_pct,cdot_no_data,cdot_incorrect,cdot_error,uta_resolved_pct,uta_no_data_pct,cdot_only,cdot_only_pct,uta_only,rescued_by_fix,regressions,after_fix_matched_pct,residual_n,residual_pct -3495275,2933667,0.0,81.8,80.3,0.7,99.3,0.6,3000,42,98.9,98.7,27,4,7,80.1,19.7,563,18.8,1,1,0,98.8,37,1.2 +n_scv_tx_strings,n_unique_pairs,ensembl_pct,version_not_current_pct,scv_weighted_not_current_pct,base_retired_pct,not_current_in_cdot_pct,absent_cdot_pct,n_sample,sample_seed,cdot_resolved_pct,cdot_matched_pct,cdot_no_data,cdot_incorrect,cdot_error,uta_resolved_pct,uta_matched_pct,uta_no_data_pct,cdot_only,cdot_only_pct,uta_only,rescued_by_fix,regressions,after_fix_matched_pct,residual_n,residual_pct,rnd_cdot_resolved_pct,rnd_cdot_matched_pct,rnd_after_fix_matched_pct,rnd_uta_resolved_pct,rnd_uta_matched_pct,rnd_uta_no_data_pct,rnd_cdot_only,rnd_cdot_only_pct,rnd_uta_only,rnd_residual_n,rnd_residual_pct +4027987,3198528,0.0,75.1,69.8,0.7,99.3,0.6,3000,42,98.9,97.9,5,29,27,80.0,79.9,19.5,544,18.1,1,1,0,98.0,61,2.0,99.1,99.0,99.0,82.2,82.2,17.7,504,16.8,1,31,1.0 diff --git a/paper/empirical_results/clinvar_submitted_residual.csv b/paper/empirical_results/clinvar_submitted_residual.csv index f227239..4e3ec25 100644 --- a/paper/empirical_results/clinvar_submitted_residual.csv +++ b/paper/empirical_results/clinvar_submitted_residual.csv @@ -1,2 +1,2 @@ -n_residual,version_refused,unknown_accession,coordinate_drift,position_out_of_bounds,reference_mismatch,grammar_unsupported -37,26,1,4,3,1,2 +n_residual,version_refused,unknown_accession,coordinate_drift,position_out_of_bounds,reference_mismatch,grammar_unsupported +61,5,0,29,4,18,5 diff --git a/paper/empirical_results/injection_benchmark.csv b/paper/empirical_results/injection_benchmark.csv new file mode 100644 index 0000000..664fe2e --- /dev/null +++ b/paper/empirical_results/injection_benchmark.csv @@ -0,0 +1,20 @@ +Injected error (example → target),n,`clean_hgvs()`,LOVD top-1,VV,Mutalyzer +Whitespace (` NM_000059.4: c.68del`),200,100%,100%,96.5%,89.5% +Lowercased bases (`c.316g>a`),200,100%,100%,96.0%,89.5% +Trailing protein suffix (`c.68del p.Arg100Ter`),200,100%,91.5%,0%,0% +Gene wrapper with colon (`NM_000059.4:(BRCA2):c.68del`),200,100%,0%,0%,0% +Gene/transcript swapped (`BRCA2(NM_000059.4):c.68del`),200,100%,49.5%,94.5%,0% +"Surrounding quotes (`""NM_000059.4:c.68del""`)",200,100%,0%,97.5%,0% +Doubled colon (`NM_000059.4::c.68del`),200,100%,0%,99.0%,0% +Unbalanced bracket (`(NM_000059.4:c.68del`),200,100%,0%,0%,0% +"Separator typo (`NM_000059.4:c,68del`)",200,100%,100%,0%,0% +Doubled version dot (`NM_000059..4:c.68del`),200,100%,0%,0%,0% +Leading junk (`GRCh38.p2 NM_000059.4:c.68del`),200,100%,0%,0%,0% +Doubled kind (`NM_000059.4:c.c.68del`),200,100%,0%,0%,0% +Lowercased accession (`nm_000059.4:c.68del`),200,100%,52.0%,94.0%,35.5% +Redundant del/dup count (`c.68_69del23`),77,100%,0%,0%,0% +Missing accession underscore (`NM000059.4:c.68del`),200,100%,0%,0%,0% +Colon in accession prefix (`NM:_000059.4:c.68del`),200,100%,0%,0%,0% +Uppercased mutation type (`c.68DEL`),142,100%,100%,94.4%,0% +Dropped accession letter (`M_000059.4:c.68del`),200,100%,0%,0%,0% +**Total**,"**3,419**",**100.0%**,**33.0%**,**37.7%**,**12.5%** diff --git a/paper/empirical_results/residual_taxonomy.csv b/paper/empirical_results/residual_taxonomy.csv new file mode 100644 index 0000000..13c9c4b --- /dev/null +++ b/paper/empirical_results/residual_taxonomy.csv @@ -0,0 +1,8 @@ +Class,Queries,What it is (*example*) +Truncated,284 (28.6%),"cut off before a complete variant: `NM_000059.4:c.68_69` (range, no edit)" +No reference,277 (27.9%),"a bare variant body, no transcript/gene/accession: `c.68_69delAG`" +Bad accession,124 (12.5%),"misplaced or truncated version, or a missing prefix with no unique data match: `NM_000059/4:c.68del` (slash in place of the version dot)" +Edit syntax,113 (11.4%),malformed or non-standard edit operation: `NM_000059.4:c.68AG>T` (multi-base reference in a substitution) +Trailing / concatenated,85 (8.6%),"extra characters after a complete variant, or several run together: `NM_000059.4:c.68delAG;c.70A>G`" +Grammar gap,81 (8.1%),legitimate HGVS the biocommons grammar rejects: `NM_000059.4:c.(67+1_68-1)_(70+1_71-1)del` (uncertain-range deletion) +Insertion (length only),30 (3.0%),"an insertion given as a base count, not a sequence: `NM_000059.4:c.68_69ins5` (position and length recoverable; inserted bases not)" diff --git a/paper/introduction.md b/paper/introduction.md index ddc471b..a4442d0 100644 --- a/paper/introduction.md +++ b/paper/introduction.md @@ -14,12 +14,9 @@ over five years of production logs, only ~{{ literature.mutalyzer_error_pct | dp(0) }}% contained a syntactic or semantic error, and Mutalyzer could automatically correct only ~{{ literature.mutalyzer_autocorrect_pct | dp(0) }}% (all rates per unique description) -[@Lefter2021]. Transcript choice also matters downstream: only -{{ literature.lof_agreement_pct | dp(0) }}% of putative loss-of-function variants were -classified as loss-of-function by both RefSeq and Ensembl annotation sets in ANNOVAR -[@McCarthy2014], so covering both annotation sources matters. +[@Lefter2021]. -The two dominant Python HGVS libraries are biocommons/hgvs [@Hart2015; @Wang2018] and +The two dominant Python HGVS libraries are biocommons/hgvs [@Wang2018] and PyHGVS. biocommons/hgvs reads from a pluggable data provider behind a common interface, which other tools such as hgvs-weaver [@HgvsWeaver] also implement, so a single transcript backend serves multiple clients; PyHGVS loads transcripts from its own data @@ -40,9 +37,13 @@ whichever transcript version the lab used at the time, so making them usable mea resolving as many of these real-world strings as possible, including ones that reference transcript versions long retired from the current annotation. -To do this, cdot generates compact JSON files from all available RefSeq GFF3 and -Ensembl GTF annotation releases, covering {{ coverage.total_count | commas }} versioned -transcript alignments across GRCh37, GRCh38, and T2T-CHM13v2.0 [@Nurk2022]. The files -load locally in seconds and can also be served on demand through a REST API -(cdotlib.org), so the same data backs both a fast in-memory provider and lightweight -remote access. +To resolve as many of those descriptions as possible, cdot combines three things: broad +versioned transcript coverage, so the cited version is present in the first place; +parser-independent string cleaning, so a malformed description still parses; and an +opt-in, coordinate-safe version substitution for the cases where the exact cited version +is genuinely gone. For coverage, cdot generates compact JSON files from all available +RefSeq GFF3 and Ensembl GTF annotation releases, covering +{{ coverage.total_count | commas }} versioned transcript alignments across GRCh37, +GRCh38, and T2T-CHM13v2.0 [@Nurk2022]. The files load locally in seconds and can also be +served on demand through a REST API (cdotlib.org), so the same data backs both a fast +in-memory provider and lightweight remote access. diff --git a/paper/methods.md b/paper/methods.md index 79b35a8..2c3a7be 100644 --- a/paper/methods.md +++ b/paper/methods.md @@ -4,8 +4,7 @@ cdot merges three transcript-annotation sources into a single dataset per build (Figure 1A), downloading the complete run of historical releases from the RefSeq and -Ensembl FTP sites because an NM_ version retired years ago is still cited in patient -records and ClinVar submissions: +Ensembl FTP sites: 1. **RefSeq GFF3**: {{ sources.refseq_grch37_releases | int }} GRCh37, {{ sources.refseq_grch38_releases | int }} GRCh38, and @@ -35,19 +34,14 @@ gzip-compressed JSON. ## JSON format JSON parses quickly in every major language and serialises cleanly over HTTP, so the -same files drive both the in-memory provider and the REST API. Each transcript entry stores shared metadata (`gene_name`, `hgnc`, `biotype`, -accession and version) plus a `genome_builds` dict keyed by assembly name. The build is -always a dict key, so a single-build file is a drop-in GTF/GFF replacement and the REST -API can return a transcript's GRCh37, GRCh38, and T2T-CHM13v2.0 alignments in one -response. Build-specific fields (`contig`, `strand`, CDS bounds, exons; Supplementary -Table S3) include a per-exon `gap` string (e.g. `"M196 I1 M61"`) recording -transcript-vs-genome indels, converted to HGVS CIGAR format at query time. A root-level -`schema_version` lets clients reject incompatible files on load. - -Canonical transcript tags (`mane_select`, `mane_plus_clinical`, `refseq_select`, and -`ensembl_canonical`) are stored per build where present. MANE Select covers ->{{ literature.mane_coverage_pct | dp(0) }}% of protein-coding genes [@Morales2022] -and is available for GRCh38; Ensembl canonical tags cover GRCh37 and GRCh38. +same files drive both the in-memory provider and the REST API. Each transcript entry +stores shared metadata plus a `genome_builds` dict keyed by assembly name, so one entry +carries a transcript's GRCh37, GRCh38, and T2T-CHM13v2.0 alignments and a single-build +file is a drop-in GTF/GFF replacement. Per-build fields include a per-exon `gap` string +recording transcript-vs-genome indels, converted to HGVS CIGAR format at query time, and +canonical tags (MANE Select and Plus Clinical, RefSeq Select, Ensembl canonical) where +present; a root-level `schema_version` lets clients reject incompatible files on load. +The full schema is Supplementary Table S3. ## String cleaning (`clean_hgvs()`) @@ -76,7 +70,7 @@ dropped entirely (`000059.4:c.68del`). `resolve_missing_accession_prefix()`, app kind letter allows and restores the prefix only when exactly one exists in the loaded data, reported as an `HGVSFix` like every other repair. -## Version fallback +## Version substitution A separate, opt-in helper, `get_best_transcript_version()`, addresses transcript-version drift. Substituting a different version is a heuristic that can be wrong, so it is @@ -144,7 +138,7 @@ Resolution accuracy and throughput are measured with scripts committed to the repository (`paper/scripts/`); protocol detail beyond what follows is in Supplementary Methods. `benchmark_resolution.py` resolves real (g.HGVS, c.HGVS) pairs through a pluggable provider (local JSON, REST, or UTA) and reports resolution rate, recovery -from cleaning and version fallback, and speed; the ClinVar pair set is built by +from cleaning and version substitution, and speed; the ClinVar pair set is built by `build_clinvar_pairs.py`. Cleaning is evaluated on a production query corpus and, as a reproducible control, with `inject_and_clean.py`, which injects each fix category into clean ClinVar strings. `lovd_head_to_head.py` runs the same injected cases through both @@ -158,17 +152,13 @@ originals. sequence-aware validation services, VariantValidator [@Freeman2018] and Mutalyzer [@Lefter2021], over their public REST APIs ({{ vv_mutalyzer_comparison.service_date }}; remote services cannot be version-pinned, -so the facts record the service date and the version metadata each API reports). -VariantValidator requests are routed by accession family (its Ensembl transcripts live -on a separate endpoint) and a case counts as recovered when the validated transcript -description matches the target; for Mutalyzer a match by either its -`corrected_description` or its `normalized_description` counts, since the normalizer -may legitimately re-shift a representation. On the uncorrupted originals, a valid input -the service *alters* is a false correction, while one it *rejects* (for example -Mutalyzer's `EINTRONIC` for intronic positions on a transcript reference, or a -transcript absent from VariantValidator's database) is counted separately as a -validity or coverage position, matching how LOVD's flagged-invalid originals are -reported. Version-fallback safety is measured by `compute_version_stability.py` on +so the facts record the service date and each API's reported version). A case counts as +recovered when the service's validated description matches the target; on the +uncorrupted originals, a valid input the service *alters* is a false correction while one +it *rejects* is counted separately as a validity or coverage position, matching how +LOVD's flagged-invalid originals are reported. The per-service request routing and +matching rules are in Supplementary Methods. Version-substitution safety is measured by +`compute_version_stability.py` on GRCh38, over a seeded {{ version_stability.sample_n | commas }}-accession sample of accessions cdot holds at two or more versions; the same run bins preserved coding bases by relative CDS position (Supplementary Figure S1). @@ -177,9 +167,13 @@ The submitted-string corpus (Results R2) is built by `build_clinvar_submitted_pairs.py` from the per-submission HGVS attributes of a ClinVar VCV XML release (ClinVarVCVRelease_2026-06): each SCV's first transcript c./n. expression is joined verbatim to the variant's VCF coordinate via its AlleleID and -collapsed to unique (AlleleID, string) pairs (Supplementary Methods). Samples are drawn -with a fixed seed (42): 3,000 pairs for the cdot-versus-UTA comparison and a committed -500-pair sample. Scoring uses the VCF coordinate rather than the g.HGVS string, since a +collapsed to unique (AlleleID, string) pairs, each tagged with the earliest SCV +submission date (Supplementary Methods). Two 3,000-pair samples are drawn with a fixed +seed (42) for the cdot-versus-UTA comparison: a whole-file random draw, which reflects +the live file and so is recency-biased as ClinVar grows, and a time-bucketed draw that +allocates evenly across submission-year eras so historical submissions are represented +fairly; a 500-pair random sample is committed for reproduction. Scoring uses the VCF +coordinate rather than the g.HGVS string, since a submitted string may legitimately spell an indel differently from ClinVar's normalised form. Transcript version age is computed by `compute_submitted_version_age.py` against the released cdot RefSeq JSON, whose per-transcript source URL identifies whether an diff --git a/paper/references.bib b/paper/references.bib index 13fb9be..20e55d0 100644 --- a/paper/references.bib +++ b/paper/references.bib @@ -43,6 +43,14 @@ @misc{LovdHgvsChecker note = {Accessed 2026}, } +@misc{VepHgvsGaps, + author = {{Ensembl VEP}}, + title = {{HGVS} input does not take into account cDNA / genome alignment gaps}, + year = {2021}, + howpublished = {\url{https://github.com/Ensembl/ensembl-vep/issues/1053}}, + note = {Ensembl/ensembl-vep issue \#1053, opened 16 September 2021; accessed 2026}, +} + @misc{VariantValidator400, author = {{VariantValidator}}, title = {{VariantValidator} release 4.0.0: integration of the {LOVD} {HGVS} syntax checker}, diff --git a/paper/results.md b/paper/results.md index ea3d050..d5e5422 100644 --- a/paper/results.md +++ b/paper/results.md @@ -1,9 +1,9 @@ # Results > **Provenance flags.** Results are reproducible from public data committed to this repo -> unless marked **[Tier 2]**, which denotes aggregate statistics from a private production -> corpus, published as frozen constants and not reproducible by a referee (see Methods / -> data availability). +> unless marked **[private data]**, which denotes aggregate statistics from a private +> production corpus, published as frozen constants and not reproducible by a referee (see +> Methods / data availability). --- @@ -21,31 +21,33 @@ retired it from the current annotation) and Ensembl itself, absent from UTA enti ({{ coverage.ensembl_unique_count | commas }} accessions present in cdot). T2T-CHM13v2.0 adds a further {{ coverage.t2t_unique_count | commas }} alignments, making cdot the first transcript data source to bring that assembly to the Python HGVS -libraries (biocommons/hgvs and PyHGVS); Ensembl VEP can already generate HGVS against -T2T, but it is a standalone annotation tool, not a transcript backend for these -libraries. The JSON format also stores per-exon alignment-gap information (indels of -the transcript relative to the genome) that downstream libraries apply during -coordinate conversion. +libraries (biocommons/hgvs and PyHGVS). The JSON format also stores per-exon +alignment-gap information (indels of the transcript relative to the genome) that +downstream libraries apply during coordinate conversion; Ensembl VEP, which can itself +generate HGVS, does not apply these transcript-to-genome gaps when converting a c. +description to genomic coordinates [@VepHgvsGaps], so it can misplace variants that fall +downstream of an indel in a gapped RefSeq alignment. ## R2: ClinVar and clinical resolution accuracy -To measure practical impact, a seeded sample of -{{ clinvar.n_variants | commas }} ClinVar [@Landrum2025] variant descriptions, spanning -RefSeq (NM_) and Ensembl (ENST) transcripts, was resolved against cdot and a locally -loaded UTA (release `uta_20241220`) through the identical biocommons/hgvs code path, -with sequences from a shared local SeqRepo so only the transcript-data layer differs -(the comparison is gated to a sample by UTA's throughput; the full ClinVar set is -resolved through cdot alone below). cdot resolved -{{ clinvar.cdot_resolution_pct | dp(1) }}% versus -{{ clinvar.uta_resolution_pct | dp(1) }}% for UTA. The gap is Ensembl: on the committed -ClinVar test pairs ({{ clinvar.n_refseq | commas }} RefSeq and -{{ clinvar.n_ensembl | commas }} Ensembl), with cdot serving transcript sequence from a -local genome FASTA so no pair is dropped for a sequence SeqRepo lacks, RefSeq is at -parity (cdot {{ clinvar.cdot_refseq_pct | dp(1) }}%, UTA -{{ clinvar.uta_refseq_pct | dp(1) }}%), while on Ensembl cdot resolves -{{ clinvar.cdot_ensembl_pct | dp(1) }}% and UTA -{{ clinvar.uta_ensembl_pct | dp(1) }}%, UTA storing no Ensembl alignments at all -(Supplementary Table S4). +Two comparisons measure resolution rate against a locally loaded UTA (release +`uta_20241220`): a controlled current-version check here, and the historical +submitted-string corpus below that is the real test of transcript depth. + +For the current-version check, a seeded ClinVar [@Landrum2025] sample of +preferred-transcript descriptions, deliberately including both RefSeq (NM_) and Ensembl +(ENST) transcripts, was resolved against cdot and UTA through the identical +biocommons/hgvs code path, with sequences from a shared local SeqRepo so only the +transcript-data layer differs. On RefSeq the two backends are at parity (cdot +{{ clinvar.cdot_refseq_pct | dp(1) }}%, UTA {{ clinvar.uta_refseq_pct | dp(1) }}%; cdot +serving transcript sequence from a local genome FASTA so no pair is dropped for a +sequence SeqRepo lacks). The remaining difference is capability, not accuracy: UTA stores +no Ensembl alignments at all, so it resolves {{ clinvar.uta_ensembl_pct | dp(1) }}% of +the Ensembl pairs against cdot's {{ clinvar.cdot_ensembl_pct | dp(1) }}% (Supplementary +Table S4). Because this sample is deliberately Ensembl-enriched to exercise that +capability, its aggregate rate is not a like-for-like accuracy score, so we do not read a +single headline resolution figure from it; the fair head-to-head is RefSeq parity here +and the historical submitted corpus below. At full scale, resolving every RefSeq and Ensembl c.HGVS in ClinVar through cdot alone ({{ clinvar_vcf.n_pairs | commas }} (g., c.) pairs) reaches @@ -62,15 +64,19 @@ variant_summary, ClinVar's own recomputed preferred-transcript name, always at t current transcript version. They therefore measure a current-version ceiling and cannot exercise historical transcript depth. -### What laboratories actually submit +### ClinVar submissions as a historical record of transcripts used -To measure what laboratories actually write, we built a second public corpus from the -per-submission (SCV) HGVS attributes of the ClinVar VCV XML: each submitted string kept -verbatim and joined to the variant's VCF coordinate as ground truth via its AlleleID -({{ clinvar_submitted.n_unique_pairs | commas }} unique submitted-string/variant pairs -from {{ clinvar_submitted.n_scv_tx_strings | commas }} SCV transcript expressions; -Methods). The corpus is entirely RefSeq (not one submitted string cites an Ensembl -transcript), and its version profile confirms that submitted traffic is historical: +To read ClinVar's submission history as a record of the transcript versions labs +actually used over the years, we built a second public +corpus from the per-submission (SCV) HGVS attributes of the ClinVar VCV XML: each +submitted string kept verbatim and joined to the variant's VCF coordinate as ground +truth via its AlleleID ({{ clinvar_submitted.n_unique_pairs | commas }} unique +submitted-string/variant pairs from {{ clinvar_submitted.n_scv_tx_strings | commas }} SCV +transcript expressions; Methods). Unlike the deliberately Ensembl-enriched sample above, +this corpus reflects the natural submission mix, which is essentially all RefSeq (not one +submitted string cites an Ensembl transcript; Ensembl accessions enter ClinVar through +its recomputed names, not submitter descriptions). Its version profile confirms that +submitted traffic is historical: {{ clinvar_submitted.version_not_current_pct | dp(1) }}% of submitted strings cite a transcript version that is no longer the version in the current RefSeq annotation release ({{ clinvar_submitted.scv_weighted_not_current_pct | dp(1) }}% weighted by @@ -80,31 +86,44 @@ transcript no longer annotated at any version. cdot's merged release history hol only {{ clinvar_submitted.absent_cdot_pct | dp(1) }}% of cited versions are absent from its GRCh38 data. -On a fixed-seed sample of {{ clinvar_submitted.n_sample | commas }} submitted pairs, -cdot resolved +Because ClinVar grows over time, a flat random draw over-represents recent submissions, +so we scored two {{ clinvar_submitted.n_sample | commas }}-pair samples (seed 42): one +balanced evenly across submission-year eras (2008-2026), which represents the historical +record fairly, and one drawn at random, which reflects the current file's recency skew +(Methods). + +On the fair era-balanced sample, cdot resolved {{ clinvar_submitted.cdot_resolved_pct | dp(1) }}% and reproduced ClinVar's VCF -coordinate for {{ clinvar_submitted.cdot_matched_pct | dp(1) }}%, versus -{{ clinvar_submitted.uta_resolved_pct | dp(1) }}% for the same locally loaded UTA. On -submitted strings, the RefSeq gap invisible at the current-version ceiling (both -backends {{ clinvar.cdot_refseq_pct | dp(1) }}% above) opens to -{{ clinvar_submitted.cdot_only_pct | dp(1) }} points: UTA holds no GRCh38 alignment for -{{ clinvar_submitted.uta_no_data_pct | dp(1) }}% of the cited versions, and +coordinate for {{ clinvar_submitted.after_fix_matched_pct | dp(1) }}%, versus +{{ clinvar_submitted.uta_resolved_pct | dp(1) }}% for the same locally loaded UTA. The +RefSeq gap invisible at the current-version ceiling (both backends +{{ clinvar.cdot_refseq_pct | dp(1) }}% above) opens to +{{ clinvar_submitted.cdot_only_pct | dp(1) }} points: {{ clinvar_submitted.cdot_only | commas }} of the {{ clinvar_submitted.n_sample | commas }} pairs resolve through cdot alone (one through -UTA alone). The submitted strings are largely well-formed, so cleaning has little to -rescue (`fix_hgvs()` repaired {{ clinvar_submitted.rescued_by_fix | int }} string, with +UTA alone), because UTA holds no GRCh38 alignment for +{{ clinvar_submitted.uta_no_data_pct | dp(1) }}% of the cited versions. The random draw +is easier on both backends ({{ clinvar_submitted.rnd_after_fix_matched_pct | dp(1) }}% +cdot versus {{ clinvar_submitted.rnd_uta_resolved_pct | dp(1) }}% UTA, a +{{ clinvar_submitted.rnd_cdot_only_pct | dp(1) }}-point gap): it is dominated by recent +submissions, and the fair sample is harder precisely because older submissions cite the +superseded versions this corpus exists to exercise. + +The submitted strings are largely well-formed, so cleaning has little to rescue +(`fix_hgvs()` repaired {{ clinvar_submitted.rescued_by_fix | int }} string, with {{ clinvar_submitted.regressions | int }} regressions). The residual -{{ clinvar_submitted.residual_pct | dp(1) }}% after cleaning and version fallback -({{ clinvar_submitted.residual_n | int }} of -{{ clinvar_submitted.n_sample | commas }}) is dominated by version effects, not -formatting: {{ clinvar_submitted_residual.version_refused | int }} cite a version -absent from the data, where the fallback declines to substitute because coordinate -safety cannot be verified, and -{{ clinvar_submitted_residual.coordinate_drift | int }} resolve through the cited -historical version to a coordinate that differs from ClinVar's current interpretation; +{{ clinvar_submitted.residual_pct | dp(1) }}% on the fair sample after cleaning and +version substitution ({{ clinvar_submitted.residual_n | int }} of +{{ clinvar_submitted.n_sample | commas }}) is dominated by historical-version effects, +not formatting: {{ clinvar_submitted_residual.coordinate_drift | int }} resolve through +the cited version to a coordinate that differs from ClinVar's current interpretation, +{{ clinvar_submitted_residual.reference_mismatch | int }} cite a reference base that +does not exist on the cited version, and +{{ clinvar_submitted_residual.version_refused | int }} cite a version absent from the +data where substitution declines to act because coordinate safety cannot be verified; the full breakdown is in Supplementary Table S8. -**[Tier 2].** The same gap holds on the historical clinical data that motivated cdot: +**[private data].** The same gap holds on the historical clinical data that motivated cdot: the complete set of {{ historical.n_lines | commas }} unique HGVS descriptions imported into the Australian Genomics Shariant variant-sharing platform [@Tudini2022], classifications submitted by clinical laboratories over many years, each written @@ -147,12 +166,14 @@ resolves at {{ benchmark.cdot_local_tps | int }} HGVS/s (median). Batching the per-transcript REST lookups into one `prefetch()` request (all transcripts for the set, under a second, untimed) makes REST throughput equivalent to local JSON, the two differing by under 1% across repeats: with the transcript data in process memory, both -are bounded by the shared engine and sequence layer, not by the transcript backend. A -locally loaded UTA reached {{ benchmark.uta_local_tps | int }} HGVS/s, about a quarter -of local-JSON throughput, each lookup being a set of SQL queries instead of a dict hit. -The public remote UTA database, at {{ benchmark.uta_remote_tps | dp(2) }} HGVS/s, is -nearly four orders of magnitude slower than any local configuration, paying wide-area -round trips to a shared server on every lookup. +are bounded by the shared engine and sequence layer, not by the transcript backend. +Comparing like with like: locally, a loaded UTA reached +{{ benchmark.uta_local_tps | int }} HGVS/s, about a quarter of local-JSON throughput, +each lookup resolving a set of SQL queries where cdot needs a single JSON object; and +remote to remote, cdot's REST API at {{ benchmark.cdot_rest_tps | int }} HGVS/s (one +request per transcript, no prefetch) is more than two orders of magnitude faster than the +public UTA server's {{ benchmark.uta_remote_tps | dp(2) }} HGVS/s, which pays wide-area +round trips to a shared database on every lookup. At scale, a single local-JSON process resolved the entire set of 3,660,452 unique ClinVar (g.HGVS, c.HGVS) pairs in ~92 minutes (665 HGVS/s; 99.3% produced a genomic @@ -165,15 +186,24 @@ to close to a year. ## R4: String cleaning recovers malformed real-world HGVS -**[Tier 2].** The main test of cleaning is a production query stream: N = 32,752 real -queries typed into the HGVS search box of clinical and research variant-curation -platforms based on VariantGrid [@VariantGrid]. The strings are whatever a clinician or -curator pasted or typed, carrying the damage of their route to the box: whitespace and +**[private data].** The main test of cleaning is a production query stream: +N = {{ cleaning_corpus.corpus_n | commas }} +real search-box queries from clinical and research variant-curation platforms based on +VariantGrid [@VariantGrid], restricted to the subset that matched a broad HGVS regex +(loosely HGVS-shaped strings a cleaner could plausibly repair, not arbitrary free-text +search terms), with a small residue of non-HGVS input that slipped the regex (pasted +URLs, report templates, prose) excluded as a collection artifact (see Residual errors, +below). The strings are whatever a clinician or curator pasted or typed, carrying +the damage of their route to the box: whitespace and non-printable characters from Word documents and report PDFs, lost casing, transposed punctuation, trailing protein annotations. The cleaning pipeline (`clean_hgvs()` plus the provider-verified accession-prefix restoration, Methods) raised the fraction -parseable by biocommons/hgvs from 91.5% as-submitted to 96.7%, a +5.3% absolute gain -(1,721 strings rescued, about 62% of the 8.5 percentage points that failed +parseable by biocommons/hgvs from {{ cleaning_corpus.as_submitted_pct | dp(1) }}% +as-submitted to {{ cleaning_corpus.after_pct | dp(1) }}%, a ++{{ cleaning_corpus.gain_pct | dp(1) }}% absolute gain +({{ cleaning_corpus.rescued | commas }} strings rescued, about +{{ cleaning_corpus.rescued_share_pct | int }}% of the +{{ cleaning_corpus.failed_pp | dp(1) }} percentage points that failed as-submitted) with zero regressions (no already-valid string was broken). Table 2 breaks the rescues down by fix type: whitespace removal and structural-punctuation repair dominate, followed by gene/transcript-wrapper repair and structure @@ -187,10 +217,10 @@ well-formed and fail by transcript-version age, whereas interactive human-typed carries the formatting damage cleaning repairs. cdot addresses the first with historical transcript depth and the second with `clean_hgvs()`. -**Table 2. Fixes applied across the production corpus (N = 32,752).** Each row is a +**Table 2. Fixes applied across the production corpus (N = {{ cleaning_corpus.corpus_n | commas }}).** Each row is a cleaning fix category, with the number of rescued queries in which it fired and its share of the 1,721 rescued queries. Categories overlap (a single query may need several -fixes), so the counts sum to more than the total. *(Tier 2; counts are frozen constants +fixes), so the counts sum to more than the total. *(Private data; counts are frozen constants from a deterministic run of the cleaning pipeline, `clean_hgvs()` plus the provider-verified accession-prefix restoration, over the production corpus.)* @@ -206,7 +236,7 @@ provider-verified accession-prefix restoration, over the production corpus.)* | Other (del/dup count, mutation-type case, …) | `NM_000059.4:c.1_2del2` → `…del` | 11 | 0.6% | | Prefix / kind restoration | `NM_000059.4:1A>G` → `NM_000059.4:c.1A>G` | 4 | 0.2% | | Accession prefix restoration (provider-verified) | `000059.4:c.68del` → `NM_000059.4:c.68del` | 1 | 0.1% | -| **Total unique queries rescued** | | **1,721** | **100%** | +| **Total unique queries rescued** | | **{{ cleaning_corpus.rescued | commas }}** | **100%** | As a control, `paper/scripts/inject_and_clean.py` injects each `clean_hgvs()` fix category into a seeded sample of clean, parseable ClinVar c.HGVS @@ -218,28 +248,32 @@ no-regression guarantee on which the production result depends. ### Residual errors: the ceiling of cleaning *(Table S6)* -**[Tier 2].** The 3.3% of the production corpus (1,075 queries; 826 unique strings) -that still fail to parse after cleaning define the ceiling of pure string repair. -Classified under a fixed decision-tree taxonomy (Supplementary Table S6, with -synthesised examples and the classification method and its limitations), just over half -is incomplete or reference-less input that no string-level repair can invent, about 30% -is in principle fixable and marks the frontier for future cleaning rules, and the -remainder splits evenly between valid HGVS the biocommons grammar rejects and non-HGVS -input (pasted URLs, report templates, prose) that should not be parsed at all. +**[private data].** A small residue of non-HGVS input ({{ cleaning_corpus.nonhgvs_n | int }} +queries: pasted URLs, report templates, prose) that slipped the corpus regex is a +data-collection artifact, not something cleaning could ever repair, so it is excluded +from the corpus above. The remaining {{ cleaning_corpus.residual_pct | dp(1) }}% +({{ cleaning_corpus.residual_n | commas }} queries) of genuine HGVS-shaped input that +still fails to parse after cleaning defines the ceiling of pure string repair. Classified under a fixed +decision-tree taxonomy (Supplementary Table S6, with synthesised examples and the +classification method and its limitations), well over half is incomplete or +reference-less input that no string-level repair can invent, about a third is in +principle fixable and marks the frontier for future cleaning rules, and the remaining +~8% is valid HGVS the biocommons grammar rejects. -## R5: Transcript version fallback and safe substitution +## R5: Transcript version substitution and coordinate safety -When a cited transcript version is absent from the loaded data, the opt-in fallback -(Methods) substitutes an adjacent version only if the coordinate-safety check passes; +When a cited transcript version is absent from the loaded data, the opt-in substitution +step (Methods) supplies an adjacent version only if the coordinate-safety check passes; a substitution that cannot be verified safe is refused by default, preserving -exact-version semantics. The fallback is a client-layer feature: biocommons/hgvs has no -adjacent-version fallback with any data provider. In an end-to-end ablation +exact-version semantics. This is a client-layer feature: biocommons/hgvs has no +adjacent-version substitution with any data provider. In an end-to-end ablation (`paper/scripts/benchmark_resolution.py`) that removes the requested version from each -test variant, the fallback recovered the correct genomic coordinate with no false +test variant, the substitution recovered the correct genomic coordinate with no false rescues (a false rescue being a substitution that resolves to a different coordinate). -Caution is warranted because a version bump can move a variant. Across consecutive -RefSeq version bumps ({{ version_stability.refseq_pairs | commas }} pairs), +Caution is warranted because substituting one version for another can change the +coordinate a variant projects to. Across consecutive +RefSeq version pairs ({{ version_stability.refseq_pairs | commas }} pairs), {{ version_stability.refseq_preserving_pct | dp(1) }}% preserved every coding coordinate; for Ensembl ({{ version_stability.ensembl_pairs | commas }} pairs) {{ version_stability.ensembl_preserving_pct | dp(1) }}%. Weighted by coding base (the @@ -247,9 +281,9 @@ chance a *random* variant is unaffected), safety is {{ (version_stability.refseq_pervariant_safety * 100) | dp(1) }}% (RefSeq) and {{ (version_stability.ensembl_pervariant_safety * 100) | dp(1) }}% (Ensembl). When a coordinate does move it is almost always the whole CDS, driven by a re-annotation of -the coding region; the most dangerous case, a *partial* bump that mis-places some +the coding region; the most dangerous case, a *partial* substitution that mis-places some variants but not others, is rare -({{ version_stability.refseq_partial_drift_pct | dp(1) }}% of RefSeq bumps, +({{ version_stability.refseq_partial_drift_pct | dp(1) }}% of RefSeq pairs, {{ version_stability.ensembl_partial_drift_pct | dp(1) }}% Ensembl). Within that tail the risk is positional: a partial drift keeps a 5' prefix intact up to its first alignment change and moves what lies downstream, so preservation falls from diff --git a/paper/scripts/build_clinvar_submitted_pairs.py b/paper/scripts/build_clinvar_submitted_pairs.py index bda5875..d60a9ad 100644 --- a/paper/scripts/build_clinvar_submitted_pairs.py +++ b/paper/scripts/build_clinvar_submitted_pairs.py @@ -46,15 +46,33 @@ string diversity; distinct strings for the same variant (e.g. two labs citing different transcript versions) are all kept. -Sampling rule (documented): ``--sample N --seed S`` draws a uniform random sample -of N pairs with ``random.Random(S).sample`` and writes them in original file -order; the committed test sample and the benchmark sample both use seed 42. - -Output TSV: header ``chrom pos ref alt g_hgvs c_hgvs scv_count`` - the VCF-format -pairs layout consumed by resolve_clinvar_pass.py (extra columns are ignored by its -reader). The full corpus is large and data-derived so it lives under a data dir -and is NOT committed; a 500-pair sample is committed to -tests/test_data/clinvar_hgvs/. +Sampling rules (documented), two complementary draws over the built corpus: + + * WHOLE-FILE RANDOM (``--sample-out``): ``--sample N --seed S`` draws a uniform + random sample of N pairs with ``random.Random(S).sample``, written in original + file order. Because ClinVar grows over time, a flat draw over-represents recent + submissions, so this sample reflects the LIVE distribution (recency-biased) - + "what the current file looks like". The committed test sample and the benchmark + sample both use seed 42. + * TIME-BUCKETED (``--time-bucketed-out``): buckets pairs by submission era + (``submit_date`` year, width ``--bucket-years``, default 1) and draws evenly + across buckets, so historical submissions are represented fairly regardless of + how few were made in a given year. This is the FAIR "what labs submitted over + the years" sample. Each pair's era is the EARLIEST SubmissionDate among the SCVs + that contributed it (when the string first appeared); pairs with no submission + date are dropped from this draw. Even allocation fills short buckets completely + and redistributes their deficit across the others; ``--seed`` makes it + deterministic. + +Both draws can be produced from one build (pass both ``--sample-out`` and +``--time-bucketed-out``). + +Output TSV: header ``chrom pos ref alt g_hgvs c_hgvs scv_count submit_date`` - the +VCF-format pairs layout consumed by resolve_clinvar_pass.py (which reads columns by +name, so the trailing ``scv_count``/``submit_date`` are ignored). ``submit_date`` is +the earliest SCV SubmissionDate (YYYY-MM-DD) for the pair, or empty if unknown. The +full corpus is large and data-derived so it lives under a data dir and is NOT +committed; a 500-pair sample is committed to tests/test_data/clinvar_hgvs/. Usage: # fast path: consume an existing per-SCV CSV extraction @@ -67,10 +85,11 @@ --xml ClinVarVCVRelease_2026-06.xml.gz \ clinvar.GRCh38.vcf.gz clinvar_submitted_pairs.GRCh38.tsv - # sample an existing corpus (no rebuild) + # sample an existing corpus (no rebuild): both draws at once python paper/scripts/build_clinvar_submitted_pairs.py \ - --from-pairs clinvar_submitted_pairs.GRCh38.tsv \ - --sample 500 --seed 42 --sample-out clinvar_submitted_500.tsv + --from-pairs clinvar_submitted_pairs.GRCh38.tsv --sample 3000 --seed 42 \ + --sample-out submitted_random_3000.tsv \ + --time-bucketed-out submitted_bucketed_3000.tsv """ import argparse import csv @@ -101,10 +120,14 @@ def sanitize(s): def iter_scv_csv(csv_dir): - """Yield (allele_id, submitted_hgvs) from an extract_xml_to_csv.py CSV dir. + """Yield (allele_id, submitted_hgvs, submit_date) from an extract_xml_to_csv.py + CSV dir. The extraction's ``hgvs`` column holds the first HGVS attribute value of the - SCV (which may be genomic or protein; the transcript filter is applied here).""" + SCV (which may be genomic or protein; the transcript filter is applied here). + ``submission_date`` is used for era bucketing if the extraction carries it; + older extractions without that column yield an empty date (those pairs are then + dropped from the time-bucketed draw).""" files = sorted(glob.glob(str(Path(csv_dir) / "*.csv"))) if not files: sys.exit(f"no CSVs found in {csv_dir}") @@ -113,15 +136,19 @@ def iter_scv_csv(csv_dir): for row in csv.DictReader(fh): h = sanitize(row.get("hgvs") or "") allele_id = row.get("allele_id") or "" + submit_date = (row.get("submission_date") or "").strip() if h and allele_id: - yield allele_id, h + yield allele_id, h, submit_date def iter_scv_xml(xml_path, limit=0): - """Yield (allele_id, submitted_hgvs) by streaming a ClinVar VCV XML release. + """Yield (allele_id, submitted_hgvs, submit_date) by streaming a ClinVar VCV + XML release. One VariationArchive at a time (iterparse + clear), so memory stays flat. - Yields the FIRST transcript c./n. expression per ClinicalAssertion.""" + Yields the FIRST transcript c./n. expression per ClinicalAssertion, tagged with + that assertion's ``SubmissionDate`` (YYYY-MM-DD; "" if the attribute is absent) + so the corpus can be bucketed by submission era.""" try: from lxml import etree except ImportError: # pragma: no cover - stdlib fallback @@ -142,11 +169,12 @@ def iter_scv_xml(xml_path, limit=0): ca_sa = ca.find("SimpleAllele") if ca_sa is None: continue + submit_date = ca.get("SubmissionDate") or "" for attr in ca_sa.iter("Attribute"): if attr.get("Type") == "HGVS" and attr.text: h = sanitize(attr.text) if is_submitted_tx_hgvs(h): - yield allele_id, h + yield allele_id, h, submit_date break elem.clear() while elem.getprevious() is not None: # lxml only; frees siblings @@ -156,7 +184,10 @@ def iter_scv_xml(xml_path, limit=0): def write_sample(pairs_path, n, seed, out_path): - """Uniform random sample of n data lines, written in original order.""" + """Uniform random sample of n data lines, written in original order. + + This is the recency-biased "whole-file random" draw: ClinVar grows over time, so + a flat draw over-represents recent submissions and reflects the live file.""" with open(pairs_path) as fh: header = fh.readline() lines = fh.readlines() @@ -167,7 +198,91 @@ def write_sample(pairs_path, n, seed, out_path): out.write(header) for i in idx: out.write(lines[i]) - print(f" sampled {n}/{len(lines):,} (seed {seed}) -> {out_path}", file=sys.stderr) + print(f" random sample {n}/{len(lines):,} (seed {seed}) -> {out_path}", file=sys.stderr) + + +def _allocate_even(bucket_sizes, n, rng): + """Split a draw of n evenly across buckets, honouring each bucket's capacity. + + Returns {bucket: take}. Each round hands every still-drawable bucket an equal + share of what remains; buckets that fill up drop out and their deficit is + redistributed across the rest, so short eras contribute all they have and the + long eras absorb the remainder. Any indivisible remainder is scattered one at a + time across random buckets that still have room (seeded via ``rng``).""" + take = {b: 0 for b in bucket_sizes} + remaining = min(n, sum(bucket_sizes.values())) + while remaining > 0: + active = [b for b in bucket_sizes if take[b] < bucket_sizes[b]] + if not active: + break + share = remaining // len(active) + if share == 0: + for b in rng.sample(active, remaining): + take[b] += 1 + break + for b in active: + add = min(share, bucket_sizes[b] - take[b]) + take[b] += add + remaining -= add + return take + + +def write_time_bucketed_sample(pairs_path, n, seed, out_path, bucket_years=1): + """Sample n data lines drawn evenly across submission-era buckets. + + Buckets are ``submit_date`` year floored to a ``bucket_years``-wide window. Lines + with no/unparseable date are dropped from this draw (reported). Fair by era, the + complement of the recency-biased whole-file draw.""" + with open(pairs_path) as fh: + header = fh.readline().rstrip("\n").split("\t") + lines = fh.readlines() + if "submit_date" not in header: + sys.exit(f"{pairs_path} has no submit_date column; rebuild the corpus " + "(newer build_clinvar_submitted_pairs.py) for the time-bucketed draw") + di = header.index("submit_date") + buckets = {} # bucket_key -> [line index] + n_undated = 0 + for i, line in enumerate(lines): + f = line.rstrip("\n").split("\t") + date = f[di] if di < len(f) else "" + if len(date) < 4 or not date[:4].isdigit(): + n_undated += 1 + continue + key = (int(date[:4]) // bucket_years) * bucket_years + buckets.setdefault(key, []).append(i) + n_dated = sum(len(v) for v in buckets.values()) + if n > n_dated: + sys.exit(f"--sample {n} > {n_dated} dated pairs available for bucketing") + rng = random.Random(seed) + take = _allocate_even({k: len(v) for k, v in buckets.items()}, n, rng) + chosen = [] + for key, idxs in buckets.items(): + chosen.extend(rng.sample(idxs, take[key])) + chosen.sort() + with open(out_path, "w") as out: + out.write("\t".join(header) + "\n") + for i in chosen: + out.write(lines[i]) + span = f"{min(buckets)}-{max(buckets) + bucket_years - 1}" if buckets else "n/a" + print(f" time-bucketed sample {len(chosen)}/{n_dated:,} dated pairs across " + f"{len(buckets)} eras ({span}, {bucket_years}y buckets; {n_undated:,} undated " + f"dropped; seed {seed}) -> {out_path}", file=sys.stderr) + for key in sorted(buckets): + print(f" {key}-{key + bucket_years - 1}: drew {take[key]:>4} " + f"of {len(buckets[key]):>7,}", file=sys.stderr) + + +def _write_requested_samples(args, pairs_path): + """Emit whichever of the two draws the CLI asked for, from a built corpus TSV.""" + if not (args.sample_out or args.time_bucketed_out): + return + if not args.sample: + sys.exit("--sample-out / --time-bucketed-out need --sample N") + if args.sample_out: + write_sample(pairs_path, args.sample, args.seed, args.sample_out) + if args.time_bucketed_out: + write_time_bucketed_sample(pairs_path, args.sample, args.seed, + args.time_bucketed_out, args.bucket_years) def main(): @@ -180,15 +295,18 @@ def main(): ap.add_argument("vcf", nargs="?", help="ClinVar VCF (ground truth, joined on ALLELEID)") ap.add_argument("out", nargs="?", help="output corpus TSV") ap.add_argument("--limit", type=int, default=0, help="(--xml) stop after N VariationArchives (smoke test)") - ap.add_argument("--sample", type=int, default=0, help="also write a random sample of N pairs") + ap.add_argument("--sample", type=int, default=0, help="sample size N for --sample-out / --time-bucketed-out") ap.add_argument("--seed", type=int, default=42) - ap.add_argument("--sample-out", help="path for the sample TSV") + ap.add_argument("--sample-out", help="path for the whole-file random sample (recency-biased)") + ap.add_argument("--time-bucketed-out", help="path for the era-balanced sample (fair over submission years)") + ap.add_argument("--bucket-years", type=int, default=1, help="(--time-bucketed-out) era width in years (default 1)") args = ap.parse_args() if args.from_pairs: - if not (args.sample and args.sample_out): - sys.exit("--from-pairs needs --sample and --sample-out") - write_sample(args.from_pairs, args.sample, args.seed, args.sample_out) + if not ((args.sample_out or args.time_bucketed_out) and args.sample): + sys.exit("--from-pairs needs --sample and at least one of " + "--sample-out / --time-bucketed-out") + _write_requested_samples(args, args.from_pairs) return if not (args.vcf and args.out): sys.exit("vcf and out are required when building") @@ -202,8 +320,9 @@ def main(): n_scv = n_tx = n_joined = 0 comp = {"refseq": 0, "ensembl": 0} - pairs = {} # (allele_id, c_hgvs) -> scv_count - for allele_id, h in scv_iter: + pairs = {} # (allele_id, c_hgvs) -> scv_count + min_date = {} # (allele_id, c_hgvs) -> earliest SubmissionDate seen ("" if none) + for allele_id, h, submit_date in scv_iter: n_scv += 1 if not is_submitted_tx_hgvs(h): continue @@ -214,27 +333,34 @@ def main(): key = (allele_id, h) if key not in pairs: comp[source_of(h.split(":", 1)[0])] += 1 - pairs[key] = pairs.get(key, 0) + 1 + pairs[key] = 0 + min_date[key] = "" + pairs[key] += 1 + # earliest actual date across the SCVs that share this pair (ISO dates sort + # lexicographically; "" is "unknown", never treated as earliest) + if submit_date and (not min_date[key] or submit_date < min_date[key]): + min_date[key] = submit_date with open(args.out, "w") as out: - out.write("chrom\tpos\tref\talt\tg_hgvs\tc_hgvs\tscv_count\n") + out.write("chrom\tpos\tref\talt\tg_hgvs\tc_hgvs\tscv_count\tsubmit_date\n") for (allele_id, c_hgvs), count in pairs.items(): chrom, pos, ref, alt, g_hgvs = g_by_allele[allele_id] - out.write(f"{chrom}\t{pos}\t{ref}\t{alt}\t{g_hgvs}\t{c_hgvs}\t{count}\n") + out.write(f"{chrom}\t{pos}\t{ref}\t{alt}\t{g_hgvs}\t{c_hgvs}\t{count}\t" + f"{min_date[(allele_id, c_hgvs)]}\n") n_pairs = len(pairs) + n_dated = sum(1 for d in min_date.values() if d) print(f"scanned {n_scv:,} SCV HGVS values -> {n_tx:,} transcript c./n. strings " f"-> {n_joined:,} with VCF ground truth -> {n_pairs:,} unique " f"(AlleleID, string) pairs", file=sys.stderr) if n_pairs: print(f" source mix: refseq {comp['refseq']:,} ({100*comp['refseq']/n_pairs:.2f}%) " f"ensembl {comp['ensembl']:,} ({100*comp['ensembl']/n_pairs:.2f}%)", file=sys.stderr) + print(f" submission date present on {n_dated:,} ({100*n_dated/n_pairs:.1f}%) " + f"of pairs (needed for the time-bucketed draw)", file=sys.stderr) print(f"Written: {args.out}", file=sys.stderr) - if args.sample: - if not args.sample_out: - sys.exit("--sample needs --sample-out") - write_sample(args.out, args.sample, args.seed, args.sample_out) + _write_requested_samples(args, args.out) if __name__ == "__main__": diff --git a/paper/supplementary.md b/paper/supplementary.md index 2c9913f..e7d0672 100644 --- a/paper/supplementary.md +++ b/paper/supplementary.md @@ -27,7 +27,7 @@ as a missing accession prefix), so both tools are eligible on every case. ### Shariant corpus resolution protocol -The Shariant corpus (Results R2, Tier 2) is resolved as pure coordinate projection with +The Shariant corpus (Results R2, private data) is resolved as pure coordinate projection with `replace_reference=False`, so the sequence layer never differs between the two backends. @@ -136,7 +136,7 @@ notations are not miscounted. laboratories citing mostly current RefSeq versions, so this is a clean, public, reproducible scale check that cdot resolves real variants at scale, not an unbiased sample of the transcripts clinical labs use. The unbiased real-world complement is the Shariant -historical corpus (Results R2, Tier 2). The pair builder extracts both RefSeq and Ensembl +historical corpus (Results R2, private data). The pair builder extracts both RefSeq and Ensembl c.HGVS and reports the measured source mix, but ClinVar's `variant_summary` Name column is RefSeq-centric, so the Ensembl share at this scale is near zero. ClinVar's comprehensive Ensembl HGVS lives in `hgvs4variation.txt.gz`, which this pass does not ingest; the @@ -196,27 +196,9 @@ commands in each script's docstring; totals also appear in `paper/empirical_results/cleaning.csv`, `lovd_comparison.csv` and `vv_mutalyzer_comparison.csv`. -| Injected error (example → target) | n | `clean_hgvs()` | LOVD top-1 | VV | Mutalyzer | -|---|---|---|---|---|---| -| Whitespace (` NM_000059.4: c.68del`) | 200 | 100% | 100% | 96.5% | 89.5% | -| Lowercased bases (`c.316g>a`) | 200 | 100% | 100% | 96.0% | 89.5% | -| Trailing protein suffix (`c.68del p.Arg100Ter`) | 200 | 100% | 91.5% | 0% | 0% | -| Gene wrapper with colon (`NM_000059.4:(BRCA2):c.68del`) | 200 | 100% | 0% | 0% | 0% | -| Gene/transcript swapped (`BRCA2(NM_000059.4):c.68del`) | 200 | 100% | 49.5% | 94.5% | 0% | -| Surrounding quotes (`"NM_000059.4:c.68del"`) | 200 | 100% | 0% | 97.5% | 0% | -| Doubled colon (`NM_000059.4::c.68del`) | 200 | 100% | 0% | 99.0% | 0% | -| Unbalanced bracket (`(NM_000059.4:c.68del`) | 200 | 100% | 0% | 0% | 0% | -| Separator typo (`NM_000059.4:c,68del`) | 200 | 100% | 100% | 0% | 0% | -| Doubled version dot (`NM_000059..4:c.68del`) | 200 | 100% | 0% | 0% | 0% | -| Leading junk (`GRCh38.p2 NM_000059.4:c.68del`) | 200 | 100% | 0% | 0% | 0% | -| Doubled kind (`NM_000059.4:c.c.68del`) | 200 | 100% | 0% | 0% | 0% | -| Lowercased accession (`nm_000059.4:c.68del`) | 200 | 100% | 52.0% | 94.0% | 35.5% | -| Redundant del/dup count (`c.68_69del23`) | 77 | 100% | 0% | 0% | 0% | -| Missing accession underscore (`NM000059.4:c.68del`) | 200 | 100% | 0% | 0% | 0% | -| Colon in accession prefix (`NM:_000059.4:c.68del`) | 200 | 100% | 0% | 0% | 0% | -| Uppercased mutation type (`c.68DEL`) | 142 | 100% | 100% | 94.4% | 0% | -| Dropped accession letter (`M_000059.4:c.68del`) | 200 | 100% | 0% | 0% | 0% | -| **Total** | **{{ lovd_comparison.n_cases | commas }}** | **{{ lovd_comparison.cdot_pct | dp(1) }}%** | **{{ lovd_comparison.lovd_top1_pct | dp(1) }}%** | **{{ vv_mutalyzer_comparison.vv_pct | dp(1) }}%** | **{{ vv_mutalyzer_comparison.mut_pct | dp(1) }}%** | + Weighted by the production rescue-op distribution (Results Table 2) the totals are {{ lovd_comparison.cdot_weighted_pct | dp(1) }}% for `clean_hgvs()`, @@ -253,24 +235,19 @@ could not parse embedded the LOVD syntax checker's ranked suggestions in ### Table S6: Residual error classes after cleaning -**[Tier 2].** Single-label classification of the 1,075 production queries (826 unique -strings) that still fail to parse after cleaning (Results, "Residual errors"), under a -fixed decision-tree taxonomy. Of the eight classes, the seven repair-relevant ones are -shown; the eighth was non-HGVS input (81 queries, 7.5%: pasted URLs, report templates, -or prose), excluded here as there is nothing in it for cleaning to repair. Counts and % -are of the 1,075 residual queries; examples are synthesised from public BRCA2 -`NM_000059.4`. *(Tier 2; frozen constants from a deterministic run over the production -corpus.)* - -| Class | Queries | What it is (*example*) | -|---|---|---| -| Truncated | 284 (26.4%) | cut off before a complete variant: `NM_000059.4:c.68_69` (range, no edit) | -| No reference | 277 (25.8%) | a bare variant body, no transcript/gene/accession: `c.68_69delAG` | -| Bad accession | 124 (11.5%) | misplaced or truncated version, or a missing prefix with no unique data match: `NM_000059/4:c.68del` (slash in place of the version dot) | -| Edit syntax | 113 (10.5%) | malformed or non-standard edit operation: `NM_000059.4:c.68AG>T` (multi-base reference in a substitution) | -| Trailing / concatenated | 85 (7.9%) | extra characters after a complete variant, or several run together: `NM_000059.4:c.68delAG;c.70A>G` | -| Grammar gap | 81 (7.5%) | legitimate HGVS the biocommons grammar rejects: `NM_000059.4:c.(67+1_68-1)_(70+1_71-1)del` (uncertain-range deletion) | -| Insertion (length only) | 30 (2.8%) | an insertion given as a base count, not a sequence: `NM_000059.4:c.68_69ins5` (position and length recoverable; inserted bases not) | +**[private data].** Single-label classification of the {{ cleaning_corpus.residual_n | commas }} +genuine-HGVS production queries +that still fail to parse after cleaning (Results, "Residual errors"), under a fixed +decision-tree taxonomy. A further {{ cleaning_corpus.nonhgvs_n | int }} residual queries were non-HGVS input (pasted URLs, +report templates, or prose) that slipped the corpus regex; these are a data-collection +artifact with nothing in them for cleaning to repair, so they are removed from the +corpus and excluded here (Results). Counts and % below are of the {{ cleaning_corpus.residual_n | commas }} residual queries; +examples are synthesised from public BRCA2 `NM_000059.4`. *(Private data; frozen constants +from a deterministic run over the production corpus.)* + + *Method and limitation:* classification was performed by a large language model (Claude Opus 4, Anthropic; 2026-06-17) applying the shared decision tree to each unique string, diff --git a/tests/test_data/clinvar_hgvs/clinvar_submitted_500.tsv b/tests/test_data/clinvar_hgvs/clinvar_submitted_500.tsv index 0fd1304..b62d3f5 100644 --- a/tests/test_data/clinvar_hgvs/clinvar_submitted_500.tsv +++ b/tests/test_data/clinvar_hgvs/clinvar_submitted_500.tsv @@ -1,501 +1,501 @@ -chrom pos ref alt g_hgvs c_hgvs scv_count -12 49052426 T C NC_000012.12:g.49052426T>C NM_003482.3:c.1259-2A>G 1 -6 18121581 A G NC_000006.12:g.18121581A>G NM_198586.2:c.1026T>C 1 -17 1727203 G T NC_000017.11:g.1727203G>T NM_001163809.1:c.2244G>T 1 -1 169617125 G A NC_000001.11:g.169617125G>A NM_003005.3:c.384C>T 1 -11 47342666 C T NC_000011.10:g.47342666C>T NM_000256.3:c.1536G>A 1 -16 88428910 C A NC_000016.10:g.88428910C>A NM_001127464.1:c.1440C>A 1 -6 24278050 A G NC_000006.12:g.24278050A>G NM_016356.5:c.921T>C 1 -1 65608905 C A NC_000001.11:g.65608905C>A NM_002303.5:c.1752+4C>A 1 -17 48728327 G A NC_000017.11:g.48728327G>A NM_006361.5:c.267C>T 1 -2 151514449 A G NC_000002.12:g.151514449A>G NM_001271208.1:c.23122-21T>C 1 -5 37224383 T C NC_000005.10:g.37224383T>C NM_023073.3:c.2501-50A>G 1 -17 9857438 G A NC_000017.11:g.9857438G>A NM_004246.2:c.627G>A 1 -4 95156044 A G NC_000004.12:g.95156044A>G NM_001203.2:c.*1371A>G 1 -1 25563755 G T NC_000001.11:g.25563755G>T NM_015627.2:c.711G>T 1 -2 158658252 T C NC_000002.12:g.158658252T>C NM_003628.3:c.2031T>C 1 -18 58537781 A G NC_000018.10:g.58537781A>G NM_052947.3:c.2406T>C 1 -1 231421655 C T NC_000001.11:g.231421655C>T NM_022051.2:c.234G>A 1 -19 15192300 T A NC_000019.10:g.15192300T>A NM_000435.2:c.341-2A>T 1 -21 46154234 G A NC_000021.9:g.46154234G>A NM_001320412.1:c.153C>T 1 -11 7043322 C A NC_000011.10:g.7043322C>A NM_176822.3:c.1296C>A 1 -1 32205186 G C NC_000001.11:g.32205186G>C NM_024296.4:c.549-8G>C 1 -19 47362702 T C NC_000019.10:g.47362702T>C NM_014681.5:c.1593+9T>C 1 -2 26462177 C T NC_000002.12:g.26462177C>T NM_194248.3:c.5197G>A 1 -1 154590374 A G NC_000001.11:g.154590374A>G NM_001111.4:c.2306T>C 1 -15 28272315 C T NC_000015.10:g.28272315C>T NM_004667.5:c.983G>A 1 -16 9764088 C G NC_000016.10:g.9764088C>G NM_000833.3:c.3456G>C 1 -14 23389617 G A NC_000014.9:g.23389617G>A NM_002471.3:c.3835C>T 1 -8 22532282 T C NC_000008.11:g.22532282T>C NM_001243975.1:c.1199T>C 1 -3 32158937 C T NC_000003.12:g.32158937C>T NM_015141.3:c.680C>T 1 -17 48728396 GC G NC_000017.11:g.48728397del NM_006361.5:c.197delG 1 -1 10948070 C T NC_000001.11:g.10948070C>T NM_001170754.1:c.2065G>A 1 -17 8014650 T C NC_000017.11:g.8014650T>C NM_000180.3:c.2462T>C 1 -20 36209711 G T NC_000020.11:g.36209711G>T NM_012156.2:c.1892G>T 1 -1 19227410 G T NC_000001.11:g.19227410G>T NM_015047.1:c.2105C>A 1 -2 98396851 G GGACGC NC_000002.12:g.98396852_98396853insACGCG NM_001298.3:c.1682_1683insACGCG 1 -22 39662398 G GCGGGGAT NC_000022.11:g.39662401_39662407dup NM_021096.3:c.3338_3344dup 1 -16 2317288 C T NC_000016.10:g.2317288C>T NM_001089.2:c.1106G>A 1 -9 130703086 C T NC_000009.12:g.130703086C>T NM_014285.5:c.706C>T 1 -16 89742839 G C NC_000016.10:g.89742839G>C NM_000135.2:c.3726C>G 1 -3 173604896 C T NC_000003.12:g.173604896C>T NM_014932.5:c.298C>T 1 -11 103177704 T C NC_000011.10:g.103177704T>C NM_001377.2:c.6023T>C 1 -X 41217325 G A NC_000023.11:g.41217325G>A NM_001039590.2:c.6191G>A 1 -10 62092842 CAA C NC_000010.11:g.62092844_62092845del NM_032199.3:c.3381_3382del 1 -3 121541414 G A NC_000003.12:g.121541414G>A NM_199420.3:c.409C>T 1 -3 142508104 T G NC_000003.12:g.142508104T>G NM_001184.3:c.4858A>C 1 -11 108193979 C G NC_000011.10:g.108193979C>G NM_002519.2:c.195G>C 1 -14 75047023 G T NC_000014.9:g.75047023G>T NM_001040108.1:c.2633C>A 1 -3 47408963 G T NC_000003.12:g.47408963G>T NM_015466.2:c.1518G>T 1 -17 57105864 G T NC_000017.11:g.57105864G>T NM_001242903.1:c.400G>T 1 -19 56088435 A C NC_000019.10:g.56088435A>C NM_001002836.2:c.737T>G 1 -1 155056992 G T NC_000001.11:g.155056992G>T NM_207197.1:c.1039G>T 1 -11 74457389 T C NC_000011.10:g.74457389T>C NM_005472.4:c.175A>G 1 -16 11269054 C G NC_000016.10:g.11269054C>G NM_005425.4:c.209G>C 1 -14 74798640 C T NC_000014.9:g.74798640C>T NM_019589.2:c.3343C>T 1 -17 27597347 C T NC_000017.11:g.27597347C>T NM_014238.1:c.968C>T 1 -13 102744944 C T NC_000013.11:g.102744944C>T NM_001146197.1:c.5753G>A 1 -16 2762302 C T NC_000016.10:g.2762302C>T NM_016333.3:c.1774C>T 1 -11 66315062 C T NC_000011.10:g.66315062C>T NM_020404.2:c.1966G>A 1 -19 2291716 G A NC_000019.10:g.2291716G>A NM_001101391.1:c.61C>T 1 -1 206900318 T G NC_000001.11:g.206900318T>G NM_001185156.1:c.267T>G 1 -10 86942851 C T NC_000010.11:g.86942851C>T NM_024756.2:c.1933G>A 1 -16 20423917 C T NC_000016.10:g.20423917C>T NM_017888.2:c.769C>T 1 -1 83883117 A C NC_000001.11:g.83883117A>C NM_024686.4:c.2389T>G 1 -7 157010265 G A NC_000007.14:g.157010265G>A NM_005515.3:c.86C>T 1 -11 62522244 A G NC_000011.10:g.62522244A>G NM_001620.1:c.12173T>C 1 -3 45968445 C T NC_000003.12:g.45968445C>T NM_024513.2:c.889G>A 1 -14 94497827 T C NC_000014.9:g.94497827T>C NM_173850.2:c.571A>G 1 -8 144413853 C A NC_000008.11:g.144413853C>A NM_130849.2:c.1316G>T 1 -11 58955624 T A NC_000011.10:g.58955624T>A NM_080661.3:c.599T>A 1 -X 108734121 C T NC_000023.11:g.108734121C>T NM_003604.2:c.2224G>A 1 -9 106928728 G A NC_000009.12:g.106928728G>A NM_021224.4:c.4816G>A 1 -3 47121790 C A NC_000003.12:g.47121790C>A NM_014159.6:c.2846G>T 1 -7 100124833 G A NC_000007.14:g.100124833G>A NM_152755.1:c.692G>A 1 -7 102934254 A G NC_000007.14:g.102934254A>G NM_001031692.2:c.341A>G 1 -11 124747591 G T NC_000011.10:g.124747591G>T NM_014312.3:c.928C>A 1 -19 49422544 C A NC_000019.10:g.49422544C>A NM_178449.3:c.227G>T 1 -19 14827590 A G NC_000019.10:g.14827590A>G NM_017506.1:c.652T>C 1 -1 85200857 C T NC_000001.11:g.85200857C>T NM_032184.1:c.140G>A 1 -15 81332794 C G NC_000015.10:g.81332794C>G NM_001080532.1:c.2928G>C 1 -2 33398468 G T NC_000002.12:g.33398468G>T NM_206943.2:c.5089G>T 1 -13 102739802 G C NC_000013.11:g.102739802G>C NM_001146197.1:c.10895C>G 1 -8 120502525 T C NC_000008.11:g.120502525T>C NM_022045.3:c.1643T>C 1 -11 66437358 C T NC_000011.10:g.66437358C>T NM_016050.3:c.305G>A 1 -1 224153329 C G NC_000001.11:g.224153329C>G NM_015176.2:c.704C>G 1 -19 52115461 C T NC_000019.10:g.52115461C>T NM_178523.3:c.1703G>A 1 -1 54609332 C T NC_000001.11:g.54609332C>T NM_176782.2:c.1694G>A 1 -1 74205651 G A NC_000001.11:g.74205651G>A NM_003838.3:c.1604G>A 1 -14 67650873 C T NC_000014.9:g.67650873C>T NM_001172.3:c.1018C>T 1 -6 159239546 G A NC_000006.12:g.159239546G>A NM_032532.2:c.4210G>A 1 -16 3115457 G A NC_000016.10:g.3115457G>A NM_003456.2:c.160G>A 1 -22 30372204 G C NC_000022.11:g.30372204G>C NM_001017437.2:c.1253G>C 1 -14 58329568 C G NC_000014.9:g.58329568C>G NM_002892.3:c.703C>G 1 -9 41986297 C T NC_000009.12:g.41986297C>T NM_001201380.1:c.1348G>A 1 -12 51269266 G C NC_000012.12:g.51269266G>C NM_001031628.1:c.13C>G 1 -11 93723151 C T NC_000011.10:g.93723151C>T NM_033395.1:c.6058C>T 1 -14 64487627 A C NC_000014.9:g.64487627A>C NM_006977.2:c.604T>G 1 -11 8640552 G A NC_000011.10:g.8640552G>A NM_014818.1:c.1388C>T 1 -22 46691726 G C NC_000022.11:g.46691726G>C NM_022766.5:c.1178C>G 1 -12 32701427 A C NC_000012.12:g.32701427A>C NM_012062.4:c.115A>C 1 -6 123366158 A G NC_000006.12:g.123366158A>G NM_006073.2:c.1298T>C 1 -1 155066896 T G NC_000001.11:g.155066896T>G NM_182689.1:c.280T>G 1 -1 43985351 C T NC_000001.11:g.43985351C>T NM_030587.2:c.901C>T 1 -7 90310089 A G NC_000007.14:g.90310089A>G NM_001039706.2:c.2677A>G 1 -10 46550037 G T NC_000010.11:g.46550037G>T NM_014696.3:c.700C>A 1 -19 35449760 A G NC_000019.10:g.35449760A>G NM_005306.2:c.46A>G 1 -3 52436007 C T NC_000003.12:g.52436007C>T NM_020163.1:c.1945G>A 1 -17 44210163 C T NC_000017.11:g.44210163C>T NM_014233.3:c.1587G>A 1 -17 17796240 G T NC_000017.11:g.17796240G>T NM_030665.3:c.3292G>T 1 -12 3633630 A T NC_000012.12:g.3633630A>T NM_001144958.1:c.1709T>A 1 -17 67552303 G A NC_000017.11:g.67552303G>A NM_012417.2:c.244G>A 1 -1 47439336 G A NC_000001.11:g.47439336G>A NM_004474.3:c.1201G>A 1 -12 15483987 T C NC_000012.12:g.15483987T>C NM_030667.2:c.89T>C 1 -19 38358295 C G NC_000019.10:g.38358295C>G NM_021185.4:c.1333C>G 1 -4 121859100 A C NC_000004.12:g.121859100A>C NM_176824.3:c.420T>G 2 -19 14515965 A G NC_000019.10:g.14515965A>G NM_006145.1:c.998T>C 1 -16 22266836 C T NC_000016.10:g.22266836C>T NM_013302.3:c.1724C>T 1 -10 122512013 G A NC_000010.11:g.122512013G>A NM_002775.4:c.1222G>A 1 -6 656466 G A NC_000006.12:g.656466G>A NM_148959.3:c.479C>T 1 -16 87644861 C T NC_000016.10:g.87644861C>T NM_020655.2:c.986C>T 1 -2 169509801 C T NC_000002.12:g.169509801C>T NM_006063.2:c.23C>T 1 -18 23842691 A G NC_000018.10:g.23842691A>G NM_198129.1:c.3544A>G 1 -1 225404470 C G NC_000001.11:g.225404470C>G NM_002296.3:c.1621G>C 1 -11 100979039 T C NC_000011.10:g.100979039T>C NM_152432.2:c.2446T>C 1 -2 70985034 T C NC_000002.12:g.70985034T>C NM_001115116.1:c.1327T>C 1 -7 117422279 G A NC_000007.14:g.117422279G>A NM_130768.2:c.286C>T 1 -3 49653356 T C NC_000003.12:g.49653356T>C NM_003458.3:c.3800T>C 1 -16 88877104 C T NC_000016.10:g.88877104C>T NM_005187.5:c.1834G>A 1 -16 724720 C G NC_000016.10:g.724720C>G NM_001031737.2:c.726G>C 1 -16 11178583 C T NC_000016.10:g.11178583C>T NM_015226.2:c.3055C>T 1 -15 43698765 A G NC_000015.10:g.43698765A>G NM_001015001.1:c.1136A>G 1 -20 38517796 C T NC_000020.11:g.38517796C>T NM_020336.2:c.1213C>T 1 -11 562703 G C NC_000011.10:g.562703G>C NM_003475.3:c.749G>C 1 -16 58041800 A G NC_000016.10:g.58041800A>G NM_002428.2:c.1094A>G 1 -3 52440441 C T NC_000003.12:g.52440441C>T NM_020163.2:c.1079G>A 1 -15 48136868 G A NC_000015.10:g.48136868G>A NM_205850.2:c.776G>A 1 -15 66781531 G T NC_000015.10:g.66781531G>T NM_005585.4:c.1487G>T 1 -19 37892995 C G NC_000019.10:g.37892995C>G NM_031951.3:c.2591G>C 1 -4 146640671 G T NC_000004.12:g.146640671G>T NM_004575.2:c.1093G>T 1 -18 58579590 C T NC_000018.10:g.58579590C>T NM_052947.3:c.1186G>A 1 -7 105565568 C A NC_000007.14:g.105565568C>A NM_021930.4:c.2106C>A 1 -6 99435841 T A NC_000006.12:g.99435841T>A NM_001080481.3:c.2320A>T 1 -X 153648119 A G NC_000023.11:g.153648119A>G NM_001395.2:c.166A>G 1 -4 3444105 C T NC_000004.12:g.3444105C>T NM_001528.2:c.542C>T 1 -9 116187805 G A NC_000009.12:g.116187805G>A NM_002581.3:c.1067G>A 1 -19 54095887 C G NC_000019.10:g.54095887C>G NM_206818.1:c.652G>C 1 -5 75677939 T A NC_000005.10:g.75677939T>A NM_001099271.1:c.1419A>T 1 -14 32091784 C T NC_000014.9:g.32091784C>T NM_001030055.1:c.1115C>T 1 -22 32406709 T C NC_000022.11:g.32406709T>C NM_014306.4:c.293A>G 1 -10 7205844 T C NC_000010.11:g.7205844T>C NM_001029880.2:c.1415A>G 1 -14 99175485 C A NC_000014.9:g.99175485C>A NM_022898.2:c.1138G>T 1 -2 25161144 CT C NC_000002.12:g.25161145del NM_000939.3:c.740delA 1 -16 2766181 C T NC_000016.10:g.2766181C>T NM_016333.4:c.5653C>T 1 -1 61088410 G T NC_000001.11:g.61088410G>T NM_005595.4:c.289G>T 1 -17 7512269 C G NC_000017.11:g.7512269C>G NM_000937.4:c.4417C>G 1 -1 158845720 T G NC_000001.11:g.158845720T>G NM_002432.1:c.704T>G 1 -19 11441295 G A NC_000019.10:g.11441295G>A NM_002743.2:c.406G>A 1 -8 68069843 A T NC_000008.11:g.68069843A>T NM_024870.2:c.1452A>T 1 -11 32954042 G T NC_000011.10:g.32954042G>T NM_001076786.1:c.3976G>T 1 -5 87268504 C T NC_000005.10:g.87268504C>T NM_002890.3:c.53C>T 1 -2 166405964 G C NC_000002.12:g.166405964G>C NM_002976.3:c.4665C>G 1 -X 135022298 G T NC_000023.11:g.135022298G>T NM_001078173.1:c.162C>A 1 -13 23320750 G C NC_000013.11:g.23320750G>C NM_000231.2:c.692G>C 1 -20 19685238 G A NC_000020.11:g.19685238G>A NM_020689.3:c.1201G>A 1 -17 35264578 C A NC_000017.11:g.35264578C>A NM_144975.3:c.1534C>A 1 -4 5446686 C G NC_000004.12:g.5446686C>G NM_018401.1:c.576C>G 1 -6 89333148 A G NC_000006.12:g.89333148A>G NM_016021.2:c.616T>C 1 -X 56563953 C T NC_000023.11:g.56563953C>T NM_013444.3:c.80C>T 1 -7 101164416 G C NC_000007.14:g.101164416G>C NM_003378.3:c.428C>G 1 -3 39184027 C T NC_000003.12:g.39184027C>T NM_194293.2:c.5419G>A 1 -3 44447582 C T NC_000003.12:g.44447582C>T NM_181489.5:c.2089G>A 1 -6 143884306 G A NC_000006.12:g.143884306G>A NM_001013623.2:c.31G>A 1 -1 159193882 G A NC_000001.11:g.159193882G>A NM_021189.3:c.635G>A 1 -11 85916201 T A NC_000011.10:g.85916201T>A NM_173556.3:c.1141T>A 1 -20 3671681 T A NC_000020.11:g.3671681T>A NM_025220.2:c.1805A>T 1 -16 70482153 G C NC_000016.10:g.70482153G>C NM_015386.2:c.1943C>G 1 -19 45364277 C A NC_000019.10:g.45364277C>A NM_000400.3:c.773G>T 1 -1 109750749 G A NC_000001.11:g.109750749G>A NM_139053.2:c.1684C>T 1 -2 108471109 G A NC_000002.12:g.108471109G>A NM_181453.3:c.1780G>A 1 -9 65283486 A G NC_000009.12:g.65283486A>G NM_001126334.1:c.892T>C 1 -7 24717287 T C NC_000007.14:g.24717287T>C NM_004403.2:c.664A>G 1 -8 36918835 G A NC_000008.11:g.36918835G>A NM_001031836.2:c.2534G>A 1 -10 24473864 C T NC_000010.11:g.24473864C>T NM_019590.3:c.1483C>T 1 -15 63643547 C G NC_000015.10:g.63643547C>G NM_003922.3:c.11188G>C 1 -10 89462407 C T NC_000010.11:g.89462407C>T NM_213606.4:c.172G>A 1 -16 31117821 C A NC_000016.10:g.31117821C>A NM_032188.3:c.140C>A 1 -19 5131933 G A NC_000019.10:g.5131933G>A NM_015015.3:c.1832G>A 1 -7 584538 C G NC_000007.14:g.584538C>G NM_001164761.1:c.739G>C 1 -3 12618646 T A NC_000003.12:g.12618646T>A NM_002880.3:c.76A>T 1 -9 89386480 G A NC_000009.12:g.89386480G>A NM_006378.3:c.1333C>T 1 -8 38820436 G C NC_000008.11:g.38820436G>C NM_006283.2:c.1192G>C 1 -2 137242537 G T NC_000002.12:g.137242537G>T NM_001080427.1:c.2138G>T 1 -9 35370345 C G NC_000009.12:g.35370345C>G NM_006377.3:c.1242C>G 1 -19 30009123 C T NC_000019.10:g.30009123C>T NM_003796.2:c.805C>T 1 -10 97750443 C A NC_000010.11:g.97750443C>A NM_001002261.3:c.777C>A 1 -12 1645956 C T NC_000012.12:g.1645956C>T NM_032642.2:c.784C>T 1 -15 62068476 G A NC_000015.10:g.62068476G>A NM_207322.2:c.863G>A 1 -2 206543278 G A NC_000002.12:g.206543278G>A NM_003812.2:c.682G>A 1 -5 129735107 T G NC_000005.10:g.129735107T>G NM_133638.3:c.3470T>G 1 -9 120536454 G A NC_000009.12:g.120536454G>A NM_018249.4:c.580C>T 1 -3 129257816 A G NC_000003.12:g.129257816A>G NM_016128.3:c.827A>G 1 -1 160239921 C A NC_000001.11:g.160239921C>A NM_015726.3:c.499G>T 1 -12 13214648 G C NC_000012.12:g.13214648G>C NM_001423.2:c.431G>C 1 -7 127615062 G C NC_000007.14:g.127615062G>C NM_006193.2:c.154C>G 1 -10 94246152 T C NC_000010.11:g.94246152T>C NM_016341.3:c.2627T>C 1 -19 18163296 G A NC_000019.10:g.18163296G>A NM_005027.2:c.1324G>A 1 -18 2694582 T C NC_000018.10:g.2694582T>C NM_015295.2:c.929T>C 1 -2 71148038 A G NC_000002.12:g.71148038A>G NM_005791.2:c.1597A>G 1 -17 29096879 G A NC_000017.11:g.29096879G>A NM_078471.3:c.4267C>T 1 -7 158652328 G A NC_000007.14:g.158652328G>A NM_017760.5:c.2899C>T 1 -9 97668905 A G NC_000009.12:g.97668905A>G NM_002486.4:c.2076A>G 1 -5 36975895 A G NC_000005.10:g.36975895A>G NM_133433.3:c.988A>G 1 -1 24458929 T C NC_000001.11:g.24458929T>C NM_020448.4:c.815T>C 1 -1 5927718 G A NC_000001.11:g.5927718G>A NM_015102.3:c.1372C>T 1 -7 150857504 G T NC_000007.14:g.150857504G>T NM_001091.2:c.1034G>T 1 -16 4693780 G A NC_000016.10:g.4693780G>A NM_032349.3:c.54G>A 1 -20 1443801 G T NC_000020.11:g.1443801G>T NM_001206736.1:c.1067C>A 1 -15 44675670 G C NC_000015.10:g.44675670G>C NM_001145112.1:c.38C>G 1 -10 68284224 T C NC_000010.11:g.68284224T>C NM_022129.3:c.820A>G 1 -5 141489477 G C NC_000005.10:g.141489477G>C NM_018929.2:c.237G>C 1 -2 158642499 G A NC_000002.12:g.158642499G>A NM_003628.3:c.1709G>A 1 -9 6012720 A G NC_000009.12:g.6012720A>G NM_012416.3:c.2888T>C 1 -1 173909616 C G NC_000001.11:g.173909616C>G NM_000488.3:c.1089G>C 1 -1 234427692 C G NC_000001.11:g.234427692C>G NM_005646.3:c.3135G>C 1 -11 1295721 T G NC_000011.10:g.1295721T>G NM_019009.3:c.107A>C 1 -15 82810121 C T NC_000015.10:g.82810121C>T NM_001080435.1:c.395C>T 1 -X 70238310 C G NC_000023.11:g.70238310C>G NM_001013579.2:c.559C>G 1 -5 77453892 A G NC_000005.10:g.77453892A>G NM_018268.2:c.448T>C 1 -6 31644192 G C NC_000006.12:g.31644192G>C NM_004639.3:c.1468C>G 1 -16 48211010 G A NC_000016.10:g.48211010G>A NM_032583.3:c.1546C>T 1 -2 112309978 A G NC_000002.12:g.112309978A>G NM_198581.2:c.430A>G 1 -2 112324571 A G NC_000002.12:g.112324571A>G NM_198581.2:c.1760A>G 1 -8 94170967 C T NC_000008.11:g.94170967C>T NM_001144663.1:c.802G>A 1 -5 79044430 C G NC_000005.10:g.79044430C>G NM_013391.2:c.868G>C 1 -11 6566370 T C NC_000011.10:g.6566370T>C NM_144666.2:c.11183T>C 1 -5 55108314 A C NC_000005.10:g.55108314A>C NM_006144.3:c.547A>C 1 -4 113355986 G C NC_000004.12:g.113355986G>C NM_001148.4:c.7368G>C 1 -11 64800767 C T NC_000011.10:g.64800767C>T NM_004579.3:c.722G>A 1 -6 142770009 T A NC_000006.12:g.142770009T>A NM_006734.3:c.4730A>T 1 -5 141209982 A G NC_000005.10:g.141209982A>G NM_018932.3:c.1075A>G 1 -3 15644541 C T NC_000003.12:g.15644541C>T NM_001370658.1:c.625C>T 1 -17 31258057 G A NC_000017.11:g.31258057G>A NM_000267.3:c.4111-287G>A 1 -2 151655888 A C NC_000002.12:g.151655888A>C NM_001271208.2:c.6631T>G 1 -20 18525912 A G NC_000020.11:g.18525912A>G NM_006363.6:c.814A>G 1 -9 136197447 T G NC_000009.12:g.136197447T>G NM_014564.3:c.1087A>C 1 -2 73230168 C T NC_000002.12:g.73230168C>T NM_032319.1:c.113G>A 1 -13 42888375 T C NC_000013.11:g.42888375T>C NM_001002264.1:c.1108A>G 1 -4 56469663 C G NC_000004.12:g.56469663C>G NM_006947.3:c.120C>G 1 -17 49798345 G A NC_000017.11:g.49798345G>A NM_007067.4:c.367G>A 1 -12 47077942 C T NC_000012.12:g.47077942C>T NM_181847.4:c.1061G>A 1 -21 44638070 C G NC_000021.9:g.44638070C>G NM_181688.1:c.653C>G 1 -20 10038483 T G NC_000020.11:g.10038483T>G NM_022096.4:c.182T>G 1 -17 58267479 C A NC_000017.11:g.58267479C>A NM_006151.2:c.1824C>A 1 -17 45397952 C G NC_000017.11:g.45397952C>G NM_199282.2:c.816G>C 1 -20 35842685 C T NC_000020.11:g.35842685C>T NM_016436.4:c.196C>T 1 -16 269324 G T NC_000016.10:g.269324G>T NM_183337.1:c.1349C>A 1 -1 210241979 C T NC_000001.11:g.210241979C>T NM_019605.3:c.713C>T 1 -17 7042574 A T NC_000017.11:g.7042574A>T NM_153357.1:c.608T>A 1 -9 15423160 T A NC_000009.12:g.15423160T>A NM_001039697.1:c.281T>A 1 -15 74202255 G C NC_000015.10:g.74202255G>C NM_022369.3:c.13C>G 1 -17 49168861 G T NC_000017.11:g.49168861G>T NM_153446.2:c.1456G>T 1 -9 129868240 C T NC_000009.12:g.129868240C>T NM_006676.6:c.926C>T 1 -19 7622370 C A NC_000019.10:g.7622370C>A NM_020196.2:c.1578G>T 1 -1 35392256 C G NC_000001.11:g.35392256C>G NM_005095.2:c.2632C>G 1 -19 58067830 A G NC_000019.10:g.58067830A>G NM_007134.1:c.1418A>G 1 -16 547527 C T NC_000016.10:g.547527C>T NM_005632.2:c.689C>T 1 -7 21906428 G A NC_000007.14:g.21906428G>A NM_018719.4:c.782C>T 1 -12 77044778 T C NC_000012.12:g.77044778T>C NM_203394.2:c.847A>G 1 -1 8865353 T C NC_000001.11:g.8865353T>C NM_001428.3:c.797A>G 1 -12 132570214 C T NC_000012.12:g.132570214C>T NM_001142641.1:c.980C>T 1 -1 108820578 G T NC_000001.11:g.108820578G>T NM_152763.3:c.2216C>A 1 -12 47789529 G A NC_000012.12:g.47789529G>A NM_015401.3:c.2141C>T 1 -9 21350385 C G NC_000009.12:g.21350385C>G NM_021002.2:c.503G>C 1 -X 118610335 A G NC_000023.11:g.118610335A>G NM_144658.3:c.3013A>G 1 -6 170289712 GC G NC_000006.12:g.170289716del NM_005618.3:c.150del 1 -15 48301386 A G NC_000015.10:g.48301386A>G NM_000338.3:c.3164+4A>G 1 -3 52348969 C T NC_000003.12:g.52348969C>T NM_015512.4:c.2188C>T 1 -20 10639899 C T NC_000020.11:g.10639899C>T NM_000214.2:c.3256G>A 1 -2 9543222 G A NC_000002.12:g.9543222G>A NM_003183.4:c.161C>T 1 -19 19110746 G A NC_000019.10:g.19110746G>A NM_178526.5:c.827G>A 1 -1 48471962 C G NC_000001.11:g.48471962C>G NM_019073.2:c.47G>C 1 -5 128114212 G A NC_000005.10:g.128114212G>A NM_001046.3:c.877G>A 1 -7 44112696 G T NC_000007.14:g.44112696G>T NM_001129.5:c.2356G>T 1 -11 65046348 G C NC_000011.10:g.65046348G>C NM_005468.2:c.1696C>G 1 -17 42021615 C T NC_000017.11:g.42021615C>T NM_001144927.1:c.38C>T 1 -12 123485720 A G NC_000012.12:g.123485720A>G NM_178314.3:c.887T>C 1 -7 77778822 A C NC_000007.14:g.77778822A>C NM_198467.2:c.2195A>C 1 -10 100499579 G A NC_000010.11:g.100499579G>A NM_015490.3:c.1430C>T 1 -19 16865566 C T NC_000019.10:g.16865566C>T NM_015260.2:c.1636C>T 1 -11 63096048 A G NC_000011.10:g.63096048A>G NM_001136506.2:c.1013T>C 1 -18 46086420 G A NC_000018.10:g.46086420G>A NM_001001937.1:c.1251C>T 1 -2 171055109 T G NC_000002.12:g.171055109T>G NM_012290.4:c.613A>C 1 -7 135187033 G A NC_000007.14:g.135187033G>A NM_014149.3:c.2018C>T 1 -17 10695795 T C NC_000017.11:g.10695795T>C NM_004589.2:c.310A>G 1 -2 121367788 C G NC_000002.12:g.121367788C>G NM_015282.2:c.3686G>C 1 -16 66609986 C T NC_000016.10:g.66609986C>T NM_144601.3:c.503C>T 1 -3 194686884 G A NC_000003.12:g.194686884G>A NM_153690.4:c.58G>A 1 -1 171324169 A G NC_000001.11:g.171324169A>G NM_002022.1:c.353A>G 1 -19 55359088 T C NC_000019.10:g.55359088T>C NM_001145402.1:c.1780A>G 1 -12 57471004 C T NC_000012.12:g.57471004C>T NM_005269.2:c.2264C>T 1 -1 18365593 T C NC_000001.11:g.18365593T>C NM_032880.4:c.911T>C 1 -6 76005346 A G NC_000006.12:g.76005346A>G NM_001563.2:c.1076T>C 1 -8 91084834 G A NC_000008.11:g.91084834G>A NM_016023.5:c.848G>A 1 -10 71446400 G A NC_000010.11:g.71446400G>A NM_022124.5:c.145+5G>A 1 -11 2588801 C A NC_000011.10:g.2588801C>A NM_000218.2:c.1340C>A 1 -12 2567572 C T NC_000012.12:g.2567572C>T NM_000719.6:c.1673C>T 2 -9 128222476 C T NC_000009.12:g.128222476C>T NM_004408.2:c.1008C>T 1 -X 111724993 G T NC_000023.11:g.111724993G>T NM_001099922.2:c.1661G>T 1 -13 23331229 T C NC_000013.11:g.23331229T>C NM_014363.5:c.12647A>G 1 -6 64590780 T G NC_000006.12:g.64590780T>G NM_001142800.2:c.5087A>C 1 -21 37625289 A G NC_000021.9:g.37625289A>G NM_002240.5:c.1142T>C 1 -16 89779955 G C NC_000016.10:g.89779955G>C NM_000135.2:c.1629C>G 1 -19 35249008 G A NC_000019.10:g.35249008G>A NM_205834.2:c.130G>A 1 -12 122490539 C T NC_000012.12:g.122490539C>T NM_017612.3:c.346G>A 1 -11 64296965 G A NC_000011.10:g.64296965G>A NM_033310.2:c.277G>A 2 -15 40932351 G A NC_000015.10:g.40932351G>A NM_019074.3:c.754G>A 1 -21 46272582 A G NC_000021.9:g.46272582A>G NM_003906.3:c.2444T>C 1 -9 77228192 C T NC_000009.12:g.77228192C>T NM_033305.2:c.1523C>T 1 -3 139348194 G A NC_000003.12:g.139348194G>A NM_020191.2:c.374G>A 1 -16 58009966 G A NC_000016.10:g.58009966G>A NM_024598.3:c.303G>A 1 -14 102027516 G A NC_000014.9:g.102027516G>A NM_001376.4:c.9020G>A 1 -X 41344350 C T NC_000023.11:g.41344350C>T NM_001356.3:c.976C>T 1 -7 25124041 G A NC_000007.14:g.25124041G>A NM_018947.6:c.79C>T 3 -10 102396726 G C NC_000010.11:g.102396726G>C NM_001077494.3:c.146G>C 2 -1 172553276 C T NC_000001.11:g.172553276C>T NM_014283.3:c.194C>T 1 -20 32435519 C T NC_000020.11:g.32435519C>T NM_015338.5:c.2807C>T 1 -11 47349904 GAGA G NC_000011.10:g.47349907_47349909del NM_000256.3:c.521_523delTCT 2 -9 127661161 ACT A NC_000009.12:g.127661162CT[1] NM_003165.3:c.388_389delCT 1 -15 51576176 A G NC_000015.10:g.51576176A>G NM_001174116.1:c.93T>C 1 -3 129437838 G C NC_000003.12:g.129437838G>C NM_001276270.2:c.217C>G 1 -22 50220869 C T NC_000022.11:g.50220869C>T NM_020461.3:c.3490G>A 2 -16 88434270 G A NC_000016.10:g.88434270G>A NM_001127464.1:c.6716G>A 2 -20 62824440 G A NC_000020.11:g.62824440G>A NM_001853.4:c.520-5G>A 1 -14 23389417 T C NC_000014.9:g.23389417T>C NM_002471.3:c.3954A>G 1 -17 58357806 C G NC_000017.11:g.58357806C>G NM_017763.6:c.1970G>C 1 -20 23049022 C A NC_000020.11:g.23049022C>A NM_000361.2:c.483G>T 1 -17 80368140 A G NC_000017.11:g.80368140A>G NM_001256071.1:c.12152A>G 1 -12 109788550 C CA NC_000012.12:g.109788551dup NM_021625.4:c.2057dupT 1 -8 67161813 CAT C NC_000008.11:g.67161814_67161815del NM_024790.6:c.2527_2528delAT 2 -6 79925034 T C NC_000006.12:g.79925034T>C NM_022726.3:c.289-2A>G 1 -16 10907778 C A NC_000016.10:g.10907778C>A NM_000246.3:c.2286C>A 2 -21 43059272 G A NC_000021.9:g.43059272G>A NM_000071.2:c.1177C>T 1 -18 57551312 T C NC_000018.10:g.57551312T>C NM_000140.4:c.1137+3A>G 1 -16 2072337 C T NC_000016.10:g.2072337C>T NM_000548.3:c.2194C>T 3 -7 117590379 A G NC_000007.14:g.117590379A>G NM_000492.3:c.1706A>G 2 -20 63350612 G A NC_000020.11:g.63350612G>A NM_000744.5:c.799C>T 1 -9 108926548 C T NC_000009.12:g.108926548C>T NM_003640.3:c.441G>A 3 -8 102212897 G T NC_000008.11:g.102212897G>T NM_015713.5:c.790-8C>A 2 -2 178651699 C T NC_000002.12:g.178651699C>T NM_133378.4:c.32128G>A 1 -3 37008894 A G NC_000003.12:g.37008894A>G NM_000249.3:c.534A>G 4 -17 61686079 G A NC_000017.11:g.61686079G>A NM_032043.2:c.2662C>T 8 -7 117535257 T C NC_000007.14:g.117535257T>C NM_000492.4:c.589T>C 1 -19 50416622 C T NC_000019.10:g.50416622C>T NM_002691.2:c.2966C>T 1 -12 132638096 C T NC_000012.12:g.132638096C>T NM_006231.4:c.5596G>A 1 -19 11111585 C T NC_000019.10:g.11111585C>T NM_000527.5:c.1132C>T 2 -4 78470102 T C NC_000004.12:g.78470102T>C NM_025074.7:c.7371+11T>C 1 -10 71778352 C G NC_000010.11:g.71778352C>G NM_022124.6:c.5187+44C>G 2 -12 21604811 A C NC_000012.12:g.21604811A>C NM_021957.3:c.-219T>G 1 -4 169393800 T C NC_000004.12:g.169393800T>C NM_012224.2:c.*710A>G 1 -6 152344164 A C NC_000006.12:g.152344164A>C NM_033071.3:c.11929T>G 3 -17 7221969 TTCTG T NC_000017.11:g.7221973_7221976del NM_000018.4:c.644_647del 1 -7 128845086 C T NC_000007.14:g.128845086C>T NM_001458.4:c.3621C>T 5 -X 32365169 C T NC_000023.11:g.32365169C>T NM_004006.2:c.4876G>A 4 -2 29193286 C T NC_000002.12:g.29193286C>T NM_004304.3:c.4801G>A 1 -8 89953246 A G NC_000008.11:g.89953246A>G NM_002485.5:c.1843T>C 2 -14 95115790 T C NC_000014.9:g.95115790T>C NM_177438.3:c.1784A>G 1 -5 240381 C A NC_000005.10:g.240381C>A NM_004168.4:c.1456C>A 1 -13 32319185 C G NC_000013.11:g.32319185C>G NM_000059.3:c.176C>G 2 -2 178601535 CTT C NC_000002.12:g.178601537_178601538del NM_001256850.1:c.50537_50538delAA 1 -2 214781054 T C NC_000002.12:g.214781054T>C NM_000465.2:c.820A>G 1 -13 32376727 C G NC_000013.11:g.32376727C>G NM_000059.3:c.8690C>G 3 -2 47445563 T TA NC_000002.12:g.47445564dup NM_000251.1:c.1293dupA 1 -2 73519760 C A NC_000002.12:g.73519760C>A NM_015120.4:c.9543-15C>A 1 -2 73519994 T TAC NC_000002.12:g.73519995_73519996dup NM_015120.4:c.9763_9764dupAC 1 -5 78885674 G A NC_000005.10:g.78885674G>A NM_000046.4:c.1052C>T 1 -7 117540155 G A NC_000007.14:g.117540155G>A NM_000492.3:c.925G>A 2 -1 198706748 A G NC_000001.11:g.198706748A>G NM_002838.3:c.694A>G 1 -9 131515444 CCT C NC_000009.12:g.131515445_131515446del NM_001077365.2:c.1195_1196del 1 -11 108247004 CT C NC_000011.10:g.108247006del NM_000051.3:c.944del 1 -12 32878474 C A NC_000012.12:g.32878474C>A NM_004572.4:c.406G>T 1 -19 50401832 T G NC_000019.10:g.50401832T>G NM_002691.2:c.371T>G 1 -8 144512557 GA G NC_000008.11:g.144512558del NM_004260.4:c.2889del 1 -2 47799318 T G NC_000002.12:g.47799318T>G NM_000179.2:c.1335T>G 1 -18 51067092 C T NC_000018.10:g.51067092C>T NM_005359.5:c.1213C>T 2 -16 2054324 T A NC_000016.10:g.2054324T>A NM_000548.5:c.365T>A 1 -18 46545308 C T NC_000018.10:g.46545308C>T NM_144612.6:c.3619+9G>A 3 -3 10073363 G A NC_000003.12:g.10073363G>A NM_033084.4:c.2715+1G>A 2 -1 40091984 G A NC_000001.11:g.40091984G>A NM_000310.3:c.362+61C>T 2 -19 48304065 C T NC_000019.10:g.48304065C>T NM_144577.3:c.630G>A 1 -9 95482182 C T NC_000009.12:g.95482182C>T NM_000264.3:c.606G>A 1 -12 39341575 C T NC_000012.12:g.39341575C>T NM_017641.3:c.1812G>A 2 -4 657483 C T NC_000004.12:g.657483C>T NM_000283.3:c.1390C>T 2 -19 50403490 C A NC_000019.10:g.50403490C>A NM_002691.2:c.1138-3C>A 1 -5 132588817 A G NC_000005.10:g.132588817A>G NM_005732.3:c.1182A>G 1 -6 56619308 C T NC_000006.12:g.56619308C>T NM_001723.5:c.4726G>A 1 -16 88842720 G C NC_000016.10:g.88842720G>C NM_000512.4:c.230C>G 2 -1 20645675 G A NC_000001.11:g.20645675G>A NM_032409.2:c.1075G>A 2 -11 31794664 G A NC_000011.10:g.31794664G>A NM_000280.4:c.648C>T 4 -12 123697081 T C NC_000012.12:g.123697081T>C NM_024809.4:c.1394-6T>C 2 -14 76500014 T C NC_000014.9:g.76500014T>C NM_004452.3:c.1448T>C 2 -16 50732832 A G NC_000016.10:g.50732832A>G NM_022162.1:c.*1013A>G 2 -16 53601225 G T NC_000016.10:g.53601225G>T NM_015272.2:c.*851C>A 3 -17 75763963 G A NC_000017.11:g.75763963G>A NM_000154.1:c.289C>T 1 -20 33412667 G A NC_000020.11:g.33412667G>A NM_003098.2:c.817C>T 2 -4 79903476 C T NC_000004.12:g.79903476C>T NM_058172.5:c.*3953G>A 1 -6 7584732 T C NC_000006.12:g.7584732T>C NM_004415.2:c.7470T>C 2 -1 237648602 T G NC_000001.11:g.237648602T>G NM_001035.3:c.7501T>G 2 -13 32316451 G A NC_000013.11:g.32316451G>A NM_000059.3:c.-10G>A 1 -6 7569191 C T NC_000006.12:g.7569191C>T NM_004415.2:c.1425C>T 2 -1 45332192 C T NC_000001.11:g.45332192C>T NM_001128425.1:c.907G>A 1 -7 116759381 G T NC_000007.14:g.116759381G>T NM_001127500.1:c.2309G>T 2 -2 214769228 C T NC_000002.12:g.214769228C>T NM_000465.4:c.1395+4G>A 1 -X 108695336 C T NC_000023.11:g.108695336C>T NM_033380.3:c.4891C>T 1 -7 87443759 G A NC_000007.14:g.87443759G>A NM_000443.3:c.1134C>T 1 -7 55205297 G A NC_000007.14:g.55205297G>A NM_005228.3:c.3313G>A 1 -2 188984776 T C NC_000002.12:g.188984776T>C NM_000090.3:c.96T>C 1 -X 154357504 G A NC_000023.11:g.154357504G>A NM_001110556.1:c.4875C>T 1 -9 12704526 G C NC_000009.12:g.12704526G>C NM_000550.3:c.1082G>C 1 -X 38301338 C T NC_000023.11:g.38301338C>T NM_000328.2:c.968G>A 2 -10 98422394 G C NC_000010.11:g.98422394G>C NM_000195.5:c.1718C>G 2 -17 75522027 C T NC_000017.11:g.75522027C>T NM_207346.3:c.946C>T 1 -14 23433665 C T NC_000014.9:g.23433665C>T NM_000257.4:c.68G>A 2 -2 233760930 A G NC_000002.12:g.233760930A>G NM_000463.3:c.643A>G 2 -18 51058145 G A NC_000018.10:g.51058145G>A NM_005359.6:c.688G>A 1 -22 49907841 G A NC_000022.11:g.49907841G>A NM_024105.3:c.872C>T 1 -7 116699246 T C NC_000007.14:g.116699246T>C NM_001127500.1:c.162T>C 1 -20 4699856 G A NC_000020.11:g.4699856G>A NM_000311.5:c.636G>A 1 -11 68416313 C T NC_000011.10:g.68416313C>T NM_002335.4:c.2828-15C>T 1 -11 78478493 AAAG A NC_000011.10:g.78478496_78478498del NM_024678.6:c.922-21_922-19delCTT 1 -11 67490106 G T NC_000011.10:g.67490106G>T NM_003977.2:c.537G>T 1 -13 32340798 C CTA NC_000013.11:g.32340800_32340801dup NM_000059.3:c.6445_6446dupAT 1 -17 65557855 T C NC_000017.11:g.65557855T>C NM_004655.3:c.766A>G 1 -22 20991769 G A NC_000022.11:g.20991769G>A NM_006767.3:c.933G>A 1 -17 43094545 T C NC_000017.11:g.43094545T>C NM_007294.4:c.986A>G 1 -17 43093249 T C NC_000017.11:g.43093249T>C NM_007294.3:c.2282A>G 1 -4 127921938 C G NC_000004.12:g.127921938C>G NM_152778.4:c.1024G>C 1 -16 2054305 T G NC_000016.10:g.2054305T>G NM_000548.3:c.346T>G 1 -5 132385477 G A NC_000005.10:g.132385477G>A NM_003060.3:c.802G>A 1 -16 89281453 G A NC_000016.10:g.89281453G>A NM_013275.6:c.5089C>T 1 -X 17728193 A G NC_000023.11:g.17728193A>G NM_198270.2:c.4024A>G 1 -1 193142038 G A NC_000001.11:g.193142038G>A NM_024529.5:c.701G>A 1 -5 74720499 A C NC_000005.10:g.74720499A>C NM_000521.4:c.1489A>C 1 -16 2086821 T G NC_000016.10:g.2086821T>G NM_000548.3:c.4939T>G 1 -15 89274245 GA G NC_000015.10:g.89274247del NM_001113378.2:c.1055del 1 -22 23803342 C T NC_000022.11:g.23803342C>T NM_003073.3:c.548C>T 1 -12 110281629 G A NC_000012.12:g.110281629G>A NM_170665.4:c.-161G>A 1 -16 67435979 C T NC_000016.10:g.67435979C>T NM_000196.4:c.501C>T 2 -6 52024709 C T NC_000006.12:g.52024709C>T NM_138694.4:c.5101G>A 1 -19 38721574 C T NC_000019.10:g.38721574C>T NM_004924.4:c.1328C>T 1 -19 50409172 A G NC_000019.10:g.50409172A>G NM_002691.2:c.1943A>G 1 -11 71444151 A G NC_000011.10:g.71444151A>G NM_001360.2:c.163T>C 1 -9 108929758 CT C NC_000009.12:g.108929760del NM_003640.4:c.303+10del 1 -6 144187411 CAGGTGCG C NC_000006.12:g.144187412_144187418del NM_003764.4:c.785_791del 1 -17 31259095 G C NC_000017.11:g.31259095G>C NM_000267.3:c.4333G>C 1 -X 154030810 T TA NC_000023.11:g.154030811dup NM_001110792.2:c.1053dup 1 -13 51974987 T C NC_000013.11:g.51974987T>C NM_000053.4:c.233A>G 1 -15 89776908 AGGGGCAGG A NC_000015.10:g.89776911_89776918del NM_001039958.1:c.554_561delGGCAGGGG 1 -7 117504365 T C NC_000007.14:g.117504365T>C NM_000492.4:c.164+2T>C 3 -16 53649101 T C NC_000016.10:g.53649101T>C NM_015272.5:c.2167A>G 1 -3 186785958 CGAAAT C NC_000003.12:g.186785960AAATG[1] NM_001967.4:c.431_435del 1 -5 90629418 G T NC_000005.10:g.90629418G>T NM_032119.3:c.1718G>T 4 -7 5977588 C T NC_000007.14:g.5977588C>T NM_000535.7:c.2445G>A 2 -13 110166257 G A NC_000013.11:g.110166257G>A NM_001845.6:c.3996C>T 1 -19 48297312 G A NC_000019.10:g.48297312G>A NM_144577.3:c.1677C>T 2 -16 28900625 G A NC_000016.10:g.28900625G>A NM_173201.4:c.1809G>A 1 -12 51913244 C T NC_000012.12:g.51913244C>T NM_000020.3:c.207C>T 2 -14 95107692 A G NC_000014.9:g.95107692A>G NM_177438.3:c.2720T>C 2 -2 178609740 G A NC_000002.12:g.178609740G>A NM_003319.4:c.24488C>T 1 -19 11041430 G A NC_000019.10:g.11041430G>A NM_001128849.1:c.4390G>A 2 -7 128848826 C T NC_000007.14:g.128848826C>T NM_001458.4:c.4771C>T 4 -2 1943100 C T NC_000002.12:g.1943100C>T NM_015025.2:c.387G>A 1 -2 165095539 A C NC_000002.12:g.165095539A>C NM_006922.3:c.4403T>G 1 -1 7984986 A G NC_000001.11:g.7984986A>G NM_007262.4:c.502A>G 1 -9 99149272 G A NC_000009.12:g.99149272G>A NM_004612.3:c.1479G>A 1 -1 181715381 C A NC_000001.11:g.181715381C>A NM_000721.3:c.1215C>A 2 -3 49530951 A G NC_000003.12:g.49530951A>G NM_004393.6:c.440A>G 1 -11 17395689 C T NC_000011.10:g.17395689C>T NM_000352.6:c.4228G>A 1 -15 48412654 G A NC_000015.10:g.48412654G>A NM_000138.4:c.8141C>T 1 -16 2076528 C A NC_000016.10:g.2076528C>A NM_000548.5:c.2780C>A 3 -9 16419194 T C NC_000009.12:g.16419194T>C NM_017637.5:c.3095A>G 1 -8 11708487 G A NC_000008.11:g.11708487G>A NM_002052.3:c.175G>A 1 -15 20534995 C A NC_000015.10:g.20534995C>A NM_001145004.1:c.1517G>T 1 -7 116795952 T C NC_000007.14:g.116795952T>C NM_001127500.1:c.4055T>C 1 -16 10682083 G A NC_000016.10:g.10682083G>A NM_144674.1:c.773C>T 1 -17 42103632 T C NC_000017.11:g.42103632T>C NM_024119.2:c.1730A>G 1 -2 238427110 G A NC_000002.12:g.238427110G>A NM_001040445.1:c.40G>A 1 -20 32435682 A G NC_000020.11:g.32435682A>G NM_015338.5:c.2970A>G 1 -19 46755906 C G NC_000019.10:g.46755906C>G NM_024301.4:c.456C>G 6 -4 990302 C G NC_000004.12:g.990302C>G NM_213613.2:c.637G>C 1 -3 39130990 A T NC_000003.12:g.39130990A>T NM_001366900.1:c.2459-2A>T 1 -11 112094890 T G NC_000011.10:g.112094890T>G NM_003002.3:c.400T>G 1 -10 132785714 G GC NC_000010.11:g.132785721dup NM_177400.3:c.234dup 2 -12 6592031 C T NC_000012.12:g.6592031C>T NM_001273.2:c.2975G>A 1 -17 43074362 C T NC_000017.11:g.43074362C>T NM_007294.4:c.4644G>A 1 -17 43124077 C A NC_000017.11:g.43124077C>A NM_007294.3:c.20G>T 1 -2 178547242 C T NC_000002.12:g.178547242C>T NM_001267550.2:c.94283G>A 2 -17 43091755 T G NC_000017.11:g.43091755T>G NM_007294.3:c.3776A>C 6 -X 154380001 TTACTC T NC_000023.11:g.154380005_154380009del NM_000117.2:c.251_255del5 1 -11 19182687 CTTG C NC_000011.10:g.19182689TGT[1] NM_003476.4:c.565_567delCAA 1 -19 55401545 C T NC_000019.10:g.55401545C>T NM_014501.2:c.560G>A 1 -17 34156387 A G NC_000017.11:g.34156387A>G NM_001094.4:c.146T>C 1 +chrom pos ref alt g_hgvs c_hgvs scv_count submit_date +12 49052426 T C NC_000012.12:g.49052426T>C NM_003482.3:c.1259-2A>G 1 2019-01-29 +6 18121581 A G NC_000006.12:g.18121581A>G NM_198586.2:c.1026T>C 1 2019-03-14 +17 1727203 G T NC_000017.11:g.1727203G>T NM_001163809.1:c.2244G>T 1 2019-03-14 +1 169617125 G A NC_000001.11:g.169617125G>A NM_003005.3:c.384C>T 1 2019-03-14 +14 23413837 A G NC_000014.9:g.23413837A>G NM_000257.4:c.5712T>C 1 2024-12-31 +19 58477813 T C NC_000019.10:g.58477813T>C NM_017908.2:c.519T>C 1 2024-12-31 +6 160718283 G T NC_000006.12:g.160718283G>T NM_000301.5:c.788-11G>T 1 2024-12-20 +12 88114444 G A NC_000012.12:g.88114444G>A NM_025114.3:c.2028C>T 1 2024-10-02 +9 26913948 C T NC_000009.12:g.26913948C>T NM_001031689.2:c.1487-1G>A 2 2020-10-09 +2 174748293 G A NC_000002.12:g.174748293G>A NM_001039523.2:c.1318-38C>T 1 2016-04-28 +11 103316440 T C NC_000011.10:g.103316440T>C NM_001080463.1:c.11671-105T>C 1 2019-04-12 +12 204619 T C NC_000012.12:g.204619T>C NM_003044.4:c.294A>G 1 2019-03-14 +6 18120533 C T NC_000006.12:g.18120533C>T NM_198586.2:c.*886G>A 1 2020-02-20 +9 104829030 C G NC_000009.12:g.104829030C>G NM_005502.3:c.2001G>C 1 2024-04-24 +7 100806531 G A NC_000007.14:g.100806531G>A NM_004444.4:c.2373C>T 1 2024-04-24 +8 47799229 C T NC_000008.11:g.47799229C>T NM_006904.6:c.10278G>A 1 2024-04-24 +20 45298285 G A NC_000020.11:g.45298285G>A NM_003833.4:c.1311C>T 1 2024-10-02 +17 61400362 C CGCG NC_000017.11:g.61400365GGC[6] NM_005994.3:c.201_203dupGGC 1 2024-10-02 +12 91056162 G A NC_000012.12:g.91056162G>A NM_007035.3:c.120C>T 1 2024-10-02 +1 75157080 G C NC_000001.11:g.75157080G>C NM_001001933.1:c.994+4G>C 1 2024-10-02 +17 41571523 A T NC_000017.11:g.41571523A>T NM_000226.3:c.470T>A 1 2012-07-31 +17 28534776 CT C NC_000017.11:g.28534777del NM_003593.2:c.1206delT 1 2019-01-29 +7 44254555 C T NC_000007.14:g.44254555C>T NM_172079.2:c.328G>A 1 2017-07-06 +12 47985760 G A NC_000012.12:g.47985760G>A NM_001844.4:c.1648C>T 2 2019-01-29 +14 45151463 C G NC_000014.9:g.45151463C>G NM_020937.2:c.985C>G 2 2024-11-06 +11 134332098 A G NC_000011.10:g.134332098A>G NM_138342.3:c.37A>G 1 2019-03-14 +7 18727596 C A NC_000007.14:g.18727596C>A NM_058176.2:c.1739C>A 1 2019-03-14 +5 83520025 TG T NC_000005.10:g.83520026del NM_004385.4:c.1720del 1 2019-10-15 +14 91338559 G A NC_000014.9:g.91338559G>A NM_001080414.4:c.821C>T 1 2021-07-27 +16 89810954 G A NC_000016.10:g.89810954G>A NM_000135.4:c.401C>T 1 2022-02-09 +21 33341082 A G NC_000021.9:g.33341082A>G NM_000629.2:c.284A>G 1 2024-04-19 +11 15972962 G GCTCT NC_000011.10:g.15972963CT[4] NM_033326.3:c.2270_2273dup 1 2021-11-03 +9 120957354 T C NC_000009.12:g.120957354T>C NM_001735.2:c.4693A>G 1 2024-04-19 +9 35090528 C T NC_000009.12:g.35090528C>T NM_032634.3:c.2792G>A 1 2023-06-07 +2 55672920 G A NC_000002.12:g.55672920G>A NM_033109.3:c.839C>T 1 2025-04-14 +1 210804148 A G NC_000001.11:g.210804148A>G NM_172362.3:c.1481T>C 1 2022-05-25 +11 65107640 GCCA G NC_000011.10:g.65107641CCA[1] NM_013265.4:c.419_421del 1 2022-07-29 +4 186620278 A G NC_000004.12:g.186620278A>G NM_005245.3:c.6308T>C 1 2022-08-10 +1 182585426 CA C NC_000001.11:g.182585429del NM_021133.4:c.1380delT 1 2022-08-22 +16 69714978 T G NC_000016.10:g.69714978T>G NM_000903.2:c.403A>C 1 2024-07-05 +18 58535174 A T NC_000018.10:g.58535174A>T NM_052947.3:c.5013T>A 1 2024-04-24 +3 142556503 G A NC_000003.12:g.142556503G>A NM_001184.3:c.1958C>T 1 2024-04-24 +16 88438529 T A NC_000016.10:g.88438529T>A NM_001127464.1:c.10975T>A 1 2024-04-24 +19 55015157 G A NC_000019.10:g.55015157G>A NM_001083899.1:c.788C>T 1 2024-04-19 +20 33037629 C A NC_000020.11:g.33037629C>A NM_174897.2:c.737C>A 1 2024-04-19 +1 6593447 C T NC_000001.11:g.6593447C>T NM_014851.2:c.1712G>A 1 2024-04-19 +6 35018031 C T NC_000006.12:g.35018031C>T NM_015245.2:c.1982C>T 1 2024-04-19 +15 75349179 G A NC_000015.10:g.75349179G>A NM_024608.2:c.274G>A 1 2024-04-20 +X 3310503 G A NC_000023.11:g.3310503G>A NM_015419.3:c.7700C>T 1 2024-04-20 +14 24299995 G A NC_000014.9:g.24299995G>A NM_174913.1:c.41G>A 1 2025-06-17 +8 55102927 C A NC_000008.11:g.55102927C>A NM_052898.1:c.439C>A 1 2025-04-14 +16 68357106 C T NC_000016.10:g.68357106C>T NM_019023.2:c.1961C>T 1 2024-04-20 +1 13263101 G A NC_000001.11:g.13263101G>A NM_001013407.1:c.1421G>A 1 2024-04-20 +5 90684063 C T NC_000005.10:g.90684063C>T NM_032119.3:c.6142C>T 1 2024-04-19 +6 112071450 G T NC_000006.12:g.112071450G>T NM_016262.4:c.1390C>A 1 2024-04-20 +2 176123955 T G NC_000002.12:g.176123955T>G NM_014213.3:c.839T>G 1 2024-04-19 +19 54453627 G A NC_000019.10:g.54453627G>A NM_052925.2:c.397G>A 1 2024-04-19 +8 11315059 C A NC_000008.11:g.11315059C>A NM_015458.3:c.1108C>A 1 2024-04-20 +17 80182751 A G NC_000017.11:g.80182751A>G NM_024110.3:c.310A>G 1 2024-04-19 +X 100914343 C T NC_000023.11:g.100914343C>T NM_212559.2:c.1345G>A 1 2024-04-20 +17 74773638 G A NC_000017.11:g.74773638G>A NM_015654.3:c.128C>T 1 2025-04-14 +12 57233749 G C NC_000012.12:g.57233749G>C NM_005412.5:c.1124G>C 1 2024-04-20 +4 8270047 G T NC_000004.12:g.8270047G>T NM_053044.3:c.79G>T 1 2024-04-19 +9 130476943 G A NC_000009.12:g.130476943G>A NM_000050.4:c.670G>A 1 2024-04-19 +22 22548425 G A NC_000022.11:g.22548425G>A NM_206953.1:c.1172C>T 1 2024-04-20 +15 41892983 C T NC_000015.10:g.41892983C>T NM_016642.2:c.190G>A 1 2024-04-20 +13 61411964 A G NC_000013.11:g.61411964A>G NM_022843.3:c.2135T>C 1 2024-04-20 +2 206306318 A C NC_000002.12:g.206306318A>C NM_020923.1:c.1790A>C 1 2024-04-20 +10 6220797 G A NC_000010.11:g.6220797G>A NM_004566.3:c.763G>A 1 2024-04-20 +1 235214010 C G NC_000001.11:g.235214010C>G NM_016374.5:c.1600G>C 1 2025-06-17 +12 100623617 A G NC_000012.12:g.100623617A>G NM_174942.1:c.812A>G 1 2024-04-19 +15 82819483 T C NC_000015.10:g.82819483T>C NM_001080435.1:c.1265T>C 1 2024-04-20 +17 19560263 C T NC_000017.11:g.19560263C>T NM_018242.2:c.997C>T 1 2025-06-17 +11 6478129 C T NC_000011.10:g.6478129C>T NM_001242854.1:c.706G>A 1 2025-04-14 +8 141218451 C T NC_000008.11:g.141218451C>T NM_001080431.1:c.1036G>A 1 2024-04-20 +11 108509988 G T NC_000011.10:g.108509988G>T NM_015065.2:c.5519C>A 1 2024-12-31 +1 160841715 A T NC_000001.11:g.160841715A>T NM_001166663.1:c.248T>A 1 2024-04-19 +4 271740 G T NC_000004.12:g.271740G>T NM_001137608.1:c.1117C>A 1 2024-04-20 +16 12052093 A C NC_000016.10:g.12052093A>C NM_032167.3:c.995A>C 1 2024-04-20 +7 99400352 C A NC_000007.14:g.99400352C>A NM_014891.6:c.286G>T 1 2024-12-31 +5 72900991 A G NC_000005.10:g.72900991A>G NM_002270.3:c.2432A>G 1 2024-04-20 +15 89582863 A G NC_000015.10:g.89582863A>G NM_152259.3:c.832A>G 1 2025-04-14 +12 56128404 G A NC_000012.12:g.56128404G>A NM_001184796.1:c.85G>A 1 2024-04-19 +9 109036279 C T NC_000009.12:g.109036279C>T NM_032012.3:c.2326G>A 1 2024-04-20 +3 142507999 C A NC_000003.12:g.142507999C>A NM_001184.3:c.4963G>T 1 2024-04-24 +15 74133728 C T NC_000015.10:g.74133728C>T NM_001130136.1:c.974C>T 1 2025-06-17 +1 31184010 C T NC_000001.11:g.31184010C>T NM_024522.2:c.278G>A 1 2025-04-14 +17 21300634 G C NC_000017.11:g.21300634G>C NM_145109.2:c.255G>C 1 2024-04-19 +15 44652210 C G NC_000015.10:g.44652210C>G NM_025137.3:c.926G>C 1 2024-04-20 +15 41852891 T C NC_000015.10:g.41852891T>C NM_016642.2:c.10175A>G 1 2024-04-20 +15 55439471 CTTTCCTTTATCCTTCAACCATTCTGGGTTCTTTTCTTCTTCTTTTAAATCGCAAAGTTCAGCTATGTCAGTATTCATTGCTCTTCGTGCCTCAGCTTGTTTGTGTAGCCA C NC_000015.10:g.55439472_55439581del NM_130810.3:c.784_893del 1 2023-04-04 +22 49787450 G C NC_000022.11:g.49787450G>C NM_014577.1:c.2404C>G 1 2024-04-19 +3 62243827 A G NC_000003.12:g.62243827A>G NM_002841.3:c.2396A>G 1 2024-04-20 +3 13570887 C T NC_000003.12:g.13570887C>T NM_001165035.1:c.532C>T 1 2024-04-19 +4 7734323 T C NC_000004.12:g.7734323T>C NM_020777.2:c.3260T>C 1 2025-06-17 +9 8504386 G A NC_000009.12:g.8504386G>A NM_002839.3:c.1697C>T 1 2024-04-20 +9 34098454 G C NC_000009.12:g.34098454G>C NM_015397.3:c.665C>G 1 2024-04-19 +1 109713720 A G NC_000001.11:g.109713720A>G NM_000851.3:c.319A>G 1 2025-06-17 +1 181798550 C T NC_000001.11:g.181798550C>T NM_000721.4:c.6529C>T 1 2023-08-06 +2 73452323 G T NC_000002.12:g.73452323G>T NM_015120.4:c.5799G>T 1 2023-08-23 +11 73308870 C T NC_000011.10:g.73308870C>T NM_014786.3:c.232C>T 1 2024-04-19 +5 149622004 C T NC_000005.10:g.149622004C>T NM_001001669.2:c.1277C>T 1 2024-04-19 +11 56376167 A C NC_000011.10:g.56376167A>C NM_001005204.1:c.544A>C 1 2024-04-20 +14 69769187 C T NC_000014.9:g.69769187C>T NM_001039465.1:c.302C>T 1 2024-04-20 +1 74572384 A G NC_000001.11:g.74572384A>G NM_001002912.4:c.3326T>C 1 2024-04-19 +1 216325333 GAAAT G NC_000001.11:g.216325335_216325338del NM_206933.4:c.1111_1114del 1 2023-12-07 +12 49349489 C T NC_000012.12:g.49349489C>T NM_024902.2:c.617C>T 1 2024-04-19 +17 79083095 A G NC_000017.11:g.79083095A>G NM_001042573.1:c.1114A>G 1 2024-04-19 +10 102066453 G A NC_000010.11:g.102066453G>A NM_024747.5:c.979G>A 1 2024-04-19 +8 22120801 G T NC_000008.11:g.22120801G>T NM_005144.4:c.2525C>A 1 2024-04-19 +2 96328115 T C NC_000002.12:g.96328115T>C NM_178495.5:c.1508T>C 1 2024-04-19 +22 49907905 G C NC_000022.11:g.49907905G>C NM_024105.3:c.808C>G 1 2024-04-19 +11 10482151 G A NC_000011.10:g.10482151G>A NM_001025389.1:c.515G>A 1 2024-04-19 +17 68250242 A G NC_000017.11:g.68250242A>G NM_016627.4:c.55A>G 1 2024-04-19 +8 67211609 T C NC_000008.11:g.67211609T>C NM_006421.4:c.4693A>G 1 2024-04-19 +6 138255522 G A NC_000006.12:g.138255522G>A NM_020340.4:c.857G>A 1 2024-04-19 +3 57277847 A C NC_000003.12:g.57277847A>C NM_001142733.2:c.1505T>G 1 2024-04-19 +6 116512226 C T NC_000006.12:g.116512226C>T NM_153711.2:c.530C>T 1 2024-04-19 +3 14666849 T C NC_000003.12:g.14666849T>C NM_016474.4:c.626T>C 1 2024-04-19 +2 121410897 G A NC_000002.12:g.121410897G>A NM_015282.2:c.2393C>T 1 2024-04-19 +8 39160949 T C NC_000008.11:g.39160949T>C NM_145004.5:c.578T>C 1 2024-04-19 +X 103500500 C A NC_000023.11:g.103500500C>A NM_080879.2:c.257G>T 1 2024-04-20 +21 41441779 G A NC_000021.9:g.41441779G>A NM_001144925.1:c.794G>A 1 2024-04-20 +8 10610085 A G NC_000008.11:g.10610085A>G NM_178857.5:c.4013T>C 1 2024-04-20 +9 136459796 C T NC_000009.12:g.136459796C>T NM_014866.1:c.5152G>A 1 2024-04-20 +17 44322816 T C NC_000017.11:g.44322816T>C NM_001143780.1:c.182A>G 1 2024-04-20 +15 42682398 G A NC_000015.10:g.42682398G>A NM_020759.2:c.2360G>A 1 2024-04-20 +15 53710903 G A NC_000015.10:g.53710903G>A NM_182758.2:c.908C>T 1 2024-04-20 +17 58512886 G C NC_000017.11:g.58512886G>C NM_004687.4:c.59C>G 1 2024-04-20 +4 168913987 C A NC_000004.12:g.168913987C>A NM_016081.3:c.2632C>A 1 2024-04-24 +3 129531017 C T NC_000003.12:g.129531017C>T NM_000539.3:c.503C>T 1 2024-06-26 +15 55430728 A G NC_000015.10:g.55430728A>G NM_130810.3:c.1205T>C 1 2024-07-05 +16 3022936 C A NC_000016.10:g.3022936C>A NM_017885.2:c.344G>T 1 2024-07-05 +1 248180791 C G NC_000001.11:g.248180791C>G NM_001004688.1:c.806C>G 1 2024-07-05 +X 153804122 G T NC_000023.11:g.153804122G>T NM_032512.2:c.1541C>A 1 2024-07-05 +12 18399739 T C NC_000012.12:g.18399739T>C NM_004570.4:c.2084T>C 1 2024-07-05 +2 60948050 C G NC_000002.12:g.60948050C>G NM_144709.2:c.1444G>C 1 2024-07-05 +6 108894486 G A NC_000006.12:g.108894486G>A NM_032131.4:c.691G>A 1 2024-07-05 +12 55958544 G A NC_000012.12:g.55958544G>A NM_001200054.1:c.398C>T 2 2024-10-02 +7 31879087 G A NC_000007.14:g.31879087G>A NM_001191058.3:c.514C>T 1 2024-10-02 +3 184164802 G C NC_000003.12:g.184164802G>C NM_004423.3:c.470G>C 1 2024-10-30 +11 96384300 C A NC_000011.10:g.96384300C>A NM_024725.3:c.448G>T 1 2024-12-25 +16 58037604 G A NC_000016.10:g.58037604G>A NM_002428.2:c.295G>A 1 2024-12-31 +19 35777684 T A NC_000019.10:g.35777684T>A NM_052948.3:c.46T>A 1 2024-12-31 +19 55247012 T C NC_000019.10:g.55247012T>C NM_014931.3:c.92A>G 1 2024-12-31 +20 42756531 T G NC_000020.11:g.42756531T>G NM_133170.3:c.790A>C 1 2024-12-31 +11 36592970 T A NC_000011.10:g.36592970T>A NM_000536.3:c.1199A>T 1 2024-12-31 +6 24850698 G A NC_000006.12:g.24850698G>A NM_014722.2:c.697C>T 1 2024-12-31 +12 56206575 C G NC_000012.12:g.56206575C>G NM_005785.3:c.826G>C 1 2024-12-31 +20 32436977 G A NC_000020.11:g.32436977G>A NM_015338.5:c.4265G>A 1 2025-04-14 +17 75100334 A C NC_000017.11:g.75100334A>C NM_004695.2:c.671A>C 1 2024-12-31 +22 32102176 C T NC_000022.11:g.32102176C>T NM_000343.3:c.1604C>T 1 2024-12-31 +9 127890854 G A NC_000009.12:g.127890854G>A NM_013443.3:c.487C>T 1 2024-12-31 +16 67155407 C A NC_000016.10:g.67155407C>A NM_003789.3:c.399G>T 1 2024-12-31 +12 49128881 T A NC_000012.12:g.49128881T>A NM_006082.2:c.433A>T 1 2024-12-31 +3 52540444 G T NC_000003.12:g.52540444G>T NM_001124767.1:c.172G>T 1 2024-12-31 +3 142383308 T C NC_000003.12:g.142383308T>C NM_019001.3:c.2608A>G 1 2024-12-31 +19 44027472 C G NC_000019.10:g.44027472C>G NM_001129996.1:c.244C>G 1 2024-12-31 +19 57607076 G T NC_000019.10:g.57607076G>T NM_020880.3:c.1551G>T 1 2024-12-31 +4 90313038 G A NC_000004.12:g.90313038G>A NM_001145065.1:c.1500G>A 1 2024-12-31 +8 120243957 C A NC_000008.11:g.120243957C>A NM_021110.1:c.2428C>A 1 2024-12-31 +18 45949552 G A NC_000018.10:g.45949552G>A NM_020964.2:c.1429C>T 1 2024-12-31 +19 681422 C A NC_000019.10:g.681422C>A NM_005860.2:c.595C>A 1 2024-12-31 +11 77245411 G A NC_000011.10:g.77245411G>A NM_182833.1:c.956C>T 1 2024-12-31 +2 132417370 C A NC_000002.12:g.132417370C>A NM_001508.2:c.328C>A 1 2024-12-31 +15 84840166 T C NC_000015.10:g.84840166T>C NM_020778.4:c.1493T>C 1 2024-12-31 +5 138386283 C G NC_000005.10:g.138386283C>G NM_016604.3:c.1042C>G 1 2024-12-31 +6 152362278 GCC TCT NC_000006.12:g.152362278_152362280delinsTCT NM_182961.2:c.10189_10191delinsAGA 1 2024-12-31 +9 98736602 G A NC_000009.12:g.98736602G>A NM_173551.5:c.2533C>T 2 2024-12-20 +1 158619238 A G NC_000001.11:g.158619238A>G NM_003126.2:c.6514T>C 1 2025-02-12 +2 175992383 A AT NC_000002.12:g.175992390dup NM_030650.3:c.104dup 1 2025-03-18 +8 9140970 T C NC_000008.11:g.9140970T>C NM_001201329.1:c.682A>G 1 2025-04-14 +12 9202583 G T NC_000012.12:g.9202583G>T NM_002864.2:c.369C>A 1 2025-04-14 +14 30622351 G T NC_000014.9:g.30622351G>T NM_016106.2:c.13G>T 1 2025-04-14 +1 112616814 A T NC_000001.11:g.112616814A>T NM_017744.4:c.287T>A 1 2025-04-14 +17 28747919 G A NC_000017.11:g.28747919G>A NM_004295.3:c.272G>A 1 2025-04-14 +9 135945093 T C NC_000009.12:g.135945093T>C NM_016172.2:c.811A>G 1 2025-04-14 +19 4446132 C A NC_000019.10:g.4446132C>A NM_025241.2:c.1117G>T 1 2025-04-14 +8 134509620 T C NC_000008.11:g.134509620T>C NM_020863.3:c.3491A>G 1 2025-04-14 +19 11832874 G A NC_000019.10:g.11832874G>A NM_152357.2:c.1698G>A 1 2025-04-14 +6 41931526 G C NC_000006.12:g.41931526G>C NM_004053.3:c.835G>C 1 2025-04-14 +2 31197294 C G NC_000002.12:g.31197294C>G NM_001145122.1:c.830G>C 1 2025-04-14 +1 246642029 A G NC_000001.11:g.246642029A>G NM_152609.2:c.929A>G 1 2025-04-14 +19 1271431 C T NC_000019.10:g.1271431C>T NM_001280.2:c.313C>T 1 2025-04-14 +6 43450618 C T NC_000006.12:g.43450618C>T NM_023932.2:c.1073G>A 1 2025-04-14 +9 111371634 G A NC_000009.12:g.111371634G>A NM_001080398.1:c.5258C>T 1 2025-04-14 +3 57246217 G A NC_000003.12:g.57246217G>A NM_012096.2:c.616G>A 1 2025-04-14 +20 62064808 CC TT NC_000020.11:g.62064808_62064809delinsTT NM_003185.4:c.1002_1003delinsAA 1 2025-05-02 +19 14160619 G A NC_000019.10:g.14160619G>A NM_014921.5:c.1588C>T 1 2025-06-03 +12 121652739 C A NC_000012.12:g.121652739C>A NM_173855.4:c.718G>T 1 2025-06-17 +22 25768734 C T NC_000022.11:g.25768734C>T NM_032608.5:c.818C>T 1 2025-06-17 +1 45614319 A G NC_000001.11:g.45614319A>G NM_002482.3:c.1619A>G 1 2025-06-17 +3 46996789 C G NC_000003.12:g.46996789C>G NM_015175.1:c.2512C>G 1 2025-06-17 +12 55027086 A G NC_000012.12:g.55027086A>G NM_021191.2:c.647A>G 1 2025-06-17 +20 25455747 C T NC_000020.11:g.25455747C>T NM_025176.4:c.3883G>A 1 2025-06-17 +3 52488599 G A NC_000003.12:g.52488599G>A NM_007184.3:c.3107G>A 1 2025-06-17 +9 73165206 A G NC_000009.12:g.73165206A>G NM_000700.1:c.703A>G 1 2025-06-17 +3 13351884 C T NC_000003.12:g.13351884C>T NM_024923.2:c.2830G>A 1 2025-06-17 +5 103009862 G A NC_000005.10:g.103009862G>A NM_000919.3:c.2327G>A 1 2025-06-17 +13 61413167 C G NC_000013.11:g.61413167C>G NM_022843.3:c.932G>C 1 2025-06-17 +1 206931538 C T NC_000001.11:g.206931538C>T NM_002644.3:c.2158G>A 1 2025-06-17 +5 69393178 T A NC_000005.10:g.69393178T>A NM_133339.1:c.1246T>A 1 2025-06-17 +17 7042611 A C NC_000017.11:g.7042611A>C NM_153357.1:c.571T>G 1 2025-06-17 +22 39430020 G A NC_000022.11:g.39430020G>A NM_006116.2:c.1313G>A 1 2025-06-17 +11 862695 T G NC_000011.10:g.862695T>G NM_001025237.1:c.209T>G 1 2025-06-17 +8 94526317 G A NC_000008.11:g.94526317G>A NM_015496.4:c.1927C>T 1 2025-06-17 +1 224433832 C A NC_000001.11:g.224433832C>A NM_025160.6:c.274G>T 1 2025-06-17 +6 33271635 A G NC_000006.12:g.33271635A>G NM_022553.4:c.41T>C 1 2025-06-17 +14 96837800 C T NC_000014.9:g.96837800C>T NM_003384.2:c.199C>T 1 2025-06-17 +13 45989076 C A NC_000013.11:g.45989076C>A NM_015070.3:c.966G>T 1 2025-06-17 +4 185462677 G T NC_000004.12:g.185462677G>T NM_152775.3:c.203C>A 1 2025-06-17 +14 100734633 C A NC_000014.9:g.100734633C>A NM_003836.5:c.889C>A 1 2025-06-17 +19 14518313 G A NC_000019.10:g.14518313G>A NM_006145.1:c.37C>T 1 2025-06-17 +6 101686271 C T NC_000006.12:g.101686271C>T NM_021956.4:c.869C>T 1 2025-06-17 +X 115306584 C T NC_000023.11:g.115306584C>T NM_016383.3:c.722C>T 1 2025-06-17 +12 12330385 G A NC_000012.12:g.12330385G>A NM_018050.2:c.938C>T 1 2025-06-17 +11 70487251 C T NC_000011.10:g.70487251C>T NM_012309.3:c.3042G>A 1 2019-04-12 +5 141179196 G A NC_000005.10:g.141179196G>A NM_019120.3:c.1162G>A 1 2024-04-20 +2 172485203 A G NC_000002.12:g.172485203A>G NM_000210.2:c.1793A>G 1 2025-04-14 +10 60200178 A G NC_000010.11:g.60200178A>G NM_020987.3:c.1442T>C 1 2025-08-06 +7 152180973 C A NC_000007.14:g.152180973C>A NM_170606.3:c.6887G>T 1 2025-08-19 +9 12708022 T G NC_000009.12:g.12708022T>G NM_000550.2:c.1287T>G 1 2025-09-30 +9 13247753 C T NC_000009.12:g.13247753C>T NM_003829.3:c.65G>A 1 2025-09-30 +X 88753922 A C NC_000023.11:g.88753922A>C NM_033048.5:c.508A>C 1 2025-09-30 +17 12666245 T C NC_000017.11:g.12666245T>C NM_001146312.3:c.55+2T>C 1 2025-09-28 +11 94306550 C G NC_000011.10:g.94306550C>G NM_001199206.1:c.176C>G 1 2025-09-30 +9 7013947 G A NC_000009.12:g.7013947G>A NM_015061.3:c.2128G>A 1 2025-09-30 +12 25227389 T C NC_000012.12:g.25227389T>C NM_004985.3:c.135A>G 1 2025-09-30 +5 38484829 A G NC_000005.10:g.38484829A>G NM_002310.5:c.2537T>C 1 2025-09-30 +22 50504860 C T NC_000022.11:g.50504860C>T NM_033200.2:c.1379G>A 1 2025-09-30 +5 32058038 C T NC_000005.10:g.32058038C>T NM_178140.2:c.2135C>T 1 2025-09-30 +17 8268571 G A NC_000017.11:g.8268571G>A NM_012393.2:c.3421G>A 1 2025-09-30 +5 116447424 G C NC_000005.10:g.116447424G>C NM_020796.3:c.2282C>G 1 2025-09-30 +15 42689953 C T NC_000015.10:g.42689953C>T NM_020759.2:c.8375C>T 1 2025-09-30 +1 211354450 G A NC_000001.11:g.211354450G>A NM_001033910.2:c.259G>A 1 2025-09-30 +16 1414687 G A NC_000016.10:g.1414687G>A NM_001193388.1:c.5C>T 1 2025-09-30 +9 93288843 C A NC_000009.12:g.93288843C>A NM_006648.3:c.4089C>A 1 2025-09-30 +16 88489118 C T NC_000016.10:g.88489118C>T NM_153813.2:c.233C>T 1 2025-09-30 +4 112620024 G A NC_000004.12:g.112620024G>A NM_018392.4:c.329C>T 1 2025-09-30 +2 27225095 C G NC_000002.12:g.27225095C>G NM_004341.3:c.1472C>G 1 2025-09-30 +16 30353222 C A NC_000016.10:g.30353222C>A NM_006110.2:c.874G>T 1 2025-09-30 +19 5789662 G A NC_000019.10:g.5789662G>A NM_020175.2:c.445C>T 1 2025-09-30 +6 87701522 C T NC_000006.12:g.87701522C>T NM_018064.3:c.163G>A 1 2025-09-30 +10 113553125 T C NC_000010.11:g.113553125T>C NM_004132.3:c.4T>C 1 2025-09-30 +1 19666024 C T NC_000001.11:g.19666024C>T NM_000871.1:c.271C>T 1 2025-09-30 +5 37299692 A C NC_000005.10:g.37299692A>C NM_153485.3:c.3562-124T>G 3 2025-10-17 +8 100709223 T A NC_000008.11:g.100709223T>A NM_002568.4:c.1246A>T 5 2025-10-17 +4 168373708 C A NC_000004.12:g.168373708C>A NM_001012967.3:c.4734G>T 4 2025-10-17 +4 44689840 C G NC_000004.12:g.44689840C>G NM_021927.3:c.1203-3C>G 1 2025-10-17 +5 149520392 G C NC_000005.10:g.149520392G>C NM_001892.6:c.358-4C>G 1 2025-10-17 +6 18132069 G A NC_000006.12:g.18132069G>A NM_000367.5:c.625+64C>T 2 2025-10-17 +6 30921588 G T NC_000006.12:g.30921588G>T NM_020442.6:c.1633-1G>T 1 2025-10-17 +9 136677313 G A NC_000009.12:g.136677313G>A NM_006412.4:c.316+110C>T 1 2025-10-17 +9 35703557 C T NC_000009.12:g.35703557C>T NM_006289.4:c.6474+3G>A 1 2025-10-17 +10 12230965 A T NC_000010.11:g.12230965A>T NM_006023.3:c.458A>T 1 2025-10-17 +12 124150010 C T NC_000012.12:g.124150010C>T NM_001347902.2:c.-37+219C>T 5 2025-10-17 +12 49005366 T C NC_000012.12:g.49005366T>C NM_002733.5:c.251-2A>G 5 2025-10-17 +16 683609 G C NC_000016.10:g.683609G>C NM_001005920.4:c.323-11C>G 1 2025-10-17 +1 33299368 G T NC_000001.11:g.33299368G>T NM_152493.3:c.*322G>T 2 2025-10-17 +17 41817834 G T NC_000017.11:g.41817834G>T NM_021939.4:c.392-255G>T 1 2025-10-17 +17 57839936 C A NC_000017.11:g.57839936C>A NM_016070.4:c.421-1G>T 1 2025-10-17 +17 67948310 A T NC_000017.11:g.67948310A>T NM_182641.4:c.7926+4A>T 1 2025-10-17 +19 16509639 C T NC_000019.10:g.16509639C>T NM_032207.4:c.1290C>T 1 2025-10-17 +22 19806756 A C NC_000022.11:g.19806756A>C NM_053004.3:c.419T>G 1 2025-10-17 +X 18897184 C A NC_000023.11:g.18897184C>A NM_000292.3:c.3261G>T 2 2025-10-17 +2 218432184 G T NC_000002.12:g.218432184G>T NM_007127.3:c.1341+1G>T 1 2025-10-17 +2 230178185 C A NC_000002.12:g.230178185C>A NM_080424.4:c.1419G>T 1 2025-10-17 +14 75959236 T C NC_000014.9:g.75959236T>C NM_003239.5:c.1190A>G 1 2022-09-04 +8 61518028 GT G NC_000008.11:g.61518029del NM_004318.4:c.1992+3del 1 2025-10-09 +X 152651571 G A NC_000023.11:g.152651571G>A NM_018558.4:c.947G>A 1 2025-10-17 +2 96610815 T C NC_000002.12:g.96610815T>C NM_001115016.3:c.1230A>G 1 2025-10-17 +6 42965144 T G NC_000006.12:g.42965144T>G NM_000287.3:c.2597A>C 1 2025-12-03 +1 179575780 C T NC_000001.11:g.179575780C>T NM_014625.2:c.85G>A 1 2025-06-25 +2 162278295 T C NC_000002.12:g.162278295T>C NM_022168.4:c.1675A>G 1 2025-12-12 +14 21406909 G A NC_000014.9:g.21406909G>A NM_001170629.1:c.2854C>T 2 2020-10-29 +5 122423543 G A NC_000005.10:g.122423543G>A NM_005460.2:c.806G>A 1 2020-02-20 +14 21500986 G A NC_000014.9:g.21500986G>A NM_019852.3:c.1043C>T 1 2025-12-19 +16 788957 G T NC_000016.10:g.788957G>T NM_022092.2:c.118G>T 1 2025-12-19 +12 55247873 A G NC_000012.12:g.55247873A>G NM_001005490.1:c.586A>G 1 2025-12-19 +16 16169807 G A NC_000016.10:g.16169807G>A NM_001171.5:c.2834C>T 1 2025-12-19 +12 43746182 C T NC_000012.12:g.43746182C>T NM_001098615.1:c.1127G>A 1 2025-12-19 +3 141278381 G A NC_000003.12:g.141278381G>A NM_152282.3:c.119G>A 1 2025-12-19 +5 171242707 A G NC_000005.10:g.171242707A>G NM_022897.3:c.2663A>G 1 2025-12-19 +12 132730136 C T NC_000012.12:g.132730136C>T NM_015114.1:c.2026G>A 1 2025-12-19 +10 27022584 T A NC_000010.11:g.27022584T>A NM_014915.2:c.4189A>T 1 2025-12-19 +10 97357165 C A NC_000010.11:g.97357165C>A NM_015179.3:c.3823G>T 1 2025-12-19 +16 81999587 A G NC_000016.10:g.81999587A>G NM_145168.2:c.706T>C 1 2025-12-19 +12 113428068 T G NC_000012.12:g.113428068T>G NM_138432.2:c.86T>G 1 2025-12-19 +8 72069130 T C NC_000008.11:g.72069130T>C NM_007332.2:c.337A>G 1 2025-12-19 +1 181796706 C T NC_000001.11:g.181796706C>T NM_001205293.1:c.6247C>T 1 2025-12-19 +3 44642712 C A NC_000003.12:g.44642712C>A NM_006991.3:c.1582C>A 1 2025-12-19 +X 32645094 TTTAC T NC_000023.11:g.32645097_32645100del NM_004006.2:c.1015_1018delGTAA 1 2025-12-19 +5 110761217 G A NC_000005.10:g.110761217G>A NM_138773.1:c.692G>A 1 2025-12-19 +20 38323945 G T NC_000020.11:g.38323945G>T NM_001725.2:c.844G>T 1 2025-12-19 +3 49642517 G C NC_000003.12:g.49642517G>C NM_003458.3:c.883G>C 1 2025-12-19 +9 127980062 A C NC_000009.12:g.127980062A>C NM_001035254.2:c.76T>G 1 2025-12-19 +1 152356069 C A NC_000001.11:g.152356069C>A NM_001014342.2:c.1717G>T 1 2025-12-19 +X 154903911 T C NC_000023.11:g.154903911T>C NM_000132.3:c.5993A>G 1 2025-12-18 +1 94007716 C G NC_000001.11:g.94007716C>G NM_000350.3:c.5923G>C 1 2024-06-26 +9 128611827 C T NC_000009.12:g.128611827C>T NM_001130438.2:c.4887C>T 1 2018-03-26 +1 179557025 A G NC_000001.11:g.179557025A>G NM_014625.4:c.738+2T>C 2 2023-10-18 +10 62813812 G T NC_000010.11:g.62813812G>T NM_000399.3:c.826C>A 2 2021-05-26 +16 84066532 G A NC_000016.10:g.84066532G>A NM_003791.3:c.2310C>T 1 2024-10-02 +5 128303075 C T NC_000005.10:g.128303075C>T NM_001999.4:c.5815G>A 1 2026-02-03 +11 68347874 G A NC_000011.10:g.68347874G>A NM_002335.2:c.119G>A 1 2021-10-30 +1 5864446 A C NC_000001.11:g.5864446A>C NM_015102.4:c.3888T>G 1 2024-10-02 +17 58357891 C T NC_000017.11:g.58357891C>T NM_017763.5:c.1885G>A 1 2025-04-21 +19 39826924 C T NC_000019.10:g.39826924C>T NM_004714.2:c.1159G>A 1 2024-10-02 +16 89100695 TG T NC_000016.10:g.89100697del NM_001127214.4:c.16del 1 2023-12-07 +X 153506912 C T NC_000023.11:g.153506912C>T NM_001711.4:c.759C>T 1 2025-12-19 +1 219915504 T C NC_000001.11:g.219915504T>C NM_018713.2:c.1403A>G 1 2024-12-31 +4 102582925 G A NC_000004.12:g.102582925G>A NM_003998.3:c.895G>A 1 2019-01-29 +1 228166132 A G NC_000001.11:g.228166132A>G NM_001010867.3:c.316A>G 1 2024-11-10 +7 93102975 A G NC_000007.14:g.93102975A>G NM_017654.3:c.3123T>C 1 2025-09-30 +19 11237475 T G NC_000019.10:g.11237475T>G NM_020812.2:c.2054A>C 1 2025-06-17 +2 199272549 A C NC_000002.12:g.199272549A>C NM_015265.3:c.1864T>G 1 2024-12-31 +12 8838393 G A NC_000012.12:g.8838393G>A NM_144670.3:c.913G>A 1 2025-12-19 +5 1216640 G A NC_000005.10:g.1216640G>A NM_001003841.2:c.970G>A 1 2022-12-07 +15 90231215 TAGAG T NC_000015.10:g.90231216AG[1] NM_006384.4:c.347-6_347-3del 1 2025-12-23 +X 77681612 G A NC_000023.11:g.77681612G>A NM_000489.6:c.3644C>T 1 2025-10-28 +12 49052626 C G NC_000012.12:g.49052626C>G NM_003482.3:c.1196G>C 2 2023-10-19 +14 75980851 G T NC_000014.9:g.75980851G>T NM_003239.4:c.43C>A 1 2023-12-21 +7 92002287 G A NC_000007.14:g.92002287G>A NM_005751.4:c.2370G>A 2 2018-08-15 +14 24163425 G T NC_000014.9:g.24163425G>T NM_006084.4:c.412G>T 1 2024-04-19 +2 110637978 G A NC_000002.12:g.110637978G>A NM_004336.3:c.3244C>T 1 2024-04-24 +20 25077869 G A NC_000020.11:g.25077869G>A NM_014588.5:c.628-4C>T 1 2020-02-20 +6 348269 C A NC_000006.12:g.348269C>A NM_001286555.3:c.430C>A 2 2025-10-17 +6 53078963 T G NC_000006.12:g.53078963T>G NM_033480.3:c.407+65T>G 1 2025-10-17 +8 53227256 T A NC_000008.11:g.53227256T>A NM_000912.5:c.*2041A>T 1 2025-10-17 +16 67304317 G C NC_000016.10:g.67304317G>C NM_001100915.3:c.451+104C>G 1 2025-10-17 +16 70523883 G T NC_000016.10:g.70523883G>T NM_012426.5:c.-116G>T 1 2025-10-17 +17 32654567 G C NC_000017.11:g.32654567G>C NM_015194.3:c.2400C>G 1 2025-10-17 +2 9849417 A G NC_000002.12:g.9849417A>G NM_005680.3:c.162A>G 4 2025-10-17 +19 11105436 C T NC_000019.10:g.11105436C>T NM_000527.4:c.530C>T 13 2016-11-23 +2 178601305 A T NC_000002.12:g.178601305A>T NM_001267550.2:c.55692T>A 1 2025-04-09 +17 10635772 G A NC_000017.11:g.10635772G>A NM_002470.2:c.3938C>T 1 2014-06-27 +2 47799900 G A NC_000002.12:g.47799900G>A NM_000179.3:c.1917G>A 2 2025-02-06 +13 20189227 C T NC_000013.11:g.20189227C>T NM_004004.6:c.355G>A 1 2022-02-09 +2 166051777 ACCATTATAAT A NC_000002.12:g.166051778_166051787del NM_001165963.1:c.896_905delATTATAATGG 1 2015-03-07 +22 23825317 G T NC_000022.11:g.23825317G>T NM_003073.3:c.888G>T 3 2019-04-24 +2 178782879 G T NC_000002.12:g.178782879G>T NM_001256850.1:c.3027C>A 1 2017-07-13 +16 68810199 C T NC_000016.10:g.68810199C>T NM_004360.3:c.690C>T 1 2024-04-24 +6 33444529 C T NC_000006.12:g.33444529C>T NM_006772.2:c.3494C>T 1 2016-01-22 +2 240783093 T C NC_000002.12:g.240783093T>C NM_004321.6:c.815A>G 1 2019-01-29 +2 47806792 G GCT NC_000002.12:g.47806793_47806794dup NM_000179.3:c.4016_4017dup 2 2023-12-07 +19 10986481 G C NC_000019.10:g.10986481G>C NM_003072.5:c.648G>C 1 2022-01-12 +2 26454728 A G NC_000002.12:g.26454728A>G NM_145038.5:c.2001A>G 2 2025-10-17 +2 21001971 G A NC_000002.12:g.21001971G>A NM_000384.2:c.13451C>T 9 2016-04-28 +17 45974480 A G NC_000017.11:g.45974480A>G NM_005910.5:c.307+9A>G 3 2017-08-17 +17 3658102 C T NC_000017.11:g.3658102C>T NM_001031681.2:c.779C>T 2 2016-04-28 +9 108889340 A T NC_000009.12:g.108889340A>T NM_003640.5:c.3214T>A 2 2021-07-07 +2 227688165 C T NC_000002.12:g.227688165C>T NM_025243.4:c.1314+1G>A 1 2024-12-20 +14 87945682 A G NC_000014.9:g.87945682A>G NM_000153.3:c.1541T>C 3 2021-05-26 +1 236900008 C T NC_000001.11:g.236900008C>T NM_000254.2:c.*2364C>T 1 2020-02-20 +12 114683409 C T NC_000012.12:g.114683409C>T NM_005996.3:c.-209G>A 1 2020-02-20 +13 113119302 A C NC_000013.11:g.113119302A>C NM_000131.4:c.*294A>C 1 2020-02-20 +14 67747845 G A NC_000014.9:g.67747845G>A NM_015346.3:c.*591C>T 1 2020-02-20 +21 34789493 T C NC_000021.9:g.34789493T>C NM_001754.4:c.*2642A>G 1 2020-02-20 +3 184372478 C T NC_000003.12:g.184372478C>T NM_000460.4:c.*35G>A 1 2022-02-21 +5 157252763 A C NC_000005.10:g.157252763A>C NM_005546.3:c.*85A>C 1 2020-02-20 +6 35510849 C G NC_000006.12:g.35510849C>G NM_003322.3:c.499+12G>C 2 2020-02-20 +7 117559525 G C NC_000007.14:g.117559525G>C NM_000492.3:c.1454G>C 5 2020-02-20 +8 95269135 G C NC_000008.11:g.95269135G>C NM_177965.3:c.55C>G 3 2020-02-20 +9 99151408 T G NC_000009.12:g.99151408T>G NM_004612.2:c.*2103T>G 1 2020-02-20 +17 50168470 T TG NC_000017.11:g.50168476dup NM_000023.2:c.488dupG 1 2025-06-25 +11 77190113 C T NC_000011.10:g.77190113C>T NM_000260.3:c.3724C>T 2 2019-01-29 +12 32877900 C T NC_000012.12:g.32877900C>T NM_004572.3:c.980G>A 3 2019-01-29 +13 32376656 T C NC_000013.11:g.32376656T>C NM_000059.3:c.8633-14T>C 2 2018-03-26 +14 23389057 T TG NC_000014.9:g.23389061dup NM_002471.4:c.3979-3dup 1 2022-12-13 +10 87864555 A T NC_000010.11:g.87864555A>T NM_000314.6:c.79+7A>T 1 2020-05-19 +3 38597914 G A NC_000003.12:g.38597914G>A NM_000335.5:c.2077C>T 1 2025-12-09 +12 132665424 GGCC G NC_000012.12:g.132665426CCG[1] NM_006231.2:c.2343_2345delGGC 3 2019-01-29 +13 32333094 G T NC_000013.11:g.32333094G>T NM_000059.4:c.1616G>T 1 2023-03-24 +7 94420627 C T NC_000007.14:g.94420627C>T NM_000089.3:c.2274C>T 1 2024-04-24 +12 98534225 G A NC_000012.12:g.98534225G>A NM_003276.2:c.1968G>A 2 2019-04-24 +12 55697502 GGAGCAATA G NC_000012.12:g.55697506_55697513del NM_002206.3:c.1446_1453del 1 2025-08-19 +17 61857100 T G NC_000017.11:g.61857100T>G NM_032043.2:c.337A>C 1 2024-04-24 +12 132632680 C T NC_000012.12:g.132632680C>T NM_006231.3:c.6120G>A 1 2019-10-16 +16 1204158 G A NC_000016.10:g.1204158G>A NM_021098.2:c.2151G>A 2 2019-09-25 +19 11058791 C T NC_000019.10:g.11058791C>T NM_001128849.1:c.4633C>T 1 2024-12-31 +11 71435745 AC A NC_000011.10:g.71435748del NM_001360.3:c.1057delG 1 2025-03-14 +2 43889733 C CA NC_000002.12:g.43889734dup NM_133259.3:c.4128dupT 1 2025-06-25 +2 237365858 G A NC_000002.12:g.237365858G>A NM_004369.3:c.5678C>T 1 2024-04-19 +5 71626744 A AC NC_000005.10:g.71626750dup NM_022132.4:c.735dupC 1 2026-02-26 +16 2497068 A G NC_000016.10:g.2497068A>G NM_001199107.2:c.920A>G 1 2025-10-17 +X 129560596 G A NC_000023.11:g.129560596G>A NM_000276.4:c.769G>A 3 2022-12-13 +17 37710592 C T NC_000017.11:g.37710592C>T NM_000458.4:c.1117G>A 2 2022-12-13 +1 77926885 G A NC_000001.11:g.77926885G>A NM_144573.4:c.857G>A 1 2022-12-13 +5 138934039 G A NC_000005.10:g.138934039G>A NM_001903.2:c.2671G>A 1 2024-12-31 +7 124870978 C G NC_000007.14:g.124870978C>G NM_015450.2:c.188G>C 2 2024-07-05 +7 128845159 G A NC_000007.14:g.128845159G>A NM_001458.5:c.3694G>A 1 2024-09-22 +12 132632363 G A NC_000012.12:g.132632363G>A NM_006231.2:c.6282C>T 1 2025-09-30 +X 19357714 A G NC_000023.11:g.19357714A>G NM_000284.3:c.894A>G 1 2020-02-20 +20 4899545 C T NC_000020.11:g.4899545C>T NM_005116.5:c.482+10G>A 1 2019-03-14 +3 49421520 C T NC_000003.12:g.49421520C>T NM_000481.4:c.311G>A 1 2022-01-11 +17 31235992 A G NC_000017.11:g.31235992A>G NM_000267.3:c.3945A>G 1 2024-05-11 +9 95458111 G C NC_000009.12:g.95458111G>C NM_000264.3:c.3070C>G 1 2024-12-31 +1 53213737 T C NC_000001.11:g.53213737T>C NM_000098.2:c.*142T>C 1 2020-02-20 +11 88337721 G A NC_000011.10:g.88337721G>A NM_001814.4:c.-49C>T 2 2020-02-20 +17 44372394 G C NC_000017.11:g.44372394G>C NM_000419.3:c.3090C>G 1 2020-02-20 +4 79905758 A C NC_000004.12:g.79905758A>C NM_058172.5:c.*1671T>G 1 2020-02-20 +6 131892369 C G NC_000006.12:g.131892369C>G NM_006208.2:c.*1858C>G 2 2020-02-20 +16 15704058 G A NC_000016.10:g.15704058G>A NM_002474.2:c.5852C>T 1 2024-04-24 +2 189575194 C T NC_000002.12:g.189575194C>T NM_014585.5:c.238G>A 1 2020-11-17 +11 6392116 TG T NC_000011.10:g.6392119del NM_000543.4:c.1054_1054delG 1 2021-01-10 +5 112838115 T G NC_000005.10:g.112838115T>G NM_000038.5:c.2521T>G 1 2024-07-05 +1 237784046 G A NC_000001.11:g.237784046G>A NM_001035.2:c.12334G>A 2 2025-04-14 +2 73519880 A G NC_000002.12:g.73519880A>G NM_015120.4:c.9648A>G 1 2024-12-31 +16 3256396 C T NC_000016.10:g.3256396C>T NM_000243.3:c.192G>A 4 2022-12-13 +18 31536331 A G NC_000018.10:g.31536331A>G NM_001943.5:c.1553A>G 1 2025-04-29 +21 43056842 T C NC_000021.9:g.43056842T>C NM_000071.2:c.1513A>G 2 2021-10-31 +9 4118062 C A NC_000009.12:g.4118062C>A NM_152629.3:c.951G>T 1 2023-07-05 +19 7528975 G A NC_000019.10:g.7528975G>A NM_020533.2:c.1134+5G>A 1 2023-05-17 +13 48362951 A G NC_000013.11:g.48362951A>G NM_000321.2:c.855A>G 1 2025-06-17 +5 141577497 C T NC_000005.10:g.141577497C>T NM_005219.4:c.1258G>A 2 2023-10-19 +14 95106091 G C NC_000014.9:g.95106091G>C NM_177438.2:c.2937C>G 1 2024-04-24 +X 25013001 G C NC_000023.11:g.25013001G>C NM_139058.3:c.994C>G 1 2022-12-13 +13 32340722 G C NC_000013.11:g.32340722G>C NM_000059.3:c.6367G>C 1 2024-07-05 +8 143923283 C T NC_000008.11:g.143923283C>T NM_000445.3:c.6727G>A 1 2024-04-20 +12 12718070 A G NC_000012.12:g.12718070A>G NM_004064.3:c.231A>G 1 2024-12-31 +16 56872385 C T NC_000016.10:g.56872385C>T NM_000339.2:c.887C>T 1 2022-05-16 +6 7579796 G A NC_000006.12:g.7579796G>A NM_004415.2:c.3606G>A 1 2024-04-24 +7 116699516 T A NC_000007.14:g.116699516T>A NM_001127500.1:c.432T>A 1 2024-04-24 +17 31181775 T A NC_000017.11:g.31181775T>A NM_000267.3:c.720T>A 1 2024-05-11 +6 33438512 A G NC_000006.12:g.33438512A>G NM_006772.2:c.1480A>G 1 2024-04-24 +21 43072091 C A NC_000021.9:g.43072091C>A NM_000071.2:c.103G>T 2 2024-07-05 +17 61686104 TT CA NC_000017.11:g.61686104_61686105delinsCA NM_032043.2:c.2636_2637delAAinsTG 1 2024-04-24 +5 1409135 AG A NC_000005.10:g.1409139del NM_001044.5:c.1399-11del 1 2025-12-23 +3 158652217 G GA NC_000003.12:g.158652223dup NM_024996.5:c.817dupA 1 2026-02-26 +1 99881666 G T NC_000001.11:g.99881666G>T NM_000642.3:c.2283G>T 1 2023-10-18 +1 237500732 G A NC_000001.11:g.237500732G>A NM_001035.2:c.2225G>A 1 2024-11-20 +17 75949713 C A NC_000017.11:g.75949713C>A NM_004035.7:c.1478+5G>T 1 2024-11-11 +14 64056161 C G NC_000014.9:g.64056161C>G NM_182914.2:c.9962C>G 1 2025-08-19 +15 89317479 G GAA NC_000015.10:g.89317483_89317484dup NM_002693.3:c.3538_3539dup 1 2023-12-07 +16 2072919 T C NC_000016.10:g.2072919T>C NM_000548.3:c.2291T>C 1 2024-04-24 +15 90815186 A C NC_000015.10:g.90815186A>C NM_000057.2:c.4161A>C 1 2024-04-24 +10 90920220 AG A NC_000010.11:g.90920223del NM_014391.3:c.155delC 1 2024-06-29 +7 21687217 G A NC_000007.14:g.21687217G>A NM_001277115.1:c.5740G>A 1 2025-09-30 +8 144512970 G T NC_000008.11:g.144512970G>T NM_004260.3:c.2632C>A 1 2025-06-17 +1 201091672 T C NC_000001.11:g.201091672T>C NM_000069.3:c.662A>G 1 2026-01-30 +11 108244765 T G NC_000011.10:g.108244765T>G NM_000051.3:c.663-23T>G 1 2024-04-19 +22 20992235 G A NC_000022.11:g.20992235G>A NM_006767.3:c.1015G>A 1 2024-05-11 +22 20993681 G A NC_000022.11:g.20993681G>A NM_006767.3:c.1280G>A 1 2025-09-30 +7 142749501 T A NC_000007.14:g.142749501T>A NM_002769.4:c.17T>A 1 2024-07-05 +7 116771634 A C NC_000007.14:g.116771634A>C NM_001127500.1:c.2921A>C 1 2024-12-31 +9 95101825 T A NC_000009.12:g.95101825T>A NM_000136.2:c.1559A>T 1 2024-12-31 +5 177398151 CGCCACCCTAT C NC_000005.10:g.177398154_177398163del NM_003052.5:c.1788_1797del 1 2024-12-20 +5 37157794 C A NC_000005.10:g.37157794C>A NM_023073.3:c.7833G>T 1 2024-12-20 +1 16044521 G T NC_000001.11:g.16044521G>T NM_000085.5:c.29G>T 1 2024-12-20 +17 44074228 A G NC_000017.11:g.44074228A>G NM_138387.3:c.287A>G 1 2025-09-30 +10 102599456 C T NC_000010.11:g.102599456C>T NM_016169.3:c.934C>T 1 2025-04-14 +21 45504528 CA C NC_000021.9:g.45504529del NM_001379500.1:c.2841del 1 2025-04-21 +5 179113858 T C NC_000005.10:g.179113858T>C NM_014244.4:c.*9A>G 1 2025-07-01 +22 42627380 G A NC_000022.11:g.42627380G>A NM_000398.7:c.557C>T 1 2025-08-19 +19 55166062 C A NC_000019.10:g.55166062C>A NM_001256714.1:c.228G>T 1 2025-09-30 +21 44910760 A AGTGG NC_000021.9:g.44910762_44910765dup NM_000211.5:c.19_22dup 1 2025-10-10 +18 70188108 C A NC_000018.10:g.70188108C>A NM_173630.4:c.1305G>T 1 2025-10-17 +2 29160279 G A NC_000002.12:g.29160279G>A NM_024692.6:c.1400-54G>A 1 2025-10-17 +7 148809370 G A NC_000007.14:g.148809370G>A NM_004456.4:c.2050C>T 4 2014-09-11 +16 53637799 T C NC_000016.10:g.53637799T>C NM_015272.4:c.3116A>G 1 2020-02-13 +16 2081754 C T NC_000016.10:g.2081754C>T NM_000548.3:c.3770C>T 7 2012-07-15 +3 37040185 G C NC_000003.12:g.37040185G>C NM_000249.3:c.1559-1G>C 4 2019-06-21 +13 102858387 G A NC_000013.11:g.102858387G>A NM_001204425.2:c.2003G>A 1 2025-08-18 +9 114406564 G C NC_000009.12:g.114406564G>C NM_001083885.2:c.878C>G 1 2021-08-17 +8 27469905 C A NC_000008.11:g.27469905C>A NM_000742.3:c.150G>T 1 2018-03-26 +22 20990400 C T NC_000022.11:g.20990400C>T NM_006767.3:c.666C>T 3 2018-03-26 +20 63694428 G A NC_000020.11:g.63694428G>A NM_001283009.2:c.3049G>A 1 2024-12-31 +11 68908328 G A NC_000011.10:g.68908328G>A NM_002180.2:c.440G>A 3 2020-04-07 +2 178561403 A C NC_000002.12:g.178561403A>C NM_003319.4:c.57534T>G 1 2024-12-31 +7 47877528 T C NC_000007.14:g.47877528T>C NM_138295.3:c.3624A>G 1 2024-10-02 +7 151001579 C G NC_000007.14:g.151001579C>G NM_000603.4:c.1464C>G 1 2020-01-29 +17 61684007 A G NC_000017.11:g.61684007A>G NM_032043.3:c.3039T>C 1 2025-04-29 +X 119851588 T C NC_000023.11:g.119851588T>C NM_080632.2:c.277A>G 1 2024-04-24 +10 119676582 G T NC_000010.11:g.119676582G>T NM_004281.3:c.1028G>T 1 2025-11-12 +1 11949788 G A NC_000001.11:g.11949788G>A NM_000302.4:c.184G>A 2 2025-05-23 +1 241497927 A T NC_000001.11:g.241497927A>T NM_000143.3:c.1434T>A 1 2026-03-31 +16 2050470 C G NC_000016.10:g.2050470C>G NM_000548.3:c.209C>G 1 2026-03-31 +15 60503594 T G NC_000015.10:g.60503594T>G NM_134261.3:c.1016A>C 1 2026-03-31 +11 108227870 A C NC_000011.10:g.108227870A>C NM_000051.3:c.167A>C 2 2021-06-11 +2 47796041 CAGA C NC_000002.12:g.47796042AGA[1] NM_000179.2:c.609_611delAGA 1 2026-03-31 +2 165754686 T C NC_000002.12:g.165754686T>C NM_004482.4:c.1567A>G 1 2024-12-20 +11 121109347 A G NC_000011.10:g.121109347A>G NM_005422.2:c.335A>G 1 2026-03-31 +6 70068437 A G NC_000006.12:g.70068437A>G NM_001858.4:c.1185A>G 1 2026-03-31 +15 45605433 TGA AT NC_000015.10:g.45605433_45605435delinsAT NM_012388.4:c.318_320delinsAT 1 2026-04-14 +6 32049526 C T NC_000006.12:g.32049526C>T NM_019105.6:c.9495G>A 1 2024-12-31 +1 23868283 G GCATCGCTACCCCT NC_000001.11:g.23868286_23868298dup NM_000147.5:c.3_4insAGGGGTAGCGATG 1 2026-04-09 +12 102866594 ACTGGCGGTAGTTGTAGGCAATGTCAGCAAACTGCTTCCGTCTTGCACGGTACACAGGATCTTTAAAAC A NC_000012.12:g.102866596_102866663del NM_000277.1:c.442_509del 1 2012-03-30 +17 43045757 A T NC_000017.11:g.43045757A>T NM_007294.3:c.5513T>A 6 2015-08-17 +17 43124092 T G NC_000017.11:g.43124092T>G NM_007294.3:c.5A>C 1 2018-11-12 +15 48437026 T C NC_000015.10:g.48437026T>C NM_000138.4:c.6431A>G 6 2018-04-25 +1 155235829 C A NC_000001.11:g.155235829C>A NM_001005741.2:c.1240G>T 2 2020-04-29 +12 88125356 C T NC_000012.12:g.88125356C>T NM_025114.3:c.1079G>A 9 2016-04-28 +11 108327679 G A NC_000011.10:g.108327679G>A NM_000051.3:c.7010G>A 2 2023-07-26 +10 87863460 C G NC_000010.11:g.87863460C>G NM_000314.4:c.-1009C>G 2 2017-08-01 +1 32818026 C T NC_000001.11:g.32818026C>T NM_003680.3:c.-782G>A 1 2020-02-20 +7 144410160 C T NC_000007.14:g.144410160C>T NM_001080413.3:c.68G>A 1 2020-02-20 +2 27445037 T C NC_000002.12:g.27445037T>C NM_015662.2:c.5137A>G 1 2024-10-02 +7 76511669 T C NC_000007.14:g.76511669T>C NM_030570.2:c.413T>C 1 2025-06-17 +11 19192405 T C NC_000011.10:g.19192405T>C NM_003476.5:c.44A>G 1 2025-10-28 +19 54939561 C T NC_000019.10:g.54939561C>T NM_001127255.2:c.1258G>A 1 2026-03-16