Changes in version 2.6.0 o Enable manual vectorization for Annoy and HNSW, if supported by the compiler. This improves speed at the cost of exact reproducibility across different toolchains/architectures. We consider this trade-off to be acceptable given that many other floating-point calculations already have non-identical precision across machines. o Accept non-ordinary matrices in X= and query= arguments for all functions. This requires beachmat to be installed. o Added .check.nonfinite= option to skip checks for non-finite values in all functions. This is useful when the user can guarantee that missing or infinite values are not present. o Moved the BNPARAM= argument closer to the front of the argument list of buildIndex(). This is more intuitive when examining the generic arguments. o Added saveIndex() and loadIndex() functions to save and load indices from disk. Changes in version 2.4.0 o Updated the C++ interfaces to match updates to the underlying knncolle libraries. Changes in version 2.2.0 o Throw an error when NA values are present in the input matrices. Changes in version 2.0.0 o Switched to the new knncolle C++ libaries for all implementations. This greatly streamlines the internals and allows downstream packages to re-use the search indices in their own C++ code. o Parallelization is now performed using the standard library. This avoids the overhead of forking or starting new processes via BiocParallel. o All *Index classes have been removed. The output of buildIndex() is no longer guaranteed to be serializable, e.g., external pointers to C++-owned objects; attempting to do so will raise a “null pointer to prebuilt index” error for all methods implemented in this package. The removal of this guarantee makes it easier to extend BiocNeighbors to new methods where the index structure does not have an obvious R representation. o All functions (findKNN(), queryNeighbors(), etc.) will no longer coerce X to a matrix, to avoid the headache of S4 dispatch ambiguity. Users should coerce their data into matrix format before supplying it to these functions. o The last= option in findKNN() and queryKNN() has been replaced by the findDistance() and queryDistance() functions instead. This provides a much more intuitive method for the typical use of last=, i.e., to obtain the distance to the k-th nearest neighbor. o findNeighbors() no longer reports each point as its own neighbor. Also, all neighbors are now sorted by increasing distance in findNeighbors() and queryNeighbors(). Changes in version 1.10.0 o Migrated findMutualNN() from batchelor. o Vendored the RcppAnnoy headers for greater reproducibility. o Added a distance="Cosine" option for all algorithms. Changes in version 1.4.0 o Allow memory-efficient retrieval of the distance to the furthest neighbors. o Added a warn.ties= argument to turn off tie-related warnings in the KMKNN and VP tree algorithms. o Return neighbor counts in rangeFind*() and rangeQuery*() functions when get.index=FALSE and get.distance=FALSE. Changes in version 1.2.0 o findNeighbors() and queryNeighbors() now accept a vector of point-specific thresholds. o Added an VP tree implemention in findVptree(), queryVptree(), buildVptree(). Supported dispatch to these methods in the generics. o Added a HNSW implementation in findHnsw(), queryHnsw(), buildHnsw(). Supported dispatch to these methods in the generics. o Renamed buildNNIndex() to buildIndex(). o Converted findNeighbors() and queryNeighbors() into S4 methods. Created specific rangeFind*() and rangeQuery*() functions for KMKNN and VP tree algorithms. o Modified AnnoyIndex class to hold the original data matrix. Created bnorder(), bndata() generics to obtain (possibly reordered) input matrices for all indexes. o Supported Manhattan distance searching in all algorithms. Changes in version 1.0.0 o New package BiocNeighbors, for k-means-based k-nearest neighbor detection.