We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The spread of true and false news online Soroush Vosoughi, Deb Roy, Sinan Aral,*
Science 09 Mar 2018: Vol. 359, Issue 6380, pp. 1146-1151 DOI: 10.1126/science.aap9559
https://science.sciencemag.org/content/359/6380/1146.full
Do you find there is an error in Figure 1A max-breadth?
import networkx as nx import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib matplotlib.style.use('ggplot') alist = [['a', 0], ['a', 'b', 1], ['a', 'c', 3],['b', 'd', 4], ['c', 'e', 6], ['c', 'f', 7], ['d', 'g', 10], ['c', 'h', 11]] g = nx.Graph() for i in alist: if len(i) == 2: n1, t = i g.add_node(n1) else: n1, n2, t = i g.add_edge(n1, n2) pos={'a': np.array([ 0 , 0.5]), 'b': np.array([ 1, 0.55]), 'c': np.array([ 3, 0.45]), 'd': np.array([ 4, 0.55]), 'e': np.array([ 6, 0.5]), 'f': np.array([ 7, 0.4]), 'g': np.array([ 10, 0.55 ]), 'h': np.array([ 11, 0.45])} temporal_network = {} for k in range(1, len(alist)+1): elist = alist[:k] t = elist[-1][-1] temporal_network[t] = nx.Graph() for i in elist: if len(i) == 2: n1 = i[:-1][0] temporal_network[t].add_node(n1) else: n1, n2 = i[:-1] temporal_network[t].add_edge(n1, n2) def calc_size(G): num_nodes=G.number_of_nodes() return num_nodes def calc_depth(G,G_root): depth=nx.eccentricity(G,v=G_root) return depth def calc_structural_viralty(G): size = calc_size(G) if size==1: return 0 ##virality is not defined for cascades of size 1, sv=nx.average_shortest_path_length(G) #Note: this is very time-consuming for larger cascades return sv def calc_max_breadth(g, root): depth = calc_depth(g,root) if depth ==0: return 0 else: g_in_radius = [len(nx.ego_graph(g, root, radius=i).nodes())-1 for i in range(1, depth+1)] breadth_list = [i-g_in_radius[k-1] if k > 0 else i for k, i in enumerate(g_in_radius)] return np.max(breadth_list) t = list(range(np.max(ts)+1)) ts = list(temporal_network.keys()) sizes = [len(temporal_network[i].nodes()) if i in ts else None for i in t] depths = [calc_depth(temporal_network[i], 'a') if i in ts else None for i in t] viralty = [calc_structural_viralty(temporal_network[i]) if i in ts else None for i in t] breadths = [calc_max_breadth(temporal_network[i], 'a') if i in ts else None for i in t] df = pd.DataFrame(np.array([t, sizes, depths, breadths, viralty]).T, columns = ['t', 'size', 'depth', 'breadth', 'viralty'] ) df = df.fillna(method = 'ffill') plt.figure(figsize = [8, 12]) plt.subplot(511) nx.draw(g, with_labels = True, pos = pos) plt.subplot(512) plt.plot(df['t'], df['size'], 'r-') plt.ylabel('Size', fontsize = 16) plt.ylim([0, 8]) plt.subplot(513) plt.plot(df['t'], df['depth'], 'r-') plt.ylabel('Depth', fontsize = 16) plt.subplot(514) plt.plot(df['t'], df['breadth'], 'r-') plt.ylabel('Breadth', fontsize = 16) plt.subplot(515) plt.plot(df['t'], df['viralty'], 'r-') plt.ylabel('Virality', fontsize = 16) plt.xlabel('Time (minutes)', fontsize = 16) plt.show()
The text was updated successfully, but these errors were encountered:
No branches or pull requests
The spread of true and false news online
Soroush Vosoughi, Deb Roy, Sinan Aral,*
Science 09 Mar 2018: Vol. 359, Issue 6380, pp. 1146-1151 DOI: 10.1126/science.aap9559
https://science.sciencemag.org/content/359/6380/1146.full
Do you find there is an error in Figure 1A max-breadth?
The text was updated successfully, but these errors were encountered: