function result = optostim_synaptic(dataset_1, dataset_2, label, xrange) if (nargin == 0) disp('usage: compare_synaptic(traces_1, traces_2, label)'); result = -1; return end figure(18) set(gcf,'DefaultAxesFontSize',12) set(gcf,'DefaultLineLineWidth',1) %data_size = size(dataset_1.time,1); subplot(2,2,1:2) plot(dataset_1.values); if nargin == 4 xlim(xrange); end y_range = get(gca, 'YLim'); disp('baseline begin ..'); click = ginput(1); base(1) = round(click(1)); line([base(1) base(1)], y_range, 'Color', 'k', 'LineStyle', '--'); disp('baseline end ..'); click = ginput(1); base(2) = round(click(1)); line([base(2) base(2)], y_range, 'Color', 'k', 'LineStyle', '--'); disp('synaptic input begin ..'); click = ginput(1); synapse(1) = round(click(1)); line([synapse(1) synapse(1)], y_range, 'Color', 'r', 'LineStyle', '--'); disp('synaptic input end ..'); click = ginput(1); synapse(2) = round(click(1)); line([synapse(2) synapse(2)], y_range, 'Color', 'r', 'LineStyle', '--'); data_max = max(max([ dataset_1.values(base(1):synapse(2),:) dataset_2.values(base(1):synapse(2),:) ])); data_min = min(min([ dataset_1.values(base(1):synapse(2),:) dataset_2.values(base(1):synapse(2),:) ])); data_span = data_max - data_min; data_range = [ data_min - data_span/10 data_max + data_span/10]; index_range = round([base(1)-(base(2)-base(1))/5 synapse(2)+(synapse(2)-synapse(1))/5]); subplot(2,2,1) plot(dataset_1.time(index_range(1):index_range(2)), dataset_1.values(index_range(1):index_range(2),:)); ylim(data_range) line([dataset_1.time(base(1)) dataset_1.time(base(1))], data_range, 'Color', 'k', 'LineStyle', '--'); line([dataset_1.time(base(2)) dataset_1.time(base(2))], data_range, 'Color', 'k', 'LineStyle', '--'); line([dataset_1.time(synapse(1)) dataset_1.time(synapse(1))], data_range, 'Color', 'r', 'LineStyle', '--'); line([dataset_1.time(synapse(2)) dataset_1.time(synapse(2))], data_range, 'Color', 'r', 'LineStyle', '--'); title(label); subplot(2,2,2) plot(dataset_2.time(index_range(1):index_range(2)), dataset_2.values(index_range(1):index_range(2),:)); ylim(data_range) line([dataset_1.time(base(1)) dataset_1.time(base(1))], data_range, 'Color', 'k', 'LineStyle', '--'); line([dataset_1.time(base(2)) dataset_1.time(base(2))], data_range, 'Color', 'k', 'LineStyle', '--'); line([dataset_1.time(synapse(1)) dataset_1.time(synapse(1))], data_range, 'Color', 'r', 'LineStyle', '--'); line([dataset_1.time(synapse(2)) dataset_1.time(synapse(2))], data_range, 'Color', 'r', 'LineStyle', '--'); total_1 = size(dataset_1.values,2); for index = 1:total_1 level = mean(dataset_1.values(base(1):base(2),index)); input = mean(dataset_1.values(synapse(1):synapse(2),index)); inputs_1(index) = level-input; end subplot(2,2,3) hold off bar(inputs_1) mean_1 = mean(inputs_1); hold on line([0 total_1],[mean_1 mean_1],'Color','r') y_range_1 = get(gca, 'YLim'); total_2 = size(dataset_2.values,2); for index = 1:total_2 level = mean(dataset_2.values(base(1):base(2),index)); input = mean(dataset_2.values(synapse(1):synapse(2),index)); inputs_2(index) = level-input; end subplot(2,2,4) hold off bar(inputs_2) mean_2 = mean(inputs_2); hold on line([0 total_2],[mean_2 mean_2],'Color','r') y_range_2 = get(gca, 'YLim'); ylim([0 max([y_range_1(2) y_range_2(2)])]); subplot(2,2,3) ylim([0 max([y_range_1(2) y_range_2(2)])]); SS_1 = 0; for index = 1:total_1 SS_1 = SS_1 + (inputs_1(index) - mean_1)^2; end deviation_1 = sqrt(SS_1/total_1); title(sprintf('Mean: %f, deviation: %f', mean_1, deviation_1)); line([0 total_1],[mean_1+deviation_1 mean_1+deviation_1],'Color','r', 'LineStyle', '--') line([0 total_1],[mean_1-deviation_1 mean_1-deviation_1],'Color','r', 'LineStyle', '--') SS_2 = 0; for index = 1:total_2 SS_2 = SS_2 + (inputs_2(index) - mean_2)^2; end deviation_2 = sqrt(SS_2/total_2); subplot(2,2,4) title(sprintf('Mean: %f, deviation: %f', mean_2, deviation_2)); line([0 total_2],[mean_2+deviation_2 mean_2+deviation_2],'Color','r', 'LineStyle', '--') line([0 total_2],[mean_2-deviation_2 mean_2-deviation_2],'Color','r', 'LineStyle', '--') [H,P] = ttest2(inputs_1,inputs_2); if H == 1 result = sprintf('Means are, probably, not equal (p=%f)',P); else result = sprintf('Means are most probably equal (p=%f)',P); end xlabel(result);