Skip to main content

The Python implementation of the μG language for programming graph neural networks

Project description

libmg

Tests PyPI - Version Checked with mypy License: MIT PyPI - Python Version tensorflow

libmg is a Python library for compiling μG expressions into TensorFlow model. It allows the parsing, unparsing, normalization, compilation of μG expressions. It also provides functionalities to visualize graphs and model outputs.

Pre-requisites

  • A Linux operating system (preferably Ubuntu 16.04 or later as per the TensorFlow recommendation).
  • Python 3.11 environment.

The library can run both on the CPU or the GPU. To enable the GPU, the specific dependencies needed are those of TensorFlow 2.12, that is:

  • GCC 9.3.1
  • Bazel 5.3.0
  • NVIDIA GPU drivers version 450.80.02 or higher
  • CUDA 11.8
  • cuDNN 8.6
  • (Optional) TensorRT 7

Installation

libmg can be installed via pip or from source.

Pip installation

libmg can be installed from the Python Package Index PyPI, by simply running the following command in your shell or virtual environment:

$ pip install libmg

Source installation

You can install libmg from source using git. You can start by downloading the repo archive or by cloning the repo:

git clone https://github.com/quasylab/mG.git

Then proceed by opening a shell into the mG directory you have just downloaded. To build the library you will need to use [Poetry](https://python-poetry. org/). Run the following command:

poetry install

and Poetry will install libmg in your Python environment. To install the development dependencies as well, install with:

poetry install --with tests --with docs

This will add the testing dependencies (pytest, mypy, and flake8) as well as the documentation dependencies (mkdocs and plugins).

Usage

  • Create a Dataset object with the Graph instances to process.
  • Define dictionaries of Psi, Phi, Sigma objects as needed by your application.
  • Define a CompilerConfig that is adequate for the graphs in your Dataset
  • Create a MGCompiler using the dictionaries and the CompilerConfig
  • Create an adequate Loader for your Dataset: use the SingleGraphLoader if your dataset contains a single graph and use the MultipleGraphLoader otherwise.
  • Build a model from your μG formulas using the compiler's compile(expr) method.
  • Train your model as you would in Tensorflow
  • Use output = model.predict(loader.load(), steps=loader.steps_per_epoch) or a loop like
    for x in loader.load():
        output = model(x)
    
    to run your model on the dataset.
  • Visualize the outputs on the browser using print_layer(model, inputs, layer_idx=-1)

Documentation

You can find the official documentation here.

Research articles

Matteo Belenchia, Flavio Corradini, Michela Quadrini, and Michele Loreti. 2023. Implementing a CTL Model Checker with μG, a Language for Programming Graph Neural Networks. In Formal Techniques for Distributed Objects, Components, and Systems: 43rd IFIP WG 6.1 International Conference, FORTE 2023, Held as Part of the 18th International Federated Conference on Distributed Computing Techniques, DisCoTec 2023, Lisbon, Portugal, June 19–23, 2023, Proceedings. Springer-Verlag, Berlin, Heidelberg, 37–54. https://doi.org/10.1007/978-3-031-35355-0_4. Preprint: https://www.researchgate.net/publication/371467699_Implementing_a_CTL_Model_Checker_with_mu_mathcal_G_a_Language_for_Programming_Graph_Neural_Networks

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

libmg-2.1.9.tar.gz (877.7 kB view details)

Uploaded Source

Built Distribution

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

libmg-2.1.9-py3-none-any.whl (893.6 kB view details)

Uploaded Python 3

File details

Details for the file libmg-2.1.9.tar.gz.

File metadata

  • Download URL: libmg-2.1.9.tar.gz
  • Upload date:
  • Size: 877.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for libmg-2.1.9.tar.gz
Algorithm Hash digest
SHA256 75dd2e8cfa5c0aeeb975207ebb5d13f639d07fefb9793d39999444dba6ca66d2
MD5 e8f42fe4929cf6cae51907582d79f8d0
BLAKE2b-256 1e991a0df3386f5e0666baac1c1a8fe86d824cae241a1b6fac0a0802450c18a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for libmg-2.1.9.tar.gz:

Publisher: publish.yml on quasylab/mG

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file libmg-2.1.9-py3-none-any.whl.

File metadata

  • Download URL: libmg-2.1.9-py3-none-any.whl
  • Upload date:
  • Size: 893.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for libmg-2.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 e892e37eeb04f03dbd5b227a4ae2d8b6fa802cb1fc3b4ec4b5ca1f530f811a52
MD5 41ea45ec5507e5d54685b3ea46451bbc
BLAKE2b-256 3d1428cce5e94371135899e0dc2f224276cb68eec70ef15728576ef06a149238

See more details on using hashes here.

Provenance

The following attestation bundles were made for libmg-2.1.9-py3-none-any.whl:

Publisher: publish.yml on quasylab/mG

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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