Skip to content

Assorted C++ headers, vendored into a Python package.

License

Notifications You must be signed in to change notification settings

BiocPy/assorthead

Repository files navigation

Project generated with PyScaffold PyPI-Server Unit tests

Assorted C++ headers

Overview

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.

Quick start

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.

Available libraries

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.

Note

This project has been set up using PyScaffold 4.5. For details and usage information on PyScaffold see https://pyscaffold.org/.

About

Assorted C++ headers, vendored into a Python package.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages