Skip to content
/ Spidr Public
forked from alxvth/Spidr

Library to incorporate spatial information in dimensionality reduction methods for high-dimension images

License

Notifications You must be signed in to change notification settings

biovault/Spidr

 
 

Repository files navigation

Spatial Information in Dimensionality Reduction (Spidr)

DOI

Introduces spatial neighborhood information in dimensionality reduction methods for high-dimensional images. Extends t-SNE such that similarities are based on a point's spatial neighborhood instead of only the high-dimensional point itself (see python_wrapper\example\example_multiple.py for examples with UMAP and MDS).

To clone the repo and its external submodules (hnswlib, eigen, glfw, spdlog, pybind11, HDILib):

git clone --recurse-submodule https://github.com/biovault/Spidr/

Currently, tested on Windows 10 with Visual Studio 2019. Use cmake for setting up the project:

mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -A x64

The standard cpp implementation uses the t-SNE implementation from the HDILib and Hnswlib for approximated nearest neighbor search. Other DR techniques might also be used, as shown in the python example below. To get around several HDILib build dependencies, this project uses the HDILibSlim, a version of the HDILib without dependencies.

On linux systems you need to make sure that some dependencies are installed, e.g. on Ubuntu:

sudo apt install libxinerama-dev libxcursor-dev xorg-dev libglu1-mesa-dev

Usage

By default, the cmake project creates two targets in addition to the library:

  • See example/SpidrExample.cpp for an example on how to use the library in cpp. Set the cmake option CREATE_EXAMPLE=OFF to not create this target.
  • See python_wrapper for install intructions and an example on how to use the library in python. The example showcases spatially informed t-SNE, UMAP and MDS embeddings. Set cmake option CREATE_PYTHON_WRAPPER=OFF to not create this target.

Dependencies

All dependencies are either managed by vcpkg or are submodules of this repo. If you want to build the HDILib yourself, set the cmake option BUILD_HDILIB=OFF and provide the variables HDILIB_ROOT, FLANN_ROOT, LZ4_ROOT. See the HDILib documentation for more detail on the HDILib and it's dependencies.

References

This library implements the methods presented in Incorporating Texture Information into Dimensionality Reduction for High-Dimensional Images (2022), published at PacificVis 2022. A preprint is available on arXiv 2202.09179, the conference talk recording and other supplemental material are available here.

@InProceedings { VVLEH22,
  author       = "Vieth, Alexander and Vilanova, Anna and Lelieveldt, Boudewijn P.F. and Eisemann, Elmar and H\öllt, Thomas",
  title        = "Incorporating Texture Information into Dimensionality Reduction for High-Dimensional Images",
  booktitle    = "2022 15th IEEE Pacific Visualization Symposium (PacificVis)",
  pages        = "11-20",
  year         = "2022",
  doi          = "10.1109/PacificVis53943.2022.00010",
  keywords     = "Mathematics of computing, Dimensionality reduction,  Human-centered computing, Visualization techniques, Human-centered computing, Visual analytics",
  url          = "http://graphics.tudelft.nl/Publications-new/2022/VVLEH22"
}

@software{alexander_vieth_2022_6120880,
  author       = {Alexander Vieth},
  title        = {biovault/Spidr: PacificVis 2022},
  month        = feb,
  year         = 2022,
  publisher    = {Zenodo},
  version      = {v0.1},
  doi          = {10.5281/zenodo.6120880},
  url          = {https://doi.org/10.5281/zenodo.6120880}
}

About

Library to incorporate spatial information in dimensionality reduction methods for high-dimension images

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 87.0%
  • Python 10.1%
  • CMake 2.9%