Difference between revisions of "LocalGlobal Details"
(→Sample code for Monkey Ji and Rc) |
(→Sample code for Monkey Ji and Rc) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 79: | Line 79: | ||
== Sample code for Monkey Ji and Rc == | == Sample code for Monkey Ji and Rc == | ||
| − | + | clear | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | addpath(genpath('D:\MATLAB_toolboxes\eeglab14_1_1b')) | |
| − | + | cd G:\Local_global_marmoset | |
| − | + | Subject='Ji'; | |
| − | + | % Subject='Rc'; | |
| − | + | ||
| − | + | Expt_name=sprintf('%s20*',Subject); | |
| + | Expt=ls(Expt_name); | ||
| + | Expt_num=size(Expt,1); | ||
| + | |||
| + | FS=1000; %Hz | ||
| + | DS=1; | ||
| + | |||
| + | Channel_num=96; | ||
| + | |||
| + | %% | ||
| + | |||
| + | Data_all=[]; | ||
| + | Time=[]; | ||
| + | Stim_time=[]; | ||
| + | Block_idx=[]; | ||
| + | Trial_idx=[]; | ||
| + | Expt_idx=[]; | ||
| + | |||
| + | Time_offset=0; | ||
| − | for | + | for expt=1:Expt_num |
| − | |||
| − | |||
| − | + | cd(Expt(expt,:)) | |
| − | + | load Event %allBlockIdx allTrialIdx StimOn | |
| − | |||
| − | + | fprintf(1,'>> Expt%d/%d: %s (%.1f min)(%d trials)\n',expt, Expt_num,Expt(expt,:),length(EventTime)/1000/60,length(StimOn)) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ||
| + | Data=zeros(Channel_num,length([1:DS:length(EventTime)])); | ||
| − | + | for ch=1:Channel_num | |
| − | + | FN=sprintf('ECoG_ch%d',ch); | |
| − | cd . | + | load(FN) |
| + | |||
| + | str=sprintf('Data(ch,:)=ECoGData_ch%d(1:DS:end);',ch); | ||
| + | eval(str) | ||
| + | end | ||
| + | |||
| + | Data_all=[Data_all Data]; | ||
| + | Time=[Time EventTime(1:DS:end)/FS+Time_offset]; | ||
| + | Stim_time=[Stim_time StimOn/FS+Time_offset]; | ||
| + | Block_idx=[Block_idx allBlockIdx]; | ||
| + | Trial_idx=[Trial_idx allTrialIdx]; | ||
| + | Expt_idx=[Expt_idx ones(1,length(allTrialIdx))*expt]; | ||
| + | |||
| + | Time_offset=Time(end)+DS/FS; | ||
| + | |||
| + | clear Data EventTime StimOn | ||
| + | |||
| + | cd .. | ||
| + | |||
| + | end | ||
| + | |||
| + | == Sample code for Monkey Yo, Ca and Rm == | ||
| + | |||
| + | clear | ||
| + | |||
| + | addpath(genpath('D:\MATLAB_toolboxes\eeglab14_1_1b')) | ||
| + | cd G:\Local_global_marmoset | ||
| + | |||
| + | Subject='Ca'; | ||
| + | % Subject='Rm'; | ||
| + | % Subject='Yo'; | ||
| + | |||
| + | Expt_name=sprintf('%s20*',Subject); | ||
| + | Expt=ls(Expt_name); | ||
| + | Expt_num=size(Expt,1); | ||
| + | |||
| + | FS=1017.25; %Hz | ||
| + | DS=1; | ||
| − | end | + | Channel_num=96; |
| + | |||
| + | Trial_per_block=100; | ||
| + | |||
| + | %% Block info | ||
| + | |||
| + | Block_type_name{1}='xxxxx with deviant xxxxY'; | ||
| + | Block_type_name{2}='xxxxx with omission xxxx_'; | ||
| + | Block_type_name{3}='xxxxY with deviant xxxxx'; | ||
| + | Block_type_name{4}='xxxxY with omission xxxx_'; | ||
| + | |||
| + | Anag_xx=40; | ||
| + | Anag_xY=80; | ||
| + | Anag_xo=120; | ||
| + | |||
| + | %% | ||
| + | Data_all=[]; | ||
| + | Block_idx=[]; | ||
| + | Trial_idx=[]; | ||
| + | Expt_idx=[]; | ||
| + | Stim_idx=[]; | ||
| + | |||
| + | Idx_offset=0; | ||
| + | |||
| + | for expt=1:Expt_num | ||
| + | |||
| + | cd(Expt(expt,:)) | ||
| + | |||
| + | %% Event | ||
| + | load('TriG_ch2.mat') | ||
| + | |||
| + | %trim Trig if longer than wave | ||
| + | load('ECoG_ch1'); | ||
| + | |||
| + | if length(Trig)>length(wave) | ||
| + | Trig=Trig(1:length(wave)); | ||
| + | end | ||
| + | |||
| + | %downsample | ||
| + | Trig=Trig(1:DS:end); | ||
| + | |||
| + | Onset=find(diff(Trig)>10); | ||
| + | Nope=find(Trig(Onset)>10); | ||
| + | Onset(Nope)=[]; | ||
| + | |||
| + | Trial_idx_expt=round(Trig(Onset+10)/40); %1: xxxxx; 2: xxxxY; 3:xxxxo | ||
| + | |||
| + | Block_idx_expt=zeros(1,length(Onset)); | ||
| + | |||
| + | %%% Could be only 3 blocks | ||
| + | Block_per_expt=ceil(length(Block_idx_expt)/Trial_per_block); | ||
| + | |||
| + | for block=1:Block_per_expt | ||
| + | if block<Block_per_expt | ||
| + | XX=Trial_idx_expt([1:Trial_per_block]+(block-1)*Trial_per_block); | ||
| + | else % the last block could be short | ||
| + | XX=Trial_idx_expt((1+(block-1)*Trial_per_block):end); | ||
| + | end | ||
| + | Stand=XX(1); | ||
| + | Dev=find(XX~=Stand); | ||
| + | Dev=XX(Dev(1)); | ||
| + | |||
| + | if Stand==1 & Dev==2 | ||
| + | B_type=1; | ||
| + | elseif Stand==1 & Dev==3 | ||
| + | B_type=2; | ||
| + | elseif Stand==2 & Dev==1 | ||
| + | B_type=3; | ||
| + | elseif Stand==2 & Dev==3 | ||
| + | B_type=4; | ||
| + | else | ||
| + | B_type=-1; | ||
| + | end | ||
| + | |||
| + | if block<Block_per_expt | ||
| + | Block_idx_expt([1:Trial_per_block]+(block-1)*Trial_per_block)=B_type; | ||
| + | else | ||
| + | Block_idx_expt((1+(block-1)*Trial_per_block):end)=B_type; | ||
| + | end | ||
| + | |||
| + | end | ||
| + | |||
| + | Trial_idx=[Trial_idx Trial_idx_expt]; | ||
| + | Block_idx=[Block_idx Block_idx_expt]; | ||
| + | Expt_idx=[Expt_idx ones(1,length(Onset))*expt]; | ||
| + | |||
| + | Stim_idx=[Stim_idx Onset+Idx_offset]; | ||
| + | |||
| + | Idx_offset=Idx_offset+length(Trig); | ||
| + | |||
| + | %% | ||
| + | fprintf(1,'>> Expt %d/%d: %s (%d trials)\n',expt, Expt_num,Expt(expt,:),length(Onset)) | ||
| + | |||
| + | Data=zeros(Channel_num,length(Trig)); | ||
| + | for ch=1:Channel_num | ||
| + | FN=sprintf('ECoG_ch%d',ch); | ||
| + | load(FN) | ||
| + | |||
| + | Data(ch,:)=wave(1:DS:end); | ||
| + | end | ||
| + | |||
| + | Data_all=[Data_all Data]; | ||
| + | |||
| + | clear Data wave | ||
| + | cd .. | ||
| + | end | ||
| + | Time=[0:size(Data_all,2)-1]/FS*DS; | ||
| + | Stim_time=Time(Stim_idx); | ||
Latest revision as of 22:13, 6 July 2024
Contents
Experiment Settings[edit]
Not that the followings are default settings, and the actual details are in the each paper.
Stimuli: x=800 Hz, Y=1600 Hz, 50 ms duration No raise/fall time
Trial: ISI = 150 ms (thus SOA = 200 ms), ITI = [1.8 2.0] s
Block: 10 types, randomized order
1 block contains 100 trials (20 habituation, 64 standards, and 16 deviants).
Tone Index:
1. xxxxx
2. xxxxY
3. xxxx_
4. YYYYY
5. YYYYx
6. YYYY_
Block Index:
1. xxxxx with deviant xxxxY
2. xxxxx with omission xxxx_
3. xxxxY with deviant xxxxx
4. xxxxY with omission xxxx_
5. pure omission xxxx_
6. YYYYY with deviant YYYYx
7. YYYYY with omission YYYY_
8. YYYYx with deviant YYYYY
9. YYYYx with omission YYYY_
10. pure omission YYYY_
Data format[edit]
Data can be download from Brain/MINDS data portal.
One zip file has one date data which consists of a session.
For Monkey Ji and Rc:
‘ECoG_ch**.mat‘ had ECoG data of electrode. ** means number of electrode. Sampling rate was 1 kHz.
‘ECoGTime.mat‘ had time of ECoG data.
‘Event.mat‘ had information of condition.
‘Eye.mat‘ had eye tracking data recorded from right eye.
‘Audio.mat‘ had a audio data.
For Monkey Yo, Ca and Rm:
‘ECoG_ch**.mat‘ had ECoG data of electrode. ** means number of electrode. Sampling rate was 1017.25 Hz.
‘TriG_ch2.mat‘ had information of condition.
‘Aud_ch1.mat‘ had a audio data.
Sample code for Monkey Ji and Rc[edit]
clear
addpath(genpath('D:\MATLAB_toolboxes\eeglab14_1_1b'))
cd G:\Local_global_marmoset
Subject='Ji';
% Subject='Rc';
Expt_name=sprintf('%s20*',Subject);
Expt=ls(Expt_name);
Expt_num=size(Expt,1);
FS=1000; %Hz
DS=1;
Channel_num=96;
%%
Data_all=[];
Time=[];
Stim_time=[];
Block_idx=[];
Trial_idx=[];
Expt_idx=[];
Time_offset=0;
for expt=1:Expt_num
cd(Expt(expt,:))
load Event %allBlockIdx allTrialIdx StimOn
fprintf(1,'>> Expt%d/%d: %s (%.1f min)(%d trials)\n',expt, Expt_num,Expt(expt,:),length(EventTime)/1000/60,length(StimOn))
Data=zeros(Channel_num,length([1:DS:length(EventTime)]));
for ch=1:Channel_num
FN=sprintf('ECoG_ch%d',ch);
load(FN)
str=sprintf('Data(ch,:)=ECoGData_ch%d(1:DS:end);',ch);
eval(str)
end
Data_all=[Data_all Data];
Time=[Time EventTime(1:DS:end)/FS+Time_offset];
Stim_time=[Stim_time StimOn/FS+Time_offset];
Block_idx=[Block_idx allBlockIdx];
Trial_idx=[Trial_idx allTrialIdx];
Expt_idx=[Expt_idx ones(1,length(allTrialIdx))*expt];
Time_offset=Time(end)+DS/FS;
clear Data EventTime StimOn
cd ..
end
Sample code for Monkey Yo, Ca and Rm[edit]
clear
addpath(genpath('D:\MATLAB_toolboxes\eeglab14_1_1b'))
cd G:\Local_global_marmoset
Subject='Ca';
% Subject='Rm';
% Subject='Yo';
Expt_name=sprintf('%s20*',Subject);
Expt=ls(Expt_name);
Expt_num=size(Expt,1);
FS=1017.25; %Hz
DS=1;
Channel_num=96;
Trial_per_block=100;
%% Block info
Block_type_name{1}='xxxxx with deviant xxxxY';
Block_type_name{2}='xxxxx with omission xxxx_';
Block_type_name{3}='xxxxY with deviant xxxxx';
Block_type_name{4}='xxxxY with omission xxxx_';
Anag_xx=40;
Anag_xY=80;
Anag_xo=120;
%%
Data_all=[];
Block_idx=[];
Trial_idx=[];
Expt_idx=[];
Stim_idx=[];
Idx_offset=0;
for expt=1:Expt_num
cd(Expt(expt,:))
%% Event
load('TriG_ch2.mat')
%trim Trig if longer than wave
load('ECoG_ch1');
if length(Trig)>length(wave)
Trig=Trig(1:length(wave));
end
%downsample
Trig=Trig(1:DS:end);
Onset=find(diff(Trig)>10);
Nope=find(Trig(Onset)>10);
Onset(Nope)=[];
Trial_idx_expt=round(Trig(Onset+10)/40); %1: xxxxx; 2: xxxxY; 3:xxxxo
Block_idx_expt=zeros(1,length(Onset));
%%% Could be only 3 blocks
Block_per_expt=ceil(length(Block_idx_expt)/Trial_per_block);
for block=1:Block_per_expt
if block<Block_per_expt
XX=Trial_idx_expt([1:Trial_per_block]+(block-1)*Trial_per_block);
else % the last block could be short
XX=Trial_idx_expt((1+(block-1)*Trial_per_block):end);
end
Stand=XX(1);
Dev=find(XX~=Stand);
Dev=XX(Dev(1));
if Stand==1 & Dev==2
B_type=1;
elseif Stand==1 & Dev==3
B_type=2;
elseif Stand==2 & Dev==1
B_type=3;
elseif Stand==2 & Dev==3
B_type=4;
else
B_type=-1;
end
if block<Block_per_expt
Block_idx_expt([1:Trial_per_block]+(block-1)*Trial_per_block)=B_type;
else
Block_idx_expt((1+(block-1)*Trial_per_block):end)=B_type;
end
end
Trial_idx=[Trial_idx Trial_idx_expt];
Block_idx=[Block_idx Block_idx_expt];
Expt_idx=[Expt_idx ones(1,length(Onset))*expt];
Stim_idx=[Stim_idx Onset+Idx_offset];
Idx_offset=Idx_offset+length(Trig);
%%
fprintf(1,'>> Expt %d/%d: %s (%d trials)\n',expt, Expt_num,Expt(expt,:),length(Onset))
Data=zeros(Channel_num,length(Trig));
for ch=1:Channel_num
FN=sprintf('ECoG_ch%d',ch);
load(FN)
Data(ch,:)=wave(1:DS:end);
end
Data_all=[Data_all Data];
clear Data wave
cd ..
end
Time=[0:size(Data_all,2)-1]/FS*DS;
Stim_time=Time(Stim_idx);
