def fire_area_analysis(fireRange, numberOfNodes, numberOfIterations): coverageList = [] for f in fireRange: small = SmallWorldBrain(numberOfNodes=numberOfNodes, averageDegree=5, rewireProbability=0.15, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=numberOfIterations, fractionToFire=f, inhibitoryEdgeMultiplier=12, fireRate=0.01, directed=False) small.execute(makeRandom=False) coverageList.append( check_coverage(brain=small, numberOfNodes=numberOfNodes)) plt.figure() plt.plot( np.linspace(0, numberOfIterations, len(coverageList)), coverageList, '.', label='Nodes=%d, ref=%d, threshold=%d, rewire=%.2f, time=%d' % (small.numberOfNodes, small.refractoryPeriod, small.neuronThreshold, small.rewireProbability, small.numberOfIterations)) plt.xlabel('Fraction of Nodes Fired Selectively') plt.ylabel('Coverage of Network') plt.legend()
def fire_rate_analysis(drivingRates, numberOfNodes, numberOfIterations): coverageList = [] for r in drivingRates: small = SmallWorldBrain(numberOfNodes=numberOfNodes, averageDegree=5, rewireProbability=0.15, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=numberOfIterations, fractionToFire=0.05, inhibitoryEdgeMultiplier=12, fireRate=r, directed=False) small.execute() coverageList.append( check_coverage(brain=small, numberOfNodes=numberOfNodes)) plt.figure() plt.plot( drivingRates, coverageList, '.', label='Nodes=%d, ref=%d, threshold=%d, rewire=%.2f, time=%d' % (small.numberOfNodes, small.refractoryPeriod, small.neuronThreshold, small.rewireProbability, small.numberOfIterations)) plt.xlabel('Driving Rate') plt.ylabel('Coverage of Network') plt.legend()
def plot_topology_EEGs(N, t, save=False, load=False, filepath=None): if load: res = np.load(filepath) elif not load: small = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=0, fireRate=0.01, directed=False) small.execute() lattice = small.get_number_of_excited_neurons() small = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0.1, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=0, fireRate=0.01, directed=False) small.execute() smallworld = small.get_number_of_excited_neurons() small = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0.8, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=0, fireRate=0.01, directed=False) small.execute() random = small.get_number_of_excited_neurons() if save: np.save(filepath, np.array([lattice, smallworld, random])) res = np.array([lattice, smallworld, random]) lattice = [] for _, ye in zip(np.arange(t), [list(i) for i in res[0]]): lattice.append(len(ye)) small = [] for _, ye in zip(np.arange(t), [list(i) for i in res[1]]): small.append(len(ye)) rand = [] for _, ye in zip(np.arange(t), [list(i) for i in res[2]]): rand.append(len(ye)) plt.figure() plt.plot(np.arange(t), np.array(lattice)/10000, label='Lattice', color='black') plt.plot(np.arange(t), np.array(small)/10000, label='Small-World', color='blue') plt.plot(np.arange(t), np.array(rand)/10000, label='Random', color='green') plt.xlabel('Timestep', size=16) plt.tick_params(labelsize=16) plt.ylabel('$N_{excited}/N_{total}$', size=16) plt.legend(prop={'size': 16}, loc='best')
def plot_coverage_variation(N, t, multiplierRegimes=[0, 35, 60]): small1 = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0.1, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=multiplierRegimes[0], fireRate=0.01, directed=False) small1.execute(movie=False) small1Array = [ len( np.unique( np.concatenate(small1.get_number_of_excited_neurons()[:i], axis=0))) / 1000 for i in np.arange(1, t) ] small2 = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0.1, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=multiplierRegimes[1], fireRate=0.01, directed=False) small2.execute(movie=False) small2Array = [ len( np.unique( np.concatenate(small2.get_number_of_excited_neurons()[:i], axis=0))) / 1000 for i in np.arange(1, t) ] small3 = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0.1, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=multiplierRegimes[2], fireRate=0.01, directed=False) small3.execute(movie=False) small3Array = [ len( np.unique( np.concatenate(small3.get_number_of_excited_neurons()[:i], axis=0))) / 1000 for i in np.arange(1, t) ] plt.figure() plt.plot(np.arange(1, t), np.array(small1Array), label='Supercritical', color='blue') plt.plot(np.arange(1, t), np.array(small2Array), label='Critical', color='red') plt.plot(np.arange(1, t), np.array(small3Array), label='Subcritical', color='black') #plt.title('Nodes: %d, <k>:%d, Refractory: %d, Threshold: %d' % (small1.numberOfNodes, small1.averageDegree, small1.refractoryPeriod, small1.neuronThreshold)) plt.xlabel('Timestep', size=16) plt.tick_params(labelsize=16) plt.ylabel('Coverage', size=16) plt.xlim([0, t]) plt.legend()
def plot_critical_regimes(N, t, multiplerRegimes=[0, 35, 60]): small1 = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0.1, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=multiplerRegimes[0], fireRate=0.01, directed=False) small1.execute(movie=False) small1Array = [] for _, ye in zip(np.arange(small1.numberOfIterations), [list(i) for i in small1.numberOfExcitedNeurons]): small1Array.append(len(ye)) ex, inhib, q1 = small1.get_effective_charge() #np.save('results/meanQ/subcritical', [ex, inhib, q1]) print('m=%d, <Q>=%.3f:' % (multiplerRegimes[0], np.mean(np.array(ex) - np.array(inhib)))) small2 = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0.1, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=multiplerRegimes[1], fireRate=0.01, directed=False) small2.execute(movie=False) small2Array = [] for _, ye in zip(np.arange(small2.numberOfIterations), [list(i) for i in small2.numberOfExcitedNeurons]): small2Array.append(len(ye)) ex2, inhib2, q2 = small2.get_effective_charge() #np.save('results/meanQ/critical', [ex2, inhib2, q2]) print('m=%d, <Q>=%.3f:' % (multiplerRegimes[1], np.mean(np.array(ex2) - np.array(inhib2)))) small3 = SmallWorldBrain(numberOfNodes=N, averageDegree=5, rewireProbability=0.1, neuronThreshold=1, refractoryPeriod=1, numberOfIterations=t, fractionToFire=0.05, inhibitoryEdgeMultiplier=multiplerRegimes[2], fireRate=0.01, directed=False) small3.execute(movie=False) small3Array = [] for _, ye in zip(np.arange(small3.numberOfIterations), [list(i) for i in small3.numberOfExcitedNeurons]): small3Array.append(len(ye)) ex3, inhib3, q3 = small3.get_effective_charge() #np.save('results/meanQ/supercritical', [ex3, inhib3, q3]) print('m=%d, <Q>=%.3f:' % (multiplerRegimes[2], np.mean(np.array(ex3) - np.array(inhib3)))) plt.figure() plt.plot(np.arange(t), np.array(small1Array) / small1.numberOfNodes, label='Supercritical', color='blue') plt.plot(np.arange(t), np.array(small2Array) / small1.numberOfNodes, label='Critical', color='red') plt.plot(np.arange(t), np.array(small3Array) / small1.numberOfNodes, label='Subcritical', color='black') #plt.title('Nodes: %d, <k>:%d, Refractory: %d, Threshold: %d' % (small1.numberOfNodes, small1.averageDegree, small1.refractoryPeriod, small1.neuronThreshold)) plt.xlabel('Timestep', size=16) plt.tick_params(labelsize=16) plt.ylabel('$N_{excited}/N_{total}$', size=16) plt.legend(prop={'size': 16})