Skip to main content

Banded Matrices

Overview

A library providing C++ linear algebra operators (matmul, solve, ...) dedicated to banded matrices and a TensorFlow interface. This extends the set of existing TensorFlow operators which as of August 2021 only include banded_triangular_solve.

Details on the implemented operators may be found in Durrande et al.: "Banded Matrix Operators for Gaussian Markov Models in the Automatic Differentiation Era", and in Adam et al.: "Doubly Sparse Variational Gaussian Processes"

Installation

For users

To install the latest (stable) release of the toolbox from PyPI, use pip:

$ pip install banded_matrices

For contributors

This project uses Poetry to manage dependencies in a local virtual environment. To install Poetry, follow the instructions in the Poetry documentation.

To install this project in editable mode, run the commands below from the root directory of the banded_matrices repository.

poetry install

This command creates a virtual environment for this project in a hidden .venv directory under the root directory.

You must also run the poetry install command to install updated dependencies when the pyproject.toml file is updated, for example after a git pull.

The project currently supports Python 3.10, 3.11, and 3.12. If Poetry selects a different Python version, use the command below to point it at a supported interpreter before installing:

poetry env use python3.12 && poetry install

NOTE: Unlike most other Python packages, by installing the banded_matrices package from source you will trigger a compilation of the C++ TensorFlow ops library. This means that running poetry install can take a while - in the order of 5 minutes, depending on the machine you are installing onto.

Known issues

Source installs require a working C++ compiler and CMake, and the build links against the TensorFlow version installed in the project environment. If you are only using the package as a dependency, prefer installing a released wheel with pip.

Running the tests

Run these commands from the root directory of this repository. To run the full Python test suite, including pylint and Mypy, run:

poetry run task test

Alternatively, you can run just the unit tests, starting with the failing tests and exiting after the first test failure:

poetry run task quicktest

To run linting of the C++ code (using cpplint), run:

poetry run task cpplint

NOTE: Running the tests requires that the project virtual environment has been updated. See Installation.

The Secondmind Labs Community

Getting help

Bugs, feature requests, pain points, annoying design quirks, etc: Please use GitHub issues to flag up bugs/issues/pain points, suggest new features, and discuss anything else related to the use of banded_matrices that in some sense involves changing the banded_matrices code itself. We positively welcome comments or concerns about usability, and suggestions for changes at any level of design. We aim to respond to issues promptly, but if you believe we may have forgotten about an issue, please feel free to add another comment to remind us.

Slack workspace

We have a public Secondmind Labs slack workspace. Please use this invite link and join the #banded_matrices channel, whether you'd just like to ask short informal questions or want to be involved in the discussion and future development of banded_matrices.

Contributing

All constructive input is very much welcome. For detailed information, see the guidelines for contributors.

Maintainers

Banded_matrices was originally created at Secondmind Labs and is now maintained by (in alphabetical order) Vincent Adam, Artem Artemev. We are grateful to all contributors who have helped shape banded_matrices.

Banded_matrices is an open source project. If you have relevant skills and are interested in contributing then please do contact us (see "The Secondmind Labs Community" section above).

We are very grateful to our Secondmind Labs colleagues, maintainers of GPflow, GPflux, Trieste and Bellman, for their help with creating contributing guidelines, instructions for users and open-sourcing in general.

Metadata

Release files for banded-matrices 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for banded-matrices 0.2.1
File Size Uploaded Provenance Actions
banded_matrices-0.2.1.tar.gz 65.7 kB Without provenance Details for banded_matrices-0.2.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for banded-matrices 0.2.1
File Actions
banded_matrices-0.2.1-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details for banded_matrices-0.2.1-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl
banded_matrices-0.2.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for banded_matrices-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
banded_matrices-0.2.1-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for banded_matrices-0.2.1-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl
banded_matrices-0.2.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for banded_matrices-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
banded_matrices-0.2.1-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details for banded_matrices-0.2.1-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl
banded_matrices-0.2.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for banded_matrices-0.2.1-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 53.9 MB

Release files / banded_matrices-0.2.1.tar.gz

Download URL banded_matrices-0.2.1.tar.gz
Size 65.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b3bfb60d76c15c9ca1a8ff144d0f1cd6c390792c162ef76fa6ab70fac59ced67
BLAKE2b-256 checksum
How to use checksums
8c09d22d9ef3be9323be61d7f8f31b80a5a582bde68b37b24fa78d092a528ff6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / banded_matrices-0.2.1-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl

Download URL banded_matrices-0.2.1-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl
Size 17.6 MB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
541b83d658cbb19af44f17e67edc5fe86183daf6e6f775a379f20320eb0a2cad
BLAKE2b-256 checksum
How to use checksums
60f9d466be6dbf589074a1fbee93b73ae92cdf7fe74306b5d5d1356492ee798c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / banded_matrices-0.2.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL banded_matrices-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Size 331.6 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
394bde54c795ea1ec946e4a3e6400aeec50836abc895a0037ccd073e4f34cc59
BLAKE2b-256 checksum
How to use checksums
20ae9be5398d2e76d777db63e9aa76b800d79d7755934ec819d6478658fb5436
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / banded_matrices-0.2.1-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl

Download URL banded_matrices-0.2.1-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl
Size 17.6 MB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b5e5d7a264a81a1c0fdf6df6f9e5fb50d4f19b4ee28950310a98113c86bf6a86
BLAKE2b-256 checksum
How to use checksums
24b4b61c435329d828ce3962d85693e10e285c7af01393710555d6d1846f9518
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / banded_matrices-0.2.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL banded_matrices-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Size 331.6 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f175fe6b19c6d040f1873350dcc911c9d382d00e24189b6d9463de7b461f9f46
BLAKE2b-256 checksum
How to use checksums
4a4b3e42f60e4b53c5732cb53776b3be948e7e7473df493c287c07cc5e8ec696
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / banded_matrices-0.2.1-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl

Download URL banded_matrices-0.2.1-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_24_x86_64.whl
Size 17.6 MB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
603bd9e6e2982e435ff1b1e8356da7a470c026b3bf760af17ea95813d1e942a2
BLAKE2b-256 checksum
How to use checksums
a6ca64ccbbd57fb11952d18a84b9d44798248cf82e36cc69abc6d5fdb7db9736
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / banded_matrices-0.2.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL banded_matrices-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
Size 331.6 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fe8ac2766ad2d842cb747c51f0f852b06de641f48467abc82fca0e90d89a311f
BLAKE2b-256 checksum
How to use checksums
3102eaa9350048039185b9e8a645a50170c5f429bc89993f9938446953e71d28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Security for banded-matrices 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page