The graph ensemble package contains a set of methods to build fitness based graph ensembles from marginal information.
Project description
Graph ensembles
The graph ensemble package contains a set of methods to build fitness based graph ensembles from marginal information. These methods can be used to build randomized ensembles preserving the marginal information provided.
Free software: GNU General Public License v3
Documentation: https://graph-ensembles.readthedocs.io.
Installation
Install using:
pip install graph_ensembles
Usage
Currently only the RandomGraph and StripeFitnessModel are fully implemented. An example of how it can be used is the following. For more see the example notebooks in the examples folder.
import graph_ensembles as ge
import pandas as pd
v = pd.DataFrame([['ING', 'NL'],
['ABN', 'NL'],
['BNP', 'FR'],
['BNP', 'IT']],
columns=['name', 'country'])
e = pd.DataFrame([['ING', 'NL', 'ABN', 'NL', 1e6, 'interbank', False],
['BNP', 'FR', 'ABN', 'NL', 2.3e7, 'external', False],
['BNP', 'IT', 'ABN', 'NL', 7e5, 'interbank', True],
['BNP', 'IT', 'ABN', 'NL', 3e3, 'interbank', False],
['ABN', 'NL', 'BNP', 'FR', 1e4, 'interbank', False],
['ABN', 'NL', 'ING', 'NL', 4e5, 'external', True]],
columns=['creditor', 'c_country',
'debtor', 'd_country',
'value', 'type', 'EUR'])
g = ge.MultiDiGraph(v, e, v_id=['name', 'country'],
src=['creditor', 'c_country'],
dst=['debtor', 'd_country'],
edge_label=['type', 'EUR'],
weight='value')
# Initialize model
model = ge.MultiFitnessModel(g)
# Fit model parameters
model.fit()
# Sample from the ensemble
model.sample()
Development
Please work on a feature branch and create a pull request to the development branch. If necessary to merge manually do so without fast forward:
git merge --no-ff myfeature
To build a development environment run:
python3 -m venv env
source env/bin/activate
pip install -e .
pip install -r requirements.txt
For testing:
pytest --cov
Credits
This is a project by Leonardo Niccolò Ialongo and Emiliano Marchese, under the supervision of Diego Garlaschelli.
History
0.3.5 (2023-02-14)
Corrected distribution files for missing models
0.3.4 (2023-02-13)
Corrected sampling with ConditionalInvariantModel
Added new weighted sampling method for aggregate graphs
0.3.3 (2023-12-25)
Added the sparse ConditionalInvariantModel
Corrected issues with CremB sampling
0.3.2 (2023-12-01)
Improved and corrected support for the computation of average nearest neighbour properties and degrees.
0.3.1 (2023-11-20)
Added to the spark module a function to compute the confusion matrix elements at various thresholds of the probability matrix.
0.3.0 (2023-11-03)
Major update of graph classes into four new categories (Graph, DiGraph, MultiGraph, MultiDiGraph) in line with Networkx.
Cleaned up models and organized in three modules (dense, sparse, spark) based on how the computations are performed and results are stored.
Introduced better inheritance through Ensemble classes based on the newly defined graph classes.
Added testing in spark and updated testing of MultiDiGraph Ensemble classes.
0.2.3 (2023-07-03)
Improved and corrected spark submodule.
0.2.2 (2023-05-11)
Created submodule spark for allowing some models to be parallelize computations using spark
0.2.1 (2021-08-03)
Added option for faster computation of average nearest neighbour properties by allowing for multiple links between the same nodes.
Added compression option in to_networkx function.
0.2.0 (2021-07-12)
Added likelihood and nearest neighbour properties.
Revisited API for measures to ensure correct recompute if necessary.
0.1.3 (2021-04-29)
Added new option for fitting the stripe model that ensures that the minimum non-zero expected degree is one
Corrected issue in expected degree calculations
0.1.2 (2021-04-07)
Added scale invariant probability functional to all models
Improved methods for convergence with change in API, xtol now a relative measure
Added pagerank and trophic depth to the library
Added methods for graph conversion to networkx
Added methods for computing the adjacency matrix as a sparse matrix
0.1.1 (2021-03-29)
Fixed bug in stripe expected degree computation
Added testing of expected degree performance
0.1.0 (2021-03-29)
Added the block model and group info to graphs
Added fast implementation of theoretical expected degrees
Fixed some compatibility issues with multiple item assignments
0.0.4 (2021-03-15)
Fixed issues with slow pandas index conversion
0.0.3 (2021-03-14)
Large changes in API with great improvements in usability
Added sampling function
Added RandomGraph model
Added Graph classes for ease of use
0.0.2 (2020-11-13)
Added steps for CI.
Corrected broken links.
Removed support for python 3.5 and 3.6
0.0.1 (2020-10-28)
First release on PyPI. StripeFitnessModel available, all other model classes still dummies.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file graph-ensembles-0.3.5.tar.gz
.
File metadata
- Download URL: graph-ensembles-0.3.5.tar.gz
- Upload date:
- Size: 278.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07203874bf88d94926176b8b99151627f9233fea42d2fe1005ee043a497c6b78 |
|
MD5 | 0f206bc586cf74c7bdc149624310fdc6 |
|
BLAKE2b-256 | 769d6e0f9399ca794c752449f71b79d66a2775e41666b4b662798454a466a367 |
File details
Details for the file graph_ensembles-0.3.5-py3-none-any.whl
.
File metadata
- Download URL: graph_ensembles-0.3.5-py3-none-any.whl
- Upload date:
- Size: 80.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d00d75879d9e9eb58df3edc2906aa929efb4196054574a442ba0b4dbae5d0458 |
|
MD5 | 28803812b2d9018c3e77033e7ada95d5 |
|
BLAKE2b-256 | 304bb8f71850a3cba59f217e99255e3ae1bac65bc72248831f629b5cd2eb7958 |