//genesis
function put_macro (num, comp, x0,y0,z0, xn,yn,zn, s)
int num // number of electrodes
str comp // compartments to be connected to the electrodes
// use wildcards, like /pyr[]/a# -- all apical dendrites of all p. cells
float x0,y0,z0 // position of the first electrode, good defaults are:4e-4,0,1e-4
float xn,yn,zn // position of the last electrode 4e-4,0,15e-4
// immediate electrodes are placed linearly
int s // if s>0 soma will be connected
str c_name
float dx,dy,dz
int i
if (num < 1)
return
end
dx=(xn-x0)/num
dy=(yn-y0)/num
dz=(zn-z0)/num
echo "Setting up extracellular electrodes:"
for (i = 1; i <={num}; i=i+1)
echo "Electrode" {i} " ... " -nonewline
create efield /electrode[{i}]
setfield /electrode[{i}] scale -1e3 x {x0 + (i - 1) * dx} y {y0 + (i - 1) * dy} z {z0 + (i - 1) * dz}
foreach c_name ({el {comp}[OBJECT=compartment]})
addmsg {c_name} electrode[{i}] CURRENT Im 0.0
end
if (s > 0)
foreach c_name ({el /pyr[]/soma})
addmsg {c_name} electrode[{i}] CURRENT Im 0.0
end
end
call electrode[{i}] RECALC
echo "."
end
for (i=1; i<={num}; i=i+1)
create table /output/extable[{i}]
setfield ^ step_mode 3
useclock ^ 1
call ^ TABCREATE {{sim_time}/{dt2}} 0 {sim_time}
addmsg /electrode[{i}] ^ INPUT field
end
end