Source code for benchmark_ea.python.core_neuron_L5_TTPC1

from neuron import h
from neuron import coreneuron
from neuron.units import ms, mV
import time
import numpy as np


    
[docs]class L5_TTPC1_CELL: """ cell instantion for coreneuron. creates an instance of a cADpyr232_L5_TTPC1_0fb1ca4724 cell. sets up a dummy stimulus at 2 picoAmps """ def __init__(self, gid, pc, run): # print(f'BEGIN: the mpi_id is {pc.id()} and gid is {gid}') start = time.time() self.hoc_cell = h.cADpyr232_L5_TTPC1_0fb1ca4724() end = time.time() # print(f'took {end - start}') self.gid = gid self.pc = pc if run == 0: self.pc.set_gid2node(gid, pc.id()) # curr_p = param_list # TODO ----> #[gid]*gid # self.update_params(curr_p) self.ic = h.IClamp(self.soma[0](.5)) self.ic.amp = 0.5 self.ic.dur = 1e9 v = h.Vector().from_python(np.repeat(2,10000)) v.play(self.ic, self.ic._ref_amp, True) self.rd = {k: h.Vector().record(v, sec=self.soma[0]) for k,v in zip(['t', 'v', 'stim_i', 'amp'], [h._ref_t, self.soma[0](.5)._ref_v, self.ic._ref_i, self.ic._ref_amp])} def __getattr__(self, name): # we don't have it, see if the hoc_cell has it? return getattr(self.hoc_cell, name)
[docs] def update_params(self,p): """ use vector of p params to change parameters in core neuron """ for curr_sec in self.hoc_cell.all: curr_sec.g_pas = p[0] curr_sec.e_pas = p[1] for curr_sec in self.hoc_cell.axonal: curr_sec.gNaTa_tbar_NaTa_t = p[2] curr_sec.gK_Tstbar_K_Tst = p[3] curr_sec.gNap_Et2bar_Nap_Et2 = p[4] curr_sec.gK_Pstbar_K_Pst = p[5] curr_sec.gSKv3_1bar_SKv3_1 = p[6] curr_sec.gCa_LVAstbar_Ca_LVAst = p[7] curr_sec.gCa_HVAbar_Ca_HVA = p[8] for curr_sec in self.hoc_cell.somatic: curr_sec.gSKv3_1bar_SKv3_1 = p[9] curr_sec.gCa_HVAbar_Ca_HVA = p[10] curr_sec.gNaTs2_tbar_NaTs2_t = p[11] curr_sec.gCa_LVAstbar_Ca_LVAst = p[12] for curr_sec in self.hoc_cell.basal: curr_sec.gIhbar_Ih = p[13] for curr_sec in self.hoc_cell.apical: curr_sec.gIhbar_Ih = p[13]