Skip to main content

Python Module for Directed Hypergraphs

Project description

dhgraph: Python Modlue for Directed Hypergraphs

Introduction

A directed hypergraph is a generalization of digraph. It consists of a set of vertices V and a set of hyperarcs H. A hyperarc is a pair of a nonempty subset of V (called head) and a vertex of V (called tail).

Installation

$ pip install dhgraph

Usage

Let us import dhgraph module, create an empty directed hypergraph object, and add hyperarcs as follows.

from dhgraph import DirectedHypergraph

g = DirectedHypergraph()

#   1 ---> 2
#   |      |
#   v      v
#   4----> 3

h1 = g.add_hyperarc((1,),  2)
h2 = g.add_hyperarc((1,),  4)
h3 = g.add_hyperarc((4, 2), 3)
H = {h1, h2, h3} # Set of hyperarc identifiers, used later.

# NOTE: The order of vertices in head is not important.
assert h3 == g.add_hyperarc((2, 4), 3)

# NOTE: The output of get_head() is sorted.
assert g.get_head(h3) == (2,4)
assert g.get_tail(h3) == 3

As above, add_hyperarc() has a tuple of vertex identifiers, head, as its 1st argument and a vertex identifier, tail, as its 2nd argument, and returns the identifier of a hyperarc having the head and the tail.

The vertices and the hyperarcs added so far can be obtained by get_vertices() and get_hyperarcs(), which respecitvely return a tuple of vertex identifiers and a tuple of hyperarc identifiers, as follows.

assert set(g.get_vertices())  == {1, 2, 3, 4}
assert set(g.get_hyperarcs()) == H

Hyperarcs that are incident to a vertex can be obtained by get_hyperarcs_from() and get_hyperarcs_to(), which respectively return a tuple of hyperarcs emanating from a vertex and a tuple of hyperarcs pointing to a vertex, as follows.

assert set(g.get_hyperarcs_from(1)) == {h1, h2}
assert set(g.get_hyperarcs_to(3))   == {h3}
# exceptinal cases
assert set(g.get_hyperarcs_from(3)) == set()
assert set(g.get_hyperarcs_to(1))   == set()

Vertices and hyperarcs can be assigned labels, if necessary, when they are added.

gg = DirectedHypergraph()

gg.add_vertex(1, label="A")
gg.add_vertex(2, label="B")
gg.add_vertex(3, label="C")
gg.add_vertex(4, label="D")
h1 = gg.add_hyperarc((1,),   2, label="A->B")
h2 = gg.add_hyperarc((1,),   4, label="A->D")
h3 = gg.add_hyperarc((4, 2), 3, label="B,D->C")

assert gg.get_vertex_label(4)    == "D"
assert gg.get_hyperarc_label(h3) == "B,D->C"

If you prefer to use vertex labels, call add_vertex() for all vertices to which labels are to be assigned and then call add_hyperarc(). Otherwise, add_hyperarc() will add vertices appearing in head or tail so that they have vertex identifiers as their labels.

A directed hypergraph can be rendered as follows.

gg.render(filename="sample", format="png")

As a result, sample.png will be generated. The arugments of render() are the same as those of render() of Graphviz. See User Guide of Graphviz .

Bugs/Requests/Discussions

Please report bugs and requests from GitHub Issues , and ask questions from GitHub Discussions .

License

Please see LICENSE .

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dhgraph-1.0.0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

dhgraph-1.0.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file dhgraph-1.0.0.tar.gz.

File metadata

  • Download URL: dhgraph-1.0.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for dhgraph-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0f8f74ec92b0526f98cba720a5a50cd2cb146cd6376e6858925d5806c26a577a
MD5 6abd91f87e7f3ec74026cfdda7c02454
BLAKE2b-256 add37a85fcee37d7f10a4bec6d233d985430c079ae06a30d30c49553c489e297

See more details on using hashes here.

File details

Details for the file dhgraph-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: dhgraph-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for dhgraph-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b1bc8cf74745a48702841b86beb9e6715ced74d5e1715c91ffad2e5cff4564c9
MD5 e6ab51221ade726a6d47f15f957b83e6
BLAKE2b-256 3aa602bc30698da268f96ab6a46138caec7553014f8397a1730f4d9b520b9875

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page