Edges Eraser
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