holodeck 0.3.0

Modern NGS read simulator
Documentation
# Changelog

All notable changes to holodeck are documented here.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.3.0] - 2026-06-13

### Added

- End-to-end methylation simulation as two composable steps. The new
  `methylate` subcommand scans every CpG in the reference (after applying any
  VCF variants) and writes per-haplotype, per-strand methylation truth as
  `MT`/`MB` FORMAT fields, using a context-aware, spatially correlated model:
  CpGs are classified de novo into island / shore / open-sea (Gardiner-Garden)
  with per-context target rates and correlation lengths, walked by a two-state
  Markov chain so methylation forms realistic autocorrelated runs. Methylation
  is symmetric by default with a low sporadic hemimethylation rate, and
  per-haplotype draws yield allele-specific methylation.
- `simulate --methylation-mode` applies EM-seq/bisulfite (unmethylated C->T) or
  TAPS (methylated C->T) conversion when the input VCF carries `MT`/`MB` truth,
  including a bimodal per-molecule conversion-failure model.
- Golden BAM now emits Bismark-compatible methylation tags (`XG`/`XR`/`XM`/`NM`/`MD`)
  plus holodeck truth tags (`YM`/`YS`/`cf`), so the perfect-truth BAM drops
  straight into Bismark / MethylDackel / IGV.
- Methylation truth outputs: `--cpg-truth-bedgraph` (coverage-weighted, from the
  reads that covered each CpG) and a closed-form population-fraction bedGraph,
  both in MethylDackel `extract` format.

## [0.2.1] - 2026-05-01

### Changed

- Non-ACGT bases in the reference FASTA are now resolved to a concrete base
  (e.g. `N`->`ACGT`, `R`->`AG`) when simulating reads, in a way that keeps the
  base identifiable, rather than passed through unchecked.
- Lowered the default `simulate --max-n-frac` to `0.02`; reads or read pairs are
  rejected when any read exceeds this fraction of ambiguous bases.

### Fixed

- Use absolute URLs for logo images in the README.

## [0.2.0] - 2026-04-22

### Added

- Source fragment length is now encoded in read names.

### Changed

- The read-name field separator changed from `:` to `::` to cleanly handle
  contig names containing single colons (e.g. HLA alleles).

## [0.1.0] - 2026-04-22

### Added

- First release of holodeck, an NGS read simulator.

[unreleased]: https://github.com/fg-labs/holodeck/compare/v0.3.0...HEAD
[0.3.0]: https://github.com/fg-labs/holodeck/compare/v0.2.1...v0.3.0
[0.2.1]: https://github.com/fg-labs/holodeck/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/fg-labs/holodeck/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/fg-labs/holodeck/releases/tag/v0.1.0