96 lines
2.4 KiB
Matlab
96 lines
2.4 KiB
Matlab
%% general settings for the model neuron:
|
|
trials = 10;
|
|
tmax = 50.0;
|
|
|
|
%% f-I curves:
|
|
figure()
|
|
gains = [0.1, 0.2, 0.5, 1.0];
|
|
for j = 1:length(gains)
|
|
gain = gains(j);
|
|
inputs = 0.0:1.0:60.0;
|
|
rates = ficurve(trials, inputs, tmax, gain);
|
|
plot(inputs, rates);
|
|
hold on;
|
|
end
|
|
hold off;
|
|
|
|
%% generate and plot spiketrains for two inputs:
|
|
I1 = 10.0;
|
|
I2 = 11.0;
|
|
gain = 0.1;
|
|
spikes1 = lifboltzmannspikes(trials, I1, tmax, gain);
|
|
spikes2 = lifboltzmannspikes(trials, I2, tmax, gain);
|
|
subplot(1, 2, 1);
|
|
tmin = 10.0;
|
|
spikeraster(spikes1, tmin, tmin+2.0);
|
|
title(sprintf('I_1=%g', I1))
|
|
subplot(1, 2, 2);
|
|
spikeraster(spikes2, tmin, tmin+2.0);
|
|
title(sprintf('I_2=%g', I2))
|
|
%savefigpdf(gcf(), 'spikeraster.pdf')
|
|
|
|
%% spike count histograms:
|
|
cmax = 20;
|
|
T = 0.1;
|
|
figure()
|
|
for k = 1:length(gains)
|
|
gain = gains(k);
|
|
spikes1 = lifboltzmannspikes(trials, I1, tmax, gain);
|
|
spikes2 = lifboltzmannspikes(trials, I2, tmax, gain);
|
|
[c1, b1] = counthist(spikes1, 0.0, tmax, T, cmax);
|
|
[c2, b2] = counthist(spikes2, 0.0, tmax, T, cmax);
|
|
subplot(2, 2, k)
|
|
bar(b1, c1, 'r');
|
|
hold on;
|
|
bar(b2, c2, 'b');
|
|
xlim([0 cmax])
|
|
title(sprintf('gain=%g', gain))
|
|
hold off;
|
|
end
|
|
|
|
%% discrimination measure:
|
|
T = 0.1;
|
|
gain = 0.1;
|
|
cmax = 15;
|
|
spikes1 = lifboltzmannspikes(trials, I1, tmax, gain);
|
|
spikes2 = lifboltzmannspikes(trials, I2, tmax, gain);
|
|
[d, thresholds, true1s, false1s, true2s, false2s, pratio] = discriminability(spikes1, spikes2, tmax, T, cmax);
|
|
figure()
|
|
subplot(1, 3, 1);
|
|
plot(thresholds, true1s, 'b');
|
|
hold on;
|
|
plot(thresholds, true2s, 'b');
|
|
plot(thresholds, false1s, 'r');
|
|
plot(thresholds, false2s, 'r');
|
|
xlim([0 cmax])
|
|
hold off;
|
|
% Ratio:
|
|
subplot(1, 3, 2);
|
|
fprintf('discriminability = %g\n', d);
|
|
plot(thresholds, pratio);
|
|
% ROC:
|
|
subplot(1, 3, 3);
|
|
plot(false2s, true1s);
|
|
|
|
%% discriminability:
|
|
T = 0.1;
|
|
gains = 0.01:0.01:1.0;
|
|
cmax = 100;
|
|
dstt = zeros(length(gains), 1);
|
|
dsff = zeros(length(gains), 1);
|
|
for k = 1:length(gains)
|
|
gain = gains(k);
|
|
spikes1 = lifboltzmannspikes(trials, I1, tmax, gain);
|
|
spikes2 = lifboltzmannspikes(trials, I2, tmax, gain);
|
|
[c1, b1] = counthist(spikes1, 0.0, tmax, T, cmax);
|
|
[c2, b2] = counthist(spikes2, 0.0, tmax, T, cmax);
|
|
[d, thresholds, true1s, false1s, true2s, false2s, pratio] = discriminability(spikes1, spikes2, tmax, T, cmax);
|
|
dstt(k) = d;
|
|
dsff(k) = min(false1s + false2s);
|
|
end
|
|
figure()
|
|
plot(gains, dstt);
|
|
hold on;
|
|
plot(gains, dsff);
|
|
hold off;
|