function a_plot = plotComparefICurve(m_bundle, m_trial, to_bundle, to_index, props)
% plotComparefICurve - Generates a f-I curve doc_plot comparing m_trial and to_index.
%
% Usage:
% a_plot = plotComparefICurve(m_bundle, m_trial, to_bundle, to_index, props)
%
% Description:
% Note that this is not a general method. to_bundle should have been able to accept
% any type of bundle. Most probably this method is redundant and deprecated.
%
% Parameters:
% m_bundle: A model_ct_bundle object.
% m_trial: Trial number of model.
% to_bundle: A physiol_bundle object.
% to_index: TracesetIndex of neuron.
% props: A structure with any optional properties.
% shortCaption: This appears in the figure caption.
% plotMStats: If set, add the m_bundle stats plot.
% plotToStats: If set, add the to_bundle stats plot.
% captionToStats: Use this as its legend label.
% quiet: if given, no title is produced
% (passed to plot_superpose)
%
% Returns:
% a_plot: A plot_superpose that contains a f-I curve plot.
%
% Example:
% >> a_p = plotComparefICurve(r, 1);
% >> plotFigure(a_p, 'The f-I curve of best matching model');
%
% See also: plot_abstract, plot_superpose
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2006/01/16
% Copyright (c) 2007 Cengiz Gunay <cengique@users.sf.net>.
% This work is licensed under the Academic Free License ("AFL")
% v. 3.0. To view a copy of this license, please look at the COPYING
% file distributed with this software or visit
% http://opensource.org/licenses/afl-3.0.php.
if ~ exist('props', 'var')
props = struct([]);
end
if isfield(props, 'shortCaption')
short_caption = props.shortCaption;
else
short_caption = ...
['f-I curves of trial ' num2str(m_trial) ' in ' get(get(m_bundle, 'joined_db'), 'id') ...
' vs. index ' num2str(to_index) ' in ' get(to_bundle.joined_db, 'id') '.' ];
end
if isfield(props, 'quiet')
caption = '';
else
caption = [ short_caption ];
end
% TODO: get these from uniqueValues
curve_pAvals = [0 40 100 200];
curve_tests = {'IniSpontSpikeRateISI_0pA', 'PulseIni100msSpikeRateISI_D40pA', ...
'PulseIni100msSpikeRateISI_D100pA', 'PulseIni100msSpikeRateISI_D200pA'};
curve_labels = {'current pulse [pA]', 'firing rate [Hz]'};
joined_db = get(m_bundle, 'joined_db');
neuron_name = properTeXLabel(get(getItem(to_bundle.dataset, to_index), 'id'));
% to_bundle part is still a little hazy
plots_all = {};
plots_all = ...
{plots_all{:}, ...
plotYTests(joined_db(joined_db(:, 'trial') == m_trial, :), curve_pAvals, curve_tests, ...
curve_labels, 'frequency vs. current', [ 'model (t' num2str(m_trial) ')'], ...
[], struct('axisLimits', [0 200 0 100], 'quiet', 1)), ...
plotYTests(to_bundle.joined_db(to_bundle.joined_db(:, 'TracesetIndex') == to_index, :), ...
curve_pAvals, curve_tests, ...
curve_labels, '', [ neuron_name ' (avg)'], ...
[], struct('quiet', 1))};
if isfield(props, 'plotToStats')
if isfield(props, 'captionToStats')
stats_caption = props.captionToStats;
else
stats_caption = ['mean and STD of ' to_bundle.joined_db.id];
end
plots_all = {plots_all{:}, ...
plotYTests(statsMeanStd(to_bundle.joined_db), ...
curve_pAvals, curve_tests, curve_labels, ...
'', stats_caption, [], ...
struct('quiet', 1))};
end
a_plot = plot_superpose(plots_all, {}, caption, ...
mergeStructs(props, struct('legendLocation', 'NorthWest')));