TopOMetry requires some pre-existing libraries to power its scalability and flexibility. TopOMetry is implemented in python and builds complex, high-level models inherited from scikit-learn BaseEstimator, making it flexible and easy to apply and/or combine with different workflows on virtually any domain.

  • scikit-learn - for general algorithms
  • ANNOY - for optimized neighbor index search
  • nmslib - for fast and accurate k-nearest-neighbors
  • kneed - for finding nice cuttofs
  • pyMDE - for optimizing layouts

Prior to installing TopOMetry, make sure you have cmake, scikit-build and setuptools available in your system. If using Linux:

sudo apt-get install cmake
pip3 install scikit-build setuptools

We're also going to need NMSlib for really fast approximate nearest-neighborhood search across different distance metrics. If your CPU supports advanced instructions, we recommend you install nmslib separately for better performance:

pip3 install --no-binary :all: nmslib

Then, you can install TopOMetry and its other requirements with pip:

pip3 install numpy pandas annoy scipy numba torch scikit-learn kneed pymde
pip3 install topometry

Alternatevely, clone this repo and build from source:

git clone https://github.com/davisidarta/topometry
cd topometry
pip3 install .