A simulation method for the firing sequences of motor units (Jiang et al 2006)

 Download zip file 
Help downloading and running models
Accession:83320
" ... a novel model based on the Hodgkin–Huxley (HH) system is proposed, which has the ability to simulate the complex neurodynamics of the firing sequences of motor neurons. The model is presented at the cellular level and network level, and some simulation results from a simple 3-neuron network are presented to demonstrate its applications." See paper for more and details.
Reference:
1 . Jiang N, Englehart KB, Parker PA (2007) A simulation method for the firing sequences of motor units. J Electromyogr Kinesiol 17:527-34 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Spinal motoneuron;
Cell Type(s):
Channel(s): I Na,t; I K;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Activity Patterns; Simplified Models;
Implementer(s): Jiang, Ning [ning.jiang at unb.ca];
Search NeuronDB for information about:  I Na,t; I K;
function simulation(network,para,iinp,trial_num,hd_txt,OUTPUT_OPT)

%%DO NOT EDIT THIS FILE, UNLESS YOU ARE ABOSLUTE SURE WHAT YOU ARE DOING.
%%This is the template file use to generate the ODE simulation .m file
%%"simulation.m"
%%Written by Ning Jiang, Institute of Biomedical Engineering, Univesity of New
%%Brunswick, NB, Canada, E3B 5A3
%%Email: ning.jiang@unb.ca
%%Created Date: Nov 19, 2006
%%Rev. 1.1, Nov 20, 2006 --adding para to the saved variables

global inp;
duration=para.duration*1000; 
neuron_num=size(iinp,2);
if OUTPUT_OPT
    out_v=zeros(1,neuron_num);
    out_t=0;
end
initial=zeros(1,3*neuron_num);
initial(1:3:3*neuron_num-2)=rand(1,neuron_num)*5-60;
initial(2:3:3*neuron_num-1)=rand(1,neuron_num);
initial(3:3:3*neuron_num)=rand(1,neuron_num)*0.5;
options=odeset('InitialStep',para.stepsize);
firing_t=cell(1,neuron_num);
v=initial(1:3:3*neuron_num-2);
t_course=0;
t0=0; 
for n=1:size(iinp,1)
    inp=iinp(n,:);
    [t,y]=ode45(@hhn,[t0,t0+para.stepsize],initial,options);
    initial=y(size(y,1),:);
    v=[v;y((2:size(y,1)),(1:3:neuron_num*3-2))];
    t_course=[t_course;t(2:length(t))];
    if rem(n,1000/para.stepsize) == 0
        if hd_txt
            set(hd_txt,'string',['trial ',num2str(trial_num),':  ',num2str(duration/1000-n*para.stepsize/1000),' sec left']);
            pause(0.01);
        else
            disp(['trial ',num2str(trial_num),':  ',num2str(duration/1000-n*para.stepsize/1000),' sec left']);
        end
        for nn=1:neuron_num
            [ft,abnormal]=get_interval(v(:,nn),t_course,1);
            if ft ~=0
                firing_t{nn}=[firing_t{nn},ft];
            end
        end
        if OUTPUT_OPT
            out_v=[out_v;v(2:size(v,1),:)];
            out_t=[out_t;t_course(2:length(t_course))];
        end
        v=v(size(v,1),:);
        t_course=t_course(length(t_course));
    end
    t0=t(length(t));
end
if OUTPUT_OPT
    out_t=out_t(2:length(out_t));
    out_v=out_v(2:size(out_v,1),:);
    save([para.resultfile,'_',num2str(trial_num)],'firing_t','out_t','out_v','iinp','network','para');
else
    save([para.resultfile,'_',num2str(trial_num)],'firing_t','iinp','network','para');
end

function dydt=hhn(t,y)
global inp;

Loading data, please wait...