A place for me to put the old less-structured updates that I post at
the top of the README.md
file for the package. When they
aren’t new any more, they will get moved here. You should look at the Changelog
for fuller details.
April 21 2024 As ordained by prophecy, version 0.2.2 of
uwot
has been released to CRAN. RSpectra
is
back as a main dependency and I thought I had worked out a
clever scheme to avoid the failures seen in some installations with the
irlba
/Matrix
interactions. This releases fixes
the problem on all the systems I have access to (including GitHub
Actions CI) but some CRAN checks remain failing. How embarrassing. That
said, if you have had issues, it’s possible this new release will help
you too.
April 18 2024 Version 0.2.1 of uwot
has been
released to CRAN. Some features to be aware of: RcppHNSW and rnndescent are
now supported as optional dependencies. If you install and load them,
you can use them as an alternative to RcppAnnoy in the nearest neighbor
search and should be faster. Also, a new umap2
function has
been added, with updated defaults compared to umap
. Please
see the updated and new articles on HNSW,
rnndescent,
working
with sparse data and umap2.
I consider this worthy of moving from 0.1.x
to
0.2.x
, but in the interests of full disclosure, on-going irlba problems
has caused a CRAN check failure, so we might be onto 0.2.2 sooner than
I’d like.
November 26 2023 Happy 1 million CRAN downloads to
uwot
. To celebrate (actually it’s just a coincidence) I
have reorganized the horror-show that was the sprawling README into
actual articles, via the fantastic pkgdown package. Find it at https://jlmelville.github.io/uwot/.
June 28 2023 Version 0.1.16 has been released to CRAN. This is a very minor tweak to 0.1.15 to further support the new release of RcppAnnoy.
June 28 2023 Version 0.1.16 has been released to CRAN. This is a very minor tweak to 0.1.15 to further support the new release of RcppAnnoy.
June 26 2023 Version 0.1.15 has been released to CRAN. This
is to support a new release of RcppAnnoy, but
there are also some bug fixes and other minor improvements. There are
some new functions: optimize_graph_layout
will carry out
the UMAP optimization step on a sparse similiarity matrix, e.g. the
output of similarity_graph
.
simplicial_set_union
and
simplicial_set_intersect
provide ways to merge different
views of the same data into one sparse similiarity matrix. As usual,
NEWS.md
has all the details.
August 22 2022 Just when you least expected it, version
0.1.14 has been released to CRAN (the NEWS
file on CRAN
calls it 0.1.13.9000
because I forgot to update that file,
but let’s keep that amongst ourselves). This release includes a bug fix
for umap_transform
when you use external nearest neighbors
and new function similarity_graph
, to support extracting
just the high dimensional fuzzy simplicial set.
August 16 2022 Version 0.1.13 has been released to CRAN (0.1.12 was a failed submission). Among other things you can now pass your own nearest neighbors data in sparse matrix form. Also there is an option to reproduce relative cluster density by approximating the densMAP method. See the NEWS page for more.
December 12 2021 Version 0.1.11 has been released to CRAN.
It is now possible to get reproducible results (for a given value of
set.seed
) when running the optimization step with multiple
threads (n_sgd_threads
greater than 1). You may need to
increase n_epochs
to get similar levels of convergence. To
run in this mode, set batch = TRUE
. Thanks to Aaron Lun who came up with the design
for this and also implemented it in his umappp C++ library. See
NEWS.md
for other changes.
December 15 2020 Version 0.1.10 has been released to CRAN.
This is mainly to maintain compatibility with RcppAnnoy, but also a
small change was made to avoid it grinding away pointlessly in the
presence of NA
values, based on an observation by David
McGaughey on Twitter (which I can no longer link to).
November 15 2020 Version 0.1.9 has been released to CRAN. The main addition is support for the Pearson correlation. Also, a slight license change from GPL-3 to GPL-3 or later.
August 1 2020 New metric supported: Pearson correlation
(with metric = "correlation"
). This should give similar
results to the Python UMAP (and sklearn) implementation of the
correlation
metric.
March 16 2020 A new version (0.1.8) is on CRAN. This is a minor release in terms of features, but you can now export the UMAP graph (https://github.com/jlmelville/uwot/issues/47), and there are some bug fixes for: loading Annoy indexes (https://github.com/jlmelville/uwot/issues/31), reproducibility across platforms (https://github.com/jlmelville/uwot/issues/46) and we no longer use RcppParallel for the multi-threading support, which should lead to fewer installation problems.
March 4 2020 I had to cancel my submission of version 0.1.7
to CRAN because of a broken example in a library using uwot. In the mean
time I have switched to using std::thread
rather than
tinythread++.
March 1 2020 Version 0.1.6 was rejected from CRAN due to undefined behavior issues that originate from RcppAnnoy and RcppParallel. I am hopeful that the Annoy behavior is fixed and a suitable version of RcppAnnoy will be released onto CRAN eventually. The RcppParallel issues originate with the use of tbb and seems much harder to deal with. As there is no way to use RcppParallel without tbb yet, I am temporarily replacing the use of RcppParallel with just a subset of the code needed to run parallel for loops with the tinythread++ library.
December 4 2019 Version 0.1.5 released on CRAN. This fixes a couple of crash bugs, including one where the R API was being called from inside a thread. This may have been causing the issues seen by users of monocle and seurat.
September 23 2019 Version 0.1.4 released on CRAN. This
ensures compatibility with RcppAnnoy 0.0.13 when using
load_uwot
.
April 6 2019. uwot is now on CRAN. Also, some
minor-to-horrible bugs in the lvish
perplexity routine have
been fixed.
For visualization purposes, it seems reasonable to use the old PRNG
(pcg_rand = FALSE
), along with multiple threads during SGD
(n_sgd_threads = "auto"
), and the UMAP gradient
approximation (approx_pow = TRUE
), which combined will show
a very noticeable speed up during optimization. I have added a new
parameter, fast_sgd
, which if set to TRUE
,
sets these options for you.