Systems-level modeling of neuronal circuits for leech swimming (Zheng et al. 2007)

 Download zip file 
Help downloading and running models
Accession:114230
"This paper describes a mathematical model of the neuronal central pattern generator (CPG) that controls the rhythmic body motion of the swimming leech. The systems approach is employed to capture the neuronal dynamics essential for generating coordinated oscillations of cell membrane potentials by a simple CPG architecture with a minimal number of parameters. ... parameter estimation leads to predictions regarding the synaptic coupling strength and intrinsic period gradient along the nerve cord, the latter of which agrees qualitatively with experimental observations."
Reference:
1 . Zheng M, Friesen WO, Iwasaki T (2007) Systems-level modeling of neuronal circuits for leech swimming. J Comput Neurosci 22:21-38 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism: Leech;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Temporal Pattern Generation; Oscillations; Simplified Models;
Implementer(s):
% variable used: period1, amplitude1, average1, periodavg1, pdifr1, phaseall, phaseall0 
%                ss,ip, data, temp, times, timecount

period1=0;
amplitude1=0;
average1=0;
periodavg1=0;
pdifr1=0;

phaseall=0;
phaseall0=0;
timecount=1000;
for ss=1:nn
    for ip=1:3
        data=outcpg(:,(ss-1)*3+ip);
        maxperiod;
        amplitude1(ip,ss)=m;
        average1(ip,ss)=avg;
        period1(ip,ss)=p;
        area;
        if length(time)<timecount
            timecount=length(time);
        end
        if mod(timecount,2)==1
            timecount=timecount-1;
        end
        phaseall0(ip,ss,1:timecount)=time(1:timecount);
    end
end

phaseall=phaseall0(:,:,1:timecount);

for ip=1:3
    temp=0;
    times=0;
    for i=1:nn
            if period1(ip,i)>(1-rr)*t0(ss)*3/1000
                temp=temp+period1(ip,i);
                times=times+1;
            end
            
    end
    if times~=0
        periodavg1(ip)=temp/times;
    else
        periodavg1(ip)=inf;
    end
    
end

for ip=1:3
    for i=1:nn-1
        pdifr1(ip,i)=0;
        for j=1:length(phaseall(ip,i,:))-1
            pdifr1(ip,i)=pdifr1(ip,i)-(phaseall(ip,i,j)-phaseall(ip,i+1,j))/(period1(ip,i)+period1(ip,i+1))*720;
        end
        pdifr1(ip,i)=pdifr1(ip,i)/(length(phaseall(ip,i,:))-1);
        pdifr1(ip,i)=rem(pdifr1(ip,i),360);
        if pdifr1(ip,i)>180
            pdifr1(ip,i)=pdifr1(ip,i)-360;
        elseif pdifr1(ip,i)<-180
            pdifr1(ip,i)=pdifr1(ip,i)+360;
        end
    end
end

Loading data, please wait...