my tools for graph analysis
uv sync --extra test
uv run pytestSDRF now defaults to the Balanced Forman curvature defined in the cited
paper. This matters: the classic Forman curvature from
GraphRicciCurvature does not score the triangle/four-cycle additions used by
the paper's rewiring rule, so it can leave a bottleneck edge unchanged. The
classic Forman and Ollivier alternatives remain available through the optional
ricci extra on Python versions supported by that dependency.
The regression suite checks the paper's canonical cycle values (C3=1.5,
C4=1, C5=0). On networkx.barbell_graph(5, 3) with seed 0 and no edge
removal, one SDRF step adds (4, 6) and raises the selected bottleneck edge
(4, 5) from -0.6 to 0.1667. This is a structural curvature result; it is
not by itself evidence of better downstream GNN accuracy.
- Topping, Jake, et al. "Understanding over-squashing and bottlenecks on graphs via curvature." arXiv preprint arXiv:2111.14522 (2021).
- https://github.com/saibalmars/GraphRicciCurvature

