init
This commit is contained in:
41
PDToolkit/@PDSubject/PDSubject.m
Normal file
41
PDToolkit/@PDSubject/PDSubject.m
Normal file
@@ -0,0 +1,41 @@
|
||||
classdef PDSubject
|
||||
properties
|
||||
index
|
||||
sessions
|
||||
settings
|
||||
name
|
||||
date
|
||||
time
|
||||
covariates
|
||||
end
|
||||
methods
|
||||
|
||||
function[obj] = PDSubject(varargin)
|
||||
if nargin ==0
|
||||
display('Select data for this subject:');
|
||||
|
||||
files = cellstr(uigetfile({'*.ASC;*.asc', 'Converted Eyelink text files (*.ASC)';...
|
||||
'*.EDF;*.edf', 'Original Eyelink data files (*.EDF)'}, ...
|
||||
'Select data for this subject', 'MultiSelect', 'on'));
|
||||
|
||||
for i = 1:length(files)
|
||||
session = PDSession(files{i});
|
||||
obj.sessions = session;
|
||||
end
|
||||
end
|
||||
|
||||
if nargin == 1
|
||||
display(sprintf('Selecting sessions based on all files in: %s', varargin{1}));
|
||||
obj.sessions = obj.findAllfiles(varargin{1});
|
||||
if ~isempty(obj.index)
|
||||
obj.name = sprintf('Subject %d', obj.index );
|
||||
else
|
||||
[folder topmostfolder] = fileparts(varargin{1});
|
||||
obj.name = topmostfolder;
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
end
|
53
PDToolkit/@PDSubject/findAllfiles.m
Normal file
53
PDToolkit/@PDSubject/findAllfiles.m
Normal file
@@ -0,0 +1,53 @@
|
||||
function[sessions] = findAllfiles(obj, folder)
|
||||
|
||||
cd(folder);
|
||||
files = dir;
|
||||
i=1;
|
||||
sessions = PDSession(''); % create empty session
|
||||
for s =1:length(files)
|
||||
if (strcmp(files(s).name, '.') || strcmp(files(s).name, '..'))
|
||||
continue;
|
||||
end
|
||||
|
||||
if files(s).isdir
|
||||
new_sessions = obj.findAllfiles([folder filesep files(s).name]);
|
||||
for i = 1:length(new_sessions)
|
||||
if ((length(sessions) ==1) && isempty(sessions(1).datafile))
|
||||
sessions(length(sessions)) = new_sessions(i);
|
||||
else
|
||||
sessions(i + length(sessions)) = new_sessions(i);
|
||||
end
|
||||
end
|
||||
else
|
||||
[base file ext] = fileparts(files(s).name);
|
||||
|
||||
if strcmp(lower(ext), '.asc')
|
||||
display(sprintf('\tFile found for Subject: %s', file));
|
||||
if ((length(sessions) ==1) && isempty(sessions(1).datafile))
|
||||
sessions(1) = PDSession([folder filesep files(s).name]);
|
||||
else
|
||||
sessions(end+1) = PDSession([folder filesep files(s).name]);
|
||||
end
|
||||
i=i+1;
|
||||
end
|
||||
|
||||
if strcmp(lower(ext), '.gazedata')
|
||||
display(sprintf('\tFile found for Subject: %s', file));
|
||||
if ((length(sessions) ==1) && isempty(sessions(1).datafile))
|
||||
sessions(1) = PDSession([folder filesep files(s).name]);
|
||||
else
|
||||
sessions(end+1) = PDSession([folder filesep files(s).name]);
|
||||
end
|
||||
i=i+1;
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
%% do not return empty objects
|
||||
|
||||
if ((length(sessions) ==1) && isempty(sessions(1).datafile))
|
||||
sessions = [];
|
||||
end
|
||||
|
||||
|
||||
|
10
PDToolkit/@PDSubject/getTrialMatrices.m
Normal file
10
PDToolkit/@PDSubject/getTrialMatrices.m
Normal file
@@ -0,0 +1,10 @@
|
||||
function[mats trial_ind] = getTrialMatrices(objs, varargin)
|
||||
%% for all subjects, get all trials
|
||||
|
||||
for i = 1:length(objs)
|
||||
|
||||
for s = 1:length(objs(i).sessions);
|
||||
[mats{i,s} trial_ind{i,s}] = objs(i).sessions(s).getTrialMatrix(varargin);
|
||||
end
|
||||
|
||||
end
|
9
PDToolkit/@PDSubject/loadData.m
Normal file
9
PDToolkit/@PDSubject/loadData.m
Normal file
@@ -0,0 +1,9 @@
|
||||
function[objs] = loadData(objs)
|
||||
|
||||
for i = 1:length(objs)
|
||||
for s = 1:length(objs(i).sessions)
|
||||
|
||||
objs(i).sessions(s) = objs(i).sessions(s).loadData();
|
||||
end
|
||||
end
|
||||
|
6
PDToolkit/@PDSubject/preprocess.m
Normal file
6
PDToolkit/@PDSubject/preprocess.m
Normal file
@@ -0,0 +1,6 @@
|
||||
function[obj] = preprocess(obj, settings)
|
||||
|
||||
for s = 1:length(obj.sessions)
|
||||
obj.sessions(s) = obj.sessions(s).preprocess(settings);
|
||||
end
|
||||
end
|
14
PDToolkit/@PDSubject/rebuild.m
Normal file
14
PDToolkit/@PDSubject/rebuild.m
Normal file
@@ -0,0 +1,14 @@
|
||||
function[objs] = rebuild(objs, varargin)
|
||||
|
||||
|
||||
p = inputParser;
|
||||
addOptional(p, 'ForcePrecursorLabels',0);
|
||||
p.parse(varargin);
|
||||
params = p.Results;
|
||||
|
||||
for o = 1:length(objs)
|
||||
for s = 1:length(objs(o).sessions);
|
||||
|
||||
objs(o).sessions(s) = objs(o).sessions(s).rebuild(params);
|
||||
end
|
||||
end
|
5
PDToolkit/@PDSubject/removeDuplicateLabels.m
Normal file
5
PDToolkit/@PDSubject/removeDuplicateLabels.m
Normal file
@@ -0,0 +1,5 @@
|
||||
function[obj] = removeDuplicateLabels(obj)
|
||||
|
||||
for s = 1:length(obj.sessions)
|
||||
obj.sessions(s) = obj.sessions(s).removeDuplicateLabels;
|
||||
end
|
@@ -0,0 +1,8 @@
|
||||
function[objs] = setFailSafePatternRelativeToPattern(objs, relativeTotype,type, timing)
|
||||
%% more info should be written here
|
||||
for o = 1:length(objs)
|
||||
for s = 1:length(objs(o).sessions)
|
||||
|
||||
objs(o).sessions(s) = objs(o).sessions(s).setFailSafePatternRelativeToPattern(relativeTotype,type,timing);
|
||||
end
|
||||
end
|
12
PDToolkit/@PDSubject/setLabel.m
Normal file
12
PDToolkit/@PDSubject/setLabel.m
Normal file
@@ -0,0 +1,12 @@
|
||||
function[objs] = setLabel(objs, type, pattern)
|
||||
|
||||
if nargin ==2
|
||||
pattern = type;
|
||||
end
|
||||
|
||||
for o = 1:length(objs)
|
||||
for s = 1:length(objs(o).sessions)
|
||||
% ignore type for now
|
||||
objs(o).sessions(s) = objs(o).sessions(s).setLabel(pattern);
|
||||
end
|
||||
end
|
12
PDToolkit/@PDSubject/setLabelRelativeToLabel.m
Normal file
12
PDToolkit/@PDSubject/setLabelRelativeToLabel.m
Normal file
@@ -0,0 +1,12 @@
|
||||
function[objs] = setLabelRelativeToLabel(objs, target, pattern, time)
|
||||
|
||||
if nargin ==2
|
||||
pattern = type;
|
||||
end
|
||||
|
||||
for o = 1:length(objs)
|
||||
for s = 1:length(objs(o).sessions)
|
||||
% ignore type for now
|
||||
objs(o).sessions(s) = objs(o).sessions(s).setLabelRelativeToLabel(type, pattern);
|
||||
end
|
||||
end
|
8
PDToolkit/@PDSubject/setPattern.m
Normal file
8
PDToolkit/@PDSubject/setPattern.m
Normal file
@@ -0,0 +1,8 @@
|
||||
function[objs] = setPattern(objs, type, pattern)
|
||||
|
||||
for o = 1:length(objs)
|
||||
for s = 1:length(objs(o).sessions)
|
||||
|
||||
objs(o).sessions(s) = objs(o).sessions(s).setPattern(type, pattern);
|
||||
end
|
||||
end
|
8
PDToolkit/@PDSubject/setPatternMulti.m
Normal file
8
PDToolkit/@PDSubject/setPatternMulti.m
Normal file
@@ -0,0 +1,8 @@
|
||||
function[objs] = setPatternMulti(objs, type, pattern)
|
||||
|
||||
for o = 1:length(objs)
|
||||
for s = 1:length(objs(o).sessions)
|
||||
|
||||
objs(o).sessions(s) = objs(o).sessions(s).setPatternMulti(type, pattern);
|
||||
end
|
||||
end
|
8
PDToolkit/@PDSubject/setPatternRelativeToPattern.m
Normal file
8
PDToolkit/@PDSubject/setPatternRelativeToPattern.m
Normal file
@@ -0,0 +1,8 @@
|
||||
function[objs] = setPatternRelativeToPattern(objs, relativeTotype,type, timing)
|
||||
%% more info should be written here
|
||||
for o = 1:length(objs)
|
||||
for s = 1:length(objs(o).sessions)
|
||||
|
||||
objs(o).sessions(s) = objs(o).sessions(s).setPatternRelativeToPattern(relativeTotype,type,timing);
|
||||
end
|
||||
end
|
7
PDToolkit/@PDSubject/setSettings.m
Normal file
7
PDToolkit/@PDSubject/setSettings.m
Normal file
@@ -0,0 +1,7 @@
|
||||
function[obj] = setSettings(obj, settings)
|
||||
|
||||
obj.settings = settings;
|
||||
|
||||
for s = 1:length(obj.sessions)
|
||||
obj.sessions(s) = obj.sessions(s).setSettings(settings);
|
||||
end
|
30
PDToolkit/@PDSubject/summary.m
Normal file
30
PDToolkit/@PDSubject/summary.m
Normal file
@@ -0,0 +1,30 @@
|
||||
function[] = summary(obj, level)
|
||||
%% summary of PDSubject at a certain level
|
||||
%% level 0 : global info
|
||||
%% level 1 : more detail
|
||||
if nargin ==1
|
||||
level =0;
|
||||
end
|
||||
|
||||
display(sprintf('Summary for %d subjects:', length(obj)));
|
||||
|
||||
display(repmat('_',1,50));
|
||||
|
||||
for s = 1:length(obj)
|
||||
display(sprintf('Subject: %s (%d sessions)', obj(s).name, length(obj(s).sessions)));
|
||||
for p = 1:length(obj(s).sessions)
|
||||
display(sprintf('\to) Session %d: %d trial(s)', p, length(obj(s).sessions(p).trials)));
|
||||
|
||||
if (level > 0)
|
||||
|
||||
for t = 1:length(obj(s).sessions(p).trials)
|
||||
|
||||
display(sprintf('\t\t*) trial %3d :\t%10d samples', t, length(obj(s).sessions(p).trials(t).data.uncorrected.raw)));
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
16
PDToolkit/@PDSubject/untitled.m
Normal file
16
PDToolkit/@PDSubject/untitled.m
Normal file
@@ -0,0 +1,16 @@
|
||||
function[] = summary(obj)
|
||||
|
||||
display(sprintf('Summary for %d subjects:', length(obj)));
|
||||
|
||||
display(repmat('_',1,50));
|
||||
|
||||
for s = 1:length(obj)
|
||||
display(sprintf('\tSubject: %s', obj(s).name));
|
||||
display(sprintf('\t%d sessions:', length(obj(s).sessions)));
|
||||
for p = 1:length(obj(s).sessions)
|
||||
display(sprintf('\tSession %d: %d trial(s)', p, length(obj(s).sessions(p).trials)));
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user