ET_PDToolkit/PDToolkit/@PDExperiment/PDExperiment.m

87 lines
3.2 KiB
Matlab

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