Skip to main content

An implementation of Stochastic Bloc model and Latent Block model efficient with sparse matrices.

Project description

sparsebm: a python implementation for the Latent Bloc Model (LBM) and Stochastic Bloc Model (SBM) for an efficient analysis of large graphs.

Installing

From pypi:

pip3 install sparsebm

To use GPU acceleration:

pip3 install sparsebm[gpu]

Or

pip3 install sparsebm
pip3 install cupy

Example

Generate SBM Synthetic graph

  • Generate a synthetic graph to analyse with SBM:
import numpy as np
from sparsebm import generate_bernouilli_SBM
#
# Define the properties of your graph
#
number_of_nodes = 10 ** 3
number_of_clusters = 4
cluster_proportions = np.ones(number_of_clusters) / number_of_clusters
connection_probabilities = np.array([[0.05, 0.018, 0.006, 0.0307], [0.018, 0.037, 0, 0], [0.006, 0, 0.055, 0.012], [0.0307, 0, 0.012, 0.043]])
#
# The graph is generated
#
data = generate_bernouilli_SBM(number_of_nodes, number_of_clusters, connection_probabilities, cluster_proportions, symetric=True)
graph, cluster_indicator, = (data["X"], data["Y"])

Infere with sparsebm SBM_bernouilli:

  • Use the bernouilli Stochastic Bloc Model:
    from sparsebm import SBM_bernouilli

    model = SBM_bernouilli(
        number_of_clusters,
        gpu_number=None, # Or give the desired GPU index.
        symetric=True,
    )

    model.fit(graph)

    print("Labels:")
    print(model.labels)

To use GPU acceleration, CUPY needs to be installed and replace gpu_number to the desired GPU index.

Generate LBM Synthetic graph

  • Generate a synthetic graph to analyse with LBM:
    from sparsebm import generate_bernouilli_LBM
    import numpy as np
    #
    # Define the properties of your graph
    #
    number_of_rows = 10 ** 3
    number_of_columns = 2* number_of_rows
    nb_row_clusters, nb_column_clusters = 3, 4
    row_cluster_proportions = np.ones(nb_row_clusters) / nb_row_clusters
    column_cluster_proportions = np.ones(nb_column_clusters) / nb_column_clusters
    connection_probabilities = np.array([[0.1, 0.0125, 0.0125, 0.05], [0.0125, 0.1, 0.0125, 0.05], [0, 0.0125, 0.1, 0]])
    #
    # The graph is generated
    #
    data = generate_bernouilli_LBM(
            number_of_rows,
            number_of_columns,
            nb_row_clusters,
            nb_column_clusters,
            connection_probabilities,
            row_cluster_proportions,
            column_cluster_proportions
        )
    graph, row_cluster_indicator, column_cluster_indicator, = (data["X"], data["Y1"], data["Y2"])

Infere with sparsebm LBM_bernouilli:

  • Use the bernouilli Latent Bloc Model:
    from sparsebm import LBM_bernouilli

    model = LBM_bernouilli(
        nb_row_clusters,
        nb_column_clusters,
        gpu_number=None, # Or give the desired GPU index.
    )
    model.fit(graph)

    print("Row labels:")
    print(model.row_labels)

    print("Column labels:")
    print(model.column_labels)

To use GPU acceleration, CUPY needs to be installed and set gpu_number the desired GPU index.

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

sparsebm-0.3.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

sparsebm-0.3-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file sparsebm-0.3.tar.gz.

File metadata

  • Download URL: sparsebm-0.3.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.7.4

File hashes

Hashes for sparsebm-0.3.tar.gz
Algorithm Hash digest
SHA256 6928493ec689e1633e58a06d4b4ae75173f222b0a1279ece16eaf9432a658bd4
MD5 32e67726a0fc16cfbc0101f5bfcd00a1
BLAKE2b-256 cea7c530d13194f569a6da05a1de2f3f4f2f3a538807e890221ff56ed83ddced

See more details on using hashes here.

File details

Details for the file sparsebm-0.3-py3-none-any.whl.

File metadata

  • Download URL: sparsebm-0.3-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.7.4

File hashes

Hashes for sparsebm-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 07dbc74727a631d1663fea2c827d23884bbdd0f8e696d67721506f1abf2066ae
MD5 75ef58acc42b8f26d8f556586a3165ad
BLAKE2b-256 ca4ffd8ae1590f0013069485c9343145b3f7dea769cd94836a60bc768e93b642

See more details on using hashes here.

Supported by

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