from
Neurocal
by Zeng Lertmanorat Simulation describing the electrical activity of nerve cell (neuron) by solving cable equation
create_stimIin
function create_stimIin
global zeng zeng2
Iinstim_length=length(zeng.Iinstim);
if Iinstim_length==0
%the empty value represents "no stim"
zeng2.setup.stimIin=[];
return
end
zeng2.setup.stimIin.time =zeros(Iinstim_length,2);
zeng2.setup.stimIin.var =zeros(Iinstim_length,1); %for finding cm
zeng2.setup.stimIin.node_amp=cell(Iinstim_length,1);
zeng2.setup.stimIin.WaveformIndex=[];
for i=1:Iinstim_length
node = round(zeng.Iinstim(i).node*(zeng2.setup.nseg(zeng.Iinstim(i).varnum)-1)+1);
node_all = zeng2.setup.nseg_length(zeng.Iinstim(i).varnum,2)-zeng2.setup.nseg(zeng.Iinstim(i).varnum)+node;
zeng2.setup.stimIin.var(i) = zeng.Iinstim(i).varnum;
if isnumeric(zeng.Iinstim(i).amp)
zeng2.setup.stimIin.node_amp{i}= [node_all zeng.Iinstim(i).amp*zeng2.amp];
zeng2.setup.stimIin.time(i,:) = zeng.Iinstim(i).delay + [0 zeng.Iinstim(i).dur];
else % Waveform Stimulation
%set the time to zero to represent no stim.
zeng2.setup.stimIin.WaveformIndex=[zeng2.setup.stimIin.WaveformIndex i];
zeng2.setup.stimIin.node_amp{i}= [node_all 0]; %0uA
zeng2.setup.stimIin.time(i,:) = 0;
end
end
%---------------------------------------------------
temp=1:Iinstim_length;
temp(zeng2.setup.stimIin.WaveformIndex)=[];
zeng2.setup.stimIin.timerange=[min(zeng2.setup.stimIin.time(temp,1)) max(zeng2.setup.stimIin.time(temp,2))];
if isempty(zeng2.setup.stimIin.timerange)
%This happens when these is only Iamp(t) stim (no square pulse stim) in the model.
zeng2.setup.stimIin.timerange=[0 0];
end
%---------------------------------------------------