assorthead vendors an assortment of header-only C++ libraries for compilation of downstream packages. This centralizes the acquisition and versioning of these libraries for a smoother development experience. It is primarily intended for the various BiocPy packages with C++ extensions, e.g., scranpy, singler.
Developers can install assorthead via the usual pip
commands:
pip install assorthead
We can then add all headers to the compiler's search path,
using the include_dirs
argument in the setup()
command in our setup.py
:
setup(
use_scm_version={"version_scheme": "no-guess-dev"},
ext_modules=[
Extension(
"foo.core",
[
"src/lib/foo.cpp",
"src/lib/bar.cpp",
],
include_dirs=[
assorthead.includes(),
],
language="c++",
extra_compile_args=[
"-std=c++17",
],
)
],
)
Of course, this is only relevant for developers; all going well, end users should never be aware of these details.
Name | Description |
---|---|
byteme | Lightweight file readers/writers |
aarand | Random distribution functions |
powerit | Power iterations |
kmeans | Hartigan-Wong or Lloyd k-means |
Annoy | Approximate nearest neighbor search |
hnswlib | Approximate nearest neighbor search |
knncolle | Common interface to neighbor search algorithms |
tatami | Interface for matrix representations |
qdtsne | Visualiation with t-SNE |
umappp | Visualization with UMAP |
Eigen | Matrix operations and linear algebra |
irlba | Approximate SVD via IRLBA |
WeightedLowess | Trend fitting via weighted LOWESS |
mnncorrect | Batch correction with MNNs |
The exact versions of each library can be found in extern/fetch.sh
.
This project has been set up using PyScaffold 4.5. For details and usage information on PyScaffold see https://pyscaffold.org/.