No BSD License  

Highlights from
Neurocal

image thumbnail
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
%---------------------------------------------------

Contact us at files@mathworks.com