Skip to content

Releases: libscran/irlba

v3.1.0

16 Apr 03:04

Choose a tag to compare

  • Metrics (convergence status, number of iterations) are now reported in their own dedicated Metrics class from compute() and pca(). This also includes the number of matrix multiplications that were performed.
  • Increase the default choice of Options::work to be equal to the requested number of singular triplets (or 7, whichever is larger). This improves convergence at the cost of greater memory usage.
  • Switch to modified Gram-Schmidt orthogonalization for a small speed boost.
  • Switch to Eigen's BDCSVD class for the internal SVD, which is much faster for large number + work.
  • Switch to an unset std::optional for Options::singular_value_ratio_tolerance and Options::invariant_subset_tolerance, which is more understandable than the negative sentinel value that we were previously using.
  • Improve efficiency of multiplication in ParallelSparseMatrix. This has the side-effect of giving (very slightly) different results depending on the specified number of threads, due to differences in the error of reordered floating-point summations.

v3.0.1

10 Jan 03:25

Choose a tag to compare

  • Protect against zero-extent matrices, which cause Eigen's SVD to abort.

v3.0.0

06 Nov 18:34

Choose a tag to compare

  • Switch to Eigen 5.0.0.
  • Overhaul the Matrix interfaces to support both compile- and run-time polymorphism.
  • Renamed compute() overload to pca() with its dedicated return struct PcaResults.
  • Template the Options and turn init into an optional<EigenVector_> for safety.

v2.0.2

16 Jan 19:29

Choose a tag to compare

  • Fixed templating of Centered in the compute() overload when scaling and/or centering is requested. This would cause compile-time errors in most cases, except if a sparse Eigen matrix was supplied, in which case it would introduce a run-time dangling reference due to an automatic cast to a temporary Eigen::MatrixXd.

v2.0.1

23 Dec 21:33

Choose a tag to compare

  • Minor efficiency improvements for the wrapper classes.
  • Switch to subpar for parallelization, wrapped by a new irlba::parallelize() function.

v2.0.0

22 Jun 20:16

Choose a tag to compare

Major refactor to use a more functional style. The irlba::Irlba class has been replaced with a regular function irlba::compute(), with options being passed in via irlba::Options. This is probably more intuitive than the parameter setters and Defaults options.

Also templated the various Eigen parameters so that users can choose between doubles and floats.