Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[enh] Make all process compatible with raw files #219

Closed
wants to merge 18 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 52 additions & 24 deletions bst_plugin/mbll/process_nst_dOD.m
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,12 @@
if strcmp(sInputs.FileType, 'data') % Imported data structure
sDataIn = in_bst_data(sInputs(1).FileName);
events = sDataIn.Events;
isRaw = 0;
elseif strcmp(sInputs.FileType, 'raw') % Continuous data file
sDataIn = in_bst(sInputs(1).FileName, [], 1, 1, 'no');
sDataRaw = in_bst_data(sInputs(1).FileName, 'F');
events = sDataRaw.F.events;
isRaw = 1;
end

parameters = parse_options(sProcess, sDataIn);
Expand Down Expand Up @@ -149,35 +151,61 @@
if strcmp(cond_name(1:4), '@raw')
cond_name = cond_name(5:end);
end
iStudy = db_add_condition(sInputs.SubjectName, [cond_name, '_dOD']);

if isRaw
iStudy = db_add_condition(sInputs.SubjectName, ['@raw', cond_name, '_dOD']);
else
iStudy = db_add_condition(sInputs.SubjectName, [cond_name, '_dOD']);
end
sStudy = bst_get('Study', iStudy);
%

% % Save channel definition
[tmp, iChannelStudy] = bst_get('ChannelForStudy', iStudy);
db_set_channel(iChannelStudy, ChannelMat, 0, 0);

% Save time-series data
% final_nirs = sDataIn.F;
% final_nirs(to_keep, :) = final_nirs';
sDataOut = db_template('data');
sDataOut.F = final_dOD';
sDataOut.Comment = sDataIn.Comment;
%sDataOut.ChannelFlag = sDataIn.ChannelFlag;
sDataOut.ChannelFlag = ones(size(final_dOD, 2), 1);
sDataOut.Time = sDataIn.Time;
sDataOut.DataType = 'recordings';
sDataOut.nAvg = 1;
sDataOut.Events = events;
sDataOut.History = sDataIn.History;
sDataOut = bst_history('add', sDataOut, 'process', sProcess.Comment);
sDataOut.DisplayUnits = 'delta OD';

% Generate a new file name in the same folder
OutputFile = bst_process('GetNewFilename', bst_fileparts(sStudy.FileName), 'data_OD');
sDataOut.FileName = file_short(OutputFile);
bst_save(OutputFile, sDataOut, 'v7');
% Register in database
db_add_data(iStudy, OutputFile, sDataOut);
if ~isRaw
% Save time-series data
sDataOut = db_template('data');
sDataOut.F = final_dOD';
sDataOut.Comment = sDataIn.Comment;
%sDataOut.ChannelFlag = sDataIn.ChannelFlag;
sDataOut.ChannelFlag = ones(size(final_dOD, 2), 1);
sDataOut.Time = sDataIn.Time;
sDataOut.DataType = 'recordings';
sDataOut.nAvg = 1;
sDataOut.Events = events;
sDataOut.History = sDataIn.History;
sDataOut = bst_history('add', sDataOut, 'process', sProcess.Comment);
sDataOut.DisplayUnits = 'delta OD';

sDataOut.FileName = file_short(OutputFile);
Edouard2laire marked this conversation as resolved.
Show resolved Hide resolved
bst_save(OutputFile, sDataOut, 'v7');
% Register in database
db_add_data(iStudy, OutputFile, sDataOut);

else

% Generate a new file name in the same folder
OutputFile = bst_process('GetNewFilename', bst_fileparts(sStudy.FileName), 'data_0raw_OD');

sFileIn = sDataRaw.F;
sFileOut = out_fopen(OutputFile, 'BST-BIN',sFileIn , ChannelMat);
% Set Output sFile structure
sOutMat.F = sFileOut;
% Save new link to raw .mat file
bst_save(OutputFile, sOutMat, 'v6');
% Create new channel file
db_set_channel(iStudy, ChannelMat, 2, 0);
% Write block
out_fwrite(sFileOut, ChannelMat, 1, [], [], final_dOD');
% Register in BST database
sFileOut.Comment = sDataIn.Comment;
db_add_data(iStudy, OutputFile, sFileOut);
Edouard2laire marked this conversation as resolved.
Show resolved Hide resolved
OutputFile={};
Edouard2laire marked this conversation as resolved.
Show resolved Hide resolved
OutputFile{1} = OutputFile;
end


end


Expand Down