Python module for finding transitive edges in a directed acyclic graph
Reason this release was yanked:
Unstable; does not find all edges it should
Project description
tredge
This is tiny yet fast module to get set of explicitly defined transitive edges from a directed acyclic graph. Given a DAG with edges child
<--parent
represented as dictionary (keys are children, values are iterables with parents), or as iterable of iterables representing edges ((child
, parent
)), or file object pointing to tab-delimited file with 2 columns (child
, parent
), it returns set of transitive edges found there. Original intent of this package was to use it for removing redundant edges from tree structures.
Usage:
import tredge
g = {
'b': set(['a']),
'c': set(['a']),
'd': set(['b', 'c', 'a']),
'e': set(['d', 'a'])
}
result = tredge.transitive_edges(g)
print(result)
# {('d', 'a'), ('e', 'a')}
or
import tredge
g = [
('b', 'a'),
('c', 'a'),
('d', 'b'),
('d', 'c'),
('e', 'd'),
('e', 'a'),
('d', 'a')
]
result = tredge.transitive_edges(g)
print(result)
# {('d', 'a'), ('e', 'a')}
or
"""input_file.tab:
b a
c a
d b
d c
e d
e a
d a
"""
import tredge
with open('input_file.tab', mode='r', encoding='utf8') as g:
result = tredge.transitive_edges(g)
print(result)
# {('d', 'a'), ('e', 'a')}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.