#graph #abstract #implementation #bidirected

bigraph

Different representations with implemented operations on bigraphs

36 releases (11 stable)

5.0.1 Jan 30, 2025
5.0.0 Aug 1, 2023
4.1.0 Jun 22, 2023
3.0.0 Jun 1, 2023
0.1.0-alpha.6 Jul 22, 2020

#202 in Math

Download history 108/week @ 2025-01-31 42/week @ 2025-02-07 37/week @ 2025-02-14 30/week @ 2025-02-21 44/week @ 2025-02-28 27/week @ 2025-03-07 39/week @ 2025-03-14 7/week @ 2025-03-21 6/week @ 2025-03-28 3/week @ 2025-04-04 8/week @ 2025-04-11 6/week @ 2025-04-18 14/week @ 2025-04-25 9/week @ 2025-05-02 27/week @ 2025-05-09 285/week @ 2025-05-16

337 downloads per month
Used in 5 crates (2 directly)

BSD-2-Clause

90KB
2K SLoC

A crate to represent a bigraph. Bigraphs are graphs where each node is symmetrically mapped to a unique "mirror" node, and each edge is symmetrically mapped to a unique "mirror" edge.

Note that bigraphs come in two flavours, node- and edge-centric. A node-centric bigraph has edges that are only distinguished by their endpoints, while an edge-centric bigraph's edges are additionally distinguished by their associated data.

This crate implements a simple wrapper around the traitgraph crate, adding a vector to represent the node-mirror function. It also implements the edge-mirror function, albeit probably slower than it could be if there was also a vector to map edges.

In the context of node-centric genome graphs, nodes usually represent genome strings and a pair of mirrored nodes represent reverse complements of each other. For edge-centric genome graphs, the same holds for the edges.


Bigraph

A Rust crate to represent and operate on bigraphs.

The crate defines traits as abstractions from the concrete graph implementation. At the moment, the only implementation is done via a wrapper over petgraph, which serves as a prototype.

Dependencies

~4MB
~73K SLoC