Skip to content

Releases: paulsengroup/hictk

v2.1.4

19 Jun 17:55
3acaacc
Compare
Choose a tag to compare

What's Changed

This is a patch release consisting of one bugfix concerning the help message showing information regarding telemetry collection.

I also took the occasion to refactor the conanfile.py and improve the instructions to build hictk from source.

Changelog

  • [fix]: hictk --help-telemetry by @robomics in #422
  • [refactor]: rewrite conanfile.py to be more modular by @robomics in #424
  • [docs]: update instruction on how to build hictk from sources by @robomics in #423

Full Changelog: v2.1.3...v2.1.4

v2.1.3

16 Jun 21:26
0108b78
Compare
Choose a tag to compare

What's Changed

This is a small release consisting of a couple of bugfixes and a few changes to address new warnings issued by GCC 15 and Clang 20.

Changelog

Full Changelog: v2.1.2...v2.1.3

v2.1.2

23 May 16:21
f167820
Compare
Choose a tag to compare

What's Changed

This is a small release consisting of one bugfix and various improvements to the documentation and error messages.

Changelog

Bugfix

  • [bug]: address bug in ToDataFrame transformer when span=full and queries are cis and have unusual shapes by @robomics in #406

Improvements

  • [feature]: improve error message generated by hictk balance by @robomics in #401
  • [feature]: improve error messages generated when opening .hic files by @robomics in #411

Documentation

Various

Full Changelog: v2.1.1...v2.1.2

v2.1.1

09 Apr 22:24
dd38500
Compare
Choose a tag to compare

What's Changed

This release consists of a single minor bug fix.

  • [bug]: fix segfault when fetching genome-wide interactions from empty .hic files by @robomics in #399

Full Changelog: v2.1.0...v2.1.1

v2.1.0

07 Apr 15:07
53f6a6b
Compare
Choose a tag to compare

What's Changed

This release contains a mix of new features, performance improvements, and bug fixes.

Highlighted features

Fetching interactions around the matrix diagonal

We introduce a new transformer named DiagonalBand() which given a pair of pixel iterators, returns another pair of iterators that traverse pixels falling within a given matrix diagonal band.
When DiagonalBand() is constructed from iterators coming from hictk's PixelSelectors, pixels are traversed as efficiently as possible by minimizing the number of pixels that are needlessly fetched from the files.

When using hictk::hic::Files, to achieve the best performance possible, be sure to specify the diagonal_band_width parameter when calling the fetch() method.

Improve performance of queries on Cooler files

With this release, we introduce a few heuristics to minimize the amount of unnecessary work that is performed when fetching interactions from Cooler files.
This is especially noticeable when fetching interactions using "tall" queries (e.g. range1=chr1; range2=chrX:10,000,000-11,000,000).
Overall, this resulted in an average performance improvement in the order of 20-40% (with up to 400% improvements in very specific cases, and a few minor regressions when fetching a very small number of interactions from small chromosomes).
See #330 for more details.

Quality of life improvements

  • When opening .hic or .mcool files consisting of a single resolution using e.g. hictk::File(), the resolution parameter is no longer mandatory.
  • The hictk CLI now supports common units for genomic distances. Example usage: hictk dump myfile.mcool --resolution 5Mbp (5Mb and 5M are equivalent to 5Mbp).
  • Better error messages when attempting to open files with an invalid/missing resolution.

Telemetry

With this release, we introduce support for telemetry collection from the hictk CLI.
We collect as little information as possible.
More specifically we do NOT collect information that could be used to:

  • identify our users
  • identify the machine or environment where hictk is being run
  • know which dataset is being processed by hictk
  • the parameters used to run hictk

Telemetry collection can be disabled in a few ways, such as defining the HICTK_NO_TELEMETRY env variable before launching hictk.

Furthermore, we added a dedicated page to the documentation at hictk.readthedocs.io with detailed information regarding telemetry collection, processing, and storage.
If you have any questions related to this topic, please start a new discussion on GitHub

Changelog

Changes to library code

  • [perf]: improve performance of queries on Cooler files by @robomics in #330
  • [feature]: support efficient, lazy fetching of interactions falling within a diagonal band by @robomics in #346
  • [enhancement]: update ToDataFrame to use signed integers by @robomics in #358
  • [feature]: update transformers to dense/sparse matrices and dataframes to support fetching interactions surrounding the matrix diagonal by @robomics in #356
  • [feature]: implement avail_normalizations() on multi-resolution files by @robomics in #362
  • [feature]: improve automatic resolution inference by @robomics in #368
  • [enhancement]: improve error messages generated by hictk::File() by @robomics in #377 and #357
  • [feature]: Support efficient computation of query size by @robomics in #384
  • [refactor]: improve layout of internal libs to better support partial builds by @robomics in #397
  • [build system]: make overriding git metadata embedding more flexible by @robomics in #352
  • [build system]: prefix internal CMake targets with hictk_ to avoid collisions for common names by @robomics in #351

Changes to CLI tools

  • [enhancement]: hictk convert: improve handling of files with normalizations not available across all resolutions by @robomics in #365
  • [feature]: update CLI to support common units for genomic distances by @robomics in #369
  • [perf] hictk validate: greatly improve performance when using --validate-index by @robomics in #333
  • [feature]: hictk validate: add CLI option to validate pixels from .[ms]cool files by @robomics in #380
  • [feature]: support creating .hic and .cool files with no interactions by @robomics in #387
  • [feature]: improve pixel validation when creating .cool/hic files by @robomics in #388
  • [feature]: make sure all well-behaved errors result in exit code 1 by @robomics in #370
  • [feature]: initial support for collecting telemetry by @robomics in #372
  • [fix]: hictk convert: do not hang when processing .cool files with pixels with 0 interactions by @robomics in #379

Updates to CI

Updates to testing

Various

Full Changelog: v2.0.2...v2.1.0

v2.0.2

26 Feb 15:02
98281cc
Compare
Choose a tag to compare

What's Changed

This is a small maintenance release mostly consisting of bugfixes.

Bugfix

Various

New Contributors

Full Changelog: v2.0.1...v2.0.2

v2.0.1

21 Oct 23:53
3131101
Compare
Choose a tag to compare

The main motivation behind this release is to ensure that the up-to-date documentation is properly published on ReadTheDocs.

More details

hictk is relying on the linkcheck plugin to ensure that the documentation does not contain broken or invalid links.
However, when the documentation is being built by the ReadTheDocs CI, some of the links in the docs are not yet valid (but they will be once the up-to-date documentation is published).
linkcheck detected this issue and cancelled the CI job, which is why there is no documentation for hictk v2.0.0 on ReadTheDocs.

PR #299 updates linkcheck's ignore list such that the temporarily invalid links are not checked by linkcheck.

The up-to-date documentation for hictk v2.0.1 is available at: https://hictk.readthedocs.io/en/v2.0.1/

What's Changed

Full Changelog: v2.0.0...v2.0.1

v2.0.0

19 Oct 19:36
Compare
Choose a tag to compare

What's Changed

Changes to library code

  • Fix bug when fetching whole-genome interactions as dense or sparse matrix by @robomics in #196, #197
  • Expose bin_ptr() accessor wherever it makes sense by @robomics in #199
  • Make hictk::common depend on the git-watcher target by @robomics in #233
  • Various improvements and bug fixes to code related to fetching interactions as Eigen matrices by @robomics in #227
  • Improve transformers::ToDataFrame() by @robomics in #234
  • Support merging streams of pixels originating from files of different formats by @robomics in #243
  • Fix division by zero when fetching pixels from coolers with bin tables with variable bin size by @robomics in #250
  • Various improvements to balancing::Weights by @robomics in #251
  • Fix bug when fetching normalized interactions as dense matrices by @robomics in #252
  • Minor changes to iterators by @robomics in #253
  • Improve support for "square" Cooler files by @robomics in #249
  • Rewrite VectorOfAtomicDecimals by @robomics in #255
  • Make constructors for To*Matrix transformers more flexible by @robomics in #266
  • Improve performance of ToSparseMatrix by reducing memory allocations by @robomics in #277
  • Refactor FileStream class by @robomics in #282
  • Replace HICTK_UNREACHABLE_CODE macro with hictk::unreachable_code() by @robomics in #285
  • Make sure cooler::File::close() does not attempt to finalize files twice by @robomics in #291
  • Mark ~TmpDir() noexcept and log errors as warnings using spdlog by @robomics in #292
  • Improve logging when failures occur from within class destructors by @robomics in #293
  • Add option to exclude "ALL" chromosomes when calling nchroms() on .hic files by @robomics in #294

Changes to CLI tools

  • Better handling of coolers with FP counts by @robomics in #201, #202
  • Implement hictk metadata command by @robomics in #204, #222
  • Improve error message when temporary folder cannot be safely determined by @robomics in #210
  • Fix CLI exit code by @robomics in #215
  • Add --no-create-weight-link CLI flag where appropriate by @robomics in #223
  • Minor improvements to various hictk subcommands by @robomics in #229, #231, #232, #228, #238
  • Add option to override count type used to convert .hic files to .[m]cool format by @robomics in #203
  • hictk load: support ingesting interactions from pairs/pixel files with interactions overlapping with the lower-triangular matrix by @robomics in #264
  • Tweak max active log level based on CMake build type by @robomics in #278
  • Fix default log levels when compiling hictk in Debug mode by @robomics in #279
  • Ensure no temporary files are written when balancing .hic files with --in-memory by @robomics in #280
  • hictk load: support loading compressed interactions by @robomics in #244
  • Fix temporary file name collisions in hictk convert *cool -> hic by @robomics in #274

Updates to CI

Updates to testing

Various

Full Changelog: v1.0.0...v2.0.0

v1.0.0

18 Jun 12:19
e1e7bcc
Compare
Choose a tag to compare

What's Changed

  • Fix incorrect overload being called when fetching pixels from cooler files by @robomics in #158
  • Properly deal with .hic files with missing normalization vectors by @robomics in #162
  • Fix fuzzy tests by @robomics in #165
  • hictk balance: add --no-create-weight-link option by @robomics in #167
  • hictk balance: honor --in-memory by @robomics in #166
  • Add more benchmarks by @robomics in #164
  • Throw an error when a non-existing folder is passed to --tmpdir by @robomics in #168
  • Switch from conanfile.txt to conanfile.py by @robomics in #169
  • Update Docker images used by CI by @robomics in #173
  • Refactor code to return interactions as sparse/dense Eigen matrices by @robomics in #176
  • Fix typo by @Phlya in #177
  • Support fetching interactions as arrow::Table by @robomics in #170
  • For the time being, refuse to build on big-endian architectures by @robomics in #181
  • Support for fetching interactions from the lower triangle when it makes sense by @robomics in #179
  • Drop unnecessary dependency from conanfile.py by @robomics in #184
  • Ensure pixel transformers are well-behaved when given an empty range of pixels by @robomics in #182
  • Support opening .hic files with only 1 bin per chromosome by @robomics in #180
  • Fix typo in conanfile.py by @robomics in #186
  • Update docs by @robomics in #183
  • Various fixes to the build system by @robomics in #187
  • Prepare for release by @robomics in #189

New Contributors

Full Changelog: v0.0.12...v1.0.0

v0.0.12

17 Apr 07:36
1d3c869
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.0.11...v0.0.12