This repository was archived by the owner on Jun 15, 2026. It is now read-only.
Releases: dial481/allelix
Releases · dial481/allelix
Release list
v1.9.0
Added
--filter-fileoption onanalyze. Accepts a plain-text file with rsIDs and gene names (one entry per line) for custom-panel filtering.- Lines matching
^rs\d+$(case-insensitive) are treated as rsIDs; everything else is a gene name. - Comments (
#) and blank lines are ignored. - Gene and rsID matches combine with OR — an annotation passes if it matches either set.
- An empty filter file (or one with only comments) produces an empty report. Empty set means "match nothing", distinct from no flag, which means "no filter".
- Input is case-tolerant; output is canonical (rsIDs lowercased, gene names uppercased) so the recorded filter looks identical regardless of how entries were typed.
- Not added to
methylationorpharmacogenomics, which already operate on curated panels.
- Lines matching
Full changelog: https://github.com/dial481/allelix/blob/main/CHANGELOG.md
v1.8.4
Added
--no-caddflag on analyze, methylation, and pharmacogenomics commands. Per-invocation CADD enrichment exclusion. Required for commercial deployments without a CADD license from UW CoMotion (CADD iscommercial_ok=False). Mirrors the existing--exclude-snpedialicensing-exclusion pattern.
v1.8.3
Changed
- README quickstart. Lead with
pip install allelixfor end users. Development setup moved to the Development section. - PyPI publish workflow hardened. Pinned
pypa/gh-action-pypi-publishto full commit SHA (v1.14.0) instead of moving branch ref. - README links. Relative markdown links replaced with absolute GitHub URLs so they resolve on PyPI.
- Security policy scope. Narrowed supported versions to current minor only (1.8.x). v1.x feature line is frozen at v1.8.3.
v1.8.2
Fixed
- HTML report link colors. Links in dark mode were browser-default neon blue (#0000EE), unreadable against the dark background. Dark mode now uses #93c5fd; light mode uses #1976d2 (matching the existing accent).
- Favicon SVG rendering. The report's inline SVG favicon used a
linearGradientwith an internal IRI reference (url(#g)) that doesn't resolve insidedata:URIs, rendering the icon invisible. Replaced with solid-fill landing page SVG design. - Genotype column header. Abbreviated "Genotype" to "GT" to prevent column header overlap on narrow/mobile screens.
Changed
- PyPI metadata. Homepage now points to allelix.io. Added Source and Changelog links.
- Automated PyPI publishing. GitHub Actions workflow publishes to PyPI via Trusted Publishing on every GitHub Release.
v1.8.1
What's Changed
- Updated sample reports —
demo_report.htmlanddemo_report.jsonregenerated from current databases - Fixed test fixture genotype format —
genotype_matchvalues changed from slash format (A/G) to concatenated format (AG) to match actual annotator output
v1.8.0
What's New
HTML Report Redesign
- 12-column scrollable table → 5-column layout (Magnitude, Gene, Genotype, Repute, Summary)
- Annotations grouped by variant: multiple sources merge into one row
- Clicking a row opens a sliding detail sidebar with all fields displayed vertically
- Variant metrics (frequency, AlphaMissense, CADD) shown once at top of sidebar
- Annotations grouped by source under a single header per source
Dark / Light Mode
- Follows system preference (
prefers-color-scheme) by default - Manual toggle button for override
- All CSS via custom properties
Detail Panel Improvements
- CADD shows PHRED percentile tier inline (e.g. "38.0 (top 0.1% most deleterious)")
- AlphaMissense shows classification alongside score
- CADD/AM thresholds documented in Understanding Magnitude Scores legend
- Repute sort by severity (Bad → Neutral → Good), not alphabetical
PLINK Export Fix
- Variants sorted by chromosome before export — fixes split-chromosome rejection by PLINK1.9
Other
- Inline SVG helix favicon in report
- ClinVar condition "." placeholder normalized to empty
- Reading This Report section collapsed by default
- Embedded JSON uses numeric types and v4-aligned field names
- 9 new JS-HTML contract tests guard against selector/field-name drift
- 1,264 tests passing
v1.7.0
Added
- PLINK export (#29).
allelix export plinkconverts any supported genotype format to PLINK1 binary (.bed/.bim/.fam) for downstream tools (plink2 PCA, ADMIXTURE, PRSice). Single-sample, SNP-major encoding. Uses gnomAD ref/alt for allele coding when available. No-calls and indels skipped.
Fixed
- Multi-allelic strand collision in PLINK coord selection. At sites where one alt is the complement of another (e.g. ref=G, alts=A,T), single-pass coord selection picked the complement match over the forward match — same bug class as CADD #45. Fixed with a two-pass loop that prefers forward allele matches.
- Indel fallback in PLINK export. Multi-character alleles (indels) are now skipped instead of producing non-standard BIM rows.
Documentation
- ADR-0034: Magnitude scoring scale and ceiling (#23). Formalizes the 0-10 scale with practical ceiling of 9. Documents max-across-sources composite rule and reserves per-source scoring for v2.0.0.
v1.6.1
What's new
- Zygosity column — Heterozygous / Homozygous / No Call labels in terminal, HTML, and JSON reports
- CADD PHRED styling — color-coded severity tiers in HTML reports (all four tiers: ≥30, ≥20, ≥10, <10)
- Methylation panel expansion — 27 → 34 genes with cited sources
- Config path display —
allelix config setnow prints the config file path
Bug fixes
- CADD multi-allelic scoring (#45) — at multi-allelic sites, CADD now looks up the user's specific allele instead of max-reducing across all alts
Schema
- JSON schema version 3 → 4 (new
zygosityfield; ADR-0033 formalizes bump policy)
Test suite
1,245 tests, 0 failures.
v1.6.0
What's new
CADD v1.7 variant deleteriousness scores (ADR-0032)
PHRED-scaled scores ranking how deleterious any single-nucleotide variant
is, using 100+ annotation tracks (coding, non-coding, regulatory). PHRED
10 = top 10% most deleterious, 20 = top 1%, 30 = top 0.1%.
Two modes:
- Cache (default): pre-built SQLite from HuggingFace (~5 GB, ~120M
variant keys). Covers all positions in gnomAD, AlphaMissense, and
ClinVar. - Full (
options.cadd_full = true): queries the complete 81 GB tabix
file via pysam. GRCh38 only. Adds coverage for novel variants not in
any pre-computed database.
Opt-in — disabled by default. Enable via allelix db update --cadd or
allelix config set sources.cadd true.
Licensable-source gating for commercial users
Three-state permission model replaces the binary non-commercial gate:
- ALLOW — source is usable.
- BLOCK_PURCHASABLE — blocked in commercial mode, but a license can
be purchased.config showdisplays the purchase URL. - BLOCK_FINAL — blocked with no commercial license available.
CADD: non-commercial by default, unlockable with a UW CoMotion license
(allelix config set license.cadd true). SNPedia: permanently blocked
in commercial mode (no license available).
Other additions
allelix config get— read a single config key or dump the full config.- Strand normalization —
resolve_strand()maps array-reported
alleles to reference-forward orientation using gnomAD ref/alt as
ground truth. Palindromic SNPs return None rather than guessing. - CADD cache build script —
scripts/build_cadd_cache.pyfilters
the full CADD SNV and indel files to positions present in gnomAD,
AlphaMissense, and ClinVar (GRCh38). Uses int64 packing for SNV keys.
Stats
- 1215 tests, 92%+ coverage
- CI green on Python 3.11 + 3.12
v1.5.3
Fixed
- Added missing GWAS Catalog attribution to HTML and JSON reports. GWAS Catalog was registered as an annotator but absent from the license attribution maps in both renderers.
Added
- SECURITY.md. Vulnerability reporting policy (GitHub private vulnerability reporting), supported versions, and scope definition.
Changed
- License metadata centralized on annotator base class via LicenseDescriptor (ADR-0031). Each annotator now declares its license as a required
licenseClassVar. Non-commercial gating derived from SPDX identifier instead of a hand-maintained set. Report attribution text generated from the descriptor at render time. TheNON_COMMERCIAL_SOURCESfrozenset inconfig.pyis deleted. - JSON schema version bumped to 3. The
license_attributionsblock now carriessource_url(source website) andlicense_url(license deed) as separate keys.licensefield uses SPDX identifiers. Diff between v2 and v3 reports still works. - CI now gates
devbranch pushes (lint + test), not only pull requests.