예제 #1
0
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()
예제 #2
0
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()
예제 #3
0
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')
예제 #4
0
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()
예제 #5
0
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})