#graph-node #graph #abstract #implementation #bidirected

bigraph

Different representations with implemented operations on bigraphs

35 releases (5 major breaking)

5.0.0 Aug 1, 2023
4.1.0 Jun 22, 2023
3.0.0 Jun 1, 2023
2.1.1 Oct 24, 2022
0.1.0-alpha.6 Jul 22, 2020

#189 in Math

Download history 6/week @ 2023-12-15 3/week @ 2023-12-22 4/week @ 2024-01-05 7/week @ 2024-01-12 1/week @ 2024-01-19 2/week @ 2024-02-02 9/week @ 2024-02-09 48/week @ 2024-02-16 72/week @ 2024-02-23 18/week @ 2024-03-01 25/week @ 2024-03-08 27/week @ 2024-03-15 32/week @ 2024-03-22 59/week @ 2024-03-29

144 downloads per month
Used in 4 crates (2 directly)

BSD-2-Clause

89KB
2K SLoC

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.


lib.rs:

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.

Dependencies

~4.5MB
~81K SLoC