libmg
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
Datasetobject with theGraphinstances to process. - Define dictionaries of
Psi,Phi,Sigmaobjects as needed by your application. - Define a
CompilerConfigthat is adequate for the graphs in yourDataset - Create a
MGCompilerusing the dictionaries and theCompilerConfig - Create an adequate
Loaderfor yourDataset: use theSingleGraphLoaderif your dataset contains a single graph and use theMultipleGraphLoaderotherwise. - 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
to run your model on the dataset.for x in loader.load(): output = model(x) - 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
Metadata
Release files for libmg 2.1.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| libmg-2.1.11.tar.gz | 877.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| libmg-2.1.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / libmg-2.1.11.tar.gz
| Download URL | libmg-2.1.11.tar.gz |
|---|---|
| Size | 877.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f489a307ab37383872dd754d51376de211f7fe4f4a55d332c998a7e816a3bb28
|
|
BLAKE2b-256 checksum How to use checksums |
66ba8f5404d0f5be30ebcd1b7dc637bae891846e62c64c55ed5f7bac09421ce1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2025.
Transparency logRelease files / libmg-2.1.11-py3-none-any.whl
| Download URL | libmg-2.1.11-py3-none-any.whl |
|---|---|
| Size | 893.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dfbf63ebaa6b4c426ee4261cee422e26e0abb64d4e74e8b12fa797c71a68abc9
|
|
BLAKE2b-256 checksum How to use checksums |
4032bc9b0162dca6d54412fc58067ba60ad9a9f666be2f5c7f101ab3971f8848
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2025.
Transparency log