Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
46dbd49
Add neat compare-vcfs subcommand; bump to v4.5.0 (#297)
joshfactorial May 19, 2026
6961af3
Cover compare-vcfs CLI, --plot, stale-bed, multi-FN gaps
joshfactorial May 20, 2026
73cd132
Detect chrom-naming mismatches in compare-vcfs; add --chrom-aliases
joshfactorial May 20, 2026
bf5ab16
Close outside_* semantic gap + fill pre-merge test gaps
joshfactorial May 20, 2026
8aeb765
Merge pull request #299 from ncsa/compare-vcfs
joshfactorial May 20, 2026
4a80456
Drop cleanup_splits and reuse_splits; bump to v4.5.1
joshfactorial May 20, 2026
0a7247b
Drop cleanup_splits and reuse_splits; bump to v4.5.1
joshfactorial May 20, 2026
765b5ec
Merge pull request #300 from ncsa/audit-splits-options
joshfactorial May 20, 2026
b82ba8f
Add 'Validating NEAT outputs' section to README
joshfactorial May 20, 2026
858bd50
Fix seven doc gaps found in audit; update header to v4.5
joshfactorial May 20, 2026
9e020d3
Merge pull request #302 from ncsa/docs-validation-section
joshfactorial May 20, 2026
1be27ed
Implement binned quality scoring for Illumina instruments (#293)
joshfactorial May 20, 2026
a46c227
docs: document --quality-preset and binned quality scoring in README
joshfactorial May 20, 2026
b4cacb8
Merge pull request #304 from ncsa/feature/binned-quality-scoring
joshfactorial May 20, 2026
3545f50
Updated notes in readme
joshfactorial May 20, 2026
7a92c43
Merge remote-tracking branch 'origin/develop' into develop
joshfactorial May 20, 2026
90f41e4
Updating gitignore
joshfactorial Jun 8, 2026
3769280
Merge branch 'main' into develop
joshfactorial Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,3 @@ dist/
build/
*.egg-info/
*.egg

# gitnexus stuff
/.gitnexus/
/.claude/
AGENTS.md
CLAUDE.md
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!-- gitnexus:start -->
# GitNexus — Code Intelligence

This project is indexed by GitNexus as **NEAT** (2742 symbols, 5450 relationships, 62 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
This project is indexed by GitNexus as **NEAT** (3389 symbols, 6682 relationships, 71 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.

> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.

Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!-- gitnexus:start -->
# GitNexus — Code Intelligence

This project is indexed by GitNexus as **NEAT** (2742 symbols, 5450 relationships, 62 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
This project is indexed by GitNexus as **NEAT** (3389 symbols, 6682 relationships, 71 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.

> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.

Expand Down
60 changes: 60 additions & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,63 @@
# NEAT v4.5.1

Removed the `cleanup_splits` and `reuse_splits` config options.

`reuse_splits` was fully broken (it raised `FileNotFoundError` unconditionally
regardless of whether the splits directory existed). `cleanup_splits` existed
solely to support `reuse_splits`; without it the option has no value — the
splits directory always lives in a `TemporaryDirectory` that is cleaned up
automatically when the run exits.

Both keys are now in `DEPRECATED_KEYS`: configs that still include them
receive a one-line deprecation warning and continue parsing cleanly, so no
user config breaks. The README examples and all internal test fixtures have
been updated to drop these keys.

# NEAT v4.5.0

New `neat compare-vcfs` subcommand: compares a downstream variant caller's VCF
against the NEAT-simulated truth VCF and attributes each false negative to the
simulator's own configuration (mutation bed, target bed, simulated contigs).
Issue #297.

Variant equivalence (multi-allelic normalization, haplotype-level matching) is
delegated to Illumina's `hap.py`. NEAT adds the false-negative attribution
layer: each FN is tagged with one or more of `outside_simulated_contigs`,
`outside_mutation_bed`, `outside_target_bed`, or `unknown`.

**Outputs (in `--output-dir`):**

- `comparison_summary.json` — counts, precision/recall/F1, per-reason FN totals
- `comparison_summary.txt` — human-readable rollup
- `FN_with_reasons.vcf` — hap.py's FN records with an added `NEAT_REASON` INFO tag
- `happy.vcf.gz` and siblings — preserved hap.py output
- `fn_attribution.png` — optional bar chart, written when `--plot` is set

**Prerequisite artifact:** Every `neat read-simulator` run now writes a small
`simulation_summary.json` alongside its other outputs, capturing the run's
config echo (coverage, read length, paired-ended, BED paths, contigs simulated)
and delivered counts (total reads, total variants, per-contig variants). The
`compare-vcfs` wrapper reads this file to drive attribution.

**External dependency:** `hap.py` is required at runtime. NEAT does not bundle
it; install via `conda create -n hap_py_env -c bioconda -c conda-forge hap.py`
and pass the absolute path via `--happy-bin`, or put it on `$PATH`. Without
hap.py, the command exits with an install hint.

**Chromosome-name handling:** `compare-vcfs` detects when a BED's chrom names
don't overlap the reference's (e.g., BED uses `1`/`MT` while reference uses
`chr1`/`chrM`) and writes a warning into `comparison_summary.json` suggesting
an alias mapping. Users can apply the mapping via a new `--chrom-aliases TSV`
flag. NEAT does not auto-normalize — silent renaming would mask real bugs.
`simulation_summary.json` now also records `delivered.reference_contigs` (the
full FASTA contig set) alongside `contigs_simulated`.

**Not in this release** (deferred to follow-up issues): full per-region
simulation telemetry (per-chunk coverage, GC-bias map, error rates by position)
for richer FN attribution, and SV-comparison support. The simulator's silent
"skip BED chroms not in reference" warning will be promoted to a fatal error
in a future release with an opt-in `chrom_aliases` config key.

# NEAT v4.4.4
Follow-up release on top of v4.4.3 bundling three lines of work: another perf
pass over the remaining single-thread hot paths (variant overlap checks,
Expand Down
Loading
Loading