"""GraphAnalyzer uses some open source graph library for network analysis """ import networkx as nx class GraphAnalyzer: def __init__(self, is_directed: bool = False): self.graph = nx.DiGraph() if is_directed else nx.Graph() def add_node(self, node, **kwargs): self.graph.add_node(node, **kwargs) def add_edge(self, first_node, second_node): self.graph.add_edge(first_node, second_node) def add_edges_from_nodes(self, nodes): assert len(nodes) > 1 for first_node, second_node in zip(nodes, nodes[1:]): self.add_node(first_node, color="gray") # set default node color self.add_node(second_node, color="gray") # set default node color self.add_edge(first_node, second_node)