An open API service indexing awesome lists of open source software.

https://github.com/mlampros/nmslibr

Non Metric Space ( Approximate ) Library in R
https://github.com/mlampros/nmslibr

approximate-nearest-neighbor-search nmslib non-metric python r reticulate

Last synced: 2 months ago
JSON representation

Non Metric Space ( Approximate ) Library in R

Awesome Lists containing this project

README

        

[![tic](https://github.com/mlampros/nmslibR/workflows/tic/badge.svg?branch=master)](https://github.com/mlampros/nmslibR/actions)
[![codecov.io](https://codecov.io/github/mlampros/nmslibR/coverage.svg?branch=master)](https://codecov.io/github/mlampros/nmslibR?branch=master)
[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/nmslibR)](http://cran.r-project.org/package=nmslibR)
[![Downloads](http://cranlogs.r-pkg.org/badges/grand-total/nmslibR?color=blue)](http://www.r-pkg.org/pkg/nmslibR)
Buy Me A Coffee
[![Dependencies](https://tinyverse.netlify.com/badge/nmslibR)](https://cran.r-project.org/package=nmslibR)

## nmslibR (Non Metric Space Library in R)

The **nmslibR** package is a wrapper of the [Non-Metric Space Library (NMSLIB)](https://github.com/nmslib/nmslib) *python* package. More details on the functionality of the *nmslibR* package can be found in the [blog-post](http://mlampros.github.io/2018/02/27/the_nmslibR_package/) and in the package Documentation.


**Reference:**

https://github.com/nmslib/nmslib

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


### **System Requirements**


* Python (>= 2.7)


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,


```R

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,


```R

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,

```R

brew upgrade python

```


Install the requirements,


```R

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),


```R

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

```


and then,


```R

reticulate::py_discover_config()

```


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



#### **Windows OS** (the instructions were tested with the version 1.0.0 of the R package, thus use with caution)


First download of [get-pip.py](https://bootstrap.pypa.io/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 ),


```R

C:\Python36;C:\Python36\Scripts

```


Install the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017)


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


```R

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](https://cmake.org/download/).
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,


```R

pip3 install --upgrade pybind11

pip3 install nmslib

```


### **Installation of the nmslibR package**


To install the package from CRAN use,


```R

install.packages('nmslibR')

```

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


```R

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

```


Use the following link to report bugs/issues,


[https://github.com/mlampros/nmslibR/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](https://CRAN.R-project.org/package=nmslibR/citation.html):


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