Metadata-Version: 2.4
Name: netemb
Version: 0.4.0
Summary: A package for the topological embedding of complex networks
Author-email: Massimiliano Zanin <massimiliano.zanin@gmail.com>
License-Expression: AGPL-3.0-only
Project-URL: Homepage, https://gitlab.com/MZanin/netemb
Project-URL: Documentation, https://gitlab.com/MZanin/netemb/-/wikis/home
Project-URL: Repository, https://gitlab.com/MZanin/netemb
Project-URL: Changelog, https://gitlab.com/MZanin/netemb/-/wikis/home/Version-History
Keywords: complex networks,topology,embedding,deep learning
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: networkx
Requires-Dist: scipy
Requires-Dist: torch
Requires-Dist: platformdirs
Requires-Dist: joblib
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: coverage; extra == "test"
Provides-Extra: all
Requires-Dist: netemb[lint,test]; extra == "all"
Dynamic: license-file

### Welcome to NetEmb

Embedding methods map complex objects into vectors of a low-dimensional space, in a way that preserves their essential structural properties. Once objects are represented as vectors, they can easily be compared, and standard machine learning and Deep Learning models can be used to classify them or to forecast their evolution. Most network embedding methods proposed in the literature are node-based, i.e. they map each node of a network to a vector. `netemb` instead embeds whole networks: each network becomes a single point of a continuous, low-dimensional space, in which the distance between two points reflects the similarity between the topologies of the corresponding networks.

The embedding is learnt from large collections of synthetic networks, created with established generative models (Erdős–Rényi, Barabási–Albert, Watts–Strogatz, modular networks, etc.) whose governing parameter is known. The Laplacian eigenvalue spectrum of each network is fed to a compact feedforward neural network, which is trained so that the distance between the embeddings of two networks of the same model matches the difference between their governing parameters; optionally, networks created by different models can also be pushed apart. Once trained, the model embeds any new network in a single forward pass. The approach works with undirected, directed and weighted networks.

The underlying concept is described in the paper:

Zanin, M. Topology-driven embedding of networks. In preparation.

This Python package is designed to simplify the training and use of such embeddings, as well as their integration into any data analysis pipeline. In this documentation, we are going to explore a few topics of interest, which are listed below.




## Setup

This package can be installed from PyPI using pip:

```bash
pip install netemb
```

This will automatically install all the necessary dependencies as specified in the
`pyproject.toml` file.




### Topics:

- [Installation and requirements.](home/Installation) Python version and packages needed to run `netemb`, and how to run its unit tests.

- [Examples of usage.](home/Examples) We recommend that you start here, to get an overview of how to use the package.

- [Core functions.](home/Core-functions) The `NetworkEmbedder` class and its methods, used to train a model, embed networks, and save and load trained models.

- [Feature extractors.](home/Feature-extractors) Functions transforming a network into the spectral representation used as input by the neural network.

- [Generators.](home/Generators) The synthetic network models used to train the embedding, and how to add your own.

- [Version history.](home/Version-History) Track the changes that have been introduced in the package through time.



## Acknowledgements

To be completed

