Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
% Nback Logfile Extraction / Number of scans
%
% transfers logfiles into BIDS tsv format
%
% file history:
% created A. Kuehnel 18.12.2017
function NBack_logfile_bids(BIDS)
subject_path = BIDS.output.dir;
log = dir([subject_path,'/func/*nback*.log']);
% outdir=['/home/anne_kuehnel/BeCome_derivatives/',subject_path(end-6:end),'/func/nback/design_files/'];
% mkdir(outdir);
logfile=readtext([subject_path,'/func/',log.name],'\t');
dummies = 0; %number of volumes discarded for analysis
nr_events = 16; %number of events per block
% Convert to table
logfile_table = cell2table(logfile(6:end,1:8));
Var_Names = strrep(logfile(4,1:8),' ','');
logfile_table.Properties.VariableNames = Var_Names;
% Find zerotime
logfile_table.Time=logfile_table.Time/10000;
Pulse_index = strcmp(cellstr(logfile_table.EventType),'Pulse');
Dummy_index = find(Pulse_index,dummies+1,'first');
zero_time = logfile_table.Time(Dummy_index(end));
temp = cellfun(@num2str, logfile_table.Code, 'UniformOutput', false);
% Check if logfile is complete
Ende_index = strcmp(cellstr(temp),'Ende');
if sum(Ende_index)==0; error('Incomplete Logfile!'); end
inst_index = find(~cellfun(@isempty,(regexp(temp,'instr'))));
fix_index = find(~cellfun(@isempty,(regexp(temp,'^fix'))));
nb0_index = ~cellfun(@isempty,(regexp(temp,'^nb0')));
nb1_index = ~cellfun(@isempty,(regexp(temp,'^nb1')));
nb2_index = ~cellfun(@isempty,(regexp(temp,'^nb2')));
nb3_index = ~cellfun(@isempty,(regexp(temp,'^nb3')));
target_index = find(~cellfun(@isempty,(regexp(temp,'[^no]target'))));
Block_end_index = find(~cellfun(@isempty,(regexp(temp,'pause')))+~cellfun(@isempty,(regexp(temp,'Ende'))));
nb_index = find(nb0_index+nb1_index+nb2_index+nb3_index);%
logfile_table.event=string(nan(size(temp)));
logfile_table.event(inst_index)='Instruction';
logfile_table.event(fix_index)='Fix';
logfile_table.event(nb0_index)='N0';
logfile_table.event(nb1_index)='N1';
logfile_table.event(nb2_index)='N2';
logfile_table.event(nb3_index)='N3';
logfile_table.event(Block_end_index)='Pause';
all_events_index = sort([nb_index;inst_index;Block_end_index;fix_index]);
% tsv/csv file for bids
% without pulses
target = nan(length(all_events_index),1);
[~,ai,~]=intersect(all_events_index,target_index);
event_onsets = logfile_table.Time(all_events_index)-zero_time;
stimulus = logfile_table.Code(all_events_index);
event_type = logfile_table.event(all_events_index);
event_durations = [diff(event_onsets);logfile_table.Time(end)-logfile_table.Time(all_events_index(end))];
target(ai) = 1;
log=table(event_type,event_onsets,event_durations,target,stimulus);
log_cell=[log.Properties.VariableNames;table2cell(log)];
fid = fopen([subject_path,'/func/sub-',subject_path(end-11:end-5),'_task-nback_events.tsv'],'wt');
if fid>0
fprintf(fid, '%s\t%s\t%s\t%s\t%s\n',log_cell{1,:});
for k=2:size(log_cell,1)
fprintf(fid,'%s\t%f\t%f\t%f\t%s\n',log_cell{k,:});
end
fclose(fid);
end