classdef PDExperiment properties name description filename subjects date handle settings = PDSettings % struct('BaselineCorrection', 0,... % 'FilterSize', 100, ... % 'BlinkExtension', [10 10],... % 'MaximumBlinkSize', 1000,... % 'QualityThreshold',50); % % bl_types = {'None',... % 'Average', ... % 'Min', ... % 'Percentile', ... % 'Offset (fitted line)'}; aggregates %= PDAggregate; end methods function[obj] = PDExperiment(varargin) if nargin > 0 if strcmp(class(varargin{1}), 'PDSubject') obj.subjects = varargin{1}; for s = 1:length(obj.subjects) obj.subjects(s).index = s; obj.subjects(s).name = sprintf('Subject %d', s); end else if exist(varargin{1},'dir') obj = obj.buildExperiment(varargin{1}); else if strcmp(varargin{1}, 'placeholder'); % create an empty PDExperiment object (for GUI purposes) else error('Incorrect path entered / No PDSubjects entered'); end end end if nargin ==1 if (strcmp(varargin{1}, 'placeholder')) else obj = obj.askForBaseline; end else if ischar(varargin{2}) is_bl_type = find(strcmp(obj.bl_types, varargin{2})); if isempty(is_bl_type) warning('Baseline correction type is unknown.'); obj = obj.askForBaseline; else obj.settings.BaselineCorrection = is_bl_type; try obj.settings.BaselineCorrectionPercentile = varargin{3}; catch end end else obj.settings.BaselineCorrection = varargin{2}; end end else error('No subjects entered'); end obj = obj.consolidateSettings; end end end