PhysioNet Cardiovascular Signal Toolbox 1.0.0
(3,409 bytes)
function [ids,fullfilenames] = GenerateListOfFilesTBA(ext,datadir,recursive)
%
%[ids,fullfilenames] = GenerateListOfFilesTBA(ext, datadir, recursive)
%
% OBJECTIVE:
% This function takes the extension ext and finds all relevant
% files within the working directory and the subfolders of the
% working directory. Works with records that are stored with a
% filename in the format '####.ext'
%
% INPUT: ext - string variable of the extension of filetype
% example: 'mat' 'qrs'
% datadir - string variable representing the name of the
% directory of the data
% recursive -
%
% OUTPUT: ids - vector of identifiers (doubles) listing all records
% fulfilenames - full file name for each record(strings)
%
% REPO:
% https://github.com/cliffordlab/PhysioNet-Cardiovascular-Signal-Toolbox
% ORIGINAL SOURCE AND AUTHORS:
% Main script written by Adriana N. Vest
% Dependent scripts written by various authors
% (see functions for details)
% COPYRIGHT (C) 2016
% LICENSE:
% This software is offered freely and without warranty under
% the GNU (v3 or later) public license. See license file for
% more information
%
% Check for folders inside the data directory so that a decision can be
% made about whether to include subfolders or not
if strcmp(computer,'GLNXA64')
if recursive
[~, sysout] = system(['ls ' datadir filesep '*.',ext]);
else
[~, sysout] = system(['ls ' datadir filesep '*.',ext]);
% ANV modified this line to work in linux for MIT NSR files on box
% May need to revisit
end
allfiles = strsplit(sysout);
elseif strcmp(computer,'MACI64') || strcmp(computer,'PCWIN64')
allfiles1 = [];
if recursive
allfiles1 = dir(fullfile(datadir, '*', filesep, ['*.' ext]));
end
allfiles2 = dir(fullfile(datadir, ['*.' ext]));
allfiles = [allfiles1;allfiles2];
else
error('no files or records found');
end
% Initialize arrays to store data
ids = cell(length(allfiles), 1); % Create ids vector to store subject identifiers
fullfilenames = cell(length(ids),1); % Create cell array to store filenames
for i = 1:length(fullfilenames)
try
if strcmp(computer,'GLNXA64')
filename = dir(allfiles{i});
fullfilenames{i} = [allfiles{i}];
filename = filename.name;
filename = strrep(filename, ['.' ext], '');
ids{i} = filename;
elseif strcmp(computer,'MACI64')
fullfilenames{i} = [allfiles(i).folder filesep allfiles(i).name];
filename = allfiles(i).name;
filename = strrep(filename, ['.' ext], '');
ids{i} = filename;
elseif strcmp(computer,'PCWIN64')
fullfilenames{i} = [datadir filesep allfiles(i).name];
filename = allfiles(i).name;
filename = strrep(filename, ['.' ext], '');
ids{i} = filename;
end
catch
end
end
if strcmp(computer,'GLNXA64')
%idx_rem = find((isempty(ids))); %% This line isn't working on Linux
emptyCells = cellfun(@isempty,ids);
idx_rem = find(emptyCells);
ids(idx_rem) = [];
fullfilenames(idx_rem) = [];
end
if isnumeric(ids{1})
for k = 1:length(ids)
ids{k} = num2str(ids{k});
end
end