def entropy_value(states, nodes, edges): """Compute entropy values from states, nodes and edges. It recomputes edge occurrences to node occurences. It's too much coupled with bipartite model. #TODO - decouple it """ cum_states = chain(*states) most_common = Counter(cum_states).most_common() most_common_nodes = count_nodes(nodes, edges, most_common) frequencies = (utils.get_names_and_occurrences(most_common_nodes)[1]) return entropy(frequencies)
def entropy_value(states, nodes, edges): """Compute entropy values from states, nodes and edges. It recomputes edge occurrences to node occurences. It's too much coupled with bipartite model. #TODO - decouple it """ cum_states = chain(*states) most_common = Counter(cum_states).most_common() most_common_nodes = count_nodes(nodes, edges, most_common) frequencies = (utils.get_names_and_occurrences(most_common_nodes)[1]) return entropy(frequencies)
def diffusion_on_clique(hypergraph, t_max, plot_results=False): """Simulate diffusion on corresponding clique graph""" nodes = hypergraph.nodes() hyper_edges = hypergraph.hyper_edges() clique_graph = converters.convert_to_clique_graph(nodes, hyper_edges) markov_matrix = create_markov_matrix(clique_graph.edges(), count_itself=False) edges = clique_graph.edges() most_common, most_common_nodes, states = simulate_diffusion( nodes, edges, markov_matrix, t_max) if plot_results: return plot_diffusion_results(most_common, most_common_nodes, hyper_edges, "clique") else: return utils.get_names_and_occurrences(most_common_nodes)[1]
def diffusion_on_clique(hypergraph, t_max, plot_results=False): """Simulate diffusion on corresponding clique graph""" nodes = hypergraph.nodes() hyper_edges = hypergraph.hyper_edges() clique_graph = converters.convert_to_clique_graph(nodes, hyper_edges) markov_matrix = create_markov_matrix(clique_graph.edges(), count_itself=False) edges = clique_graph.edges() most_common, most_common_nodes, states = simulate_diffusion( nodes, edges, markov_matrix, t_max) if plot_results: return plot_diffusion_results(most_common, most_common_nodes, hyper_edges, "clique") else: return utils.get_names_and_occurrences(most_common_nodes)[1]
def diffusion_on_hypergraph(hypergraph, markov_matrix, t_max, plot_results=False): """Simulate numerically diffusion on a hypergraph, Diffusion is simulated using Markov Chains. """ nodes = hypergraph.nodes() hyper_edges = hypergraph.hyper_edges() most_common, most_common_nodes, states = simulate_diffusion( nodes, hyper_edges, markov_matrix, t_max) if plot_results: return plot_diffusion_results(most_common, most_common_nodes, hyper_edges, "hypergraph") else: return utils.get_names_and_occurrences(most_common_nodes)[1]