Commit 32d4a574 authored by Jay's avatar Jay
Browse files

v.15

-- Add support for loading multiple groups for future inter-group stats processing.
parent 6f120742
Loading
Loading
Loading
Loading
+19 −13
Original line number Diff line number Diff line
@@ -19,14 +19,19 @@ classdef DataFilesClass < handle
            skipconfigfile = false;
            
            if nargin>0
                obj.type = varargin{1};
                obj.pathnm = varargin{1};
            end
            obj.pathnm = convertToStandardPath(obj.pathnm);

            if nargin>1
                obj.type = varargin{2};
                if obj.type(1)=='.'
                    obj.type(1)='';
                end
            end
            obj.errmsg = {};
            
            if nargin>1
            if nargin>2
                if strcmp(varargin{2}, 'standalone')
                    skipconfigfile = true;
                end
@@ -44,13 +49,12 @@ classdef DataFilesClass < handle
            else
                obj.config.RegressionTestActive=false;
            end
            foo = mydir(obj.pathnm);
            if ~isempty(foo) && ~foo(1).isdir
                obj.files = foo;
            end
            
            if nargin==0
                return;
            end
            
            obj.files = mydir(obj.pathnm);
            GetDataSet(obj);
        end
        
@@ -60,27 +64,25 @@ classdef DataFilesClass < handle
            if exist(obj.pathnm, 'dir')~=7
                error(sprintf('Invalid subject folder: ''%s''', obj.pathnm));
            end
            cd(obj.pathnm);
            obj.findDataSet(obj.type);                        
        end

        
        % ----------------------------------------------------
        function findDataSet(obj, type)
            obj.files = mydir(['./*.', type]);
            obj.files = mydir([obj.pathnm, '/*.', type]);
            if isempty( obj.files )
                
                % If there are no .nirs files in current dir, don't give up yet - check
                % the subdirs for .nirs files.
                dirs = mydir();
                dirs = mydir(obj.pathnm);
                for ii=1:length(dirs)
                    if dirs(ii).isdir && ...
                            ~strcmp(dirs(ii).name,'.') && ...
                            ~strcmp(dirs(ii).name,'..') && ...
                            ~strcmp(dirs(ii).name,'hide')
                        dirs(ii).idx = length(obj.files)+1;
                        cd(dirs(ii).name);
                        foos = mydir(['./*.', type]);
                        foos = mydir([obj.pathnm, dirs(ii).name, '/*.', type]);
                        nfoos = length(foos);
                        if nfoos>0
                            for jj=1:nfoos
@@ -90,6 +92,7 @@ classdef DataFilesClass < handle
                                foos(jj).filename     = foos(jj).name;
                                foos(jj).name         = [dirs(ii).name, '/', foos(jj).name];
                                foos(jj).map2group    = struct('iGroup',0, 'iSubj',0, 'iRun',0);
                                foos(jj).pathfull     = dirs(ii).pathfull;
                            end
                            
                            % Add .nirs file from current subdir to files struct
@@ -100,9 +103,12 @@ classdef DataFilesClass < handle
                            end
                            obj.files(end+1:end+nfoos) = foos;
                        end
                        cd('../');
                    end
                end
            else
                for ii=1:length(obj.files)
                    obj.files(ii).pathfull = obj.pathnm;
                end
            end
        end
        
+12 −7
Original line number Diff line number Diff line
function DeleteSnirfFiles(snirffiles0)
function DeleteSnirfFiles(dirname, snirffiles0)

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

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

snirffiles = mydir('');
snirffiles = mydir(dirname);
if iscell(snirffiles0)
    for ii=1:length(snirffiles0)
        snirffiles(ii) = mydir(snirffiles0{ii});
        snirffiles(ii) = mydir([dirname, snirffiles0{ii}]);
    end
elseif ischar(snirffiles0)
    snirffiles = mydir(snirffiles0);
    snirffiles = mydir([dirname, snirffiles0]);
elseif isa(snirffiles0, 'FileClass')
    snirffiles = snirffiles0;
end
@@ -19,8 +24,8 @@ for ii=1:length(snirffiles)
    if snirffiles(ii).isdir
        continue;
    end
    fprintf('Deleting %s\n', [snirffiles(ii).pathfull, '/', snirffiles(ii).filename]);
    delete([snirffiles(ii).pathfull, '/', snirffiles(ii).filename]);
    fprintf('Deleting %s\n', [snirffiles(ii).pathfull, '/', snirffiles(ii).name]);
    delete([snirffiles(ii).pathfull, '/', snirffiles(ii).name]);
    pause(0.25);
end
+30 −7
Original line number Diff line number Diff line
@@ -49,6 +49,12 @@ classdef FileClass < matlab.mixin.Copyable
            else
                return;
            end
            if strcmp(file_struct.name,'.')
                return;
            end
            if strcmp(file_struct.name,'..')
                return;
            end
            
            % Copy all fields of file_struct that exist in this class to this object. 
            fields = propnames(file_struct);
@@ -64,11 +70,7 @@ classdef FileClass < matlab.mixin.Copyable
            obj.subjdiridx = 0;
            obj.filename = obj.name;
            obj.map2group = struct('iSubj',0,'iRun',0);
            if obj.isdir
                obj.pathfull = fileparts(fileparts(fullpath(obj.name)));
            else
                obj.pathfull = fileparts(fullpath(obj.name));
            end
            obj.err        = 0;          % Assume file is not loadable
        end


@@ -119,7 +121,12 @@ classdef FileClass < matlab.mixin.Copyable
        
        % -----------------------------------------------------------
        function [groupName, subjName, runName] = ExtractNames(obj)
            [~, groupName] = fileparts(pwd);
            if obj.pathfull(end)=='/' || obj.pathfull(end)=='\'
               groupPath = obj.pathfull(1:end-1);
            else
               groupPath = obj.pathfull;
            end
            [~, groupName] = fileparts(groupPath);
            subjName = '';
            runName = '';

@@ -134,7 +141,9 @@ classdef FileClass < matlab.mixin.Copyable
                return;
            end

            %%%% obj is a data file
            %%%% obj is a data file representing single run
            %             [~, fname, ext] = fileparts(obj.name);
            %             runName = [fname, ext];
            runName = obj.name;
            
            % Determine subject name from filename
@@ -185,6 +194,20 @@ classdef FileClass < matlab.mixin.Copyable
            end
        end
        
        
        % -----------------------------------------------------------
        function b = IsEmpty(obj)
            b = true;
            if isempty(obj.name)
                return;
            end
            if obj.err ~= 0
                return;
            end
            b = false;            
        end
                
        
    end
    
end
 No newline at end of file
+19 −31
Original line number Diff line number Diff line
@@ -3,9 +3,8 @@ function [files, dirnameGroup] = FindFiles(varargin)
% Syntax:
%
%    [files, dirnameGroup] = FindFiles()
%    [files, dirnameGroup] = FindFiles(fmt)
%    [files, dirnameGroup] = FindFiles(fmt, dirnameGroup)
%    [files, dirnameGroup] = FindFiles(fmt, dirnameGroup, handles)
%    [files, dirnameGroup] = FindFiles(dirnameGroup)
%    [files, dirnameGroup] = FindFiles(dirnameGroup, fmt)
% 
% Descrition:
%
@@ -13,15 +12,8 @@ function [files, dirnameGroup] = FindFiles(varargin)
% 
% Examples: 
%
%    Call FindFiles standalone
% 
%      files = FindFiles('.nirs', 'c:\users\public\group');
%      files = FindFiles('.snirf');
%
%    Call FindFiles in a GUI context: 
%
%      files = FindFiles('.nirs');
%      files = FindFiles('.snirf');
%    files = FindFiles('c:\users\public\group1');
%    files = FindFiles('c:\users\public\group1','.snirf');


global maingui
@@ -37,13 +29,14 @@ supportedFormats = {
% First get all the argument there are to get using the 7 possible syntax
% calls 
if nargin==1
    fmt = varargin{1};
    dirnameGroup = varargin{1};
elseif nargin==2
    fmt = varargin{1};
    dirnameGroup = varargin{2};
elseif nargin==3
    fmt = varargin{1};
    dirnameGroup = varargin{2};
    dirnameGroup = varargin{1};
    fmt = varargin{2};
end

if ~exist('dirnameGroup','var') || isempty(dirnameGroup)
    dirnameGroup = pwd;
end

if ~exist('fmt','var') || isempty(fmt)
@@ -54,20 +47,15 @@ if ~exist('fmt','var') || isempty(fmt)
    end
end

if ~exist('dirnameGroup','var') || isempty(dirnameGroup)
    dirnameGroup = pwd;
end

% Check files data set for errors. If there are no valid
% nirs files don't attempt to load them.
files = DataFilesClass();
while files.isempty()
    cd(dirnameGroup)
    switch fmt
        case {'snirf','.snirf'}
            files = DataFilesClass('snirf');
            files = DataFilesClass(dirnameGroup, 'snirf');
            if files.isempty()
                files = DataFilesClass('nirs');
                files = DataFilesClass(dirnameGroup, 'nirs');
                if ~files.isempty()
                    if files.config.RegressionTestActive
                        q = 1;
@@ -77,25 +65,25 @@ while files.isempty()
                        q = MenuBox([msg{:}], {'YES','NO'}, 'center');
                    end
                    if q==2
                        files = DataFilesClass();
                        files = DataFilesClass(dirnameGroup);
                        return;
                    end
                end
                Nirs2Snirf();
                files = DataFilesClass('snirf');
                Nirs2Snirf(dirnameGroup);
                files = DataFilesClass(dirnameGroup, 'snirf');
            end
        case {'nirs','.nirs'}
            files = DataFilesClass('nirs');
            files = DataFilesClass(dirnameGroup, 'nirs');
        otherwise
            q = menu(sprintf('Homer3 only supports file formats: {%s}. Please choose one.', cell2str(supportedFormats(:,1))), ...
                    'OK','CANCEL');
            if q==2
                files = DataFilesClass();
                files = DataFilesClass(dirnameGroup);
                return;
            else
                selection = checkboxinputdlg(supportedFormats(:,1), 'Select Supported File Format');
                if isempty(selection)
                    files = DataFilesClass();
                    files = DataFilesClass(dirnameGroup);
                    return;
                end
                fmt = supportedFormats{selection,1};
+11 −8
Original line number Diff line number Diff line
function [snirf, nirsfiles] = Nirs2Snirf(nirsfiles0, replace, ntimebases)
function [snirf, nirsfiles] = Nirs2Snirf(dirname, nirsfiles0, replace, ntimebases)
%
% Syntax:
%   snirf = Nirs2Snirf(nirsfiles)
%   snirf = Nirs2Snirf(nirsfiles, replace)
%   snirf = Nirs2Snirf(nirsfiles, replace, ntimebases)
%   snirf = Nirs2Snirf(dirname, nirsfiles)
%   snirf = Nirs2Snirf(dirname, nirsfiles, replace)
%   snirf = Nirs2Snirf(dirname, nirsfiles, replace, ntimebases)
%
% Description:
%   Convert all .nirs files in the current folder to .snirf
%   Convert all .nirs files in the folder dirname to .snirf
%
% 
%
@@ -15,8 +15,11 @@ DEBUG=false;

snirf = SnirfClass().empty();

if ~exist('dirname','var') || isempty(dirname)
    dirname = convertToStandardPath(pwd);
end
if ~exist('nirsfiles0','var') || isempty(nirsfiles0)
    nirsfiles0 = DataFilesClass('nirs').files;
    nirsfiles0 = DataFilesClass(dirname,'nirs').files;
end
if ~exist('replace','var') || isempty(replace)
    replace = false;
@@ -25,7 +28,7 @@ if ~exist('ntimebases','var') || isempty(ntimebases)
    ntimebases = 1;
end

nirsfiles = mydir('');
nirsfiles = mydir(dirname);
if iscell(nirsfiles0)
    for ii=1:length(nirsfiles0)
        nirsfiles(ii) = mydir(nirsfiles0{ii});
@@ -41,7 +44,7 @@ for ii=1:length(nirsfiles)
    if nirsfiles(ii).isdir
        continue;
    end
    [pname,fname,ext] = fileparts([nirsfiles(ii).pathfull, '/', nirsfiles(ii).filename]);
    [pname,fname,ext] = fileparts([nirsfiles(ii).pathfull, '/', nirsfiles(ii).name]);
    fprintf('Converting %s to %s\n', [pname,'/',fname,ext], [pname,'/',fname,'.snirf']);
    waitbar_improved(ii/length(nirsfiles), h, sprintf('Converting %s to SNIRF: %d of %d', nirsfiles(ii).name, ii, length(nirsfiles)));

Loading