Skip to content
This repository was archived by the owner on Jun 15, 2026. It is now read-only.

Releases: dial481/allelix

v1.9.0

Choose a tag to compare

@dial481 dial481 released this 13 Jun 11:07

Added

  • --filter-file option on analyze. 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 methylation or pharmacogenomics, which already operate on curated panels.

Full changelog: https://github.com/dial481/allelix/blob/main/CHANGELOG.md

v1.8.4

Choose a tag to compare

@dial481 dial481 released this 13 Jun 09:10

Added

  • --no-cadd flag on analyze, methylation, and pharmacogenomics commands. Per-invocation CADD enrichment exclusion. Required for commercial deployments without a CADD license from UW CoMotion (CADD is commercial_ok=False). Mirrors the existing --exclude-snpedia licensing-exclusion pattern.

v1.8.3

Choose a tag to compare

@dial481 dial481 released this 12 Jun 20:10

Changed

  • README quickstart. Lead with pip install allelix for end users. Development setup moved to the Development section.
  • PyPI publish workflow hardened. Pinned pypa/gh-action-pypi-publish to 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

Choose a tag to compare

@dial481 dial481 released this 12 Jun 17:57

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 linearGradient with an internal IRI reference (url(#g)) that doesn't resolve inside data: 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

Choose a tag to compare

@dial481 dial481 released this 12 Jun 10:55

What's Changed

  • Updated sample reportsdemo_report.html and demo_report.json regenerated from current databases
  • Fixed test fixture genotype formatgenotype_match values changed from slash format (A/G) to concatenated format (AG) to match actual annotator output

v1.8.0

Choose a tag to compare

@dial481 dial481 released this 12 Jun 10:04

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

Choose a tag to compare

@dial481 dial481 released this 12 Jun 06:21

Added

  • PLINK export (#29). allelix export plink converts 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

Choose a tag to compare

@dial481 dial481 released this 11 Jun 21:07

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 displayallelix config set now 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 zygosity field; ADR-0033 formalizes bump policy)

Test suite

1,245 tests, 0 failures.

v1.6.0

Choose a tag to compare

@dial481 dial481 released this 11 Jun 18:40

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 show displays 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 normalizationresolve_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 scriptscripts/build_cadd_cache.py filters
    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

Choose a tag to compare

@dial481 dial481 released this 10 Jun 15:24

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 license ClassVar. Non-commercial gating derived from SPDX identifier instead of a hand-maintained set. Report attribution text generated from the descriptor at render time. The NON_COMMERCIAL_SOURCES frozenset in config.py is deleted.
  • JSON schema version bumped to 3. The license_attributions block now carries source_url (source website) and license_url (license deed) as separate keys. license field uses SPDX identifiers. Diff between v2 and v3 reports still works.
  • CI now gates dev branch pushes (lint + test), not only pull requests.