Exemple #1
0
def voltage_correlation_from_blueconfig(sim_1,
                                        sim_2,
                                        t_start=0,
                                        t_end=1500,
                                        t_window=100,
                                        dt_window=10):
    """
    Sliding time window correlation for early preliminary analysis
    """
    gids = bluepy.Simulation(sim_1).reports.soma.gids
    if t_start == 0:
        t_start = 0.00000000001
    v_1 = bluepy.Simulation(sim_1).reports.soma.get_timeslice(t_start, t_end)
    v_2 = bluepy.Simulation(sim_2).reports.soma.get_timeslice(t_start, t_end)

    duration = t_end - t_start
    v_dt = duration / float(v_1.shape[0])

    n_bins = np.floor(
        (duration - t_window + dt_window) / dt_window).astype(int)
    correlations = np.zeros((gids.size, n_bins))
    print correlations.shape

    for i in range(n_bins):
        print i
        index_start = np.floor((i * dt_window) / v_dt).astype(int)
        index_end = np.floor((i * dt_window + t_window) / v_dt).astype(int)
        for j in range(gids.size):
            correlations[j, i] = np.corrcoef(v_1[index_start:index_end, j],
                                             v_2[index_start:index_end, j])[0,
                                                                            1]
    return correlations
def load_spike_times_spontaneous():
    bcs = iaf.get_continue_bcs(n=40)
    print bcs
    sim = bluepy.Simulation(bcs[0])
    gids = list(sim.get_circuit_target())
    df = load_spike_times(bcs, gids)
    return df
Exemple #3
0
def get_spike_counts_experiment_25_original(n_classes=30, grouping_id=0, n=30):
    bcs = get_exp_25_blueconfigs_original(n=30,
                                          n_classes=n_classes,
                                          grouping_id=grouping_id)
    df = get_spike_times_multiple(bcs)
    df = df[df['spike_time'] >= 1000]
    df = df[df['spike_time'] < 6000]
    sim = bluepy.Simulation(bcs[0])
    gids = np.sort(np.array(list(sim.get_circuit_target())))
    spikes_df = df.drop(columns=['spike_time'])
    counts_all = np.zeros((gids.size, n), dtype=np.float64)
    for i in range(n):
        x = spikes_df[spikes_df['spike_trial'] == i]
        counts_all[:, i] = np.bincount(np.array(x.index).astype(int),
                                       minlength=gids.max() + 1)[-gids.size:]
    means = counts_all.mean(axis=1)
    vars = np.var(counts_all, ddof=1, axis=1)
    ffs = vars / means
    ffs[means == 0] = 0
    #print means
    spike_counts_df = pd.DataFrame({
        'mean': means,
        'variance': vars,
        'ff': ffs
    },
                                   index=gids)
    return spike_counts_df
Exemple #4
0
def get_spike_counts_jitter_flick_control(n=30, bin_id=0):
    file_path = '/gpfs/bbp.cscs.ch/project/proj9/nolte/spike_times_variability/jitter_counts_%d_flick_control_v2.pkl'
    file_name = file_path % bin_id
    times = np.arange(1000, 8500, 500)
    if not os.path.isfile(file_name):
        bcs = get_jitter_flick_control_blueconfigs(n=30)
        df = get_spike_times_multiple(bcs)
        df = df[df['spike_time'] >= times[bin_id]]
        df = df[df['spike_time'] < times[bin_id + 1]]
        sim = bluepy.Simulation(bcs[0])
        gids = np.sort(np.array(list(sim.get_circuit_target())))
        spikes_df = df.drop(columns=['spike_time'])
        counts_all = np.zeros((gids.size, n), dtype=np.float64)
        for i in range(n):
            x = spikes_df[spikes_df['spike_trial'] == i]
            counts_all[:,
                       i] = np.bincount(np.array(x.index).astype(int),
                                        minlength=gids.max() + 1)[-gids.size:]
        means = counts_all.mean(axis=1)
        vars = np.var(counts_all, ddof=1, axis=1)
        ffs = vars / means
        ffs[means == 0] = 0
        #print means
        spike_counts_df = pd.DataFrame(
            {
                'mean': means,
                'variance': vars,
                'ff': ffs
            }, index=gids)
        spike_counts_df.to_pickle(file_name)
    else:
        spike_counts_df = pd.read_pickle(file_name)

    return spike_counts_df
Exemple #5
0
def get_spike_counts_experiment_25(n=30, ca='1p25', sim_type='control'):
    file_path = '/gpfs/bbp.cscs.ch/project/proj9/nolte/spike_times_variability/shuffled_pandas_exp25_counts_%s_v2.pkl'
    file_name = file_path % (sim_type + '_' + ca)
    if not os.path.isfile(file_name):
        bcs = get_exp_25_blueconfigs_cloud(n=30, ca=ca, sim_type=sim_type)
        df = get_spike_times_multiple(bcs)
        df = df[df['spike_time'] >= 1000]
        df = df[df['spike_time'] < 6000]
        sim = bluepy.Simulation(bcs[0])
        gids = np.sort(np.array(list(sim.get_circuit_target())))
        spikes_df = df.drop(columns=['spike_time'])
        counts_all = np.zeros((gids.size, n), dtype=np.float64)
        for i in range(n):
            x = spikes_df[spikes_df['spike_trial'] == i]
            counts_all[:,
                       i] = np.bincount(np.array(x.index).astype(int),
                                        minlength=gids.max() + 1)[-gids.size:]
        means = counts_all.mean(axis=1)
        vars = np.var(counts_all, ddof=1, axis=1)
        ffs = vars / means
        ffs[means == 0] = 0
        #print means
        spike_counts_df = pd.DataFrame(
            {
                'mean': means,
                'variance': vars,
                'ff': ffs
            }, index=gids)
        spike_counts_df.to_pickle(file_name)
    else:
        spike_counts_df = pd.read_pickle(file_name)

    return spike_counts_df
def plot_jittered_rasters():
    path = "/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/variability/jittering/stimulusstim_a%d/seed%d/BlueConfig"
    seeds = np.arange(10000, 10003, dtype=int)

    sim = bluepy.Simulation(data_access_shuffling.get_spontaneous_blueconfigs_cloud(n=1)[0])
    cells = sim.circuit.v2.cells({Cell.HYPERCOLUMN: 2})
    ys = np.array(cells['y'])
    gids = np.array(list(sim.get_circuit_target()))
    sort_idx = np.argsort(ys)
    sort_dict = dict(zip(sort_idx + gids.min(), np.arange(gids.size)))
    stims = np.array([5, 0, 2, 4, 1, 3])
    jitters = np.array([2, 50, 5, 200, 20, 0])[[5, 0, 2, 4, 1, 3]]

    fig, axs = plt.subplots(18, figsize=(10, 30))
    for j, stim in enumerate(stims):

        for i, seed in enumerate(seeds):
            ax = axs[j*3 + i]
            bc = path % (stim, seed)
            spike_times, spike_gids = data_access_shuffling.get_spike_times_sim(bc, t_start=1000)
            print spike_times
            spike_gids = np.vectorize(sort_dict.get)(spike_gids)
            ax.vlines(spike_times, spike_gids, spike_gids + 100, rasterized=True, lw=0.1)
            ax2 = ax.twinx()
            ax2.hist(spike_times, bins=np.linspace(1000, 7000, 601), histtype='step',
                         weights=np.zeros(spike_times.size) + (1000 / 10.0) / gids.size)
            ax2.set_ylabel('FR (Hz)')
            ax.set_ylabel('Neurons')
            ax.set_xlabel('t (ms)')
            ax.set_ylim([0, gids.max() - gids.min()])
            ax.set_xlim([1000, 7000])
            #axs[i, j].set_title('S%db - %s' % (nclasses, labels[i]))
        #break
    plt.tight_layout()
    plt.savefig('figures/raster_jitter.pdf', dpi=300)
Exemple #7
0
def get_spike_times_sim(blueconfig, t_start=500):
    """

    :param blueconfig:
    :return:
    """
    sim = bluepy.Simulation(blueconfig)
    spikes = sim.v2.spikes.get(t_start=t_start)
    spike_times = np.array(spikes.index)
    spike_gids = np.array(spikes.values)
    return spike_times, spike_gids
def get_differences(bcs_1, bcs_2, gids=None, bins=np.linspace(0, 100, 21)):

    differences = np.zeros((len(bcs_1), bins.size -1))

    for sign, bcs in zip([-1, 1], [bcs_1, bcs_2]):
        for i, bc in enumerate(bcs):
            print bc
            sim = bluepy.Simulation(bc)
            spikes = sim.v2.reports['spikes'].data(gids=gids)
            spikes = np.array(spikes)
            counts, _ = np.histogram(spikes, bins=bins)
            differences[i, :] += sign * counts
    return differences
def plot_count_variance():
    """

    :return:
    """
    circuit = bluepy.Simulation(iaf.get_continue_bcs(n=2)[0]).circuit
    df_neurons = circuit.v2.cells({Cell.HYPERCOLUMN: 2})

    fig, axs = plt.subplots(6, 4, figsize=(10, 12))
    mean_fr = []

    for i, n in enumerate([40, 20, 10, 4, 2, 1]):
        df_counts = get_spike_counts_spontaneous_binned_concatenated(np.linspace(0, 2000, n+1))

        df_counts_exc = df_counts[df_neurons['synapse_class'] == 'EXC']
        df_counts_inh = df_counts[df_neurons['synapse_class'] == 'INH']
        mean_fr.append(df_counts['mean'].loc[84815])
        ax = axs[0 + i, 0]
        ax.scatter(df_counts_exc['mean'], df_counts_exc['variance'], marker='.', color='red', s=3, rasterized=True)

        xs = np.linspace(0, df_counts_exc['mean'].max(), 1000)
        ax.plot(xs, xs, '--', color='black')
        ax.plot(xs, (xs % 1) * (1 - (xs % 1)), '-', color='black')
        ax.set_ylim([0, xs[-1]])

        ax = axs[0 + i, 2]
        ax.hist(df_counts_exc['ff'], bins=np.linspace(0, 2, 20), histtype='step', color='red')

        #ax.set_xlim([0, 10])

        ax = axs[0 + i, 1]
        ax.scatter(df_counts_inh['mean'], df_counts_inh['variance'], marker='.', color='blue', s=3, rasterized=True)
        xs = np.linspace(0, df_counts_inh['mean'].max(), 1000)
        ax.plot(xs, xs, '--', color='black')
        ax.plot(xs, (xs % 1) * (1 - (xs % 1)), '-', color='black')
        ax.set_ylim([0, xs[-1]])

        ax = axs[0 + i, 3]
        ax.hist(df_counts_inh['ff'], bins=np.linspace(0, 2, 20), histtype='step', color='blue')
        #ax.set_xlim([0, 80])
    print mean_fr
    for ax in axs[:, :2].flatten():
        ax.set_xlabel('Spike count')
        ax.set_ylabel('Variance')
    for ax in axs[:, 2:].flatten():
        ax.set_xlabel('Fano factor')
        ax.set_ylabel('Neurons')
    for k, ax in enumerate(axs[:, 0]):
        ax.set_title(['50 ms', '100 ms', '200 ms', '500 ms', '1000 ms', '2000 ms'][k])
    plt.tight_layout()
    plt.savefig('figures_poisson/spont_variance_poisson.pdf', dpi=300)
def plot_count_variance_exp_25_summary():
    bins = np.linspace(1000, 7000, 13)

    print bins
    circuit = bluepy.Simulation(iaf.get_continue_bcs(n=2)[0]).circuit
    # df_neurons = circuit.v2.cells({Cell.HYPERCOLUMN: 2})
    df_neurons = get_selected_L456_gids()

    fig, axs = plt.subplots(5, len(bins) - 1, figsize=(20, 6))
    for k, variable in enumerate([False, True]):
        df_counts_list = [get_spike_counts_evoked(t_start=bins[j], t_end=bins[j + 1],
                                                  variable=variable) for j in range(len(bins) - 1)]

        df_counts_exc_list = []
        for i, df_counts in enumerate(df_counts_list):
            df_counts_exc = df_counts.loc[df_neurons.index.unique()][df_neurons['synapse_class'] == 'EXC']
            df_counts_exc_list.append(df_counts_exc)
            df_counts_inh = df_counts.loc[df_neurons.index.unique()][df_neurons['synapse_class'] == 'INH']

            ax = axs[0 + k * 2, i]
            ax.scatter(df_counts_exc['mean'], df_counts_exc['variance'], marker='.', color='red', s=3, rasterized=True)
            xs = np.linspace(0, df_counts_exc['mean'].max(), 1000)
            ax.plot(xs, xs, '--', color='black')
            ax.plot(xs, (xs % 1) * (1 - (xs % 1)), '-', color='black')
            ax.set_xlim([0, xs.max()])
            ax.set_ylim([0, xs.max()])

            ax = axs[1 + k * 2, i]
            ax.scatter(df_counts_inh['mean'], df_counts_inh['variance'], marker='.', color='blue', s=3, rasterized=True)
            xs = np.linspace(0, df_counts_inh['mean'].max(), 1000)
            ax.plot(xs, xs, '--', color='black')
            ax.plot(xs, (xs % 1) * (1 - (xs % 1)), '-', color='black')
            ax.set_xlim([0, xs.max()])
            ax.set_ylim([0, xs.max()])
    df_counts_list_vpm = [get_spike_counts_vpm(t_start=bins[j], t_end=bins[j + 1]) for j in range(2, len(bins) - 1)]
    for i, df_counts in enumerate(df_counts_list_vpm):

        ax = axs[-1, i+2]
        ax.scatter(df_counts['mean'], df_counts['variance'], marker='.', color='green', s=3, rasterized=True)
        xs = np.linspace(0, df_counts['mean'].max(), 1000)
        ax.plot(xs, xs, '--', color='black')
        ax.plot(xs, (xs % 1) * (1 - (xs % 1)), '-', color='black')
        ax.set_xlim([0, xs.max()])
        ax.set_ylim([0, xs.max()])
    plt.savefig('figures_poisson/exp_25_variance_poisson_summary.pdf', dpi=300)
def compute_spike_counts(df, n=30, vpm=False):
    bcs = iaf.get_continue_bcs(n=2)
    sim = bluepy.Simulation(bcs[0])
    if not vpm:
        gids = np.sort(np.array(list(sim.get_circuit_target())))
    else:
        gids = np.arange(221042, 221042 + 310)

    spikes_df = df.drop(columns=['time'])
    counts_all = np.zeros((gids.size, n), dtype=np.float64)
    for i in range(n):
        x = spikes_df[spikes_df['trial'] == i]
        counts_all[:, i] = np.bincount(np.array(x.index).astype(int), minlength=gids.max()+1)[-gids.size:]
    means = counts_all.mean(axis=1)
    vars = np.var(counts_all, ddof=1, axis=1)
    ffs = vars/means
    ffs[means == 0] = 0
    #print means
    df_counts = pd.DataFrame({'mean':means, 'variance':vars, 'ff':ffs}, index=gids)
    return df_counts
Exemple #12
0
def plot_spike_raster_example_evoked():
    """
    plot for paper
    :return:
    """

    # params = [['exp_25', 'exp_25']]
    # shifts = [50, 100] # 50
    # n_seeds = [187, 189]
    # middles = [False, True]

    params = [['reyes_puerta', 'reyes_puerta']]
    shifts = [0, 20]  # 50
    n_seeds = [188, 175]
    middles = [False, False]

    t_middle = 2000
    t_window = 350
    t_window_start = 150
    fig, axs = plt.subplots(4, 2, figsize=(10, 6))

    for k in range(2):
        n_seed = n_seeds[k]
        base_bc, continue_bc, change_bc = get_bcs_x(stimulus=params[0][k],
                                                    shift=shifts[k],
                                                    seed=n_seed,
                                                    middle=middles[k])
        print base_bc
        print continue_bc
        print change_bc
        circuit = bluepy.Simulation(base_bc).circuit
        cells = circuit.v2.cells({Cell.HYPERCOLUMN: 2})
        ys = np.array(cells['y'])
        gids = np.array(list(bluepy.Simulation(base_bc).get_circuit_target()))

        sort_idx = np.argsort(ys)

        sort_dict = dict(zip(sort_idx + gids.min(), np.arange(gids.size)))

        # sort_dict = dict(zip(np.arange(len(sort_idx), dtype=int), ys[::-1]))

        ax = axs[0, k]
        spikes = bluepy.Simulation(base_bc).v2.reports['spikes']
        df = spikes.data(t_start=t_middle - t_window_start)
        gids_spiking = np.array(df.axes[0])
        print "-----"
        print gids_spiking.max()
        print gids_spiking.min()
        times = np.array(df) - t_middle

        print gids_spiking
        gids_spiking = np.vectorize(sort_dict.get)(gids_spiking)
        print gids_spiking
        #times =  np.vectorize(sort_dict.get)(times)

        ax.vlines(times,
                  gids_spiking,
                  gids_spiking + 70,
                  rasterized=True,
                  lw=0.15)
        ax2 = ax.twinx()
        ax2.hist(times,
                 bins=np.linspace(-t_window_start, 0, 31),
                 histtype='step',
                 weights=np.zeros(times.size) + (1000.0 / 5.0) / gids.size)
        ax2.set_ylabel('FR (Hz)')

        spikes = bluepy.Simulation(continue_bc).v2.reports['spikes']
        df = spikes.data(t_end=t_window + t_middle * middles[k])
        gids_spiking = np.array(df.axes[0])
        print gids_spiking
        gids_spiking = np.vectorize(sort_dict.get)(gids_spiking)
        print gids_spiking
        times = np.array(df) - t_middle * middles[k]

        ax.vlines(times,
                  gids_spiking,
                  gids_spiking + 70,
                  rasterized=True,
                  lw=0.15)
        ax2.hist(times,
                 bins=np.linspace(0, t_window, 71),
                 histtype='step',
                 weights=np.zeros(times.size) + (1000.0 / 5.0) / gids.size)

        ax = axs[1, k]
        spikes = bluepy.Simulation(base_bc).v2.reports['spikes']
        df = spikes.data(t_start=t_middle - t_window_start)
        gids_spiking = np.array(df.axes[0])
        gids_spiking = np.vectorize(sort_dict.get)(gids_spiking)

        times = np.array(df) - t_middle
        ax.vlines(times,
                  gids_spiking,
                  gids_spiking + 70,
                  rasterized=True,
                  lw=0.15)
        ax2 = ax.twinx()
        ax2.hist(times,
                 bins=np.linspace(-t_window_start, 0, 31),
                 histtype='step',
                 weights=np.zeros(times.size) + (1000.0 / 5.0) / gids.size)
        ax2.set_ylabel('FR (Hz)')

        spikes = bluepy.Simulation(change_bc).v2.reports['spikes']
        df = spikes.data(t_end=t_window + t_middle * middles[k])
        gids_spiking = np.array(df.axes[0])
        gids_spiking = np.vectorize(sort_dict.get)(gids_spiking)

        times = np.array(df) - t_middle * middles[k]
        ax.vlines(times,
                  gids_spiking,
                  gids_spiking + 70,
                  rasterized=True,
                  lw=0.15)
        ax2.hist(times,
                 bins=np.linspace(0, t_window, 71),
                 histtype='step',
                 weights=np.zeros(times.size) + (1000.0 / 5.0) / gids.size)

        ax = axs[2, k]
        bc = base_bc
        soma = bluepy.Simulation(bc).v2.reports['soma']
        time_range = soma.time_range[soma.time_range >= t_middle -
                                     t_window] - t_middle
        data = soma.data(t_start=t_middle - t_window)
        ax.plot(time_range,
                data.mean(axis=0),
                linewidth=1,
                alpha=0.5,
                color='#1f77b4')
        bc = continue_bc
        soma = bluepy.Simulation(bc).v2.reports['soma']
        time_range_cont = soma.time_range[soma.time_range < t_middle +
                                          t_window] - t_middle
        data_cont = soma.data(t_end=t_middle + t_window)
        ax.plot(time_range_cont,
                data_cont.mean(axis=0),
                linewidth=1,
                alpha=0.5,
                color='#ff7f0e')
        bc = change_bc
        soma = bluepy.Simulation(bc).v2.reports['soma']
        time_range_cont = soma.time_range[soma.time_range < t_middle +
                                          t_window] - t_middle
        data_cont = soma.data(t_end=t_middle + t_window)
        ax.plot(time_range_cont,
                data_cont.mean(axis=0),
                linewidth=1,
                alpha=0.5,
                color='#ff7f0e')

    for ax in axs[:2, :].flatten():
        ax.set_xlabel('t (ms)')
        ax.set_ylim([0, 31346])
        ax.set_yticks([0, 10000, 20000, 30000])

        ax.set_ylabel('Neuron')
        ax.set_xlim([-t_window_start, t_window])

    for ax in axs[2, :].flatten():
        ax.set_xlabel('t (ms)')
        #ax.set_ylim([-63, -60])
        #ax.set_yticks([-63, -62, -61, -60])

        ax.set_ylabel('V (mV)')
        ax.set_xlim([-t_window_start, t_window])

    plt.tight_layout()
    plt.savefig('figures/raster_evoked.pdf', dpi=300)
Exemple #13
0
cas_g = ['1p26', '1p28', '1p3', '1p32', '1p34', '1p36', '1p38', '1p4', '2p0']
cas_mvr = ['1p1', '1p15', '1p2', '1p21', '1p22', '1p23', '1p24', '1p25']

bcs_mvr = [
    '/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/variability/ca_scan_mvr/Ca%s/BlueConfig'
    % s for s in cas_mvr
]
bcs_g = [
    '/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/variability/ca_scan_g/Ca%s/BlueConfig'
    % s for s in cas_g
]

# bcs = ['/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/ei-balance/' \
#        'scan_layer5/Ca%s/BlueConfig' % s for s in cas]

sim = bluepy.Simulation(bcs_mvr[0])
gids = np.array(list(sim.get_circuit_target()))
gids_exc = np.random.permutation(
    np.intersect1d(np.array(list(sim.circuit.get_target('Excitatory'))), gids))
gids_inh = np.random.permutation(
    np.intersect1d(np.array(list(sim.circuit.get_target('Inhibitory'))), gids))

# bcs = bcs_0
names = ['MVR', 'det_syns']
for k, (bcs, cas) in enumerate(zip([bcs_mvr, bcs_g], [cas_mvr, cas_g])):
    fig, axs = plt.subplots(len(bcs), 2, figsize=(14, 14))

    for i, bc in enumerate(bcs):
        print bc
        sim = bluepy.Simulation(bc)
variances = [
    '0p001', '0p01', '0p05', '0p1', '0p5', '1p0', '1p5', '2p0', '10p0'
]

bcs = [
    '/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/variability/spontaneous/base_seeds_abcd_stim/seed170/variance%s/BlueConfig'
    % s for s in variances[1:]
]
bcs = [
    '/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/variability/spontaneous/base_seeds_abcd/seed170/BlueConfig'
] + bcs

# bcs = ['/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/ei-balance/' \
#        'scan_layer5/Ca%s/BlueConfig' % s for s in cas]

sim = bluepy.Simulation(bcs[0])
gids = np.array(list(sim.get_circuit_target()))
gids_exc = np.random.permutation(
    np.intersect1d(np.array(list(sim.circuit.get_target('Excitatory'))), gids))
gids_inh = np.random.permutation(
    np.intersect1d(np.array(list(sim.circuit.get_target('Inhibitory'))), gids))

# bcs = bcs_0
names = ['MVR', 'det_syns']
fig, axs = plt.subplots(len(bcs), 2, figsize=(14, 14))

for i, bc in enumerate(bcs):
    print bc
    sim = bluepy.Simulation(bc)

    ax = axs[i, 0]
Exemple #15
0
def get_soma_time_series(blueconfig, t_start=None, t_end=None, gids=None):
    soma = bluepy.Simulation(blueconfig).v2.reports['soma']
    data = soma.data(t_start=t_start, t_end=t_end,
                     gids=None)  #, gids=np.arange(72788, 72800)) #
    return data, data.axes[1] / 1000.0
Exemple #16
0
def get_selected_L456_gids():
    circuit = bluepy.Simulation(get_exp_25_blueconfigs_cloud(n=1)[0]).circuit
    cells = circuit.v2.cells({Cell.MINICOLUMN: range(620, 650)})
    print len(cells.index)
    return cells[cells['layer'] > 3]
Exemple #17
0
def get_mc_2_gids():
    circuit = bluepy.Simulation(get_exp_25_blueconfigs_cloud(n=1)[0]).circuit
    cells = circuit.v2.cells({Cell.HYPERCOLUMN: 2})
    print len(cells.index)
    return cells
import numpy as np
import bluepy
import pandas as pd

n_gids_perturbed = np.zeros(19)
n_additional_spikes = np.zeros(19)
t_additional_spikes = np.zeros(19)
maxs_hist = np.zeros((19, 6))

for j, s in enumerate(np.delete(np.arange(150, 170), 17)):
    config_1 = '/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/variability/spontaneous_v2/continue_change_decouple_x/seed%d/BlueConfig' % s
    config_2 = '/gpfs/bbp.cscs.ch/project/proj9/simulations/nolte/variability/spontaneous_v2/continue_change_decouple_g/seed%d/BlueConfig' % s

    s1 = bluepy.Simulation(config_1)
    s2 = bluepy.Simulation(config_2)

    report1 = s1.v2.spikes.get()
    report2 = s2.v2.spikes.get()


    n_spikes = report1.values.size
    spikes = pd.DataFrame({'time': report1.index, 'gid': report1.values}, index=np.zeros(report1.values.size, dtype=int))
    spikes_pert = pd.DataFrame({'time': report2.index, 'gid': report2.values}, index=np.ones(report2.values.size, dtype=int))

    gids = np.unique(np.hstack([spikes.index, spikes_pert.index]))

    comb = pd.concat([spikes, spikes_pert])

    duplicates = comb.drop_duplicates(keep=False)
    perturbed_gids = np.unique(np.unique(duplicates.gid))
    n_gids_perturbed[j] = perturbed_gids.size
Exemple #19
0
def analyse_inititial_stim_fluctuations(plot_values=[10, 15, 18, 1, 3]):
    variances_percent = np.array([
        0.001, 1.0, 5.0, 10.0, 50.0, 100.0, 500.0, 1000.0, 1.5, 2.0, 0.0,
        0.00001, 0.0001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.5
    ])
    # variances = ['0p01 y', '0p05 y', '0p1 y', '0p5 y', '1p0 y', '1p5 n','2p0 n','10p0 y']

    labels = variances_percent[plot_values]
    labels[0] = variances_percent[0]

    bcs_stim = iaf.get_change_bcs_decouple(params='dz')  # 'ab'
    bcs = iaf.get_change_bcs_decouple(params='x')

    differences = {}
    spike_differences = np.zeros(len(plot_values))
    for j, i in enumerate(plot_values):  # [0] + range(10, 19):

        soma_stim, bins = iaf.get_soma_time_series(
            bcs_stim[i], t_start=2500, t_end=3500)  #, gids=[72890])
        soma, bins = iaf.get_soma_time_series(bcs[i], t_start=2500,
                                              t_end=3500)  #, gids=[72890])

        spikes_1 = np.array(
            bluepy.Simulation(bcs_stim[i]).v2.reports['spikes'].data()).size
        spikes_2 = np.array(
            bluepy.Simulation(bcs[i]).v2.reports['spikes'].data()).size
        print spikes_1
        spike_differences[j] = (spikes_1 - spikes_2) / 31346.0 / 2.0

        print soma.shape
        differences[i] = (np.array(soma_stim) - np.array(soma)).T

    fig, axs = plt.subplots(5, figsize=(10, 15))
    ax = axs[0]
    ax.plot(variances_percent[plot_values],
            spike_differences,
            marker='x',
            lw=1.0)
    ax.set_ylabel('dFR (Hz)')
    ax.set_xlabel('variance in percent')

    for j, i in enumerate(plot_values):
        ax = axs[1]
        ax.plot(bins[500:1000],
                differences[i][500:1000, 15421],
                lw=0.8,
                label=variances_percent[i])

        ax = axs[2]
        ax.hist(differences[i].flatten(),
                bins=np.linspace(-2, 2, 201),
                label=" %.e" % variances_percent[i],
                histtype='stepfilled',
                alpha=0.6)

        ax = axs[3]
        ax.scatter(labels[j], [differences[i].flatten().std()])
        ax.set_xlabel('percent variance')
        ax.set_ylabel('soma fluctuations (mV)')
        ax = axs[4]
        ax.scatter([differences[i].flatten().std()], spike_differences[j])
        ax.set_xlabel('soma fluctuations (mV)')
        ax.set_ylabel('dFR (Hz)')

    ax = axs[3]
    print labels[1:4]
    print fluctuation_variance(n=3)
    ax.scatter(labels[1:4], fluctuation_variance(n=3))
    # axs[3].set_xticks(np.arange(len(plot_values)))
    # axs[3].set_xticklabels(variances_percent[plot_values])

    ax.legend()
    axs[1].legend()
    plt.tight_layout()
    plt.savefig('figures/stim_variance.pdf')