The Problem
There are many cases where one would like to compute with metric spaces. This library is designed to be lightweight and versatile.
The primary design goals are:
It should handle both Euclidean metrics (via numpy) and those defined by a provided distance function.
It should interface seamlessly with net-tree, cover tree, and greedy tree code among others.
It should have support for data collection like counting distances computed.
It should handle the caching of distances.
It should be able to use approximate distances.
It should support alternative distance comparison methods.
It should cache upper and lower bounds on distances in settings where distance comparison suffices.
Not all of these features are currently implemented.