SMQTK v0.3.0 Release Notes

This minor release primarily adds a new modular LSH nearest-neighbor index algorithm implementation. This new implementation strictly replaces the now deprecated and removed ITQNearestNeighborsIndex implementation because of its increased modularity and flexibility. The old ITQNearestNeighborsIndex implementation had been hard-coded and its previous functionality can be reproduced with the new implementation (ItqFunctor + LinearHashIndex).

The CodeIndex representation interface has also been depricated as its function has been replaced by the combination of the LSHNearestNeighborIndex implementation.

Updates / New Features since v0.2.2


  • Deprecated/Removed because of duplication with DescriptorIndex, HashIndex and LSH algorithm.

Custom LibSVM

  • Fix compiler error on Windows with Visual Studio < 2013. Log2 doesn’t exist until that VS version. Added stand-in.


  • Added initial Solr backend implementation.


  • Updated documentation to references to CodeIndex and update references to ITQNearestNeighborsIndex to LSHNearestNeighborIndex.


  • Added new HashIndex algorithm interface for efficient neighbor indexing of hash codes (bit vectors).
  • Added linear (brute force) implementation.
  • Added ball-tree implementation (uses sklearn.neighbors.BallTree)


  • Added new interface for LSH hash code generation functor.
  • Added ITQ functor (replaces old ITQNearestNeighborsIndex functionality).


  • Added generalized LSH implementation: LSHNearestNeighborIndex, which uses a combination of LshFunctor and HashIndex for modular assembly of functionality.
  • Removed deprecated ITQNearestNeighborsIndex implementation (reproducible using the new LSHNearestNeighborIndex with ItqFunctor and LinearHashIndex).


  • Added tests for DescriptorIndex abstract and in-memory implementation.
  • Removed tests for deprecated CodeIndex and ITQNearestNeighborsIndex
  • Added tests for LSHNearestNeighborIndex + high level tests using ITQ functor with linear and ball-tree hash indexes.

Tools / Scripts

  • Added optional global default config generation to
  • Updated, removing CodeIndex and adding LshFunctor and HashIndex interfaces.


  • Added cosine_distance function (inverse of cosine_similarity)
  • Updated compute_distance_kernel to be able to take numba.jit compiled functions

Web / Services

  • Added query sub-slice return option to NearestNeighborServiceServer web-app.

Fixes since v0.2.2


  • Fixed mutibility of stored descriptors in DescriptorMemoryElement implementation.

Tools / Scripts

  • Added Classifier interface plugin summarization to


  • Fixed bug with smqtk.utils.bit_utils.int_to_bit_vector[_large] when give a 0-value integer.

Web / Services

  • Fixed issue with IQR alerts not showing whitespace correctly.
  • Fixed issue with IQR reset not resetting everything, which caused the application to become unusable.