Skip to main content

PyBNesian is a Python package that implements Bayesian networks.

Project description

build Documentation Status PyPI

PyBNesian

  • PyBNesian is a Python package that implements Bayesian networks. Currently, it is mainly dedicated to learning Bayesian networks.

  • PyBNesian is implemented in C++, to achieve significant performance gains. It uses Apache Arrow to enable fast interoperability between Python and C++. In addition, some parts are implemented in OpenCL to achieve GPU acceleration.

  • PyBNesian allows extending its functionality using Python code, so new research can be easily developed.

Implementation

Currently PyBNesian implements the following features:

Models

  • Bayesian networks.

  • Conditional Bayesian networks (see section 5.6 of [4]).

  • Dynamic Bayesian networks.

which can have different types of CPDs:

  • Multinomial.

  • Linear Gaussian.

  • Conditional kernel density estimation (ratio of two kernel density estimation models). Accelerated with OpenCL.

with this combinations of CPDs, we implement the following types of networks (which can also be Conditional or Dynamic):

  • Discrete networks.

  • Gaussian networks.

  • Semiparametric networks [2].

  • Hybrid networks (conditional linear Gaussian networks and semiparametric networks) [3].

Graphs

  • DAGs.

  • Directed graphs.

  • Undirected graphs.

  • Partially directed graphs.

Graph classes implement useful functionalities for probabilistic graphical models, such as moving between DAG-PDAG representation or fast access to root and leaves.

Learning

It implements different structure learning algorithms:

  • Greedy hill-climbing (for Bayesian networks and Conditional Bayesian networks).

  • PC-stable (for Bayesian networks and Conditional Bayesian networks).

  • MMPC (for Bayesian networks and Conditional Bayesian networks).

  • MMHC (for Bayesian networks and conditional Bayesian networks).

  • DMMHC (for dynamic Bayesian networks).

The score and search algorithms can be used with the following scores:

  • BIC.

  • BGe.

  • BDe.

  • Cross-validation likelihood.

  • Holdout likelihood.

  • Cross-validated likelihood with validation dataset. This score combines the cross-validation likelihood with a validation dataset to control the overfitting.

and the following the following learning operators:

  • Arc operations: add arc, remove arc, flip arc.

  • Change Node Type (for semiparametric Bayesian networks).

The following independence tests are implemented for the constraint-based algorithms:

  • Chi-square test.

  • partial correlation test t-test.

  • A likelihood-ratio test based on mutual information assuming a Gaussian distribution for the continuous data.

  • CMIknn [5].

  • RCoT [6].

It also implements the parameter learning:

  • Maximum Likelihood Estimator.

Inference

Not implemented right now, as the priority is the learning algorithms. However, all the CPDs and models have a sample() method, which can be used to create easily an approximate inference engine based on sampling.

Serialization

All relevant objects (graphs, CPDs, Bayesian networks, etc) can be saved/loaded using the pickle format.

Other implementations

PyBNesian exposes the implementation of other models or techniques used within the library.

  • Apply cross-validation to a dataset.

  • Apply holdout to a dataset.

  • Kernel Density Estimation. Accelerated with OpenCL.

  • K-d Tree. (implemented but not exposed yet).

Weighted sums of chi-squared random variables:

  • Hall-Buckley-Eagleson approximation. (implemented but not exposed yet).

  • Lindsay-Pilla-Basak approximation. (implemented but not exposed yet).

Usage example

>>> from pybnesian import GaussianNetwork, LinearGaussianCPD
>>> # Create a GaussianNetwork with 4 nodes and no arcs.
>>> gbn = GaussianNetwork(['a', 'b', 'c', 'd'])
>>> # Create a GaussianNetwork with 4 nodes and 3 arcs.
>>> gbn = GaussianNetwork(['a', 'b', 'c', 'd'], [('a', 'c'), ('b', 'c'), ('c', 'd')])

>>> # Return the nodes of the network.
>>> print("Nodes: " + str(gbn.nodes()))
Nodes: ['a', 'b', 'c', 'd']
>>> # Return the arcs of the network.
>>> print("Arcs: " + str(gbn.nodes()))
Arcs: ['a', 'b', 'c', 'd']
>>> # Return the parents of c.
>>> print("Parents of c: " + str(gbn.parents('c')))
Parents of c: ['b', 'a']
>>> # Return the children of c.
>>> print("Children of c: " + str(gbn.children('c')))
Children of c: ['d']

>>> # You can access to the graph of the network.
>>> graph = gbn.graph()
>>> # Return the roots of the graph.
>>> print("Roots: " + str(sorted(graph.roots())))
Roots: ['a', 'b']
>>> # Return the leaves of the graph.
>>> print("Leaves: " + str(sorted(graph.leaves())))
Leaves: ['d']
>>> # Return the topological sort.
>>> print("Topological sort: " + str(graph.topological_sort()))
Topological sort: ['a', 'b', 'c', 'd']

>>> # Add an arc.
>>> gbn.add_arc('a', 'b')
>>> # Flip (reverse) an arc.
>>> gbn.flip_arc('a', 'b')
>>> # Remove an arc.
>>> gbn.remove_arc('b', 'a')

>>> # We can also add nodes.
>>> gbn.add_node('e')
4
>>> # We can get the number of nodes
>>> assert gbn.num_nodes() == 5
>>> # ... and the number of arcs
>>> assert gbn.num_arcs() == 3
>>> # Remove a node.
>>> gbn.remove_node('b')

>>> # Each node has an unique index to identify it
>>> print("Indices: " + str(gbn.indices()))
Indices: {'e': 4, 'c': 2, 'd': 3, 'a': 0}
>>> idx_a = gbn.index('a')

>>> # And we can get the node name from the index
>>> print("Node 2: " + str(gbn.name(2)))
Node 2: c

>>> # The model is not fitted right now.
>>> assert gbn.fitted() == False

>>> # Create a LinearGaussianCPD (variable, parents, betas, variance)
>>> d_cpd = LinearGaussianCPD("d", ["c"], [3, 1.2], 0.5)

>>> # Add the CPD to the GaussianNetwork
>>> gbn.add_cpds([d_cpd])

>>> # The CPD is still not fitted because there are 3 nodes without CPD.
>>> assert gbn.fitted() == False

>>> # Let's generate some random data to fit the model.
>>> import numpy as np
>>> np.random.seed(1)
>>> import pandas as pd
>>> DATA_SIZE = 100
>>> a_array = np.random.normal(3, np.sqrt(0.5), size=DATA_SIZE)
>>> c_array = -4.2 - 1.2*a_array + np.random.normal(0, np.sqrt(0.75), size=DATA_SIZE)
>>> d_array = 3 + 1.2 * c_array + np.random.normal(0, np.sqrt(0.5), size=DATA_SIZE)
>>> e_array = np.random.normal(0, 1, size=DATA_SIZE)
>>> df = pd.DataFrame({'a': a_array,
...                    'c': c_array,
...                    'd': d_array,
...                    'e': e_array
...                })

>>> # Fit the model. You can pass a pandas.DataFrame or a pyarrow.RecordBatch as argument.
>>> # This fits the remaining CPDs
>>> gbn.fit(df)
>>> assert gbn.fitted() == True

>>> # Check the learned CPDs.
>>> print(gbn.cpd('a'))
[LinearGaussianCPD] P(a) = N(3.043, 0.396)
>>> print(gbn.cpd('c'))
[LinearGaussianCPD] P(c | a) = N(-4.423 + -1.083*a, 0.659)
>>> print(gbn.cpd('d'))
[LinearGaussianCPD] P(d | c) = N(3.000 + 1.200*c, 0.500)
>>> print(gbn.cpd('e'))
[LinearGaussianCPD] P(e) = N(-0.020, 1.144)

>>> # You can sample some data
>>> sample = gbn.sample(50)

>>> # Compute the log-likelihood of each instance
>>> ll = gbn.logl(sample)
>>> # or the sum of log-likelihoods.
>>> sll = gbn.slogl(sample)
>>> assert np.isclose(ll.sum(), sll)

>>> # Save the model, include the CPDs in the file.
>>> gbn.save('test', include_cpd=True)

>>> # Load the model
>>> from pybnesian import load
>>> loaded_gbn = load('test.pickle')

>>> # Learn the structure using greedy hill-climbing.
>>> from pybnesian import hc, GaussianNetworkType
>>> # Learn a Gaussian network.
>>> learned = hc(df, bn_type=GaussianNetworkType())
>>> learned.num_arcs()
2

Dependencies

  • Python 3.8, 3.9, 3.10, 3.11 and 3.12.

The library has been tested on Ubuntu 16.04/20.04/22.04 and Windows 10/11, but should be compatible with other operating systems.

Libraries

The library depends on NumPy, Apache Arrow, pybind11, NLopt, libfort and Boost.

Installation

PyBNesian can be installed with pip:

pip install pybnesian

Build from Source

Prerequisites

  • Python 3.8, 3.9, 3.10, 3.11 or 3.12.
  • C++17 compatible compiler.
  • CMake.
  • Git.
  • OpenCL drivers installed.

Building

Clone the repository:

git clone https://github.com/davenza/PyBNesian.git
cd PyBNesian
git checkout v0.5.1 # You can checkout a specific version if you want
pip install .

Testing

The library contains tests that can be executed using pytest. They also require scipy and pandas installed.

pip install pytest scipy pandas

Run the tests with:

pytest

How to cite?

@article{Atienza2022Pybnesian,
    author = {David Atienza and Concha Bielza and Pedro Larrañaga},
    title = {PyBNesian: An extensible Python package for Bayesian networks},
    journal = {Neurocomputing},
    volume = {504},
    pages = {204-209},
    year = {2022}
}

References

[1] D. Atienza and C. Bielza and P. Larrañaga. PyBNesian: An extensible python package for Bayesian networks. Neurocomputing, 504, 2022, pp 204-209.

[2] D. Atienza and C. Bielza and P. Larrañaga. Semiparametric Bayesian networks. Information Sciences, 584, 2022, pp 564-582.

[3] D. Atienza and P. Larrañaga and C. Bielza. Hybrid Semiparametric Bayesian networks. TEST, 31(2), 2022, pp 299-327.

[4] D. Koller and N. Friedman, Probabilistic Graphical Models: Principles and Techniques, The MIT Press, 2009.

[5] J. Runge, Conditional independence testing based on a nearest-neighbor estimator of conditional mutual information. International Conference on Artificial Intelligence and Statistics, AISTATS 2018, 84, 2018, pp. 938–947.

[6] E. V. Strobl and K. Zhang and S., Visweswaran. Approximate kernel-based conditional independence tests for fast non-parametric causal discovery. Journal of Causal Inference, 7(1), 2019, pp 1-24.

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

pybnesian-0.5.1.tar.gz (2.4 MB view details)

Uploaded Source

Built Distributions

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

pybnesian-0.5.1-cp313-cp313-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.13Windows x86-64

pybnesian-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pybnesian-0.5.1-cp313-cp313-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pybnesian-0.5.1-cp313-cp313-macosx_10_14_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.13macOS 10.14+ x86-64

pybnesian-0.5.1-cp312-cp312-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.12Windows x86-64

pybnesian-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pybnesian-0.5.1-cp312-cp312-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pybnesian-0.5.1-cp312-cp312-macosx_10_14_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.12macOS 10.14+ x86-64

pybnesian-0.5.1-cp311-cp311-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.11Windows x86-64

pybnesian-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pybnesian-0.5.1-cp311-cp311-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pybnesian-0.5.1-cp311-cp311-macosx_10_14_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.11macOS 10.14+ x86-64

pybnesian-0.5.1-cp310-cp310-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.10Windows x86-64

pybnesian-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pybnesian-0.5.1-cp310-cp310-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pybnesian-0.5.1-cp310-cp310-macosx_10_14_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.10macOS 10.14+ x86-64

pybnesian-0.5.1-cp39-cp39-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.9Windows x86-64

pybnesian-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pybnesian-0.5.1-cp39-cp39-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pybnesian-0.5.1-cp39-cp39-macosx_10_14_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.9macOS 10.14+ x86-64

pybnesian-0.5.1-cp38-cp38-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.8Windows x86-64

pybnesian-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pybnesian-0.5.1-cp38-cp38-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

pybnesian-0.5.1-cp38-cp38-macosx_10_14_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.8macOS 10.14+ x86-64

File details

Details for the file pybnesian-0.5.1.tar.gz.

File metadata

  • Download URL: pybnesian-0.5.1.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pybnesian-0.5.1.tar.gz
Algorithm Hash digest
SHA256 d2c56480457b33246aa4de4fa49339b5a4123f718c4e9c913f35fb7e0f7b72dc
MD5 72dcb763307dd7673f2a9d55aa51f28f
BLAKE2b-256 c9c1efd4a2b2f96272e46a48b70805be2e3ce7bf18c1a2a1e60794f359648aa1

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pybnesian-0.5.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pybnesian-0.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c7a1eab9ed7e7f2ce3284b32ca510c1f3a8059bf211cf4a6c36efdabe093300d
MD5 5d3f8c2e6562e1e3049ad2e2eb97abbc
BLAKE2b-256 28a98b1ea411041bac5fb33501f22bcd7caa57c44fa692ccf49c89e48633483a

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 59bb97f1ca11e0e4a2a66881717d926d2208ceb568f4d9e8747a235464ae9625
MD5 ee572859e520baca0eb7335aab3a3b14
BLAKE2b-256 6a2a45e5559462159bc0f56af8c38a1a59578fbee3eb66879686ba6df0323a6e

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e919c10edbf05c8489acfb8d31e1613620ad6aa5f16aa200447b19bf731368c
MD5 aae59ebaaefa7014ffb9d95ba25a78b3
BLAKE2b-256 3ceb963df9cbb958425fed2a334732deae745a3adad05140f6d41804986701e4

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp313-cp313-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp313-cp313-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 75b4f4c431185430e7546efb9ed6dcb3b35f99687b2d4c14f23300bcf3842912
MD5 4946e5cf347a6da9aa6c3deac27a7c90
BLAKE2b-256 bdea9be76990f9378bbe19992637ca53cb0448dcb385ca7f73d8f75436d15734

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pybnesian-0.5.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pybnesian-0.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bc5615fb0eaaa65ba546818cee26f975ad9677d6e28a08d95e8cb669504fd6a6
MD5 4ca09c8bf78a267c84af055f4e029419
BLAKE2b-256 c83f99f4ea4847417607ad9735024bd83165b861265a7f1ab2f2ba4c2fa890fe

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 da3287b183121f345919ca6a56877ca8734064a7c1013c54caaa8da3df6025d9
MD5 a776f5733964e728a5a4f0ab8cf32a06
BLAKE2b-256 48f8e4df3676db4744e95d45b9c4a6faebfd30a4eac6375497adaaa796944b67

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56addb8b4c80a3d989b57246932a3cb42345daa052316f06f78047470b4e428f
MD5 1a18d087626c1b13a9d53e4fe7fc1c9b
BLAKE2b-256 7d278bc82bf979c54bad0c126dcf50b5828475ab1468d2ddfe7f54e44fc169b9

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp312-cp312-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp312-cp312-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 65ac37808e743b3db3a8343aa3c0f00ea248de982509a4a39f849ebe74e701d8
MD5 9e5576d3b6d0ff550ab7d3e4427d2d26
BLAKE2b-256 c283ba981f26db8b2e4159a33e83502709c7782a5b3ef6e721f6585e737a4bf0

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pybnesian-0.5.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pybnesian-0.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 db8628295af53c117a311558022f54edffca3069e1b7f812304aa7ed2087da83
MD5 4bf9c5478b97534351b5324b5e5a2304
BLAKE2b-256 dfb092525882f01428413e4fa205a9fe2ca71d8596125d618058b2d32ae65c79

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 481cc0887e5c67600ec62b9c2ea2e020d1c6d6c509307856d78fd936186dd17c
MD5 5d50237356e1ed364647d4e02e68e4b6
BLAKE2b-256 26d13ab534bbe4d31e06a1f1898aea095dad050f9de1ca4b6084dc8edc7458cc

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45d8b40d50d28a63a9afb251edc16218b11cef972e597f9a032e96e6d1edc3bc
MD5 e2d3d43810f9614ee3ec1ed0fa4bc74e
BLAKE2b-256 6f2cdb88460a5c1f7763bdfef2ffe8b32afc1b2ccdb7808e2032bc01d97b63c7

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp311-cp311-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 5da6b44589be649ee581f118d4c6584b8b7cd94ca03a29a6ce04c1a804e24284
MD5 f8bc1c8754fd8a24a60f0e01194012e8
BLAKE2b-256 865260c3980e731d37b04244ff367643fe3040ba343ef4bdbe39237ba2c595d5

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pybnesian-0.5.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pybnesian-0.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 29e47d2824c00d32eabe70cbb787ec6107e31144d01cfdc4a665961fe1f20392
MD5 df7e2ac9b2d9736af4d509caea4a8353
BLAKE2b-256 135516ec4b84a68fe8aebd73610d94dba3288fad5f5bb5c8178f83f4fbdf5ac2

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa251fbf4c8f601306892a8c9fc65d1dcbf660ccfdb2a0b79d05ad8f0c7f3584
MD5 a7bc80d8a54db2bdfa111982d6c892c8
BLAKE2b-256 226401978a27e4f83a761b110956b865b4593446c9eb257ff77c15eccbac9c71

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0685b546915ec89ed590de8b48485ee68a2e4f664def4fcbf6cd4163ac45b5c0
MD5 d36a973e675184d7937b1fb84b14d5e7
BLAKE2b-256 4fab00917f541241fc6389e53247d3e24ea19350580a25709edc1fe5296246c6

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 d7986f3cbf6071dd7707fef65468482cbcea8856e1296f9cf33b14f68a61effb
MD5 04f2ffd779ff4c8e47f9ad9e9fd23264
BLAKE2b-256 6f5bc88e294212a77cb2936157d04ffbcf70fa86420412906a699fc04b161a83

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pybnesian-0.5.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pybnesian-0.5.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 870504202509fa3c9829a699fe70b45f26b9bbd447a5b16621a9d4e682079ef5
MD5 dc7e4efdaf5da2f47437e3dd175d97d4
BLAKE2b-256 b05d5651c63bd5f4456f50c778265114f00b35dfee1562974466c66be10d67b2

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a5394d4b5640d0ef8d33e11197f1b481b5823484da20942262eb40956e41b65
MD5 1734b6fe4c4b10b5d3d86a0204df0fd7
BLAKE2b-256 2d173f883ecd9b0c404e96d8a135bca045c344a18fc8bb92bdd0a718034bf876

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 94b3198adf42eca79dfb01cbab9e2d1ea6d33902294a3e57f2bc02e4bd3c4f84
MD5 488595ea82b7d4739008a23f1016f149
BLAKE2b-256 00e2704ae4d005f53ef9de179dbf8f760f1921d126285658120b72f903c54d02

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 78c83d3455b9e3648f188b5645c20b2c69e8c9b3f1477cf0639360b963064563
MD5 b526c75f7c038d4ef6c31dfa2da28822
BLAKE2b-256 7dcc6af31d88cb008c8ea09042a01fa82b90fe82acfad5b8f0265b4bd18fbfbf

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pybnesian-0.5.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pybnesian-0.5.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f7e89120639737b77d99780bbcd092b5f716e0294795a33ddd0eff1395a4349d
MD5 2596b848bdc9e8fca57f48514d2064e7
BLAKE2b-256 bab1b83cfff043c3061385b468acd840b0c38bd8471112ab6a51d9ff7fc35d3b

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a25429dc619a1cbed0eeb91ac2386f0da66e7b80110ddb14b621cbbed371f3b0
MD5 da4f9e572ad5dd7f5bc6ebb40f72170a
BLAKE2b-256 08cdbca17dbf3b12fd6552d6371cfc4f93e020c4471b1947ff15d3157d94930e

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca82af5afac41f8d1c288e417c0f7c03a96066fc88c0d4da741fc95e5ca41c4e
MD5 d0a395af60d79de1cb75b62d9aa72d3f
BLAKE2b-256 3f3ee1b5fed9cd212b075267c5984f7d580d43c80120ba8317cec11f4a5345ba

See more details on using hashes here.

File details

Details for the file pybnesian-0.5.1-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pybnesian-0.5.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 f45ace628774c5ba955ba5d5870702273d35e977a2ec9eba69a072edd9b3a30b
MD5 a2ee4a1f2550b8c403f92f383d9af2e8
BLAKE2b-256 157f3065c18ff263909180a3ae02145c18a64f6cf5e04f50873972417b77aaa9

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