Skip to main content

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 .

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

If you're not sure about the file name format, learn more about wheel file names.

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.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page