Metadata-Version: 2.4
Name: pypanna
Version: 0.1.0
Summary: A Playground for Approximate Nearest Neighbors Algorithms
Author-Email: Matteo Ceccarello <matteo.ceccarello@unipd.it>, Francesco Pio Monaco <francescopio.monaco@unitn.it>, Francesco Silvestri <francesco.silvestri@unipd.it>, Martin Aumüller <maau@itu.dk>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Operating System :: POSIX :: Linux
Project-URL: Homepage, https://github.com/Cecca/panna
Project-URL: Repository, https://github.com/Cecca/panna
Requires-Python: >=3.12
Requires-Dist: numpy>=1.26
Requires-Dist: fast-hdbscan>=0.3.2
Requires-Dist: h5py>=3.16.0
Requires-Dist: pandas>=3.0.6
Requires-Dist: scikit-learn>=1.9.1
Requires-Dist: numba>=0.68.0
Requires-Dist: requests>=2.34.2
Requires-Dist: tqdm>=4.70.1
Description-Content-Type: text/markdown

# PANNA: Playground for Approximate Nearest Neighbor Algorithms

This repository aims at providing useful building blocks to implement algorithms for approximate nearest neighbor search.

The repository provides mainly two things:

- A software library to build similarity search algorithms, implemented mainly as a C++ library, with python bindings
- An environment to run experiments, pinning versions and dependencies of related baselines by means of Nix flakes

## Python: installing

The library should be easily installable with the usual

```
pip install pypanna
```

If you are using `uv` to manage your dependencies

```
uv add pypanna
```

should suffice.

## C++: Building

This is, first and foremost, a header only library requiring `C++20` and depending on [`ffht`](https://github.com/FALCONN-LIB/FFHT) (vendored in `external`).
To integrate with other codebases simply place `include/panna` in your include path, while making sure that the headers of the dependency (i.e. the contents of `external`) are included as well.

That said, the repository includes tests and [examples](https://github.com/Cecca/panna/tree/main/examples), which are built using `cmake` with the usual steps

```
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
```
