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))
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 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}