Skip to main content

Python implementation of the Scalable Spatiotemporally Varying Coefficient Modelling with Bayesian Kernelized Tensor Regression

Project description

pyBKTR

Intro

This project is a Python implementation of the BKTR algorithm presented by Mengying Lei, Aurélie Labbe & Lijun Sun (2023). The article presenting the algorithm can be found here.

BKTR stands for Scalable Spatiotemporally Varying Coefficient Modelling with Bayesian Kernelized Tensor Regression. It allows to model spatiotemporally varying coefficients using a Bayesian framework. We implemented the algorithm and more in a Python package that uses PyTorch as a tensor operation backend.

For information, an alternative R implementation of the algorithm can be found here. The Python implementation is synchronized with this repository and development is done in parallel. The synchronization of features will be done at a subrevision level (x.y.0).

An article presenting the R package in details is currently in preparation and should be available soon. The documentation for the R package is a work in progress and will be made available in the coming weeks.

Installation

Install from PyPI

The package is available on PyPI and can be installed using pip:

pip install pyBKTR

Install from source

To install the package from source and use the latest release, you can clone the repository and install it using pip and the repository url:

pip install git+https://github.com/julien-hec/pyBKTR.git

Notes

If you obtain an error message when installing the package, it may be due to the installation of the torch package. The torch package is a dependency for the pyBKTR package and there is a good chance that it could be responsible for encountered installation errors. Because of its ability to perform tensor operations on the GPU, it can sometimes be more complicated to install than other Python packages. Some of the most common problems are related to the CUDA version, the GPU driver version, that can be incompatible with a specific version of torch. We provide some guidance for the installation of torch below.

Installing torch alone

A simple way to see if pyBKTR installation problems come from the torch installation is to try to install torch alone first:

pip install torch

More information on torch installation

If you obtain an error message, we encourage you to refer to the pytorch installation documentation. This documentation provides a lot of information on how to install torch on different platforms and with different configurations. It allows for example to install torch with or without GPU support if you have GPU drivers issues.

Getting started with Colab

If you want to get started quickly with pyBKTR on Google Colab, you can use the following examples

Simple Example

To verify that everything is running smooth you can try to run a BKTR regression on the BIXI data presented in the package. (The data is already preloaded in the package in the BixiData class)

The following code will run a BKTR regression using sensible defaults on the BIXI data and print a summary of the results. To use a subset of the BIXI dataset as a simple example, we can also use the is_light argument during the BixiData initialization to only load a subset of the data (25 stations and 50 days).

from pyBKTR.bktr import BKTRRegressor
from pyBKTR.examples.bixi import BixiData

bixi_data = BixiData(is_light=True)
bktr_regressor = BKTRRegressor(
    data_df=bixi_data.data_df,
    spatial_positions_df=bixi_data.spatial_positions_df,
    temporal_positions_df=bixi_data.temporal_positions_df,
    burn_in_iter=200,
    sampling_iter=200
)
bktr_regressor.mcmc_sampling()
print(bktr_regressor.summary)

Contributing

Contributions are welcome. Do not hesitate to open an issue or a pull request if you encounter any problem or have any suggestion.

Dev Notes

Dev environment setup

If you wish to contribute to this project, we strongly recommend you to use the precommit setup created in the project. To get started, simply follow these instructions.

First, install the project locally with the development resources. If you use zsh, you might need to put single quotes around the path '.[dev]'

pip install .[dev]

Then, install the git hook scripts.

pre-commit install

Finally, everything should work fine if when run the pre-commit hooks.

pre-commit run --all-files

Documentation Generation

You should already have the dev environment setup

Pandoc needs to be installed on your local machine, follow the instructions in the following link https://pandoc.org/installing.html

From the docs folder run the following line to regenerate the static doc

sphinx-apidoc -f -o . .

then

make html

Publish to PyPI

First build the package locally

python3 -m pip install --upgrade build
python3 -m build

Then upload to PyPI

python3 -m pip install --upgrade twine
twine upload dist/*

Using the proper credentials, the package should be uploaded to PyPI and be available for download.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybktr-0.2.0.tar.gz (213.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyBKTR-0.2.0-py3-none-any.whl (221.9 kB view details)

Uploaded Python 3

File details

Details for the file pybktr-0.2.0.tar.gz.

File metadata

  • Download URL: pybktr-0.2.0.tar.gz
  • Upload date:
  • Size: 213.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.0

File hashes

Hashes for pybktr-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0fc0be9fd6de32cfd83e45461433d77c583a1f92d7874d612fdcee09bdae71d3
MD5 7c5d54f1c08432f1e47574ab80795079
BLAKE2b-256 50432504874725b88f47b415523cf02757427a022e57646ee178486226c7b13f

See more details on using hashes here.

File details

Details for the file pyBKTR-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyBKTR-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 221.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.0

File hashes

Hashes for pyBKTR-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ae02e7f5e84be0ee180b1c366402d563ef340bf2831845cedaf75bf020e46c0
MD5 4cbc89502a1972a65ef5dbd7310adc51
BLAKE2b-256 7f6ec4f2e0ec4e90a79b4f51d01df943afb6bc7ab6e86aaa46fac60a6b86a8a4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page