Drosophila 3rd instar larval aCC motoneuron (Gunay et al. 2015)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:152028
Single compartmental, ball-and-stick models implemented in XPP and full morphological model in Neuron. Paper has been submitted and correlates anatomical properties with electrophysiological recordings from these hard-to-access neurons. For instance we make predictions about location of the spike initiation zone, channel distributions, and synaptic input parameters.
Reference:
1 . Günay C, Sieling FH, Dharmar L, Lin WH, Wolfram V, Marley R, Baines RA, Prinz AA (2015) Distal spike initiation zone location estimation by morphological simulation of ionic current filtering demonstrated in a novel model of an identified Drosophila motoneuron. PLoS Comput Biol 11:e1004189 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Drosophila;
Cell Type(s):
Channel(s): I Na,p; I Na,t; I A; I K;
Gap Junctions:
Receptor(s): Cholinergic Receptors;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; XPP; MATLAB;
Model Concept(s):
Implementer(s): Gunay, Cengiz [cgunay at emory.edu]; Sieling, Fred [fred.sieling at gmail.com]; Prinz, Astrid [astrid.prinz at emory.edu];
Search NeuronDB for information about:  Cholinergic Receptors; I Na,p; I Na,t; I A; I K;
/
Gunay_etal_2014
neuron-model
aCC-L3-neuron.hoc
aCC-L3-neuron+electrode.xml
aCC-L3-neuron-swc.hoc
calc-impedance.hoc
chan-DmKA-Marley.hoc
chan-DmKdr-Marley.hoc
chan-DmNaP-DmNav10.hoc
chan-DmNaT-ODowd.hoc
collapse-neuron-tree.hoc
current-inj-50pA-read-mV_dt_0.025ms.bin
data-axon-tail2-axon-50um-vc-noKdr-long-back-85mV-Na_4_lines_dt_0.025000ms.bin
data-axon-tail2-axon-70um-vc-noKdr-long-back-85mV-Na_4_lines_dt_0.025000ms.bin
data-axon-tail2-axon-70um-vc-noKdr-long-back-85mV-Na-5xNaP_4_lines_dt_0.025000ms.bin
data-axon-tail2-axon-70um-vc-noKdr-long-back-85mV-Na-5xNaT_4_lines_dt_0.025000ms.bin
data-axon-tail2-axon-70um-vc-noKdr-long-back-85mV-passive_4_lines_dt_0.025000ms.bin
data-axon-tail2-chans-axon_11_lines_dt_0.025000ms.bin
data-axon-tail2-chans-axon-last_11_lines_dt_0.025000ms.bin
data-axon-tail2-chans-botdend_11_lines_dt_0.025000ms.bin
data-axon-tail2-chans-ext-axon-70um_11_lines_dt_0.025000ms.bin
data-axon-tail2-chans-in-all_11_lines_dt_0.025000ms.bin
data-i-syn-10syns-20-EPSCs-10x-10ms-VC-60mV_6_lines_dt_0.025000ms.bin
data-i-syn-4dends-50-EPSCs-10x-10ms-VC-60mV_5_lines_dt_0.025000ms.bin
data-i-vclamp-syn-dend-513-180-EPSCs-10x-1ms-saturating_2_lines_dt_0.025000ms.bin
data-syn-dend-357_2_lines_dt_0.025000ms.bin
data-syn-dend-513_2_lines_dt_0.025000ms.bin
data-syn-dend-520_2_lines_dt_0.025000ms.bin
data-syn-dend-685_2_lines_dt_0.025000ms.bin
data-v-syn-10dends-20-EPSCs-10x-10ms-noVC_6_lines_dt_0.025000ms.bin
data-v-syn-4dends-50-EPSCs-10x-10ms-noVC_6_lines_dt_0.025000ms.bin
data-v-syn-dend-513-180-EPSCs-10x-1ms-saturating-noVC_5_lines_dt_0.025000ms.bin
data-v-syn-dend-685-AP_3_lines_dt_0.025000ms.bin
exp-axon-tail2.ses
exp-axon-tail2-chans-axon.ses
exp-axon-tail2-chans-axon-last.ses
exp-axon-tail2-chans-botdend.ses
exp-axon-tail2-chans-ext-axon-50um-onlyNa.ses
exp-axon-tail2-chans-ext-axon-70um.ses
exp-axon-tail2-chans-ext-axon-70um-10alphasynapses.ses
exp-axon-tail2-chans-ext-axon-70um-10x-mimic-sustained.ses
exp-axon-tail2-chans-ext-axon-70um-10x-mimic-sustained-random.ses
exp-axon-tail2-chans-ext-axon-70um-mimic-synapses.ses
exp-axon-tail2-chans-ext-axon-70um-mimic-synapses-sustained-currents.ses
exp-axon-tail2-chans-ext-axon-70um-mimic-synapses-v-change.ses
exp-axon-tail2-chans-ext-axon-70um-onlyNa.ses
exp-axon-tail2-chans-ext-axon-70um-tomasz.ses
exp-axon-tail2-chans-in-all.ses
figures.m
fitfuncs.hoc
graph-i-vc-ext-axon.ses
iclamp-50pA.ses
IClamp-steps.ses
inc-first.ses
lincir-vclamp.hoc
lincir-vclamp.ses
NaP_NaT_data.csv
neuron-CB.ses
neuron-CB+electrode.hoc
neuron-CB-act-electrode-embed-IClamp.ses
neuron-CB-ext-axon.ses
neuron-CB-ext-axon-2pieces.ses
neuron-CB-ext-axon-2pieces-chans-axon.ses
neuron-CB-ext-axon-2pieces-chans-axon-last.ses
neuron-CB-ext-axon-2pieces-chans-botdend.ses
neuron-CB-ext-axon-2pieces-chans-ext-axon-50um-onlyNa.ses
neuron-CB-ext-axon-2pieces-chans-ext-axon-70um.ses
neuron-CB-ext-axon-2pieces-chans-ext-axon-70um-10alphasynapses.ses *
neuron-CB-ext-axon-2pieces-chans-ext-axon-70um-10x-mimic-sustained.ses *
neuron-CB-ext-axon-2pieces-chans-ext-axon-70um-mimic-synapses.ses *
neuron-CB-ext-axon-2pieces-chans-ext-axon-70um-mimic-synapses-v-change.ses *
neuron-CB-ext-axon-2pieces-chans-ext-axon-70um-onlyNa.ses
neuron-CB-ext-axon-2pieces-chans-in-all.ses
neuron-CB-pas-electrode-embed.ses
neuron-CB-pas-electrode-embed-fit-pas.ses
neuron-CB-pas-electrode-embed-fit-pas-VClamp.ses
neuron-CB-pas-electrode-embed-IClamp.ses
neuron-CB-pas-electrode-embed-test-axon-hh-chans.ses
neuron-Import3D-CellBuilder.ses
neuron-NL-CellBuilder.ses
neuron-NL-CellBuilder-pas.ses
neuron-NL-CellBuilder-pas-electrode.ses
neuron-NL-CellBuilder-pas-Na.ses
neuron-PointProcessMgr-ext-axon-2pieces-chans-ext-axon-70um-10alphasynapses.ses
nrn-fit-cap-02_dt_0.025000ms_dy_1e-9nA.bin
shape-plot.ses
SkeletonTree_ORR_aCC_48h1_NL.hoc
soma-vclamp-testbed.ses
stats.hoc
vclamp_-85_to_-25mV.ses
vclamp_soma_-60mV.ses
vclamp_soma_-60mV_syn1234.ses
vclamp_soma_-60mV_syni.ses
vclamp-family.ses
v-graph.ses
v-graph-bigger.ses
v-graph-bigger-axon-2pieces.ses
                            
% ****************************************
% FIGURE 3C: morph model passive fits
% ****************************************

% run: nrngui neuron-CB-pas-electrode-embed-fit-pas-VClamp.ses
% it uses Neuron's multiple-run parameter fitter. The final fitted output
% is loaded below:

% saved in Neuron rec 10202034, #4 
fit_rec34_t = ...
    trace([ 'nrn-fit-cap-02_dt_0.025000ms_dy_1e-9nA.bin'], ...
          25e-6, 1e-12, 'Fit', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1e3));
plotFigure(superposePlots(plotData(...
  [trace([ '../data/10202002.abf' ]), fit_rec34_t], '', ...
  struct('fixedSize', [3 2.5], 'noTitle', 1, 'ColorOrder', [0 0 0; 1 0 0], ...
         'legendLocation', 'southeast', 'axisLimits', [5.5 9.3 NaN 10]))))

% ****************************************
% FIGURE 4B: voltage traces in response to 50pA current injection
% ****************************************

% use neuron-CB-pas-electrode-embed.ses. Load iclamp-50pA.ses and
% v-graph.ses to input stimulus and draw graph. Save the graph
% directly as EPS file. 

% ****************************************
% FIGURE 4C: electrotonic length
% ****************************************

% load neuron-CB-pas-electrode-embed-IClamp.ses and use
% Tools->Impedance->Shape to make plots for 0 Hz vs 100 Hz. 

% ****************************************
% FIGURE 4E/F/H: VC electrode, exp-decaying CC at various locations
% ****************************************

% Uncomment the section injecting exponential current stimulus in
% neuron-CB-pas-electrode-embed-IClamp.ses and load it in
% nrngui. Adjust the location of the input from the
% PointProcessManager window that will open.

% show voltage graphs for panel F

% change exp-decay time constant for panel H using expDecayIClamp
% function.

% ****************************************
% FIGURE 5A: VC of Kdr channels in morphology
% ****************************************

% started with 
% nrngui neuron-CB-act-electrode-embed-IClamp.ses

% changed PointProcess to VClamp and setup a 50 ms VC at 0mV
% set the Tstop at 45 ms

% load shape-plot.ses. Change to "Shape" plot and make sure set the
% scale to "-40 0".

% change location of Kdr channels using CellBuilder Biophysics tab.

% ****************************************
% FIGURE 5B: aCC/RP2 input resistance when Cd present
% ****************************************

% load recorded data 
load('../data/db_2011-02-04_cell1_aCC.mat')
load('../data/db_2011-02-04_cell2_aCC.mat')

% add bias to cip values (do this only one time after loading!)
feb04_cell2_db(:, 'cip_level_pA') = ...
    feb04_cell2_db(:, 'cip_level_pA') + 12;
% TODO: don't do additional correction below! How about cell1?

% default to Cd2+ traces only
cell1_db = feb04_cell1_db(feb04_cell1_db(:, 'cadmium') == 1, :);
cell2_db = feb04_cell2_db(feb04_cell2_db(:, 'cadmium') == 1, :);

% f-V
plotFigure(plot_superpose({...
    set(setProp(plot_cip_stats(cell1_db, '2010/02/04 #1 RP2', ...
                               'PulsePotAvg', 'PulseSpikeRateISI'), ...
                'fixedSize', [3 3], 'axisLimits', [-60 0 NaN NaN], ...
                'legendLocation', 'NorthOutside'), ...
        'axis_labels', {'membrane voltage [mV]', 'Cd^{2+} firing rate [Hz]'}), ...
    plot_cip_stats(cell2_db, '2010/02/04 #2 aCC', ...
                   'PulsePotAvg', 'PulseSpikeRateISI')}));
print -depsc2 current-clamp-firing-marley-all-Cd-cells-f-V.eps

% I-V
plot_iv = plot_superpose({...
    set(setProp(plot_cip_stats(cell1_db, '2010/02/04 #1 RP2', ...
                               'PulsePotAvg', 'cip_level_pA'), ...
                'fixedSize', [3 3], 'axisLimits', [-60 0 NaN NaN]), ...
        'axis_labels', {'membrane voltage [mV]', 'current [pA]'}), ...
    plot_cip_stats(cell2_db, '2010/02/04 #2 aCC', ...
                 'PulsePotAvg', 'cip_level_pA')});
%               'legendLocation', 'NorthOutside'
plotFigure(plot_iv);
print -depsc2 current-clamp-firing-marley-all-Cd-cells-I-V.eps

% do a I-V derivative plot
% TODO: put these in post-columns
cell1_db = ...
    addColumns(cell1_db, ...
               {'I_V_rate_pA_per_mV'}, ...
               [0; diff(cell1_db(:, 'cip_level_pA').data) ./ diff(cell1_db(:, 'PulsePotAvg').data)]);
g1_db = groupBy(cell1_db(:, {'TraceNum', 'PulsePotAvg', 'cip_level_pA'}), ...
                'TraceNum');
g1_diff_db = diff(g1_db);

g1_data = [g1_db(1:(end-1), 'PulsePotAvg', :).data, ...
                    g1_diff_db(:, 'cip_level_pA', :).data ./ ...
                    g1_diff_db(:, 'PulsePotAvg', :).data];
g1_rate_db = ...
    tests_3D_db(reshape(permute(g1_data, [2 1 3]), ...
                        [size(g1_data, 2), size(g1_data, 1) * size(g1_data, 3)])', ...
                {'PulsePotAvg', 'I_V_rate_pA_per_mV'}, {}, {}, ...
                ['I/V rates, ' cell1_db.id]);

cell2_db = ...
    addColumns(cell2_db, ...
               {'I_V_rate_pA_per_mV'}, ...
               [0; diff(cell2_db(:, 'cip_level_pA').data) ./ diff(cell2_db(:, 'PulsePotAvg').data)]);
g2_db = groupBy(cell2_db(:, {'TraceNum', 'PulsePotAvg', 'cip_level_pA'}), ...
                'TraceNum');
g2_diff_db = diff(g2_db);

g2_data = [g2_db(1:(end-1), 'PulsePotAvg', :).data, ...
                    g2_diff_db(:, 'cip_level_pA', :).data ./ ...
                    g2_diff_db(:, 'PulsePotAvg', :).data];
g2_rate_db = ...
    tests_3D_db(reshape(permute(g2_data, [2 1 3]), ...
                        [size(g2_data, 2), size(g2_data, 1) * size(g2_data, 3)])', ...
                {'PulsePotAvg', 'I_V_rate_pA_per_mV'}, {}, {}, ...
                ['I/V rates, ' cell2_db.id]);

% pA/mV = nS
plot_diff_iv = ...
    plot_superpose({...
        set(setProp(plotScatter(g1_rate_db, ...
                                'PulsePotAvg', 'I_V_rate_pA_per_mV', ...
                                '', '2010/02/04 #1 RP2', ...
                                struct('LineStyle', '+')), ...
                    'noTitle', 1, ...
                    'plotProps', struct('LineWidth', 2), ...
                    'fixedSize', [3 3], 'axisLimits', [-80 0 NaN NaN]), ...
            'axis_labels', {'membrane voltage [mV]', 'input conductance [nS]'}), ...
        plotScatter(g2_rate_db, ...
                    'PulsePotAvg', 'I_V_rate_pA_per_mV', '', '2010/02/04 #2 aCC', ...
                    struct('LineStyle', 'o'))});
%                    'legendLocation', 'NorthOutside'
plotFigure(plot_diff_iv)
print -depsc2 current-clamp-firing-marley-all-Cd-cells-I-V-deriv.eps

% make a stack of IV and nS
plotFigure(plot_stack({plot_iv, plot_diff_iv}, [-60 0 NaN NaN], 'y', ...
                      '', struct('fixedSize', [3 5], 'xLabelsPos', ...
                                 'bottom', 'xTicksPos', 'bottom')));
print -depsc2 compare-input-res-K-chans-aCC-RP2.eps

% ****************************************
% FIGURE 6F-I: Changing locations of Na-K channels in morphology
% ****************************************

% different cases are simulated using
% exp-axon-tail2-chans-axon-last.ses: Last reconstructed section of
% axon. 
% exp-axon-tail2-chans-in-all.ses: All of reconstructed morphology.
% exp-axon-tail2-chans-botdend.ses: Bottom (ipsilateral) dendrite.
% exp-axon-tail2-chans-axon.ses: All of reconstructed axon.
% exp-axon-tail2-chans-ext-axon-70um.ses: Added 2-piece axon and channels
% at distance of 70um.

% use the nrniv window (created with Tools->Misc->Family) to start a
% current injection series with 11 steps. 

% Save the simulated data using the saveLines function defined in
% fitfuncs.hoc, such as in: 
% saveLines(2, 1, 11, "data-axon-tail2-chans-botdend")

% Note that you will need to first run the model without stimulation for
% several hundred ms to reach its steady-state and then run finitialize()
% and then saveState() to save it into a file. This file will be loaded at
% each time init() is called.

% plotted in matlab:

% chans in all case
% ********************

chans_in_all_t = ...
    trace([ 'data-axon-tail2-chans-in-all_11_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, 'Neuron axon tail2 - chans in all', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1)); % , 'numTraces', 11 (better use trace2cc below)
plot(chans_in_all_t)

% make a CC obj
chans_in_all_cc = ...
    trace2cc(chans_in_all_t, ...
             [50 550], 0:0.005:0.05, ...
             struct('threshold', 1, 'downThreshold', -1, ...
                    'minInit2MaxAmp', 1, 'minMin2MaxAmp', 1, ...
                    'Ihold', 0, 'paramsStruct', struct));
plot(chans_in_all_cc)

% make a tiny figure w current injections 0, 10, 30, 50pA
plotFigure(plot_abstract(setLevels(chans_in_all_cc, [3 7 11]), ...
                         ' - 10, 30, 50 pA', ...
                         struct('fixedSize', [2 2], ...
                                'noTitle', 1, ...
                                'relativeSizes', [1 4], ...
                                'curUnit', 'pA', ...
                                'xTicksPos', 'bottom', ...
                                'axisLimits', [0 600 NaN NaN])))
print('-depsc2', [ morph_analdir 'cc_plots/plot-axon-tail2-chans-in-all_3steps.eps']);

% extract characteristics
[a_db profs ] = params_tests_db(chans_in_all_cc)
displayRows(a_db(:, {'cip_level_pA', 'PulseSpikeRateISI'}))

% an f-I plot
plotFigure(set(plotScatter(a_db, ...
                           'cip_level_pA', 'PulseSpikeRateISI', 'test', 'model', ...
                           struct('LineStyle', '-', 'fixedSize', [2.5 2], 'noTitle', 1)), ...
                   'axis_labels', {'current [pA]', 'firing rate [Hz]'}))


% chans in bot dend
% ********************

chans_botdend_cc = ...
    trace2cc(trace([ 'data-axon-tail2-chans-botdend_11_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, 'Neuron axon tail2 - chans in bot dend', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1)), ...
             [50 550], 0:0.005:0.05, ...
             struct('threshold', 1, 'downThreshold', -1, ...
                    'minInit2MaxAmp', 1, 'minMin2MaxAmp', 1, ...
                    'Ihold', 0, 'paramsStruct', struct));
plot(chans_botdend_cc)

% make a tiny figure w current injections 0, 10, 30, 50pA
plotFigure(plot_abstract(setLevels(chans_botdend_cc, [3 7 11]), ...
                         ' - 10, 30, 50 pA', ...
                         struct('fixedSize', [2 2], ...
                                'noTitle', 1, ...
                                'relativeSizes', [1 4], ...
                                'curUnit', 'pA', ...
                                'xTicksPos', 'bottom', ...
                                'axisLimits', [0 600 NaN NaN])))
% select v axis
a = axis;
a(3:4) = [-70 50];
axis(a);
print('-depsc2', [ morph_analdir 'cc_plots/plot-axon-tail2-chans-botdend_3steps.eps']);

% chans in axon
% ********************

chans_axon_cc = ...
    trace2cc(trace([ 'data-axon-tail2-chans-axon_11_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, 'Neuron axon tail2 - chans in axon', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1)), ...
             [50 550], 0:0.005:0.05, ...
             struct('threshold', 1, 'downThreshold', -1, ...
                    'minInit2MaxAmp', 1, 'minMin2MaxAmp', 1, ...
                    'Ihold', 0, 'paramsStruct', struct));
plot(chans_axon_cc)

% make a tiny figure w current injections 0, 10, 30, 50pA
plotFigure(plot_abstract(setLevels(chans_axon_cc, [3 7 11]), ...
                         ' - 10, 30, 50 pA', ...
                         struct('fixedSize', [2 2], ...
                                'noTitle', 1, ...
                                'relativeSizes', [1 4], ...
                                'curUnit', 'pA', ...
                                'xTicksPos', 'bottom', ...
                                'axisLimits', [0 600 NaN NaN])))
% select v axis
set(gca, 'YLim', [-70 50]);
print('-depsc2', [ morph_analdir 'cc_plots/plot-axon-tail2-chans-axon_3steps.eps']);

% chans in axon last segment
% ******************************

chans_axon_last_cc = ...
    trace2cc(trace([ 'data-axon-tail2-chans-axon-last_11_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, 'Neuron axon tail2 - chans in axon last segment', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1)), ...
             [50 550], 0:0.005:0.05, ...
             struct('threshold', 1, 'downThreshold', -1, ...
                    'minInit2MaxAmp', 1, 'minMin2MaxAmp', 1, ...
                    'Ihold', 0, 'paramsStruct', struct));
plot(chans_axon_last_cc)

% make a tiny figure w current injections 0, 10, 30, 50pA
plotFigure(plot_abstract(setLevels(chans_axon_last_cc, [3 7 11]), ...
                         ' - 10, 30, 50 pA', ...
                         struct('fixedSize', [2 2], ...
                                'noTitle', 1, ...
                                'relativeSizes', [1 4], ...
                                'curUnit', 'pA', ...
                                'xTicksPos', 'bottom', ...
                                'axisLimits', [0 600 NaN NaN])))
% select v axis
set(gca, 'YLim', [-70 50]);
print('-depsc2', [ morph_analdir 'cc_plots/plot-axon-tail2-chans-axon-last_3steps.eps']);

% chans in ext axon, 70 um from last axon segment
% **************************************************

chans_ext_axon_70um_cc = ...
    trace2cc(trace([ 'data-axon-tail2-chans-ext-axon-70um_11_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, 'Neuron axon tail2 - chans in ext axon 70 um from last axon segment', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1)), ...
             [50 550], 0:0.005:0.05, ...
             struct('threshold', 1, 'downThreshold', -1, ...
                    'minInit2MaxAmp', 1, 'minMin2MaxAmp', 1, ...
                    'Ihold', 0, 'paramsStruct', struct));
plot(chans_ext_axon_70um_cc)

% make a tiny figure w current injections 0, 10, 30, 50pA
plotFigure(plot_abstract(setLevels(chans_ext_axon_70um_cc, [3 7 11]), ...
                         ' - 10, 30, 50 pA', ...
                         struct('fixedSize', [2 2], ...
                                'noTitle', 1, ...
                                'relativeSizes', [1 4], ...
                                'curUnit', 'pA', ...
                                'xTicksPos', 'bottom', ...
                                'axisLimits', [0 600 NaN NaN])))
% select v axis
set(gca, 'YLim', [-70 50]);
print('-depsc2', [ morph_analdir 'cc_plots/plot-axon-tail2-chans-ext-axon-70um_3steps.eps']);


% ****************************************
% FIGURE 6J: aCC current reponse
% ****************************************

% same as in fig 2

% ****************************************
% FIGURE 6K,L: voltage offset and spike amp comparison
% ****************************************

% another plot showing spike height vs pA
% ********************

% extract characteristics
[chans_in_all_db] = params_tests_db(chans_in_all_cc);
[chans_botdend_db] = params_tests_db(chans_botdend_cc);
[chans_axon_db] = params_tests_db(chans_axon_cc);
[chans_axon_last_db] = params_tests_db(chans_axon_last_cc);
[chans_ext_axon_70um_db] = params_tests_db(chans_ext_axon_70um_cc);

% func for making line plot
plot_spikeamp = @(a_db, a_label) ...
    set(plotScatter(a_db, ...
                    'cip_level_pA', 'PulseSpikeAmplitudeMean', 'Spike Amp', a_label, ...
                    struct('LineStyle', '-', 'noTitle', 1)), ...
        'axis_labels', {'current [pA]', 'mean spike amplitude [mV]'});

% compare spike amps together
plotFigure(plot_superpose({...
    setProp(plot_spikeamp(chans_in_all_db, 'all'), ...
            'fixedSize', [4 2], 'legendLocation', 'EastOutside', ...
            'axisLimits', [0 50 0 80], ...
            'axisProps', struct('Box', 'off'), ...
            'ColorOrder', [0 0 1; 0 0.5 0; 1 0 0; ...
                    [232 170 228]./255; [191 0 191]./255; [0 0 0]]), ...
    plot_spikeamp(chans_botdend_db, 'botdend'), ...
    plot_spikeamp(chans_axon_db, 'axon'), ...
    plot_spikeamp(chans_axon_last_db, 'axonlast'), ...
    plot_spikeamp(chans_ext_axon_70um_db, 'ext70um') ...
    plot_cip_stats(cell2_db, 'aCC w/ Cd^{2+}', ...
                   'cip_level_pA', 'PulseSpikeAmplitudeMean')
                          }))
print('-depsc2', [ 'plot-chan-dists-compare-spike-amp.eps']);

% do also for offset
plot_offset = @(a_db, a_label) ...
    set(plotScatter(a_db, ...
                    'cip_level_pA', 'PulsePotAvg', 'Voltage Offset', a_label, ...
                    struct('LineStyle', '-', 'noTitle', 1)), ...
        'axis_labels', {'current [pA]', 'voltage offset [mV]'});

plotFigure(plot_superpose({...
    setProp(plot_offset(chans_in_all_db, 'all'), ...
            'axisLimits', [0 50 -65 0], ...
            'fixedSize', [2.5 2], 'noLegends', 1, ...
            'axisProps', struct('Box', 'off'), ...
            'ColorOrder', [0 0 1; 0 0.5 0; 1 0 0; ...
                    [232 170 228]./255; [191 0 191]./255; [0 0 0]]), ...
    plot_offset(chans_botdend_db, 'botdend'), ...
    plot_offset(chans_axon_db, 'axon'), ...
    plot_offset(chans_axon_last_db, 'axonlast'), ...
    plot_offset(chans_ext_axon_70um_db, 'ext70um') ...
    plot_cip_stats(cell2_db, 'aCC w/ Cd^{2+}', ...
                   'cip_level_pA', 'PulsePotAvg') ...
                   }))
print('-depsc2', [ 'plot-chan-dists-compare-offset.eps']);

% ************************************************************
% Figure 7: NaT and NaP components affected by morphology
% ************************************************************

% load exp-axon-tail2-chans-ext-axon-70um-onlyNa.ses

% ********************
% Panel 7A: Voltage distribution across morphology
% ********************

% save voltages with:
% saveLines(1, 1, 14, "data-axon-tail2-axon-70um-vc-Na-Kdr-long-back-85mV-justV")

% $$$ oc>readGraph(1)
% $$$ #0 label=electrode 
% $$$ #2 label=soma 
% $$$ #4 label=axon (prox) 
% $$$ #6 label=axon (mid) 
% $$$ #8 label=axon (dist) 
% $$$ #10 label=top dend 
% $$$ #12 label=bot dend 
% $$$ #14 label=axon ext (dist) 

% $$$ 

vc_t = ...
    trace([ morph_analdir 'data-axon-tail2-axon-70um-vc-Na-Kdr-long-back-85mV-justV_14_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, 'VC volt-dist passive w/ ext axon', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1))

% reshape it
vc_t.data = reshape(vc_t.data, size(vc_t.data, 1) / 14, 14);

% select few representative v traces
vc_t.data = vc_t.data(:, [1 2 7 13]);

plotFigure(set(plot_abstract(vc_t, '', ...
                             struct('fixedSize', [3.5 2], ...
                                    'legendLocation', 'EastOutside', ...
                                    'noTitle', 1, ...
                                    'axisLimits', [50 110 -87 50], ...
                                    'axisProps', struct('Box', 'off'))), ...
               'legend', ...
               {'electrode', 'soma', 'dist. axon', 'ext. axon'}))

%print('-depsc2', [ morph_analdir 'cc_plots/plot-Na-vc-Na-Kdr-volt-dists.eps']);
print('-depsc2', [ morph_analdir 'cc_plots/plot-Na-vc-noKdr-volt-dists.eps']);

% ********************
% Panel 7A: Na currents throughout the morphology
% ********************

% to get currents, save voltages with passive and active properties, and
% then subtract one from the other.

% run this to save both passive and active traces:
% oc> runSave("exp-name")
% where "exp-name" is a keyword you want to append to file names.

load_pas_vt = @(name)...
          trace([ name ], ...
          25e-6, 1e-3, 'VC passive w/ ext axon', ... 
         struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1));

load_act_vt = @(name)...
          trace([ name ], ...
          25e-6, 1e-3, 'VC active w/ ext axon', ... 
         struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1));

% axon13 to axon12 axial resistance (attached to soma)
ri = 25.045413 + 6.2445732; % MOhms

% first pas
vaxon12_pas_t = ...
    load_pas_vt('data-ext-axon-70um-onlyNa_axon[12](0.5)_pas_dt_0.025000ms.bin');
vaxon13_pas_t = ...
    load_pas_vt('data-ext-axon-70um-onlyNa_axon[13](0.5)_pas_dt_0.025000ms.bin');
iaxon12_pas_t = (vaxon13_pas_t - vaxon12_pas_t) ./ ri; % mV/MO=nA
iaxon12_pas_t.props.unit_y='A';
%plot(iaxon12_pas_t)

% then act
vaxon12_act_t = ...
    load_act_vt('data-ext-axon-70um-onlyNa_axon[12](0.5)_act_dt_0.025000ms.bin');
vaxon13_act_t = ...
    load_act_vt('data-ext-axon-70um-onlyNa_axon[13](0.5)_act_dt_0.025000ms.bin');
iaxon12_act_t = (vaxon13_act_t - vaxon12_act_t) ./ ri; % mV/MO=nA
iaxon12_act_t.props.unit_y='A';
%plot(iaxon12_act_t)

% take the difference in current
iaxon12_t = iaxon12_act_t - iaxon12_pas_t;
iaxon12_t.props.unit_y='A';
iaxon12_t.dy=1e-9;
plot(iaxon12_t)

% axon6 to axon7 (middle of ipsilateral dendritic tree)
ri = 1.8150921 + 0.83369277; % MOhms

% first pas
vaxon6_pas_t = ...
    load_pas_vt('data-ext-axon-70um-onlyNa_axon[6](0.5)_pas_dt_0.025000ms.bin');
vaxon7_pas_t = ...
    load_pas_vt('data-ext-axon-70um-onlyNa_axon[7](0.5)_pas_dt_0.025000ms.bin');
iaxon6_pas_t = (vaxon7_pas_t - vaxon6_pas_t) ./ ri; % mV/MO=nA
iaxon6_pas_t.props.unit_y='A';
plot(iaxon6_pas_t)

% then act
vaxon6_act_t = ...
    load_act_vt('data-ext-axon-70um-onlyNa_axon[6](0.5)_act_dt_0.025000ms.bin');
vaxon7_act_t = ...
    load_act_vt('data-ext-axon-70um-onlyNa_axon[7](0.5)_act_dt_0.025000ms.bin');
iaxon6_act_t = (vaxon7_act_t - vaxon6_act_t) ./ ri; % mV/MO=nA
iaxon6_act_t.props.unit_y='A';
plot(iaxon6_act_t)

% take the difference in current
iaxon6_t = iaxon6_act_t - iaxon6_pas_t;
iaxon6_t.props.unit_y='A';
iaxon6_t.dy=1e-9;
plot(iaxon6_t)

% start of axon_ext[1] from 0.02 to 0.06 (SIZ location)
ri = 98.22134; % MOhms
vaxon_ext1a_pas_t = ...
    load_pas_vt('data-ext-axon-70um-onlyNa_axon_ext[1](0.02)_pas_dt_0.025000ms.bin');
vaxon_ext1b_pas_t = ...
    load_pas_vt('data-ext-axon-70um-onlyNa_axon_ext[1](0.06)_pas_dt_0.025000ms.bin');
iaxon_ext1_pas_t = (vaxon_ext1a_pas_t - vaxon_ext1b_pas_t) ./ ri; % mV/MO=nA
iaxon_ext1_pas_t.props.unit_y='A';
plot(iaxon_ext1_pas_t)

% act
vaxon_ext1a_act_t = ...
    load_act_vt('data-ext-axon-70um-onlyNa_axon_ext[1](0.02)_act_dt_0.025000ms.bin');
vaxon_ext1b_act_t = ...
    load_act_vt('data-ext-axon-70um-onlyNa_axon_ext[1](0.06)_act_dt_0.025000ms.bin');
iaxon_ext1_act_t = (vaxon_ext1a_act_t - vaxon_ext1b_act_t) ./ ri; % mV/MO=nA
iaxon_ext1_act_t.props.unit_y='A';
plot(iaxon_ext1_act_t)

% sub
iaxon_ext1_t = iaxon_ext1_act_t - iaxon_ext1_pas_t;
iaxon_ext1_t.props.unit_y='A';
iaxon_ext1_t.dy=1e-9;
plot(iaxon_ext1_t)

% start of axon_ext[0] from 0.3 to 0.5 (extended axon - 70 um)
ri = 52.640496; % MOhms
vaxon_ext0a_pas_t = ...
    load_pas_vt('data-ext-axon-70um-onlyNa_axon_ext[0](0.3)_pas_dt_0.025000ms.bin');
vaxon_ext0b_pas_t = ...
    load_pas_vt('data-ext-axon-70um-onlyNa_axon_ext[0](0.5)_pas_dt_0.025000ms.bin');
iaxon_ext0_pas_t = (vaxon_ext0a_pas_t - vaxon_ext0b_pas_t) ./ ri; % mV/MO=nA
iaxon_ext0_pas_t.props.unit_y='A';
iaxon_ext0_pas_t.dy=1e-9;
plot(iaxon_ext0_pas_t)

% act
vaxon_ext0a_act_t = ...
    load_act_vt('data-ext-axon-70um-onlyNa_axon_ext[0](0.3)_act_dt_0.025000ms.bin');
vaxon_ext0b_act_t = ...
    load_act_vt('data-ext-axon-70um-onlyNa_axon_ext[0](0.5)_act_dt_0.025000ms.bin');
iaxon_ext0_act_t = (vaxon_ext0a_act_t - vaxon_ext0b_act_t) ./ ri; % mV/MO=nA
iaxon_ext0_act_t.props.unit_y='A';
iaxon_ext0_act_t.dy=1e-9;
plot(iaxon_ext0_act_t)

% sub
iaxon_ext0_t = iaxon_ext0_act_t - iaxon_ext0_pas_t;
plot(iaxon_ext0_t)

% manicured plot version
plotFigure(plot_superpose({...
  plot_abstract(iaxon12_t, 'axon[12]', ...
                struct('quiet', 1, 'fixedSize', [2.5 2], ...
                       'noTitle', 1, ...
                       'axisLimits', [54 70 -.25 0.01], ...
                       'plotProps', struct('LineWidth', 2), ...
                       'axisProps', struct('Box', 'off'))), ...
  plot_abstract(iaxon6_t, 'axon[6]', struct('quiet', 1)), ...
  plot_abstract(iaxon_ext0_t, 'axon_ext[0]', struct('quiet', 1))}))

print('-depsc2', [ morph_analdir 'vc_plots/plot-vc-ext-axon-70um-onlyNa-85mV_to_-25mV_compare_3compartments.eps']);

% ********************
% Panel 7B: Na current changes with increases in NaT vs NaP conductances
% ********************

% In Neuron, apply NaP/T changes for given current injection

% this is the passive case so that we can use it for capacitance artifact
% subtraction. It's a VC step from -85 mV to -25 mV like in Marley's L3 recording.
na_pas_t = ...
    trace([ 'data-axon-tail2-axon-70um-vc-noKdr-long-back-85mV-passive_4_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-9, 'VC passive w/ ext axon', ... 
         struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1, ...
                 'channel', 1))

% regular Na channels (w/o Kdr it stays depolarized unless it's properly initialized)
na_t = ...
    trace([ 'data-axon-tail2-axon-70um-vc-noKdr-long-back-85mV-Na_4_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-9, 'VC to get Na currents - chans 70 um into ext axon', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1, ...
                 'channel', 1))

% subtract passive capacitance artifacts
na_sub_t = na_t - na_pas_t;

% 5xNaT conductance from regular
nat5_t = ...
    trace([ 'data-axon-tail2-axon-70um-vc-noKdr-long-back-85mV-Na-5xNaT_4_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-9, 'Na-VC chans 70 um into ext axon, 2xNaT', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1, ...
                 'channel', 1))

% 5xNaP conductance from regular
nap5_t = ...
    trace([ 'data-axon-tail2-axon-70um-vc-noKdr-long-back-85mV-Na-5xNaP_4_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-9, 'Na-VC chans 70 um into ext axon, 2xNaP', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1, ...
                 'channel', 1))

% moved to 50um axon_ext
na_50um_t = ...
    trace([ 'data-axon-tail2-axon-50um-vc-noKdr-long-back-85mV-Na_4_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-9, 'VC to get Na currents - chans 50 um into ext axon', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1, ...
                 'channel', 1))

% set axis size the same so can use same scalebars
% calc_axis - produces axis() command output
calc_axis = @(x,y,w,h) [x, x+w, y, y+h];

% compare all in one panel
plotFigure(plot_superpose({...
  plot_abstract(na_t - na_pas_t, 'orig.', ...
                struct('fixedSize', [2.5 2], 'noTitle', 1, 'quiet', 1, ...
                       'plotProps', struct('LineWidth', 2), ...
                       'axisProps', struct('Box', 'off'))), ...
  plot_abstract(nat5_t - na_pas_t, '5xNaT', struct('quiet', 1)), ...
  plot_abstract(nap5_t - na_pas_t, '5xNaP', struct('quiet', 1)), ...
  plot_abstract(na_50um_t - na_pas_t, '50\mu{}m', struct('quiet', 1))}))

axis(calc_axis(53, -0.15, 25, 0.16))

%print('-depsc2', [ morph_analdir 'cc_plots/plot-vc-long-back-85mV-NaT-NaP-double.eps']);
%print('-depsc2', [ morph_analdir 'cc_plots/plot-vc-long-back-85mV-NaT-NaP-5x.eps']);
print('-depsc2', [ morph_analdir 'cc_plots/plot-vc-long-back-85mV-NaT-NaP-5x+50um.eps']);

% ********************
% Panel 7C/D
% ********************

% move axis to show NaT
axis(calc_axis(275, 0, 5, 0.4))
print('-depsc2', [ morph_analdir 'cc_plots/plot-vc-long-back-85mV-NaT-NaP-5x-show-NaT.eps']);

% move axis to show NaP
axis(calc_axis(380, 0, 25, 0.0007))
print('-depsc2', [ morph_analdir 'cc_plots/plot-vc-long-back-85mV-NaT-NaP-5x-show-NaP.eps']);

% ********************
% Panel 7E: P/T ratio changing with other parameters
% ********************

pt_ratios_db = ...
    tests_db('NaP_NaT_data.csv', {}, {}, ...
             ['Collected data for NaP/NaT '], ...
             struct('csvReadColNames', 1));
% export for paper
string2File(displayRowsTeX(transpose(pt_ratios_db)), 'table-PT-ratios-escape-VC.tex')

border = [0 .03 .1 0];
axis_limits = [0 1e-4 NaN NaN];
color_obsV = [0 0.49 0];
color_PT = [0.87 0.49 0];
plotFigure(plot_inset({...
    plotScatter(pt_ratios_db(1:4, :), 'galeak', 'PTsoma', '', '', ...
                       struct('quiet', 1, 'LineStyle', '-', ...
                              'border', border, ...
                              'axisLimits', axis_limits, ...
                              'plotProps', ...
                              struct('Color', color_PT, ...
                                     'LineWidth', 2), ...
                              'axisProps', ...
                              struct('Box', 'off', ...
                                     'YColor', color_PT))), ...
    plotScatter(pt_ratios_db(1:4, :), 'galeak', 'obsV', '', '', ...
                       struct('quiet', 1, 'LineStyle', '-', ...
                              'border', border, ...
                              'axisLimits', axis_limits, ...
                              'plotProps', ...
                              struct('Color', color_obsV, ...
                                     'LineWidth', 2), ...
                              'axisProps', ...
                              struct('Color', 'none', ...
                                     'YColor', color_obsV, ...
                                     'YAxisLocation', 'right', ...
                                     'Box', 'off')))}, ...
                      [0 0 1 1; 0 0 1 1], '', ...
                      struct('fixedSize', [2.5 2], ...
                             'border', [0 .03 .03 0])))
print -depsc2 plot-scatter-galeak-vs-PTsoma-obsV.eps

% ****************************************
% Figure 8A: compare synaptic mini currents injected at different sites.
% ****************************************

% use exp-axon-tail2-chans-ext-axon-70um-mimic-synapses.ses and
% exp-axon-tail2-chans-ext-axon-70um-mimic-synapses-v-change.ses, which
% is the no-VC version.

% choose axis limits to deo all different synapse locations
axis_limits = [48 72 -12 1];

syn_ext_axon_70um_dend685_t = ...
    trace([ 'data-syn-dend-685_2_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-12, 'dend685 synapse - Neuron axon tail2 chans 70 um into ext axon', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1e3, ...
                 'channel', 1, 'numTraces', 2));
plotFigure(plot_abstract(syn_ext_axon_70um_dend685_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1, ...
                                'axisLimits', axis_limits)))


syn_ext_axon_70um_dend520_t = ...
    trace([ 'data-syn-dend-520_2_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-12, 'dend520 synapse - Neuron axon tail2 chans 70 um into ext axon', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1e3, ...
                 'channel', 1, 'numTraces', 2));
plotFigure(plot_abstract(syn_ext_axon_70um_dend520_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1, ...
                                'axisLimits', axis_limits)))

syn_ext_axon_70um_dend357_t = ...
    trace([ 'data-syn-dend-357_2_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-12, 'dend357 synapse - Neuron axon tail2 chans 70 um into ext axon', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1e3, ...
                 'channel', 1, 'numTraces', 2));
plotFigure(plot_abstract(syn_ext_axon_70um_dend357_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1, ...
                                'axisLimits', axis_limits)))

syn_ext_axon_70um_dend513_t = ...
    trace([ 'data-syn-dend-513_2_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-12, 'dend513 synapse - Neuron axon tail2 chans 70 um into ext axon', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1e3, ...
                 'channel', 1, 'numTraces', 2));
plotFigure(plot_abstract(syn_ext_axon_70um_dend513_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1, ...
                                'axisLimits', axis_limits)))

% plot all of them in stack
plotFigure(plot_stack({plot_abstract(syn_ext_axon_70um_dend685_t, '', ...
                         struct('noTitle', 1)), ...
                    plot_abstract(syn_ext_axon_70um_dend520_t, '', ...
                         struct('noTitle', 1)), ...
                    plot_abstract(syn_ext_axon_70um_dend357_t, '', ...
                         struct('noTitle', 1)), ...
                    plot_abstract(syn_ext_axon_70um_dend513_t, '', ...
                         struct('noTitle', 1))}, axis_limits, 'x', '', ...
                      struct('yTicksPos', 'left', 'yLabelsPos', 'left', ...
                             'fixedSize', [6 2])))
% export this and modify EPS
print('-depsc2', [ morph_analdir 'vc_plots/plot-4-synapses-6pA-epsc-' ...
                   'axon-tail2-chans-ext-axon-70um-iclamp.eps']);

% ****************************************
% Figure 8B: single AP generation
% ****************************************

% load V graph that shows single AP generation
v_syn_ext_axon_70um_dend685_AP_t = ...
    trace([ 'data-v-syn-dend-685-AP_3_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, 'dend685 synapse AP - Neuron axon tail2 chans 70 um into ext axon', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1, 'numTraces', 3));
plotFigure(plot_abstract(v_syn_ext_axon_70um_dend685_AP_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1)))
legend('elec', 'syn', 'ext\_axon')
print('-depsc2', [ morph_analdir 'cc_plots/plot-4-synapses-AP-elec-syn-axon-' ...
                   'axon-tail2-chans-ext-axon-70um-iclamp.eps']);

% ****************************************
% Figure 8C: curve of presynaptic stim freq vs output current
% ****************************************

syn1_freq_db = ...
    tests_db([[10, 50, 100, 200, 333, 1000]; ...
              [6,   6,   7,  11,  17,   37]]', ...
             {'presyn_freq_Hz', 'soma_cur_pA'}, {}, ...
             'synapse 685 stim w/ 10 spikes');
plotFigure(plotScatter(syn1_freq_db, 'presyn_freq_Hz', 'soma_cur_pA', ...
                       '', '', ...
                       struct('LineStyle', '-o', 'fixedSize', [2.5 2], ...
                              'noTitle', 1, 'tightLimits', 1)))
print('-depsc2', ...
      [ morph_analdir 'synapse_plots/plot-curve-dend685-num-EPSCs-10-presyn-freq-vs-soma-cur-vc-60mV.eps']);

% ****************************************
% Figure 8D: voltage/current graphs that show saturation at dend513 synapse
% ****************************************

% w/o VC
v_syn_dend513_180_10_saturate_noVC_t = ...
    trace([ 'data-v-syn-dend-513-180-EPSCs-10x-1ms-saturating-noVC_5_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, 'dend513 synapse 180x 10 EPSCs at 1ms interval V, no VC', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1, 'numTraces', 5));
plotFigure(plot_abstract(v_syn_dend513_180_10_saturate_noVC_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1)))
legend('soma', 'syn', 'axon')
print('-depsc2', ...
      [ morph_analdir 'synapse_plots/plot-v-syn-axon-dend513-180x-EPSCs-10-at-1ms-each-noVC.eps']);


% graph current
syn_dend513_180_10_saturate_t = ...
    trace([ 'data-i-vclamp-syn-dend-513-180-EPSCs-10x-1ms-saturating_2_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-12, 'dend513 synapse 180x 10 EPSCs at 1ms interval', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1e3, ...
                 'channel', 1, 'numTraces', 2));
plotFigure(plot_abstract(syn_dend513_180_10_saturate_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1)))
legend('vc', 'syn')
% truncated peak at -1981 pA
print('-depsc2', [ morph_analdir 'synapse_plots/plot-syn-vc-dend513-180x-EPSCs-10-at-1ms-each-vc-60mV-100ms.eps']);

% ****************************************
% Figure 9A: 4x synapse case
% ****************************************

% use
% exp-axon-tail2-chans-ext-axon-70um-mimic-synapses-sustained-currents.ses

% voltage
v_4dends_50x_10_EPSCs_interval_10ms_noVC_t = ...
    trace([ 'data-v-syn-4dends-50-EPSCs-10x-10ms-noVC_6_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, '4 dends synapse 50x 10 EPSCs at 10ms interval V, no VC', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1, 'numTraces', 6));
plotFigure(plot_abstract(v_4dends_50x_10_EPSCs_interval_10ms_noVC_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1)))
legend('axon', 'soma', 'syn')
print('-depsc2', ...
      [ morph_analdir 'synapse_plots/plot-v-syn-axon-4dend-50x-EPSCs-10-at-10ms-each-noVC.eps']);

% current
i_4dends_50x_10_EPSCs_interval_10ms_noVC_t = ...
    trace([ 'data-i-syn-4dends-50-EPSCs-10x-10ms-VC-60mV_5_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-12, '4 dends synapse 50x 10 EPSCs at 10ms interval', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1e3, ...
                 'channel', 1, 'numTraces', 5));
plotFigure(plot_abstract(i_4dends_50x_10_EPSCs_interval_10ms_noVC_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1)))
legend('I_{VC}', 'syn1', 'syn2', 'syn3', 'syn4')
print('-depsc2', [ morph_analdir 'synapse_plots/plot-i-vc-4dends-50x-EPSCs-10-at-10ms-each-vc-60mV.eps']);

% ****************************************
% Figure 9B: 10x synapse case with exactly 10 spikes @ 100 Hz
% ****************************************

% use exp-axon-tail2-chans-ext-axon-70um-10x-mimic-sustained.ses, but no
% randomization.

% voltage
v_10dends_20x_EPSCs_10_interval_10ms_noVC_t = ...
    trace([ 'data-v-syn-10dends-20-EPSCs-10x-10ms-noVC_6_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-3, '10 dends synapse 20x 10 EPSCs at 10ms interval V, no VC', ...
          struct('file_type', 'neuron', 'unit_y', 'V', 'scale_y', 1, ...
                 'channel', 1, 'numTraces', 6));
plotFigure(plot_abstract(v_10dends_20x_EPSCs_10_interval_10ms_noVC_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1)))
legend('axon', 'bottom dend', 'top dend', 'soma')
print('-depsc2', ...
      [ morph_analdir 'synapse_plots/plot-v-syn-axon-10dend-20x-EPSCs-10-at-10ms-each-noVC.eps']);

% current
i_10syns_20x_EPSCs_10x_interval_10ms_VC_t = ...
    trace([ 'data-i-syn-10syns-20-EPSCs-10x-10ms-VC-60mV_6_lines_dt_0.025000ms.bin'], ...
          25e-6, 1e-12, '10 synapses 20x EPSCs 10 at 10ms interval', ...
          struct('file_type', 'neuron', 'unit_y', 'A', 'scale_y', 1e3, ...
                 'channel', 1, 'numTraces', 6));
plotFigure(plot_abstract(i_10syns_20x_EPSCs_10x_interval_10ms_VC_t, '', ...
                         struct('fixedSize', [2.5 2], ...
                                'noTitle', 1)))
legend('I_{VC}', 'syn1', 'syn3', 'syn5', 'syn7', 'syn9')
print('-depsc2', [ morph_analdir 'synapse_plots/plot-i-vc-10dends-20x-EPSCs-10-at-10ms-each-vc-60mV.eps']);

% ****************************************
% Figure 9D: EPSCx vs I curves
% ****************************************

% make curve of 1 synapse 180x @ 1 kHz (saturation)
syn1_1kHz_db = ...
    tests_db([[10, 20, 50, 120, 180]; [200, 330, 380, 405, 418]]', ...
             {'syn_mag_times', 'syn_cur_pA'}, {}, ...
             'synapse 513 saturation w/ 10 spikes @ 1kHz');
plotFigure(plotScatter(syn1_1kHz_db, 'syn_mag_times', 'syn_cur_pA', ...
                       '', '', ...
                       struct('LineStyle', '-o', 'fixedSize', [2.5 2], ...
                              'noTitle', 1, 'tightLimits', 1)))
print('-depsc2', ...
      [ morph_analdir 'synapse_plots/plot-curve-dend513-num-EPSCs-10-at-1ms-each-vs-peak-syn-cur-vc-60mV.eps']);

% curve for 4 synapses 50x @ 100 Hz
syn4_100Hz_db = ...
    tests_db([4*[10, 20, 30, 40, 50]; [166, 275, 347, 408, 452]]', ...
             {'num_EPSCs', 'soma_cur_pA'}, {}, ...
             '4 synapses w/ shifted 10 spikes @ 100Hz');

% data for 10 spikes at 10 synapses @ 100 Hz
syn10_100Hz_db = ...
    tests_db([10*[1 5 10 15 20 25 30 35]; [46 194 324 395 462 511 552 583]]', ...
             {'num_EPSCs', 'soma_cur_pA'}, {}, ...
             '10 synapses w/ shifted 10 spikes @ 100Hz');

plotFigure(superposePlots([plotScatter(syn1_1kHz_db, 'syn_mag_times', 'syn_cur_pA', ...
                       '', '1 syn @ 1kHz', ...
                       struct('LineStyle', '-o', 'fixedSize', [2.5 2], ...
                              'noTitle', 1, 'axisLimits', [0 350 0 650])), ...
                    plotScatter(syn4_100Hz_db, 'num_EPSCs', 'soma_cur_pA', ...
                       '', '4 syn @ 100Hz', ...
                       struct('LineStyle', '-+')), ...
                    plotScatter(syn10_100Hz_db, 'num_EPSCs', 'soma_cur_pA', ...
                       '', '10 syn @ 100Hz', ...
                       struct('LineStyle', '-d'))]))

print('-depsc2', ...
      [ morph_analdir 'synapse_plots/plot-curve-num-EPSCs-vs-peak-soma-cur-all-conds-vc-60mV.eps']);

% ========================================
% Figure 9E: input frequency with 10 synapses
% ========================================

syn10_freq_db = ...
    tests_db([[10 50 100 200]; ...
              [106 328 462 634]]', ...
             {'presyn_freq_Hz', 'soma_cur_pA'}, {}, ...
             '10 synapses 20x EPSC stim w/ 10 spikes');
plotFigure(plotScatter(syn10_freq_db, 'presyn_freq_Hz', 'soma_cur_pA', ...
                       '', '', ...
                       struct('LineStyle', '-o', 'fixedSize', [2.5 2], ...
                              'noTitle', 1, 'tightLimits', 1)))
axis([0 200 0 650])
legend('10 syn, 20x EPSC')
print('-depsc2', ...
      [ morph_analdir 'synapse_plots/plot-curve-10dend-num-EPSCs-20-presyn-freq-vs-soma-cur-vc-60mV.eps']);

% ========================================
% Figure 9F: SRCs
% ========================================

% for model; use exp-axon-tail2-chans-ext-axon-70um-10x-mimic-sustained.ses,
% with randomization.

% recorded SRC

synapse_SRCL3_datadir = ...
    [ '../data/' ];

src1_t = trace([synapse_SRCL3_datadir '12829006.abf'])
plot(src1_t, '', struct('timeScale', 's'))
% @ 9.8s: mag 500 pA, 600 ms
plot(src1_t, '', ...
     struct('timeScale', 's', ...
            'axisLimits', ...
            [9.7 10.7 -540 40], ...
            'fixedSize', [2.5 2], 'noTitle', 1))
print('-depsc2', [synapse_analdir 'src-12829006-t9.800-500pA-600ms.eps'] )