Release notes
This is the changelog for the main CLI tool. You can find the changelog for the downstream loader packages here:
Unreleased
cfDNAlab 0.5.0
BREAKING CHANGES:
cfdna fcoverage --normalize-by-lengthis now actually called--normalize-by-lengthinstead of--normalize-by-length-mode, matching the guides and documentation.- The Rust crate feature
cmd_ref_gc_biashas been removed. Enablecmd_gc_bias(on by default) to compile both thegc-biasandref-gc-biascommand APIs.
Other changes:
- Pins the build-time Clang/LLVM conda packages to version 21.x in installation instructions to avoid broken
rust-htslibbindings with libclang version 22. cfdna fragment-count-weightsandcfdna coverage-weightsshows progress bar by default in the internal call tocfdna fcoverage.- CLI runs now log the equivalent full
cfdna <COMMAND> <OPTION>command call for reproducibility and transparency. - The Rust library can render equivalent command calls from exported configs without enabling the
clifeature. This adds theRunOptions.log_equivalent_clifield. - Adds initial output loaders for
lengths,fcoverage,ends, andmidpointsto the Rust library. - General feature gating improvements for an improved library experience.
cfDNAlab 0.4.0
BREAKING CHANGES:
cfdna fcoverage --per-window summary-stats*output TSV columns are renamed and deduplicated.- For
cfdna fcoverage --normalize-by-length, aggregate TSV headers now usefragment_massinstead ofcoveragefor the length-normalized signal columns.
Other changes:
- Allows reading BAM files from URLs via the
curlfeature inrust-htslib. This addsurlas dependency. - Updates
rust-htslibdependency to1.0.0and reduces its feature set for fewer dependencies. - Enables
libdeflate-sysfor faster BAM reading. bam-to-bamandfrag-to-bamwrites.bam.baiindex files alongside the BAM outputs.- Requires
bindgen >=0.69.5, <0.70to remove issue with0.69.4when users don't install with lockfile. - Adds
--lockedto install commands in installation instructions.
cfDNAlab 0.3.0
BREAKING CHANGES:
- Major refactor of the rust library. Makes a clearer boundary of what is public/private. While cfDNAlab is primarily a CLI tool, the library side needed a clean up. This does not affect CLI usage.
Other changes:
- Adds
--motifs-filetocfdna endsfor pre-specifying the motifs to count. This allows counting larger motifs without exploding the memory. - In
cfdna lengths, themax_soft_clipscap is only applied when--clip-mode adjust. - In
cfdna ends, fixes theoretical bug that wrongly filtered fragments when kmer-size was larger than read sequence but reference was used as source.
cfDNAlab 0.2.0
BREAKING CHANGES:
The output formats are changed to simplify downstream work in R and python. While the previous NumPy .npy format was easy to load in python, the user had to infer the column names, etc. We are moving towards more self-contained formats for a better and safer experience.
cfdna lengthsnow outputs a wide-format Zstandard-compressed TSV (.tsv.zst) file with one row per window/group. This is readable bypandasin Python andfread(cmd = "zstd -dc file.tsv.zst")in R.cfdna lengthswrites command settings to<prefix>.length_settings.json.cfdna lengthsadds--decimalsto control written count precision.cfdna midpointsnow outputs profiles as a self-contained Zarr store at<prefix>.midpoint_profiles.zarr.cfdna midpointswrites command settings to<prefix>.midpoint_settings.json.cfdna endsnow outputs dense and sparse motif counts as a self-contained Zarr store at<prefix>.end_motifs.zarr.cfdna endswrites command settings to<prefix>.end_settings.json.cfdna ref-gc-biasnow writes the public reference GC package as<prefix>.ref_gc_package.zarr.cfdna gc-biasnow writes the public sample correction package as<prefix>.gc_bias_correction.zarr.
Any GC-correction packages previously computed are no longer compatible. Please recompute.
Python and R packages for downstream loading:
While the new .zarr format has many benefits, such as being self-contained and working in both R and Python, it's not the easiest to work with in its raw form. We added both an R package and a Python package with friendly loaders and data frame + array getters.
- Adds the Python
cfDNAlabpackage for loading the.zarroutputs of the CLI tool and extracting data frames, meta data, etc. See thecfDNAlab/py-cfdnalab/directory. - Adds the R
cfDNAlabpackage for loading the.zarroutputs of the CLI tool and extracting data frames, meta data, etc. See thecfDNAlab/r-cfdnalab/directory.
Other changes:
- Adds
zarrs=0.23.11dependency. - Adds downstream Zarr compatibility checks for Python and R reader packages.
- We no longer expose the former
gen_cli_docsbinary that is for internal use only.
cfDNAlab 0.1.0
Adds the following public commands:
cfdna fcoveragecfdna lengthscfdna endscfdna midpointscfdna gc-biascfdna coverage-weightscfdna fragment-count-weightscfdna bam-to-bamcfdna bam-to-fragcfdna frag-to-bamcfdna ref-gc-bias
Additional commands are in development and will be added in future releases.