Networks.jl is an work-in-progress proposal for an alternative graph interface in Julia. It is a product of my frustations developing custom graph-like types on top of Graphs.jl. While performant, Graphs.jl has several limitations:
- No support for hyper-edges, open-edges or multi-edges.
- No easy way for delegation on custom graph types (user needs to reimplement the API).
- Vertices must always be of
Integer
type. - Basic
SimpleGraph
implementation doesn't keep vertex ids when deleting a vertex.
While experimenting with Tenet.jl, I came to the conclusion that the problem is in the fundamental design and that a package on top of the AbstractGraph
interface won't remedy it.
Networks.jl tries to fix these design issues
- Like networkx, almost any object should be able to be used as a vertex.
- Use new interfaces for new functionalities.
- Automatic delegation of interface implementations.
- No reliance on trait or interface packages.