function output = exist(obj, varargin) %EXIST Check if a run exists % exist(PP) checks the existence of run PP if PP has a specified % experiment and irec. % % exist(PP, 'full', true) checks if all channels are actually present. If % full is false, a single channel is sufficient to return true on whether % the run exists. Eventtimes and other files are never checked. Default: % false % % exist(PP, 'directMode', true) checks if there is a run in the _direct % folder, meaning it has just completed by the neuron program. Default: % false % Handle input p = inputParser(); p.addParamValue('full', false); p.addParamValue('directMode', false); p.parse(varargin{:}); p = p.Results; % Direct mode fpath = obj.datadir(); irec = obj.irec; if p.directMode fpath = obj.directdir(); irec = obj.iter; end % The object must be a specific run assert(~isempty(experiment(obj)), 'Please specify an experiment'); assert(~isempty(irec), 'Please specify a specific run'); % Handle output doesExist = 0; % Variables flExt = obj.sim_channels; % If a single channel exists, consider the run as existing for ii = 1:numel(flExt) % Generate a filename if irec == 0 fname = fullfile(fpath, sprintf('run_unsaved__vm_%s.txt', flExt{ii})); else fname = fullfile(fpath, sprintf('run_%05i__vm_%s.txt', irec, flExt{ii})); end % Check if file exists if exist(fname, 'file') doesExist = doesExist + 1; end end % Handle doesExist if p.full doesExist = doesExist >= numel(flExt); else doesExist = doesExist > 1; end % Output output = doesExist; if nargout == 0 switch doesExist case 0 fprintf('Run %i does not exist\n', irec); case 1 fprintf('Run %i exists\n', irec); end end end