Пример #1
0
def test_make_brian_group():

    trains = pd.DataFrame([
        {'duration': 100e-3, 'spikes': [10e-3, 30e-3], 'cf': 333},
        {'duration': 100e-3, 'spikes': [40e-3, 50e-3], 'cf': 333},
        {'duration': 100e-3, 'spikes': [60e-3, 70e-3], 'cf': 333},
    ])


    group = cochlea.make_brian_group(trains)

    assert_equal(len(trains), len(group))
Пример #2
0
def test_make_brian_group():

    trains = pd.DataFrame([
        {'duration': 100e-3, 'spikes': [10e-3, 30e-3], 'cf': 333},
        {'duration': 100e-3, 'spikes': [40e-3, 50e-3], 'cf': 333},
        {'duration': 100e-3, 'spikes': [60e-3, 70e-3], 'cf': 333},
    ])


    group = cochlea.make_brian_group(trains)

    assert_equal(len(trains), len(group))
Пример #3
0
def main():

    fs = 100e3
    cf = 1e3
    tmax = 50e-3

    sound = wv.ramped_tone(
        fs=fs,
        freq=cf,
        duration=tmax,
        pad=30e-3,
        dbspl=50,
    )

    anf_trains = cochlea.run_zilany2014(
        sound=sound,
        fs=fs,
        cf=cf,
        anf_num=(300, 0, 0),
        seed=0,
        species='cat',
    )

    anfs = cochlea.make_brian_group(anf_trains)

    print(anfs)


    brainstem = make_brainstem_group(100)

    print(brainstem)

    monitor = brian.SpikeMonitor(brainstem)


    net = brian.Network([brainstem, monitor])
    net.run(tmax*second)


    brian.raster_plot(monitor)
    brian.show()
Пример #4
0
def main():

    fs = 100e3
    cf = 1e3
    tmax = 50e-3

    sound = wv.ramped_tone(
        fs=fs,
        freq=cf,
        duration=tmax,
        pad=30e-3,
        dbspl=50,
    )

    anf_trains = cochlea.run_zilany2014(
        sound=sound,
        fs=fs,
        cf=cf,
        anf_num=(300, 0, 0),
        seed=0,
        species='cat',
    )

    anfs = cochlea.make_brian_group(anf_trains)

    print(anfs)

    brainstem = make_brainstem_group(100)

    print(brainstem)

    monitor = brian.SpikeMonitor(brainstem)

    net = brian.Network([brainstem, monitor])
    net.run(tmax * second)

    brian.raster_plot(monitor)
    brian.show()
def run_exp(c_freq, itd, str_e, str_i):
    # br.globalprefs.set_global_preferences(useweave=True, openmp=True, usecodegen=True,
    #                                       usecodegenweave=True )

    br.defaultclock.dt = 20E-6 * second

    #Basic Parameters
    fs_coch = 100e3  # s/second
    duration = 100E-3  # seconds##
    pad = 20E-3  # second
    n_neuron = 300
    dbspl = 50
    n_neuron = 500
    dt_coch = 1 / fs_coch
    n_pad = int(pad / dt_coch)
    n_itd = int(itd / dt_coch)
    const_dt = 100e-6

    sound = audio.generate_tone(c_freq, duration, fs_coch)
    sound = sound * audio.cosine_fade_window(sound, 20e-3, fs_coch)
    sound = coch.set_dbspl(sound, dbspl)
    sound = np.concatenate((np.zeros(n_pad), sound, np.zeros(n_pad)))
    sound = audio.delay_signal(sound, np.abs(itd), fs_coch)

    if itd < 0:
        sound = sound[:, ::-1]
    duration = len(sound) / fs_coch

    # construct ipsi and contra-lateral ANF trains and convert them to
    # neuron groups
    cochlea_train_left = coch.run_zilany2014(sound=sound[:, 0],
                                             fs=fs_coch,
                                             anf_num=(n_neuron, 0, 0),
                                             cf=c_freq,
                                             species='human',
                                             seed=0)

    cochlea_train_right = coch.run_zilany2014(sound=sound[:, 1],
                                              fs=fs_coch,
                                              anf_num=(n_neuron, 0, 0),
                                              cf=c_freq,
                                              species='human',
                                              seed=0)

    anf_group_left = coch.make_brian_group(cochlea_train_left)
    anf_group_right = coch.make_brian_group(cochlea_train_right)

    # Setup a new mso group and new gbc groups
    mso_group_left = make_mso_group(n_neuron)
    mso_group_right = make_mso_group(n_neuron)

    gbc_group_left = cochlea_to_gbc(anf_group_left, n_neuron)
    gbc_group_right = cochlea_to_gbc(anf_group_right, n_neuron)

    # Synaptic connections for the groups
    syn_mso_l_in_ipsi, syn_mso_l_in_contra = inhibitory_to_mso(
        mso_group=mso_group_left,
        ipsi_group=gbc_group_left['neuron_groups'][0],
        contra_group=gbc_group_right['neuron_groups'][0],
        strength=str_i,
        ipsi_delay=0,
        contra_delay=-0.6e-3 + const_dt)

    syn_mso_r_in_ipsi, syn_mso_r_in_contra = inhibitory_to_mso(
        mso_group=mso_group_right,
        ipsi_group=gbc_group_right['neuron_groups'][0],
        contra_group=gbc_group_left['neuron_groups'][0],
        strength=str_i,
        ipsi_delay=0,
        contra_delay=-0.6e-3 + const_dt)

    syn_mso_l_ex_ipsi, syn_mso_l_ex_contra = excitatory_to_mso(
        mso_group=mso_group_left,
        ipsi_group=anf_group_left,
        contra_group=anf_group_right,
        strength=str_e,
        contra_delay=const_dt)

    syn_mso_r_ex_ipsi, syn_mso_r_ex_contra = excitatory_to_mso(
        mso_group=mso_group_right,
        ipsi_group=anf_group_right,
        contra_group=anf_group_left,
        strength=str_e,
        contra_delay=const_dt)

    sp_mon_left = br.SpikeMonitor(mso_group_left, record=True)
    sp_mon_right = br.SpikeMonitor(mso_group_right, record=True)

    network = ([
        mso_group_left, mso_group_right, anf_group_left, anf_group_right,
        syn_mso_l_ex_ipsi, syn_mso_l_ex_contra, syn_mso_l_in_ipsi,
        syn_mso_l_in_contra, syn_mso_r_ex_ipsi, syn_mso_r_ex_contra,
        syn_mso_r_in_ipsi, syn_mso_r_in_contra, sp_mon_left, sp_mon_right
    ] + gbc_group_left['neuron_groups'] + gbc_group_right['neuron_groups'])

    run(duration, network)

    mso_train_left = thorns.make_trains(sp_mon_left)
    mso_train_right = thorns.make_trains(sp_mon_right)

    return {'spikes_left': mso_train_left, 'spikes_right': mso_train_right}