The issue of UMAP reproducibility using the uwot method has been raised before https://github.com/satijalab/seurat/issues/6722, and as noted in that PR this was discussed in a uwot issue https://github.com/jlmelville/uwot/issues/46. Specifically the observation is that OS differences in the underlying implementation of some C/C++ libraries causes very small numerical differences OSs that produce different UMAP results. An option that corrects this was added to uwot version 0.1.8 as discussed in https://github.com/jlmelville/uwot/issues/46. Given that Seurat requires uwot >0.1.10, I thought it would be useful to include this option in Seurat's RunUMAP functions.
I tested this option on two systems (Mac and CentOS). Without the new uwot.approx_pow option (setting it to FALSE) the UMAPs are different, but when setting uwot.approx_pow = TRUE the results are identical. I am not sure why https://github.com/satijalab/seurat/issues/6722 noted that approx_pow did not solve the issue -- it does solve the problem for my example. See details below for how I tested this using a simple UMAP on pbmc_small:
Dear Seurat Team,
The issue of UMAP reproducibility using the uwot method has been raised before https://github.com/satijalab/seurat/issues/6722, and as noted in that PR this was discussed in a uwot issue https://github.com/jlmelville/uwot/issues/46. Specifically the observation is that OS differences in the underlying implementation of some C/C++ libraries causes very small numerical differences OSs that produce different UMAP results. An option that corrects this was added to uwot version 0.1.8 as discussed in https://github.com/jlmelville/uwot/issues/46. Given that Seurat requires uwot >0.1.10, I thought it would be useful to include this option in Seurat's RunUMAP functions.
I tested this option on two systems (Mac and CentOS). Without the new
uwot.approx_pow
option (setting it toFALSE
) the UMAPs are different, but when settinguwot.approx_pow = TRUE
the results are identical. I am not sure why https://github.com/satijalab/seurat/issues/6722 noted thatapprox_pow
did not solve the issue -- it does solve the problem for my example. See details below for how I tested this using a simple UMAP onpbmc_small
:Running on Mac laptop
Running on CentOS
The results above show that the UMAP results are identical across OSs when
uwot.approx_pow = TRUE
only.