Commit 26abdb48 authored by Alexander von Lühmann's avatar Alexander von Lühmann
Browse files

Merge branch 'master' into tcca_glm_v3

parents 3bee43da 82c28a28
Loading
Loading
Loading
Loading
+101 −0
Original line number Diff line number Diff line
function DeleteDataFiles(varargin)

% Syntax:
%
%   DeleteDataFiles()
%   DeleteDataFiles(dirname)
%   DeleteDataFiles(dirname, datafiles0)
%   DeleteDataFiles(dirname, format)
%   DeleteDataFiles(dirname, datafiles0, options)
%   DeleteDataFiles(dirname, format, options)
%
% Description:
%   
%   Delete all .<format extension> files in group folder. DeleteDataFiles will find all 
%   .<format extension> data acquisition files in the group folder. If dirname is not supplied it'll 
%   treat the current working directory as the group folder. 
%
% Examples:
%
%   1. Delete all .snirf files in the Homer3 Examples directory
%
%       DeleteDataFiles('C:\jdubb\workspaces\Homer3\DataTree\AcquiredData\Snirf\Examples', '.snirf')
%
%   2. Delete all .nirs files files in the current group folder
%
%       DeleteDataFiles(pwd, '.nirs)
%
%

global supportedFormats
if isempty(supportedFormats)
    supportedFormats = {
    '.snirf',0;
    '.nirs',0;
    };
end


% Set argument defaults
dirname = convertToStandardPath(pwd);
format = supportedFormats{1};
datafiles0 = [];
options = 'delete';


% Parse arguments
if nargin==1
    dirname = convertToStandardPath(varargin{1});
elseif nargin==2
    dirname = convertToStandardPath(varargin{1});
    if ischar(varargin{2})
        format = varargin{2};
    else
        datafiles0 = varargin{2};
    end
elseif nargin==3
    dirname = convertToStandardPath(varargin{1});
    if ischar(varargin{2})
        format = varargin{2};
    else
        datafiles0 = varargin{2};
    end
    options = varargin{3};
end
if isempty(datafiles0)
    datafiles0 = DataFilesClass(dirname, format, 'standalone').files;
end


% Get final list of data files
datafiles = mydir(dirname);
if iscell(datafiles0)
    for ii=1:length(datafiles0)
        datafiles(ii) = mydir([dirname, datafiles0{ii}]);
    end
elseif ischar(datafiles0)
    datafiles = mydir([dirname, datafiles0]);
elseif isa(datafiles0, 'FileClass')
    datafiles = datafiles0;
end


% Delete data files
for ii=1:length(datafiles)
    if datafiles(ii).isdir
        continue;
    end
    if strcmp(options, 'delete')
        fprintf('Deleting %s\n', [datafiles(ii).pathfull, '/', datafiles(ii).name]);
        delete([datafiles(ii).pathfull, '/', datafiles(ii).name]);
    elseif strcmp(options, 'move')
        fprintf('Moving %s to %s\n', [datafiles(ii).pathfull, '/', datafiles(ii).name], [datafiles(ii).pathfull, '/', datafiles(ii).name, '.old']);
        movefile([datafiles(ii).pathfull, '/', datafiles(ii).name], [datafiles(ii).pathfull, '/', datafiles(ii).name, '.old']);
    elseif strcmp(options, 'restore')
        [pname, fname] = fileparts(datafiles(ii).name);
        fprintf('Restoring %s to %s\n', [datafiles(ii).pathfull, '/', datafiles(ii).name], [datafiles(ii).pathfull, '/', pname, '/', fname]);
        movefile([datafiles(ii).pathfull, '/', datafiles(ii).name], [datafiles(ii).pathfull, '/', pname, '/', fname]);
    end
    pause(0.25);
end
+0 −57
Original line number Diff line number Diff line
function DeleteSnirfFiles(dirname, snirffiles0)

% Syntax:
%
%   DeleteSnirfFiles()
%   DeleteSnirfFiles(dirname)
%   DeleteSnirfFiles(dirname, snirffiles0)
%
% Description:
%   
%   Delete all .snirf files in group folder. The group folder is same
%   concept as in Homer3 so DeleteSnirfFiles will find all .snirf data 
%   acquisition files in folder dirname. If dirname is not supplied it'll 
%   treat the current working directory as the group folder. If snirffiles0
%   if supplied it'll delete.
%
% Examples:
%
%   1. Delete all .snirf files in the Homer3 Examples directory
%
%       DeleteSnirfFiles('C:\jdubb\workspaces\Homer3\DataTree\AcquiredData\Snirf\Examples')
%
%   2. Delete all .snirf files in the current group folder
%
%       DeleteSnirfFiles()
%
%

if ~exist('dirname','var')
    dirname = pwd;
end
dirname = convertToStandardPath(dirname);

if ~exist('snirffiles0','var')
    snirffiles0 = DataFilesClass(dirname, '.snirf', 'standalone').files;
end

snirffiles = mydir(dirname);
if iscell(snirffiles0)
    for ii=1:length(snirffiles0)
        snirffiles(ii) = mydir([dirname, snirffiles0{ii}]);
    end
elseif ischar(snirffiles0)
    snirffiles = mydir([dirname, snirffiles0]);
elseif isa(snirffiles0, 'FileClass')
    snirffiles = snirffiles0;
end

for ii=1:length(snirffiles)
    if snirffiles(ii).isdir
        continue;
    end
    fprintf('Deleting %s\n', [snirffiles(ii).pathfull, '/', snirffiles(ii).name]);
    delete([snirffiles(ii).pathfull, '/', snirffiles(ii).name]);
    pause(0.25);
end
+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ while files.isempty()
                        q = MenuBox([msg{:}], {'YES','NO'}, 'center');
                    end
                    if q==2
                        files = DataFilesClass(dirnameGroup);
                        files = [];
                        return;
                    end
                end
+1 −1
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ function demo_snirf()
examplesDir = findexamplesdir(); 

% Delete any previously generated .snirf files to make sure to start from scratch
DeleteSnirfFiles(examplesDir, 'standalone');
DeleteDataFiles(examplesDir, '.snirf');

% Start with .nirs files
nirsfiles = mydir([examplesDir, '*.nirs']);
+64 −5
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ classdef DataTreeClass < handle
            obj.SetCurrElem(1,1,1);
            
            obj.warningflag = 0;
            
        end
        
        
@@ -79,12 +80,68 @@ classdef DataTreeClass < handle
        
        
        % --------------------------------------------------------------
        function status = SelectOptionsWhenLoadFails(obj, ~)
        function status = FoundDataFilesInOtherFormat(obj, dataInit)            
            global supportedFormats
            status = false;
            k = [];

            format0 = dataInit.type;
            
            % Find index of another file format to try
            for ii = 1:length(supportedFormats)
                if ~isempty(findstr(dataInit.type, supportedFormats{ii,1}))
                   k = ii;
                   break;
                end
            end
            if isempty(k)
                return;
            end
            if k<length(supportedFormats) && k>1
                k = k-1;
            elseif k<length(supportedFormats)
                k = k+1;
            else
                k = [];
            end
            if ~isempty(k)
                dataInit = FindFiles(obj.dirnameGroup, supportedFormats{k});
                if isempty(dataInit) || dataInit.isempty()
                    return;
                end
            else
                dataInit = [];
            end
            
            if ~isempty(dataInit)
                msg{1} = sprintf('Could not load any of the .%s files in the group folder but did find .%s files. ', format0, dataInit.type);
                msg{3} = sprintf('Do you want to rename the .%s files to names with a .old extension, delete them or cancel? ', format0);
                msg{2} = sprintf('NOTE: Renaming or deleting the .%s files will allow Homer3 to regenerate them from .%s file later.', ...
                    format0, dataInit.type);
                q = MenuBox([msg{:}], {'Rename (Recommended)','Delete','CANCEL'}, [], 90);
                if q==1
                    DeleteDataFiles(obj.dirnameGroup, format0, 'move')
                    status = true;
                elseif q==2
                    DeleteDataFiles(obj.dirnameGroup, format0)
                    status = true;
                end
            end            
        end

        
        
        % --------------------------------------------------------------
        function status = SelectOptionsWhenLoadFails(obj)
            status = -1;
    
            %             msg{1} = sprintf('Could not load any of the requested files in the group folder %s. ', obj.dirnameGroup);
            %             msg{2} = sprintf('Do you want to select another group folder?');
            %             q = MenuBox([msg{:}], {'YES','NO'});
                        
            msg{1} = sprintf('Could not load any of the requested files in the group folder %s. ', obj.dirnameGroup);
            msg{2} = sprintf('Do you want to select another group folder?');
            q = MenuBox([msg{:}], {'YES','NO'});
            q = MenuBox([msg{:}], {'YES','NO'}, [], 110);
            if q==2
                obj.logger.Write(sprintf('Skipping group folder %s...\n', obj.dirnameGroup));
                obj.dirnameGroup = 0;
@@ -122,7 +179,9 @@ classdef DataTreeClass < handle
                    
                    obj.LoadGroup(procStreamCfgFile);
                    if length(obj.groups) < iGnew
                        if SelectOptionsWhenLoadFails(obj, dataInit)<0
                        if obj.FoundDataFilesInOtherFormat(dataInit) 
                            continue;
                        elseif obj.SelectOptionsWhenLoadFails()<0
                            break;
                        end
                    end
Loading