forked from neuRowsATL/ContinuousMIEstimation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
plot_comparisons_bc.m
113 lines (80 loc) · 3.78 KB
/
plot_comparisons_bc.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
%% Plot Consecutive ISI vs. Permutation
series = 'cc';
comparison = '2-3';
close('all');
% mi_consec = load('C:\Users\bpchung\Google Drive\_Research\__SOBER\__PROJECTS\Mutual Information\bl21lb21_171218_nmsort\consecutive_isi-Unit1.mat');
% mi_shuff = load('C:\Users\bpchung\Google Drive\_Research\__SOBER\__PROJECTS\Mutual Information\bl21lb21_171218_nmsort\consecutive_isi-Unit1-shuff.mat');
% mi_obj = load(['/Users/brycechung/Google Drive/_Research/__SOBER/__PROJECTS/Mutual Information/bl21lb21_171218_nmsort/mi_' series '_' comparison '_jitter.mat']);
% mi_shuff = load('/Users/brycechung/Google Drive/_Research/__SOBER/__PROJECTS/Mutual Information/bl21lb21_171218_nmsort/consecutive_isi-Unit2-shuff.mat');
% mi_consec = load('/Users/brycechung/Google Drive/_Research/__SOBER/__PROJECTS/Mutual Information/bl21lb21_171218_nmsort/mi_tc_1-3_jitter.mat');
% mi_shuff = load('C:\Users\bpchung\Google Drive\_Research\__SOBER\__PROJECTS\Mutual Information\bl21lb21_171218_nmsort\consecutive_isi-Unit3-z-shuff.mat');
k = 3;
noises = [0 1 2 3 5 10 20];
noises_offset = 0.2;
fig = figure();
set(gcf, 'color', 'w');
xs = zeros(length(noises),1);
errs = zeros(length(noises),1);
for i=1:length(noises)
if strcmp(series, 'cc')
% NEED TO RECODE THIS
try
mi_obj = load(['/Users/brycechung/Google Drive/_Research/__SOBER/__PROJECTS/Mutual Information/bl21lb21_171218_nmsort/mi_' series '_' comparison '_jitter.mat']);
mi_core = mi_obj.MIs.(['sig' num2str(noises(i))]).arrMIcore{1};
catch
mi_obj = load(['/Users/brycechung/Google Drive/_Research/__SOBER/__PROJECTS/Mutual Information/bl21lb21_171218_nmsort/mi_' series '_' comparison '.mat']);
mi_core = mi_obj.(['MI_' series]).arrMIcore{1};
end
mi = mi_core.get_mi(mi_core.opt_k);
xs(i) = mi.mi;
errs(i) = mi.err;
else
arr_mi = zeros(length(mi_cores),1);
arr_p = zeros(length(mi_cores),1);
arr_err = zeros(length(mi_cores),1);
try
mi_cores = mi_obj.MIs.(['sig' num2str(noises(i))]).arrMIcore;
% disp('hello');
catch
mi_consec = load(['/Users/brycechung/Google Drive/_Research/__SOBER/__PROJECTS/Mutual Information/bl21lb21_171218_nmsort/mi_' series '_' comparison '.mat']);
mi_cores = mi_consec.(['MI_' series]).arrMIcore;
end
for j=1:length(mi_cores)
mi_core = mi_cores(j,:);
mi = mi_core{1}.get_mi(mi_core{1}.opt_k);
arr_mi(j) = max(mi.mi, 0);
arr_err(j) = mi.err;
arr_p(j) = mi_cores{j,2};
end
xs(i) = sum(arr_mi.*arr_p);
errs(i) = (sum((arr_p(~isnan(arr_err)).*arr_err(~isnan(arr_err))).^2))^0.5;
end
end
% xs_shuff = zeros(length(fields(mi_shuff.MIs)),1);
% errs_shuff = zeros(length(fields(mi_shuff.MIs)),1);
%
% for i=1:length(xs_shuff)
% mi = mi_shuff.MIs.(['sig' num2str(noises(i))]).arrMIcore{1}.get_mi(k);
% xs_shuff(i) = mi.mi;
% errs_shuff(i) = mi.err;
% end
% fill([noises flip(noises)], [(xs_shuff+errs_shuff)' flip(xs_shuff-errs_shuff)'], 'r', 'FaceAlpha', 0.1, 'EdgeColor', 'none');
hold on;
fill([noises flip(noises)], [(xs+errs)' flip(xs-errs)'], 'k', 'FaceAlpha', 0.1, 'EdgeColor', 'none');
hold on;
% plot(noises, xs_shuff, 'r', 'LineWidth', 1);
plot(noises, xs, 'k', 'LineWidth', 2);
xlim([noises(1)-1 noises(end)+1]);
xlabel('Noise (sigma)');
ylabel('Mutual Information (bits)');
suptitle([series ': ' comparison]);
%% Calculate MI for timing-timing
load('mi_tc_3-3.mat');
n_terms = length(MI_tc.arrMIcore);
mi = zeros(n_terms,1);
ps = zeros(n_terms,1);
for i=1:n_terms
mi(i) = MI_tc.arrMIcore{i}.get_mi(MI_tc.arrMIcore{i}.opt_k).mi;
ps(i) = MI_tc.arrMIcore{i,2};
end
total_tt_mi = sum(mi.*ps);