knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)

There are a variety of packages that uwot will make use of if you install them (and load them), but that you don't need so are optional. These include:

There is one other dependency, RSpectra -- used for the default spectral initialization. If not installed, then the irlba package is used instead. In most cases irlba does a fine job, but it's not as fast as RSpectra for spectral initialization because irlba isn't designed for quite the same use case as RSpectra. This has been both a core dependency and an optional dependency at different times in the past. In general, I would like it to be an optional dependency, but currently, an interaction with the most recent release of irlba and an ABI change to the Matrix package is causing failures. By making RSpectra a required dependency, I can ensure tests, examples and vignettes build which unblocks various downstream packages.

My recommendation would be to install all of these (or at least RcppHNSW):

install.packages(c("RcppHNSW", "rnndescent"))

and then have them (and RSpectra) loaded whenever you are using uwot.

library(RSpectra)
library(RcppHNSW)
library(rnndescent)
library(uwot)

The following UMAP run will then use RcppHNSW and RSpectra (versus RcppAnnoy and irlba) without you having to specify anything:

iris_umap <- umap2(iris, n_neighbors = 30)


jlmelville/uwot documentation built on July 29, 2024, 11:22 p.m.