-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplot_fig3C_ROC_Randomization.m
139 lines (122 loc) · 5.72 KB
/
plot_fig3C_ROC_Randomization.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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Script that plots the results presented in figure 3.C.
%
% Written by Pierre Le Merre
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Load Matrices
if exist('PathDatabase','var')==0 && exist('LFP_Data','var')==0 && exist('LFP_Data_description','var')==0
[PathDatabase,LFP_Data,LFP_Data_description]=Load_LFP_Multisite_database;
end
%learned and Exposed days
load([PathDatabase filesep 'Learning_Days_Mtrx.mat']);
load([PathDatabase filesep 'Exposed_Days_Mtrx.mat']);
%% Plot SEP Stim trials, naive vs trained mice
sr=str2double(LFP_Data_description.Trial_LFP_wS1.SamplingFrequencyHz);
Stimtime=3; %in sec
Baseline_duration=100; %in samples
Pre_ts=-1; %sec before
Post_ts=1; %sec after
Stim_time=3; %sec after trial onset;
Fields={'wS1','wS2','wM1','PtA','dCA1','mPFC'};
win_size=20;
win_step=5;
win_nb=((Post_ts-Pre_ts)*sr-win_size)/win_step+1;
nboot=1; % Number of shuffling
%% Compute Stim Probability (SP)
%Detection task
Mouse_list=unique(LFP_Data.Mouse_Name(strcmp(LFP_Data.Session_Type,'DT')==1));
for j=1:6
Field=char(Fields(j));
for i=1:size(Mouse_list,1)
Mouse=char(Mouse_list(i));
data_mouse=[];
eval(['data_mouse=LFP_Data.Trial_LFP_' Field '(strcmp(LFP_Data.Mouse_Name,Mouse)==1 & [LFP_Data.Session_Counter==LDM(i,1) | LFP_Data.Session_Counter==LDM(i,2) | LFP_Data.Session_Counter==LDM(i,3)],(Stim_time+Pre_ts)*sr:(Stim_time+Post_ts)*sr);'])
% Make label vectors
StimLabels=zeros(1,size(LFP_Data.Trial_ID,1));
for k=1:size(LFP_Data.Trial_ID,1)
if LFP_Data.Trial_ID(k)==1 || LFP_Data.Trial_ID(k)==0
StimLabels(k)=1;
else
StimLabels(k)=0;
end
end
StimLabels=StimLabels(strcmp(LFP_Data.Mouse_Name,Mouse)==1 & (LFP_Data.Session_Counter==LDM(i,1) | LFP_Data.Session_Counter==LDM(i,2) | LFP_Data.Session_Counter==LDM(i,3)));
for l=1:nboot
%Shuffling
StimLabels_shfld=StimLabels(randi(length(StimLabels),1,length(StimLabels))); %shuffled Stim vector
while sum(StimLabels_shfld)==0 || sum(StimLabels_shfld)==size(StimLabels,1)
StimLabels_shfld=StimLabels(randi(length(StimLabels),1,length(StimLabels))); %shuffled Stim vector
end
% Get Shuffled ROC curve
for k=1:win_nb %%Sliding Window
win_in=(k-1)*win_step+1;
win_out=(k-1)*win_step+win_size;
Scores=mean(data_mouse(:,win_in:win_out),2);
eval(['[~,~,~,SP.DT.' Field '(i,k)]=perfcurve(StimLabels_shfld,Scores,0);'])
end
end
end
end
%Neutral Exposition
Mouse_list=unique(LFP_Data.Mouse_Name(strcmp(LFP_Data.Session_Type,'X')==1));
for j=1:6
Field=char(Fields(j));
for i=1:size(Mouse_list,1)
Mouse=char(Mouse_list(i));
data_mouse=[];
eval(['data_mouse=LFP_Data.Trial_LFP_' Field '(strcmp(LFP_Data.Mouse_Name,Mouse)==1 & [LFP_Data.Session_Counter==EDM(i,1) | LFP_Data.Session_Counter==EDM(i,2) | LFP_Data.Session_Counter==EDM(i,3)],(Stim_time+Pre_ts)*sr:(Stim_time+Post_ts)*sr);'])
% Make label vectors
StimLabels=zeros(1,size(LFP_Data.Trial_ID,1));
for k=1:size(LFP_Data.Trial_ID,1)
if LFP_Data.Trial_ID(k)==1 || LFP_Data.Trial_ID(k)==0
StimLabels(k)=1;
else
StimLabels(k)=0;
end
end
StimLabels=StimLabels(strcmp(LFP_Data.Mouse_Name,Mouse)==1 & (LFP_Data.Session_Counter==EDM(i,1) | LFP_Data.Session_Counter==EDM(i,2) | LFP_Data.Session_Counter==EDM(i,3)));
for l=1:nboot
%Shuffling
StimLabels_shfld=StimLabels(randi(length(StimLabels),1,length(StimLabels))); %shuffled Stim vector
while sum(StimLabels_shfld)==0 || sum(StimLabels_shfld)==size(StimLabels,1)
StimLabels_shfld=StimLabels(randi(length(StimLabels),1,length(StimLabels))); %shuffled Stim vector
end
% Get Shuffled ROC curve
for k=1:win_nb %%Sliding Window
win_in=(k-1)*win_step+1;
win_out=(k-1)*win_step+win_size;
Scores=mean(data_mouse(:,win_in:win_out),2);
eval(['[~,~,~,SP.X.' Field '(i,k)]=perfcurve(StimLabels_shfld,Scores,0);'])
end
end
end
end
%% PLot
set(0, 'DefaultFigureRenderer', 'painters')
t=linspace(Pre_ts+win_size/(2*sr),Post_ts-win_size/(2*sr),win_nb);
for j=1:6
Field=char(Fields(j));
ax(1)=subplot(3,2,j);
if strcmp(Field,'mPFC')==1
eval(['data1=nanmean(SP.DT.' Field '(:,:,1))*-1+1;'])
eval(['data2=nanmean(SP.X.' Field '(:,:,1))*-1+1;'])
eval(['sem1=(nanstd(SP.DT.' Field '(:,:,1))*-1)/sqrt(size(SP.DT.' Field ',1));'])
eval(['sem2=(nanstd(SP.X.' Field '(:,:,1))*-1)/sqrt(size(SP.X.' Field ',1));'])
else
eval(['data1=nanmean(SP.DT.' Field '(:,:,1));'])
eval(['data2=nanmean(SP.X.' Field '(:,:,1));'])
eval(['sem1=nanstd(SP.DT.' Field '(:,:,1))/sqrt(size(SP.DT.' Field ',1));'])
eval(['sem2=nanstd(SP.X.' Field '(:,:,1))/sqrt(size(SP.X.' Field ',1));'])
end
boundedline(t,data1,sem1,'k');
hold on
boundedline(t,data2,sem2,'k');
title(Field,'fontweight','bold','fontsize',12,'fontname','times new roman');
xlim([-0.05 0.2]);
ylim([0 1]);
xlabel('Time(s)')
line([0 0],get(ax(1),'yLim'),'LineWidth',1,'Color',[0 0 0])
line([0.006 0.006],get(ax(1),'yLim'),'LineWidth',1,'Color',[0.5 0.5 0.5])
end
%%
clear all