if half_linear: v_cell_ext[:, :] = utils.half_linear_field( cell, pulse_start, pulse_start + pulse_duration, n_tsteps, axis='z') * amp else: v_cell_ext[:, :] = utils.linear_field( cell, pulse_start, pulse_start + pulse_duration, n_tsteps, axis='z') * amp cell.insert_v_ext(v_cell_ext, t) # Run simulation, electrode object argument in cell.simulate # print("running cell {2} distance from electrode: {0} current intensity: {1}").format(depth, amp, cell_id) cell.simulate(rec_imem=True, rec_vmem=True) spike_time_loc = utils.return_first_spike_time_and_idx(cell.vmem) if spike_time_loc[0] is not None: print("!!!spike at segment {0} @ t = {1} ms").format( spike_time_loc[1], spike_time_loc[0] * cell.dt) c_vext = v_cell_ext[spike_time_loc[1]][spike_time_loc[0]] # FIGURES fig = plt.figure(figsize=[12, 8]) initial = spike_time_loc[1] # ax1 = plt.subplot(111, projection="3d", # title="t = " + str(spike_time_loc[0] * cell.dt) + "ms", aspect=1, xlabel="x [$\mu$m]", # ylabel="y [$\mu$m]", zlabel="z [$\mu$m]", xlim=[-600, 600], ylim=[-600, 600], zlim=[-1800, 200]) # # [ax1.plot([cell.xstart[idx], cell.xend[idx]], [cell.ystart[idx], cell.yend[idx]], [cell.zstart[idx], cell.zend[idx]], '-', # # c='k', clip_on=False) for idx in range(cell.totnsegs)] # # [plt.plot([cell.xstart[idx], cell.xend[idx]], [cell.zstart[idx], cell.zend[idx]], '-',
# DEBUG if np.isnan(cell.vmem).any(): print("NaN for cell {}".format(RANK)) utils.dendritic_spike(cell) # print('rank {}, pulse_start {}, buffer {}'.format(RANK, pulse_start, params.sim['buffer'])) spike_time_loc = utils.spike_soma( cell, from_t=(pulse_start - params.sim['buffer']), to_t=(pulse_start + pulse_duration + params.sim['buffer'])) if spike_time_loc[0] is not None: spiked = True detail_spike = utils.return_first_spike_time_and_idx( cell.vmem) print("!spike! at time {0} and position {1}, rank {2}". format(detail_spike[0], cell.get_idx_name(detail_spike[1])[1], RANK)) # print("DEBUG 0 rank {}".format(RANK)) # current[RANK][np.where(amp_spread == amp)[0][0]] = dis current[RANK][i_amp] = dis # print("DEBUG 1 rank {}".format(RANK)) # c_vext[RANK][np.where(amp_spread == amp)[0][0]] = v_cell_ext[detail_spike[1]][detail_spike[0]] c_vext[RANK][i_amp] = v_cell_ext[detail_spike[1]][ detail_spike[0]] # print("DEBUG 2 rank {}".format(RANK)) # ap_loc[RANK][np.where(amp_spread == amp)[0][0]] = detail_spike[1] ap_loc[RANK][i_amp] = detail_spike[1]