Changelog¶
All notable changes to VariantCentrifuge will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
[0.21.0] - 2026-10-20¶
Fixes the findings of the v0.19.0 audit revalidation (#173–#187).
Fixed¶
Unsplit multi-allelic genotypes (
0/2,2/2, haploid2,./2,0/1/2) are rejected at the genotype-matrix boundary with an error naming gene, site, sample and GT, instead of being miscoded; split withbcftools norm -m-(#175).Allele frequencies, minor-allele recoding, imputation and missing-call ploidy use only the samples retained after QC, in the matrix builder and the score-artifact export; a gene left without case/control contrast is omitted from the artifact with a warning (#174).
Quantitative SKAT residual variance uses RSS/(n − rank X), with Q and the kernel eigenvalues sharing one nuisance projection; results are invariant under y → a·y + b (#179).
SKAT-backend Burden score variance is b′Pb, with the Bernoulli-weighted projection for binary traits (#180).
Redundant covariates (duplicated, constant, translated) no longer crash with
Singular matrix: a full-rank orthonormal design drives the fit, residual df and every projection; variants explained by covariates are dropped, and strongly ill-conditioned covariates give an explicitill_conditioned_covariatesskip (#182).Non-finite or constant outcomes and constant or covariate-collinear burdens return no p-value with a warning code instead of spurious or NaN p-values; the linear-burden intercept is added explicitly (#186).
SKAT-O omnibus integral: survival form without “1 −” cancellation or truncation at 40, support-edge breakpoints, exact chi-square for rank one, adaptive outer integral with an error estimate; failures fall back to Liu and report
p_converged=False. Davies calls are serialized for thread safety (#181).SKAT tail p-values below 1e-5 use Davies on the exponentially tilted mixture (
p_method="davies_tilted") instead of the saddlepoint (#181).Forced chunked processing resolves the gene column like the non-chunked loader, sorts with a locale-independent single-field key and restores input row order; results match non-chunked runs (#183).
Checkpoint resume re-normalizes CLI sample lists (comma strings no longer become sets of characters), and restoring a no-op chunk stage no longer requires an artifact it never wrote (#184).
Quantitative association fits the numeric
--phenotype-value-columnoutcome aligned to VCF samples (also after--remove-sample-substring) instead of failing for lack of case/control cohorts (#187).python -m variantcentrifuge.clipropagates the exit code ofmain(); CLI tests run withsys.executable(#177).HTML report toolbar, filters, chart grid and footer filter expression fit narrow screens; the table still scrolls in its container (#185).
Faster GT parsing: each ~1M-cell block’s distinct GT strings are factorized and classified once instead of string-processing every cell, with identical output (#176; the reconstruction speed-up for #173 shipped in 0.20.1).
Association guide: new section “Input Prerequisites: Callability and Genotype QC” (#178).
Changed¶
Unsupported
ANN[*]/EFF[*]extraction fields are rejected at startup; useANN[0].<FIELD>(#183).Chunked processing requires a rectangular TSV and fails with the line number on a malformed row (non-chunked mode skips or pads it); use
--no-chunked-processingfor such input (#183).--trait-type quantitativerejectsfisher,logistic_burdenand--score-artifactat startup; case/control definitions are not used, samples without an outcome are excluded, andn_cases/n_controlsare reported as 0 (#187).New skip and warning codes:
ill_conditioned_covariates,no_informative_variants,CONSTANT_PHENOTYPE,NONFINITE_PHENOTYPE,NONFINITE_COVARIATES,BURDEN_NOT_ESTIMABLE,ILL_CONDITIONED_COVARIATES,NONFINITE_STATISTICS,OUTCOME_EXPLAINED_BY_COVARIATES,INSUFFICIENT_RESIDUAL_DF(see the association guide’s troubleshooting section).In the deep tail and some edge cases, SKAT/SKAT-O p-values deliberately differ from R SKAT 2.2.5 where R’s Davies accuracy or
integrate()is the less accurate side; moderate p-values are unchanged.Dependencies: smart-open 8 (
smart_open.openreplaces the removedsmart_open.smart_open), ruff 0.17, sphinx>=9.1, github/codeql-action 4.39.
Added¶
Permanent stage-level invariance test for repeated identical transcript annotations, for binary and quantitative traits (#188).
[0.20.1] - 2026-10-20¶
Changed¶
Faster association and variant analysis on wide cohorts (identical results): genotype-matrix parsing runs once per gene block instead of once per sample column, GT-column reconstruction normalises all cells at once and drops per-sample columns in one step (deleting them one by one was quadratic), and case/control counting no longer parses an implicit
0/0for every absent sample. Panels under 50 genes run association in-process instead of starting a worker pool. One 1000 Genomes cohort (3,391 variants x 1,039 samples): 21.5 s -> 6.2 s. Peak memory stays bounded: work runs in blocks of about 1M cells.
Fixed¶
BED chunks for parallel extraction were written to a
chunks/directory next to the input BED (for--regions-bed, the user’s input directory). They now go to the run’s workspace, so read-only input directories work and concurrent runs on one BED cannot overwrite each other’s chunks.make test-e2e(and the Docker CI e2e step) now tests the package installed in the image instead of the mounted, uncompiled checkout, so SKAT runs with the compiled Davies extension as shipped rather than silently on the Liu/saddlepoint fallback. A guard test fails if that regresses.
[0.20.0] - 2026-10-20¶
Python 3.12+ and a faster CI.
Changed¶
Breaking: requires Python 3.12+ (was 3.10+). Python 3.10 is end-of-life, pandas 3 needs 3.11+, and the Docker/conda builds already ship 3.12. Users on 3.10/3.11 keep getting the last 0.19.x release from pip.
CI: PRs test Python 3.12 only;
mainand releases test 3.12 and 3.14. Tests run in parallel (-n auto --dist worksteal), coverage runs once (in the Coverage workflow, with thesysmontracer), feature branches no longer run CI twice (push + PR), and superseded PR runs are cancelled. Actions moved to Node 24 releases, every job has a timeout, and Dependabot now updates actions anduv.lockweekly.Tests: the Excel hyperlink-cap regression tests (#159) reach xlsxwriter’s 65,530-link cap by pre-filling its counter instead of building 10,000-row workbooks; the fast suite drops from about 60 s to 13 s locally.
[0.19.2] - 2026-10-20¶
Re-release of 0.19.1 with version metadata synchronised across
version.py,CITATION.cffand.zenodo.json. The v0.19.1 tag failed release validation because onlyversion.pyhad been bumped.
[0.19.1] - 2026-10-20¶
Fixed¶
Snakemake workflow environment pins
smart-open<8likepyproject.toml; 8.x removedsmart_open.smart_open(#189).
[0.19.0] - 2026-10-20¶
Cohort-stratified meta-analysis (#112, #114).
Added¶
Cohort-stratified rare-variant score-statistic meta-analysis (#112):
--score-artifactwrites a cohort’s per-gene score/covariance artifact during association analysis, and the newvariantcentrifuge metasubcommand combines two or more cohorts (burden, SKAT, SKAT-O, Cochran Q/I², leave-one-out, exome-wide FDR). Binary traits only.Real-data end-to-end test: two 1000 Genomes cohorts (EUR, SAS) for 10 nephrology genes, annotated like the AGDE cohort (snpEff 5.2 GRCh38.p14, ClinVar), run through association,
--score-artifactandvariantcentrifuge metainside the Docker image (make test-e2e, also in the Docker CI workflow).make fixture-1000grebuilds the fixture byte-identically from public sources (#60).
Fixed¶
SKAT-O (and the COAST allelic SKAT-O component) p-values: the omnibus integral used one 128-node Gauss-Legendre rule over the chi-square(1) density, whose x^-1/2 singularity at 0 and rho-switching kinks made p-values 1–8% too large on typical genes and up to ~2x too large near p=0.01. The integral is now split at the kinks and taken in t=sqrt(x), matching R SKAT 2.2.5 to ~1e-4 at the same speed. Burden and SKAT p-values were not affected.
Burden/association with
--split-snpeff-lines: a variant annotated on several transcripts of the same gene entered the regression genotype matrix (logistic/linear burden, SKAT, SKAT-O, COAST) once per transcript and inflatedn_qualifying_variants. Rows are now collapsed to one per variant per gene, keeping snpEff’s most severe annotation. Fisher carrier/allele counts were already per-sample and unaffected.variantcentrifuge metacrashed (ZeroDivisionError) on genes with a single qualifying variant; SKAT-O now returns no value there, as in single-cohort analysis, and the primary p-value falls back to burden.Provenance recorded SnpSift 5.2 as
N/A:SnpSift annotate -versionprints only the number.
[0.18.0] - 2026-10-20¶
Remediates all 45 M1–M6 audit issues (#127–#171) and the follow-up six-part review (#172).
Added¶
Optional subcommands (
run,report,validate-config,build-pm5,download-references) alongside the legacy CLI (#168).--from-tsvmode to rescore, recompute inheritance and regenerate reports without VCF extraction (#169).HTML report variant pinning, reviewer notes, “Pinned Only” filter and TSV/JSON shortlist export (#170).
Analysis profiles (
--profile,--save-profile,--list-profiles) and a validated--sample-sheetadapter (#171).Explicit
|type:numeric/|type:categoricalscoring variable types with a fixed type order; ambiguous untyped variables now fail with a clear error instead of being guessed.Coverage workflow and README badge;
make build-extbuilds the Davies C extension, andmake test*run in parallel.
Fixed¶
Security: sandboxed stats expressions, HTML autoescaping and URL checks, Excel formula-injection off, private PM5 downloads with SHA-256 checks and timeouts, pseudonym map and sample IDs kept out of
run_summary.json, HTML, metadata andInheritance_Detailsunder--pseudonymize(#127–#131).Docker: Jackson 2.22.4 in the rebuilt snpEff/SnpSift jars (CVE-2026-89407, -89425, -68497, -91776, -91777, -19032, -83557).
Statistics: missing genotypes excluded from burden/Fisher denominators, haploid dosages, ALT-major dosage flip, covariate-adjusted ACAT-V, Haldane-corrected Fisher OR/CI, Firth step-halving, Davies fallbacks, cases removed from controls when both definitions match (#137–#145).
Inheritance: X PAR1/PAR2 treated as autosomal using the configured GRCh37/GRCh38 build, PLINK chr26 as MT, stricter de novo calls, symmetric compound-het pairing, scalar/vectorized X-linked parity (#139).
Pipeline: final filtering kept in the main process, inheritance computed for large in-memory data, chunked output fails on schema mismatch instead of misaligning columns, stage soft dependencies ordered, checkpoint hardening, stage failures propagated (#147–#153, #157).
Wheels ship the HTML report templates and assets; shipped scoring configs reduce multi-value cells (
reduce:max); the COAST custom scoring template loads.
Changed¶
Production modules split to ≤ 600 lines each with an empty
.loc-allowlist(#154, #157); strict mypy, Python 3.10–3.13 CI matrix,uv.lockand PyPI Trusted Publishing (#164–#166).
[0.17.16] - 2026-10-16¶
Fixed¶
Parse
snpEff -versionandSnpSift annotate -versionfrom combined stdout/stderr and record activeFilter,Preset,Final Filter,Tumor Samples,Normal Samples,Git SHA, andTranscript File(with MD5) in*_metadata.tsv(#123).
[0.17.15] - 2026-10-16¶
Fixed¶
Use explicit minute time units (
m) forruntimein Snakemake profiledefault-resourcesandset-resourcessohumanfriendlydoes not interpret bare integers as seconds (#125).
[0.17.14] - 2026-10-15¶
Added¶
Support position-specific
FILTERexceptions (--filter-exception-file) for somatic hotspot rescue while preserving original filters inINFO/RAW_FILTER(#121).Add
--fail-on-emptyto exit with code 2 when zero variants remain after filtering (#119).
Fixed¶
Resolve tumor and normal sample indices from
##tumor_sample/##normal_sampleVCF headers, unifymutect2_*andsomatic*presets, and fail fast whenbcftools query -lfails (#117).Run
TranscriptFilterStagebeforeSnpSiftFilterStagein sequential and parallel modes, match base transcript IDs across RefSeq version skew, emit all kept transcripts per gene, and includeFEATUREIDin merge keys (#118).Log per-stage input/output variant counts and accept valid 1-line header-only parallel chunk TSVs (#119).
Preserve
config.jsonoptions when CLI flags are omitted, forward P0 flags in Snakemake helpers, and appendextra_sample_fields(retaining0/0normal samples) in reconstructedGTcolumns (#120).Decompose multiallelic VCF records via
bcftools norm -m -anybefore allele-indexed filtering and restrictANN/LOF/NMDannotations to the decomposedALTallele (#122).
[0.17.13] - 2026-07-19¶
Changed¶
Add shared multi-LLM contributor guidance and a minimal Claude Code entrypoint.
Enforce the 600-line production Python module budget locally and in CI, with a fixed baseline for existing oversized modules and a required refactor when touching them.
[0.17.12] - 2026-07-19¶
Security¶
Refresh the digest-pinned container base, rebuild the pinned SnpEff and SnpSift 5.2 JARs with fixed Java runtime dependencies, and verify compatibility with deterministic behavioral smoke tests. The container workflow now gates publication on an all-severity actionable Trivy scan, retains the complete fixed and vendor-unfixed JSON audit, and signs the gated image by immutable digest after publication.
[0.17.11] - 2026-05-16¶
Fixed¶
Restore checkpoint resume state for chunked and downstream analysis stages so continuation runs recompute the necessary DataFrame context before association and output stages.
Clear persisted checkpoint completion for recomputed stages, including the
Stage.__call__checkpoint skip path.Preserve valid empty outputs by writing header-only requested files.
Normalize categorical genotype values before association genotype matrix encoding.
[0.17.10] - 2026-05-16¶
Fixed¶
Expose Fisher-only weighted FDR results under
fisher_qvalue,fisher_weighted_qvalue, andprimary_qvalueinstead of ACAT-O pass-through column names.Count association-stage significance summaries from
primary_qvalueso weighted and unweighted q-value aliases do not affect the reported number of significant genes.
[0.17.9] - 2026-05-16¶
Fixed¶
Honor
--split-snpeff-lines before_filtersin parallel chunk processing so SnpSift consequence predicates are evaluated on split SnpEff rows before transcript selection.Prune SnpEff
LOFandNMDINFO entries on ANN split rows to the retained row’s matching gene symbol or gene ID, preventing cross-gene burden and association leakage.Warn and document when transcript-filtered gene burden or association uses record-level
ANN[ANY],LOF[*], orNMD[*]predicates withoutbefore_filters.
[0.17.8] - 2026-05-16¶
Fixed¶
Correct malformed built-in SnpSift presets that could leak common or benign variants when combined with other filters.
Fail closed on SnpSift parser/evaluation diagnostics even when SnpSift exits successfully.
Fail closed on invalid final DataFrame and TSV filter expressions instead of returning unfiltered results.
Preserve stderr on command failures for downstream diagnostics.
[0.17.7] - 2026-05-16¶
Fixed¶
Parse SnpEff
NMD[0].PERCfrom the documented percent-affected field instead of returning the NMD gene symbol.
[0.17.5] - 2026-05-16¶
Fixed¶
Order phenotype integration after threaded complete processing so auto-threaded runs do not start before field extraction has completed.
Allow chunked analysis scheduling when optional genotype replacement is omitted, including
--no-replacementruns.Handle categorical per-sample GT columns in column-based gene burden aggregation.
Write gene burden sidecar output next to the requested final output using the expected
.gene_burden.tsvname.Keep temporary scoring formula variables out of user-facing integration output.
[0.17.4] - 2026-05-15¶
Fixed¶
Build
snpEff genes2bedcommands with expansion options before genome and gene positional arguments.Capture and propagate stdout/stderr diagnostics from gene BED subprocess failures.
Allow
--regions-bedwith--gene-name allto use the supplied BED directly.
[0.17.3] - 2026-05-15¶
Fixed¶
Restore and harden custom BED and gene-list annotation config handling so CLI and config-driven runs preserve
Custom_Annotationbehavior across legacy and canonical keys.Preserve checkpoint resume compatibility across annotation config key migration while still invalidating checkpoints when annotation inputs change.
[0.17.2] - 2026-05-14¶
Fixed¶
Prevent raw per-sample
GEN[N].GTcolumns from leaking into final TSV and Excel outputs by default after variant analysis re-attaches them for downstream burden/association stages.Preserve explicit
--no-replacementbehavior so users can still request raw per-sample genotype columns in final outputs.
[0.17.1] - 2026-05-13¶
Fixed¶
Apply
--transcript-listand--transcript-fileto extracted SnpEffANNtranscript annotations, including MANE transcript filtering.Preserve multiallelic split ordering across transcript filtering and SnpSift filtering pipeline stages.
Recompress transcript-filtered VCF outputs with
bcftoolswhen indexing is requested.Restore the Docker scan workflow by using a valid Trivy action tag and retrying transient GHCR logins.
[0.15.0] - 2026-02-22¶
Added¶
Modular association testing framework with pluggable test architecture:
Fisher’s exact test with carrier/allele modes, odds ratio, and 95% CI
Logistic burden regression for binary traits with Firth fallback for separation
Linear burden regression for quantitative traits (OLS)
SKAT and SKAT-O with pure Python backend (numpy/scipy, thread-safe); R backend deprecated
COAST allelic series test (BMV/DMV/PTV categories); pure Python backend default
ACAT-O per-gene omnibus via Cauchy combination; ACAT-V per-variant score within SKAT
Covariate system: TSV/CSV covariate files with auto-detected delimiter and categorical encoding
PCA integration: PLINK
.eigenvec, AKT output, and generic TSV formats; optional AKT subprocessVariant weights: Beta(MAF), uniform, CADD, REVEL, and combined functional weight schemes
Diagnostics: Genomic inflation factor (lambda_GC), QQ data TSV, optional matplotlib QQ plot
JSON config:
"association"section in config.json with validation and CLI override precedenceSingle FDR strategy: Benjamini-Hochberg correction on ACAT-O p-values only (not per-test)
Association testing guide: Comprehensive user documentation with examples and troubleshooting
[0.14.0] - 2026-02-18¶
Added¶
Modern HTML report — complete UX overhaul of the individual variant report across 5 phases:
JS Stack Modernization: DataTables v2, Chart.js (65KB vs Plotly 3.5MB, 98% reduction), Tippy.js tooltips, all assets vendored for offline single-file reports
Summary dashboard: metric cards (total variants, genes, samples, impact breakdown, top genes), impact distribution and inheritance pattern charts
Semantic color badges: IMPACT (red/orange/amber/gray), ClinVar (red-to-green severity), inheritance patterns (de novo=red, compound het=purple, AD=blue, AR=green, X-linked=teal)
Table redesign: sticky GENE column (FixedColumns), dark header, expandable row detail panels, content density toggle (Compact/Regular/Relaxed with localStorage), intelligent column widths, zebra striping
Column-level filtering: noUiSlider range sliders for numeric columns (POS, gnomAD AF, CADD), categorical dropdowns (IMPACT, ClinVar, Inheritance), text search (GENE), removable filter chips, “Include missing values” toggle, reactive chart updates
Unified toolbar: all controls in one 28px row — entries/page, filters, missing, search, density, show/hide columns, PDF export
Accessibility (WCAG 2.1 AA): skip-link, ARIA roles/labels, keyboard-accessible tooltips, SVG icons with screen-reader text, chart data table fallbacks, 4.5:1 contrast ratios on all badges
Print/PDF support: @media print stylesheet hiding interactive controls, PDF export via browser print dialog
Report metadata footer with filter criteria, VCF source, reference genome, version, and date
Expanded summary.json with inheritance distribution, top genes, and sample count
Loading skeleton with shimmer animation during DataTable initialization
107 HTML report-specific tests (structure, behavior, assets, accessibility, print)
Unified resource auto-detection across pipeline modes
[0.13.1] - 2026-02-16¶
Fixed¶
Resource auto-detection across pipeline modes
[0.13.0] - 2026-02-16¶
Added¶
Performance optimization across 7 phases:
Benchmark framework with timing instrumentation
Vectorized genotype replacement (Pandas-native operations)
DataFrame optimization with sanitized column names for itertuples compatibility
Inheritance analysis optimization with vectorized deduction
Output stage optimization
Pipeline I/O elimination (reduced intermediate file writes)
Parallelization and chunking with memory-aware chunk sizing
Memory management system with SLURM/PBS/cgroup detection
Golden file infrastructure for inheritance validation
Performance benchmark test suite
[0.12.0] - 2025-12-01¶
Added¶
Stage-based pipeline architecture (
pipeline_core/) with modular stages, dependency graph, topological sort, and parallel execution via ThreadPoolExecutor/ProcessPoolExecutorRestructured Snakemake workflow matching lab pipeline conventions (Issue #68):
Snakemake 8+ with
min_version("8.0")and executor pluginsSchema-validated config (
config/config_vc.yaml) and sample sheet (config/samples.tsv)Profile layering:
profiles/default/(resources) +profiles/{bih,charite,local}/(executor)Auto-detecting launcher script (
scripts/run_snakemake.sh) for BIH, Charite, and localSingularity/Apptainer container support via
container:directive with conda fallback
Docker image on GHCR (
ghcr.io/scholl-lab/variantcentrifuge) with all bioinformatics tools pre-installed:Multi-stage build using micromamba for minimal image size
CI/CD pipeline with automated builds, Trivy security scanning, and cosign image signing
docker-compose.ymlwith volume mount patterns for data, snpEff databases, and custom scoring configsNon-root container for security best practices
Field profiles for annotation database version compatibility (
--field-profile):Built-in
dbnsfp4anddbnsfp5profiles for seamless gnomAD field switchingTemplate syntax
{{fragment:param}}for parameterized filter presets--list-field-profilesto show available profilesCustom profiles configurable in
config.jsonwithout code changes
Inheritance analysis with three-pass pipeline (deduction, compound het, prioritization):
Supported patterns: de novo, AD, AR, X-linked (XLR/XLD), compound heterozygous, mitochondrial
PED file integration for family-based analysis (
--ped,--inheritance-mode)Vectorized compound het detection (10-50x faster than original)
Segregation analysis with Fisher’s exact test
Pattern prioritization by clinical significance
bcftools pre-filtering (
--bcftools-prefilter) for early variant filtering during extractionFinal filtering (
--final-filter) using pandas query syntax on any column including computed scoresSample pseudonymization for privacy-preserving data sharing (Issue #34):
Multiple naming schemas: sequential, categorical, anonymous, and custom patterns
Consistent pseudonym mapping across all output formats (TSV, Excel, HTML)
PED file pseudonymization support (
--pseudonymize-ped)Secure mapping table storage in parent directory
Checkpoint and resume system for robust pipeline execution:
Automatic pipeline state tracking with
.variantcentrifuge_state.jsonResume capability after interruptions (
--enable-checkpointand--resume)Optional file checksum validation (
--checkpoint-checksum)Interactive resume point selection (
--interactive-resume)Thread-safe state updates for parallel chunk processing
Unified annotation system supporting BED files, gene lists, and JSON gene data
JSON gene annotation feature with flexible field mapping (
--annotate-json-genesand--json-gene-mapping)Comprehensive Sphinx documentation with modern Furo theme
GitHub Actions workflow for automated documentation deployment
Tumor-normal filtering presets (
somatic,loh,tumor_only) with configurable sample indices and thresholdsVCF annotation inspection (
--show-vcf-annotations) for field discoveryGenotype filtering (
--genotype-filter) with per-gene override supportTranscript-level filtering (
--transcript-list,--transcript-file)ClinVar PM5 annotation support (
--clinvar-pm5-lookup)
Changed¶
Documentation migrated from README to structured Sphinx documentation
Enhanced filtering with three-stage approach (bcftools pre-filter, SnpSift filter, final filter)
Fixed¶
Numeric type conversion in final filtering to handle mixed data types correctly
Gene burden analysis edge cases (Issue #31): Improved handling of infinite and zero odds ratios
[0.5.0] - 2024-08-01¶
Added¶
Interactive HTML report generation with sortable tables
IGV.js integration for genomic visualization
Cohort analysis and reporting functionality
Gene burden analysis with Fisher’s exact test
Phenotype data integration and filtering
Preset filter system for common analysis workflows
Excel output format support
External database links (SpliceAI, Franklin, Varsome, gnomAD, ClinVar)
Changed¶
Improved command-line interface with better argument organization
Enhanced configuration system with JSON-based presets
Optimized variant filtering pipeline
Better error handling and user feedback
Fixed¶
VCF header normalization for indexed fields
Sample identification in cohort reports
IGV report generation with proper FASTA handling
[0.4.0] - 2024-06-01¶
Added¶
Comprehensive test suite with pytest
Pre-commit hooks for code quality
Gene list annotation functionality
Variant statistics and metadata generation
Changed¶
Modular code architecture with clear separation of concerns
Improved logging and debugging capabilities
Enhanced VCF processing pipeline
Fixed¶
Gene BED file generation edge cases
Genotype replacement functionality
[0.3.0] - 2024-04-01¶
Added¶
Gene-centric variant filtering
SnpSift integration for field extraction
Basic HTML report generation
Phenotype integration capabilities
Changed¶
Migrated from Bash/R to Python-based pipeline
Improved error handling and validation
[0.2.0] - 2024-02-01¶
Added¶
Initial Python CLI implementation
VCF processing with bcftools integration
Basic filtering capabilities
Configuration file support
Changed¶
Complete rewrite from shell scripts to Python
[0.1.0] - 2024-01-01¶
Added¶
Initial release
Basic variant filtering functionality
Shell script-based pipeline
Simple output generation
Legend¶
Added for new features
Changed for changes in existing functionality
Deprecated for soon-to-be removed features
Removed for now removed features
Fixed for any bug fixes
Security for vulnerability fixes