Skip to content

v0.6.0

Compare
Choose a tag to compare
@Jaybro Jaybro released this 13 Feb 17:37
· 318 commits to master since this release

PicoTree v0.6.0 changes:

  • Replaced std::pair<> with pico_tree::Neighbor<>.
    • Better readability of the type itself and its variables (first, second vs. index, distance).
    • std::pair<> is not a POD type or trivially copyable. This practically means it can't easily be mapped to memory (such as with pybind11).
  • Added various typedefs (usings) to the public interface of the KdTree: IndexType, ScalarType, PointsType, etc. Updated the examples to follow the same typedef style.
  • Replaced the std::deque based dynamic memory manager with a custom ListPool one.
    • At the time of writing, the performance of using an std::deque can vary quite a bit across implementations of the C++ standard. This is because (at least in part) the internal chunk sizes differ across those implementations.
    • Benchmarking on the Würzburg marketplace dataset shows that the new ListPool gives a small overall performance improvement of about 2-3%.
  • Renamed the custom visitor version of SearchNn to SearchNearest to disambiguate it from the SearchNn that looks for a single nearest neighbor.
  • The EigenAdaptor has received some updates.
    • C++11 compliant.
    • The Eigen example will now be build when the workflow is triggered.
    • Added unit tests.
  • Added PicoTree Python bindings using pybind11.
    • Supports all KdTree query types.
    • Added examples, unit tests and a GitHub workflow for the bindings.
    • Performed a mini benchmark to compare vs. the KdTrees of SciPy and Scikit-learn.