Hippocampal CA3 network and circadian regulation (Stanley et al. 2013)

 Download zip file 
Help downloading and running models
Accession:142104
This model produces the hippocampal CA3 neural network model used in the paper below. It has two modes of operation, a default mode and a circadian mode. In the circadian mode, parameters are swept through a range of values. This model can be quite easily adapted to produce theta and gamma oscillations, as certain parameter sweeps will reveal (see Figures). BASH scripts interact with GENESIS 2.3 to implement parameter sweeps. The model contains four cell types derived from prior papers. CA3 pyramidal are derived from Traub et al (1991); Basket, stratum oriens (O-LM), and Medial Septal GABAergic (MSG) interneurons are taken from Hajos et al (2004).
Reference:
1 . Stanley DA, Talathi SS, Parekh MB, Cordiner DJ, Zhou J, Mareci TH, Ditto WL, Carney PR (2013) Phase shift in the 24-hour rhythm of hippocampal EEG spiking activity in a rat model of temporal lobe epilepsy. J Neurophysiol 110:1070-86 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Hippocampus; Medial Septum;
Cell Type(s): Hippocampus CA3 pyramidal GLU cell; Hippocampus CA3 interneuron basket GABA cell; Hippocampus CA3 stratum oriens lacunosum-moleculare interneuron; Hippocampus septum medial GABAergic neuron;
Channel(s): I Na,t; I A; I K; I h; I K,Ca; I Calcium;
Gap Junctions:
Receptor(s): GabaA; AMPA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: GENESIS; MATLAB;
Model Concept(s): Epilepsy; Brain Rhythms; Circadian Rhythms;
Implementer(s): Stanley, David A ;
Search NeuronDB for information about:  Hippocampus CA3 pyramidal GLU cell; Hippocampus CA3 interneuron basket GABA cell; GabaA; AMPA; I Na,t; I A; I K; I h; I K,Ca; I Calcium; Gaba; Glutamate;
function stats_plot (s)
global sig
global baseline_compare

figure;
subplot(3,2,1)  %%%Plot data
hold on
plotds(s.datatimes, s.datafilt2, 'b', 10) 
if isfield (s,'noise')
    plotds (s.noisetimes, s.noise + 10, ':r', 10);
end
% plotds(s.datatimes, s.data - mean(s.data) - 10, 'g', 10);
hold off
title ('Original Signal(s)');
xlabel('time(s)');

subplot(3,2,2)  %%%Plot stats
if isfield (s,'noise')
    bar ([0 0; s.statsdata.var s.statsnoise.var; s.statsdata.skew s.statsnoise.skew; s.statsdata.kurt s.statsnoise.kurt]);
    legend ('Signal', 'Injected Noise');    
else
    bar ([0; s.statsdata.var; s.statsdata.skew; s.statsdata.kurt]);
end
xlabel_arr(1) = {'mean'};
xlabel_arr(2) = {'var'};
xlabel_arr(3) = {'skew'};
xlabel_arr(4) = {'kurt'};
set(gca,'XTick',[1 2 3 4])
set(gca,'XTickLabel',xlabel_arr)

subplot(3,2,[3 4])  %%%Plot FFT

%Cheap hack for plotting baseline (optional)
if baseline_compare 
    if isfield(s.name, 'noisename') == 0        %A raw output recording
        basestruct = build_struct(s.name.datapath, '1-baseline.txt','y');
        %Take fft of data structure
        [basef baseF] = daveFFT(basestruct.datatimes, basestruct.datafilt, 1);
        baseP = abs(baseF).^2;
        temp = round(length(baseP)/2);
        loglog (basef(1:temp), baseP(1:temp),'k:'); hold on
    end
end


% Plot FFT Spectrum
% temp = round(length(t1)/2);
temp = round(length(s.fft.f));
loglog ((s.fft.f(2:temp)), (abs(s.fft.fft_val(2:temp)).^2), 'b'); hold on;
h1 = loglog ((s.fft.f(s.fft.fitlist)),(abs(s.fft.fft_val(s.fft.fitlist)).^2),'g:'); hold on;   %Plots the region of the spectrum we're fitting to
% temp2 = round(length(s.noisetimes)/2);
% plot (s.fftnoise.f(2:temp2), abs(s.fftnoise.fft_val(2:temp2)).^2, 'r');
%Plot starting at 2 to remove the zero term.
title('Power Spectrum');
xlabel ('freq (hz)')


%Plot linear best fit
fitlist = s.fft.fitlist;
p = [s.general_beta_est.beta_est s.general_beta_est.const_est];         %New format
% p = [s.general_beta_est, log10(mean(abs(s.fft.fft_val(2:temp).^2)))]; %Uncomment for old format
h2 = loglog((s.fft.f(min(fitlist):temp)), (10^p(2) * s.fft.f(min(fitlist):temp).^p(1)), 'r');
legend ([h1 h2], 'Fitting region',['Fit slope = ' num2str(p(1),'%1.2f')], 'location', 'NorthWest');



%Plot Wavelet Spectrum
loglog ((s.fft.wvf), (abs(s.fft.wvfft_val.^2)), 'b'); hold on;
h3 = loglog ((s.fft.wvf(s.fft.wvfitlist)),(abs(s.fft.wvfft_val(s.fft.wvfitlist)).^2),'g:'); hold on;   %Plots the region of the spectrum we're fitting to
title('Power Spectrum (datafilt)');
xlabel ('freq (hz)')

% Plot linear best fit
temp = length(s.fft.wvf);
wvfitlist = s.fft.wvfitlist;
p = [s.general_beta_est.wvbeta_est s.general_beta_est.wvconst_est];         %New format
% p = [s.general_beta_est, log10(mean(abs(s.fft.fft_val(2:temp).^2)))]; %Uncomment for old format
h4 = loglog((s.fft.wvf(min(wvfitlist):temp)), (10^p(2) * s.fft.wvf(min(wvfitlist):temp).^p(1)), 'm');
legend ([h1 h2 h4], 'Fitting region',['Fit slope = ' num2str(s.general_beta_est.beta_est,'%1.2f')],['Fit slope = ' num2str(p(1),'%1.2f')], 'location', 'NorthWest');




subplot(3,2,[5 6])  %Plot histogram
temp = max(s.statsdata.nhist);
plot (s.statsdata.binloc,s.statsdata.nhist/temp,'b')
if isfield (s,'noise')  %Plot noise histogram
    temp = max(s.statsnoise.nhist);
    hold on; plot (s.statsnoise.binloc,s.statsnoise.nhist/temp,'r'); hold off
end
xlabel ('Normalized Histogram (datafilt2)');


sig = sqrt (s.statsdata.var);
hold on;    %Plot histogram data best fit

% Plot variable beta est
temp = max (exp_pdf(s.statsdata.pdfcoefs, s.statsdata.binloc));
h1 = plot (s.statsdata.binloc, exp_pdf(s.statsdata.pdfcoefs, s.statsdata.binloc)/temp,'g:');

% % Plot gaussian fit
% temp = max(normpdf(s.statsdata.binloc, s.statsdata.pdfcoefs2(1), s.statsdata.pdfcoefs2(2)));
% plot (s.statsdata.binloc, normpdf(s.statsdata.binloc, s.statsdata.pdfcoefs2(1), s.statsdata.pdfcoefs2(2))/temp, 'r:');
% 
% % Plot Gamma fit
% temp = max(gampdf(abs(s.statsdata.binloc), s.statsdata.pdfcoefs3(1), s.statsdata.pdfcoefs3(2)));
% plot (s.statsdata.binloc, gampdf(abs(s.statsdata.binloc), s.statsdata.pdfcoefs3(1), s.statsdata.pdfcoefs3(2))/temp, 'c:');

% % Plot Weibull Fit
% temp = max(wblpdf(abs(s.statsdata.binloc), s.statsdata.pdfcoefs4(1), s.statsdata.pdfcoefs4(2)));
% plot (s.statsdata.binloc, wblpdf(abs(s.statsdata.binloc), s.statsdata.pdfcoefs4(1), s.statsdata.pdfcoefs4(2))/temp, 'm:');

% Plot generalized gaussian & power law distribution
temp = max (gendist_pdf(s.statsdata.pdfcoefs5, s.statsdata.binloc));
hdat5 = plot (s.statsdata.binloc, gendist_pdf(s.statsdata.pdfcoefs5, s.statsdata.binloc)/temp,'k:');
% 
% % Plot cauchy distribution
% temp = max(cauchy_pdf(s.statsdata.pdfcoefs6, s.statsdata.binloc));
% hdat6 = plot (s.statsdata.binloc, cauchy_pdf(s.statsdata.pdfcoefs6, s.statsdata.binloc)/temp, 'r:');

% Plot Cauchy/GeneralizedGaussian Distribution
temp = max(cauchy_gengaus_pdf(s.statsdata.pdfcoefs7, s.statsdata.binloc));
hdat7 = plot (s.statsdata.binloc, cauchy_gengaus_pdf(s.statsdata.pdfcoefs7, s.statsdata.binloc)/temp, 'r:');


hold off;



if isfield (s,'noise')  %Plot histogramnoise best fit
    sig = sqrt (s.statsnoise.var);
    hold on
    temp = max(exp_pdf(s.statsnoise.pdfcoefs, s.statsnoise.binloc));
    h2 = plot (s.statsnoise.binloc, exp_pdf(s.statsnoise.pdfcoefs, s.statsnoise.binloc)/temp,'yo');
    hold off
    legend ([h1; h2], ['PDF ' num2str(s.statsdata.pdfcoefs(2),'%1.2f')], ['PDF ' num2str(s.statsnoise.pdfcoefs(2),'%1.2f')]);
else
%     legend (h1, ['PDF ' num2str(ss.statsdata.pdfcoefs(2),'%1.2f')]);
%     legend ([h1; hdat5], ['PDF ' num2str(s.statsdata.pdfcoefs(2),'%1.4f')], ['a=' num2str(s.statsdata.pdfcoefs5(3)) ' b=' num2str(s.statsdata.pdfcoefs5(4))]);
    legend ([h1; hdat5; hdat7], ['PDF ' num2str(s.statsdata.pdfcoefs(2),'%1.4f')], ['a=' num2str(s.statsdata.pdfcoefs5(3)) ' b=' num2str(s.statsdata.pdfcoefs5(4))], ['a=' num2str(s.statsdata.pdfcoefs7(2)) ' b=' num2str(s.statsdata.pdfcoefs7(3))]);

    
end


end

Loading data, please wait...