nmslibR (Non Metric Space Library in R)


The nmslibR package is a wrapper of the Non-Metric Space Library (NMSLIB) python package. More details on the functionality of the nmslibR package can be found in the blog-post and in the package Documentation.


Reference:

https://github.com/nmslib/nmslib

https://github.com/nmslib/nmslib/blob/master/manual/latex/manual.pdf


System Requirements



All modules should be installed in the default python configuration (the configuration that the R-session displays as default), otherwise errors will occur during the nmslibR package installation (reticulate::py_discover_config() might be useful here).


The installation notes for Linux, Macintosh, Windows are based on Python 3.


Debian/Ubuntu


Installation of the system requirements,



sudo apt-get install python3-pip

sudo pip3 install --upgrade setuptools

sudo pip3 install -U numpy

sudo pip3 install --upgrade scipy

sudo apt-get install libboost-all-dev libgsl0-dev libeigen3-dev

sudo apt-get install cmake

pip3 install --upgrade pybind11

sudo pip3 install nmslib


Fedora


Installation of the system requirements,



dnf install python3-pip

sudo pip3 install --upgrade setuptools

sudo pip3 install -U numpy

sudo pip3 install --upgrade scipy

yum install python3-devel

yum install boost-devel

yum install gsl-devel

yum install eigen3-devel

pip3 install --upgrade pybind11

sudo pip3 install nmslib


Macintosh OSX


Upgrade python to version 3 using,


brew upgrade python


Install the requirements,



sudo pip3 install --upgrade pip setuptools wheel

sudo pip3 install -U numpy

sudo pip3 install --upgrade scipy

brew install boost

brew install eigen

brew install gsl

brew install cmake

brew link --overwrite cmake

pip3 install --upgrade pybind11

sudo pip3 install nmslib


After a successful installation of the requirements the user should open an R session and give the following reticulate command to change to the relevant (brew-python) directory (otherwise the nmslibR package won’t work properly),



reticulate::use_python('/usr/local/bin/python3')


and then,



reticulate::py_discover_config()


to validate that a user is in the python version where nmslibR is installed.



Windows OS


First download of get-pip.py for windows


Update the Environment variables ( Control Panel >> System and Security >> System >> Advanced system settings >> Environment variables >> System variables >> Path >> Edit ) by adding ( for instance in case of python 2.7 ),



C:\Python36;C:\Python36\Scripts


Install the Build Tools for Visual Studio


Open the Command prompt (console) and install / upgrade the system requirements,



pip3 install --upgrade pip setuptools wheel

pip3 install -U numpy

pip3 install --upgrade scipy


Installation of cmake


First download cmake for Windows, win64-x64 Installer. Once the file is downloaded run the .exe file and during installation make sure to add CMake to the system PATH for all users.


Then install the nmslib library,



pip3 install --upgrade pybind11

pip3 install nmslib


Installation of the nmslibR package


To install the package from CRAN use,



install.packages('nmslibR')


and to download the latest version from Github use the install_github function of the remotes package,


remotes::install_github(repo = 'mlampros/nmslibR')


Use the following link to report bugs/issues,

https://github.com/mlampros/nmslibR/issues


Citation:

If you use the code of this repository in your paper or research please cite both nmslibR and the original articles / software https://CRAN.R-project.org/package=nmslibR/citation.html:


@Manual{,
  title = {{nmslibR}: Non Metric Space (Approximate) Library in R},
  author = {Lampros Mouselimis},
  year = {2021},
  note = {R package version 1.0.6},
  url = {https://CRAN.R-project.org/package=nmslibR},
}