Skip to content

Releases: libscran/mnncorrect

v3.0.2

27 Feb 20:53

Choose a tag to compare

  • Updated required versions of all dependencies.
  • Small bugfix for correct templating when defining the merge order.

v3.0.1

27 Nov 03:08

Choose a tag to compare

  • Templating fix for non-default knncolle::Matrix.
  • Added dependency on sanisizer to protect against integer overflows.

v3.0.0

22 May 05:03

Choose a tag to compare

Overhauled the MNN correction algorithm:

  • Rather than choosing a single reference and performing iterative pairwise merges with other batches, we use a different algorithm whereby a "target" batch is chosen and MNN pairs are identified to all other batches simultaneously. Each observation in the target batch is then redistributed to the other batches through its closest MNN pair. This encourages formation of the correct MNN pairs between matching subpopulations in any of the batches. By comparison, the previous approach could lead to incorrect MNN pairs if the batch to be corrected does not share any subpopulations with the reference at any particular iteration.
  • We greatly simplify the center of mass calculation by only using the neighbors of each MNN-involved observation. This reduces the risk of incorrectly absorbing distant subpopulations into the center of mass. The downside is that it is more susceptible to kissing effects where the calculated center of mass is located near the surface of the subpopulation's set of points. We consider this to be acceptable as undercorrection is less usually problematic (or at least easier to diagnose) than overcorrection. Nonetheless, kissing effects can be mitigated by recursively searching for neighbors - the recursion depth can be set by the user to tune the aggressiveness of the correction.
  • Updated template parameters for the new knncolle interfaces.

v2.0.1

29 Dec 20:51

Choose a tag to compare

  • Added a parallelize() utility based on subpar to handle all parallelization in this library.

v2.0.0

08 Aug 19:36

Choose a tag to compare

  • Refactor to a compute() function with an Options class.
  • Allow users to specify their own NN search algorithm via a builder option.
  • Bugfix to ensure that mass_cap is only applied to the reference.
  • Switch from end to length in the custom parallelization.
  • Added CMake installation commands and documentation.