Skip to content

Edges Eraser

PyPI PyPI - Python Version PyPI - License

Coookiecutter - Wolt


Documentation: https://devmessias.github.io/edgeseraser

Source Code: https://github.com/devmessias/edgeseraser

PyPI: https://pypi.org/project/edgeseraser/


What is Edges Eraser?

This pkg aims to implement serveral filtering methods for (un)directed graphs.

Edge filtering methods allows to extract the backbone of a graph or sampling the most important edges. You can use edge filtering methods as a preprocessing step aiming to improve the performance/results of graph algorithms or to turn a graph visualtzation more asthetic.

Example

import networkx as nx
import edgeseraser as ee

g = nx.erdos_renyi_graph(100, 0.1)
ee.noise_score.filter_nx_graph(g)

g # filtered graph

Available methods and details

Method Description suitable for limitations/restrictions/details
Noise Score Filters edges with high noise score. Paper:1 Directed, Undirected, Weighted Very good and fast! 4
Disparity Dirichlet process filter (stick-breaking) Paper:2 Directed, Undirected, Weighted There are some criticism regarding the use in undirected graphs3
[Pólya-Urn] Filters edges with Pólya-Urn method. Paper:5 Directed, Undirected, Integer Weighted

Installation

pip install edgeseraser

Development

  • Clone/Fork this repository
git clone https://github.com/devmessias/edgeseraser
  • Requirements:
  • Poetry
  • Python 3.7+
make install
make init

Testing

make test

To run the static analysis, use the following command:

make mypy

Documentation

The documentation is automatically generated from the content of the docs directory and from the docstrings of the public signatures of the source code. The documentation is updated and published as a Github project page automatically as part each release.

To see the current state of the documentation in your browser, use the following command:

make docs-serve

The above command will start a local server on port 8000. Any changes to the documentation and docstrings will be automatically reflected in your browser.

Pre-commit

Pre-commit hooks run all the auto-formatters (e.g. black, isort), linters (e.g. mypy, flake8), and other quality checks to make sure the changeset is in good shape before a commit/push happens.

If you want e.g. want to run all checks manually for all files:

make pre-commit