-
Notifications
You must be signed in to change notification settings - Fork 1
/
Heat_Map_tot_per_sub.m
169 lines (140 loc) · 5.14 KB
/
Heat_Map_tot_per_sub.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
clear all
close all
clc
con_trials = [1,2,3];
mcg_trials = 4;
path_c = pwd;
path_plot = path_c;
load('/Volumes/data/BCM/Eye_Tracking/ROIs_Stimuli/ET_Noisy_ROIs_09-19-2017_12-21-07.mat');
monitor_res = ROI_coord.image_monitor_details.monitor_res;
center_position = monitor_res/2;
img_size_org = ROI_coord.image_monitor_details.image_size;
sf = ROI_coord.image_monitor_details.size_factor;
img_height = monitor_res(2)*sf;
sfac = img_height/img_size_org(2);
img_width = img_size_org(1)*sfac;
stim_size = [img_width img_height];
% % Check if there are .jpg files
% if ~isempty(dir('*.jpg'))
%
% check_data = 1;
%
% load('/Volumes/data/BCM/Eye_Tracking/ET_Data_Dynamic_Static/Dynamic_Static_Results.mat');
% nb_sub_data = unique(fix_report_tot(:,1)); % Number subjects already processed
%
% % Get all asc files
% data_files = dir('*Heatmap*.jpg');
% for i=1:length(data_files)
% result_files{i} = data_files(i).name;
% end
% clear data_files
%
% % Get number of subjects not yet processed
% sub_files = zeros(length(result_files),1);
%
% for i = 1:length(result_files)
%
% sub_c = result_files{i};
% idx = strfind(sub_c,'.');
% sub_files(i) = str2double(sub_c(idx-2:idx-1));
%
% end
%
% % Difference between data and files
% diff_files_data = setdiff(nb_sub_data,sub_files);
%
% if isempty(diff_files_data) % in case all raw eye tracking data is already processed terminate script
% display('Nothing to do!');
% return
% end
%
% load('/Volumes/data/BCM/Eye_Tracking/ET_Data_Dynamic_Static/Dynamic_Static_Results.mat');
% data_ds = table2array(fix_report_corr(ismember(fix_report_corr(:,1),diff_files_data),:));
% load('/Volumes/data/BCM/Eye_Tracking/ET_Data_Dynamic_McGurk/McGurk_Dynamic_Results.mat');
% data_dm = table2array(fix_report_corr(ismember(fix_report_corr(:,1),diff_files_data),:));
%
% else
load('/Volumes/data/BCM/Eye_Tracking/ET_Data_Noisy/Noisy_Corr_Results.mat');
data = table2array(fix_report_corr);
% end
%% Prepare data
sub = unique(data(:,1));
data_re.data = data;
%% Create heat map
con = fieldnames(data_re);
title_stim = {'Noisy sentences'};
% Plot variables
lw = 1.1; % Line Width
bw = 0.8; % Barwidth
fsb = 16; % Font Size big
fsbb = 18; % Font Size small
path = path_plot; % Current path
rez = 300; % resolution (dpi) of final graphic
format = '-djpeg'; % image format
area = 20;
for i = 1:numel(sub)
fprintf('-- Subject %d --\n',sub(i))
for j = 1:numel(con)
% Heat map template
heat_map = zeros(monitor_res(2),monitor_res(1));
data_c = data_re.(con{j});
data_c = data_c(data_c(:,1)==sub(i),:);
data_c = [round(data_c(:,4)) round(data_c(:,5)) data_c(:,6)];
fix_overall = sum(data_c(:,3));
data_c(data_c(:,1) > monitor_res(1),:) = NaN;
data_c(data_c(:,2) > monitor_res(2),:) = NaN;
data_c(any(isnan(data_c),2),:) = [];
% Square area
for k = 1:size(data_c,1)
val = data_c(k,3);
heat_map(data_c(k,2)-area:data_c(k,2)+area,data_c(k,1)-area:data_c(k,1)+area) = heat_map(data_c(k,2)-area:data_c(k,2)+area,data_c(k,1)-area:data_c(k,1)+area) + val;
end
% Calculate percent
heat_map = heat_map/fix_overall*100;
% Smooth heat map
g_kernel = fspecial('gaussian',60,60);
heat_map = filter2(g_kernel,heat_map);
% Set threshold
hm_values = sort(reshape(heat_map,[1 size(heat_map,1)*size(heat_map,2)]));
hm_values(hm_values==0) = [];
thr_pc = 90; % percent of lower values to be cut off
vals = unique(hm_values);
vals_sum = numel(vals);
val_crit = round(vals_sum*(thr_pc/100));
cut_off = vals(val_crit);
% Apply threshold
heat_map(heat_map < cut_off) = 0;
heat_map = heat_map(monitor_res(2)/2-stim_size(2)/2:monitor_res(2)/2+stim_size(2)/2,monitor_res(1)/2-stim_size(1)/2:monitor_res(1)/2+stim_size(1)/2);
%stim_size = ROI_coord.image_monitor_details.image_size;
%heat_map = heat_map(monitor_res(2)/2-stim_size(2)/2:monitor_res(2)/2+stim_size(2)/2-1,monitor_res(1)/2-stim_size(1)/2:monitor_res(1)/2+stim_size(1)/2-1);
% % Plot
% cm_c = jet;
% cm_c(1,:) = [1 1 1];
% colormap(cm_c);
% imagesc(heat_map);
%
% hold on
%
% img = rgb2gray(imread('MECOM1_001_pink_62dB.bmp'));
% img = imresize(img,[img_height img_width]);
% h = subimage(img);
% set(h,'AlphaData',0.5);
% %title(title_stim{j},'Fontsize',14);
%
% set(gca,'xtick',[]);
% set(gca,'ytick',[]);
end
% % Save plot
% set(gca,'LooseInset',get(gca,'TightInset'));
% f = gcf; % f is the handle of the figure you want to export
% if sub(i) < 10
% name = ['Heatmap_Noisy_Sub0' num2str(sub(i))];
% else
% name = ['Heatmap_Noisy_Sub' num2str(sub(i))];
% end
%
% set(gcf,'PaperPositionMode','auto')
% print(f,fullfile(path,name),format,['-r',num2str(rez)])
%
% close all
end