brain_size=BRAIN_SIZE,)[0] # create source growth graph with only topo rule Gs['sg_topo'] = sg(N=bc.num_brain_nodes, N_edges=bc.num_brain_edges_directed, L=np.inf, brain_size=BRAIN_SIZE)[0] # create purely geometric graph Gs['geom'] = sg(N=bc.num_brain_nodes, N_edges=bc.num_brain_edges_directed, L=L, gamma=0, brain_size=BRAIN_SIZE)[0] for key, G in Gs.items(): # calculate nodal efficiency efficiency_matrix = metrics_bd.efficiency_matrix(G) G.nodal_efficiency = np.sum(efficiency_matrix, axis=1) / (len(G.nodes()) - 1) G.counts_nodal_efficiency, G.bins_nodal_efficiency = \ np.histogram(G.nodal_efficiency, bins=BINS_NODAL_EFFICIENCY) graphss[key].append(G) if (g_ctr + 1) % 1 == 0: print('{} of {} samples completed.'.format(g_ctr + 1, N_GRAPH_SAMPLES)) # Save file so that we don't have to remake everything print('Saving file to disk...') save_array = np.array([graphss]) np.save(SAVE_FILE_NAME, save_array) print('File "{}" saved successfully'.format(SAVE_FILE_NAME))
cbar_ax.imshow(np.vstack((jet_grad, jet_grad)), aspect='auto', cmap=cm.jet) fig.savefig(SAVE_FILE_NAME_IN_OUT, dpi=300) fig.savefig(SAVE_FILE_NAME_IN_OUT_PNG, dpi=300) # plot clustering vs degree and nodal efficiency fig, axs = plt.subplots(1, 2, figsize=(8, 3.75), tight_layout=True, facecolor='white') cc_full = nx.clustering(G.to_undirected()) deg_full = nx.degree(G.to_undirected()) cc = [cc_full[node] for node in nodes] deg = [deg_full[node] for node in nodes] # calculate nodal efficiency G.efficiency_matrix = metrics_bd.efficiency_matrix(G) nodal_efficiency = np.sum(G.efficiency_matrix, axis=1) / (len(G.nodes()) - 1) labels = ('a', 'b') axs[0].scatter(deg, cc, c=node_ages, cmap=cm.jet, lw=0) axs[0].set_xlim(0, 150) axs[0].set_ylim(-0.025, 1.025) axs[0].set_xlabel('Degree') axs[0].set_ylabel('Clustering coefficient') axs[0].locator_params(axis='x', nbins=6) # Add colorbar ax0_bbox = axs[0].get_position() ax0_yCenter = np.mean([ax0_bbox.y0, ax0_bbox.y1]) cbar_ax_rect = (ax0_bbox.xmax - 0.05, ax0_yCenter - 0.065,
Gs['sg_topo'] = sg(N=bc.num_brain_nodes, N_edges=bc.num_brain_edges_directed, L=np.inf, brain_size=BRAIN_SIZE)[0] # create purely geometric graph Gs['geom'] = sg(N=bc.num_brain_nodes, N_edges=bc.num_brain_edges_directed, L=L, gamma=0, brain_size=BRAIN_SIZE)[0] for key, G in Gs.items(): # calculate nodal efficiency efficiency_matrix = metrics_bd.efficiency_matrix(G) G.nodal_efficiency = np.sum(efficiency_matrix, axis=1) / (len(G.nodes()) - 1) G.counts_nodal_efficiency, G.bins_nodal_efficiency = \ np.histogram(G.nodal_efficiency, bins=BINS_NODAL_EFFICIENCY) graphss[key].append(G) if (g_ctr + 1) % 1 == 0: print('{} of {} samples completed.'.format(g_ctr + 1, N_GRAPH_SAMPLES)) # Save file so that we don't have to remake everything print('Saving file to disk...') save_array = np.array([graphss])
# create directed ER graph print('generating directed ER graph...') G_er = nx.erdos_renyi_graph(bc.num_brain_nodes, bc.p_brain_edge_directed, directed=True) # create pgpa graph print('generating model...') G_pgpa, _, _ = pgpa(N=bc.num_brain_nodes, N_edges=bc.num_brain_edges_directed, L=LENGTH_SCALE) print('calculating efficiencies') # calculate local efficiency distribution for ctr, G in enumerate((G_brain, G_er, G_pgpa)): print('for graph {}'.format(ctr)) G.efficiency = metrics.efficiency_matrix(G) G.avg_local_efficiency = G.efficiency.sum(axis=1) / (bc.num_brain_nodes - 1) # plot histograms of all three efficiency matrices fig, axs = plt.subplots(1, 2, facecolor=FACE_COLOR, figsize=FIG_SIZE, tight_layout=True) print('making histograms') axs[0].hist([G_brain.efficiency[G_brain.efficiency >= 0], G_er.efficiency[G_er.efficiency >= 0], G_pgpa.efficiency[G_pgpa.efficiency >= 0]], bins=20, normed=True, lw=0, color=(COLORS['brain'], COLORS['er'], COLORS['pgpa'])) axs[1].hist([G_brain.avg_local_efficiency, G_er.avg_local_efficiency, G_pgpa.avg_local_efficiency],
fig.savefig(SAVE_FILE_NAME_IN_OUT_PNG, dpi=300) # plot clustering vs degree and nodal efficiency fig, axs = plt.subplots(1, 2, figsize=(8, 3.75), tight_layout=True, facecolor='white') cc_full = nx.clustering(G.to_undirected()) deg_full = nx.degree(G.to_undirected()) cc = [cc_full[node] for node in nodes] deg = [deg_full[node] for node in nodes] # calculate nodal efficiency G.efficiency_matrix = metrics_bd.efficiency_matrix(G) nodal_efficiency = np.sum(G.efficiency_matrix, axis=1) / (len(G.nodes()) - 1) labels = ('a', 'b') axs[0].scatter(deg, cc, c=node_ages, cmap=cm.jet, lw=0) axs[0].set_xlim(0, 150) axs[0].set_ylim(-0.025, 1.025) axs[0].set_xlabel('Degree') axs[0].set_ylabel('Clustering coefficient') axs[0].locator_params(axis='x', nbins=6) # Add colorbar ax0_bbox = axs[0].get_position() ax0_yCenter = np.mean([ax0_bbox.y0, ax0_bbox.y1]) cbar_ax_rect = (ax0_bbox.xmax - 0.05, ax0_yCenter - 0.065, 0.03, .35)