Metadata-Version: 2.1
Name: graph-ensembles
Version: 0.0.1
Summary: The graph ensemble package contains a set of methods to build fitness based graph ensembles from marginal information.
Home-page: https://github.com/LeonardoIalongo/graph_ensembles
Author: Leonardo Niccolò Ialongo
Author-email: leonardo.ialongo@gmail.com
License: GNU General Public License v3
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Operating System :: OS Independent
Requires-Python: >=3.0
Description-Content-Type: text/x-rst
Requires-Dist: numpy (>=1.19)
Requires-Dist: scipy (>=1.5)
Requires-Dist: numba (>=0.51)
Provides-Extra: dev
Requires-Dist: pytest (==6.0.1) ; extra == 'dev'
Requires-Dist: coverage (==5.2.1) ; extra == 'dev'
Requires-Dist: pytest-cov (==2.10.1) ; extra == 'dev'
Requires-Dist: flake8 (==3.8.3) ; extra == 'dev'
Requires-Dist: wheel (==0.35.1) ; extra == 'dev'
Requires-Dist: matplotlib (==3.3.2) ; extra == 'dev'
Requires-Dist: networkx (==2.5) ; extra == 'dev'
Requires-Dist: check-manifest (==0.44) ; extra == 'dev'
Requires-Dist: setuptools (==47.1.0twine==3.2.0) ; extra == 'dev'

=================
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:

.. code-block:: python

   pip install graph_ensembles

Usage
-----
Currently only the StripeFitnessModel is fully implemented. An example of how 
it can be used is the following. For more see the example notebooks in the 
examples folder.

.. code-block:: python

   # Define graph marginals
    out_strength = np.array([[0, 0, 2],
                            [1, 1, 5],
                            [2, 2, 6],
                            [3, 2, 1]])

    in_strength = np.array([[0, 1, 5],
                            [0, 2, 4],
                            [1, 2, 3],
                            [3, 0, 2]])

    num_nodes = 4
    num_links = np.array([1, 1, 3])

    # Initialize model
    model = ge.StripeFitnessModel(out_strength, in_strength, num_links)

    # Fit model parameters
    model.fit()

    # Return probability matrix 
    prob_mat = model.probability_matrix

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:

.. code-block:: bash

    git merge --no-ff myfeature

To build a development environment run:

.. code-block:: bash

    python3 -m venv venv 
    source venv/bin/activate 
    pip install -e '.[dev]'

For testing:

.. code-block:: bash

    pytest --cov

Credits
-------
This is a project by `Leonardo Niccolò Ialongo <https://datasciencephd.eu/students/leonardo-niccol%C3%B2-ialongo/>`_ and `Emiliano Marchese <https://www.imtlucca.it/en/emiliano.marchese/>`_, under 
the supervision of `Diego Garlaschelli <https://networks.imtlucca.it/members/diego>`_.



=======
History
=======

0.0.1 (2020-10-28)
------------------

* First release on PyPI. StripeFitnessModel available, all other model classes still dummies.



