In [1]:
from itertools import combinations
In [4]:
def get_directed_triads(undirected_triad):
# Get all triplets of edges
for candidate_edges in combinations(undirected_triad.items(), 3):
# Get edges between unique pair of nodes
unique_edges = set([tuple(sorted(k)) for k,v in candidate_edges])
# Only consider triad in which the tree edges use a unique pair of nodes
if len(unique_edges) == 3:
yield dict(candidate_edges)
In [5]:
undirected_triad = {
('lisa.jacobson@enron.com', 'phillip.allen@enron.com'):1,
('lisa.jacobson@enron.com', 'richard.shapiro@enron.com'):1,
('phillip.allen@enron.com', 'richard.shapiro@enron.com'):1,
('richard.shapiro@enron.com', 'phillip.allen@enron.com'):-1
}
In [6]:
for directed_triad in get_directed_triads(undirected_triad):
print(directed_triad)
In [7]:
all_directed_triads = list(get_directed_triads(undirected_triad))
all_directed_triads
Out[7]:
In [ ]: