Newer
Older
% Pipeline including task practice/threshold estimation, MAT pre, checkerboard and MAT post assessment
%%%%%%%%%%%%%%%%%%%%%%
%% enter subject ID %%
%%%%%%%%%%%%%%%%%%%%%%
%% add required paths
pn.root = '/Volumes/LNDG-1/Julian/Projects/DYNSAT/C_Paradigm/';
pn.CB = [pn.root, 'checker/'];
pn.MAT = [pn.root, 'dotsx/'];
addpath(genpath([pn.root, 'functions/']));
addpath(pn.CB);
addpath(pn.MAT);
addpath(genpath('/Users/Shared/Psychtoolbox/')); % PTB 3.0.13 (160606)
%% create results directory
subjectsPath = [pn.root, '/data/', subj '_' datestr(now, 'yymmdd_HHMM') '/']; mkdir(subjectsPath);
%% set up PTB
Screen('Preference', 'SkipSyncTests', 1);
oldLevel = Screen('Preference', 'Verbosity', 4); % output debugging info
PsychDebugWindowConfiguration(0,0.3)
%% practice MAT task
cd(pn.root);
% staircase parameters
P.PM.numtrials = 60; % (numtrials/2) needs to be round
P.PM.PF = @PAL_Gumbel; % assumed psychometric function
P.PM.grain = 201; % tradeoff between precision & computation time
P.PM.stimRange = .5:.02:.7; % only allow values in range from 50 to 80%
P.PM.priorAlphaRange = linspace(.5,.7,P.PM.grain);
P.PM.priorBetaRange = -1:.05:3;
P.PM.priorGammaRange = 0.5; % fixed chance level
P.PM.priorLambdaRange = .05; % fixed lapse rate
dotInfo = [];
dotInfo = createDotInfo_JQK_170704;
dotInfo.dataDir = subjectsPath;
DEBUG = 1; opacity = 1;
cursubj = [subj, '_MAT_Practice'];
thresholds = MAT_practice_170707(dotInfo, cursubj, DEBUG, opacity, P);
disp(thresholds); disp('Please check whether they are reasonable.')
%% run MAT Task (Pre-CB)
dotInfo = createDotInfo_JQK_170704(thresholds);
dotInfo.dataDir = [pn.root, 'data/'];
DEBUG = 1; opacity = 1;
MAT_experiment_170704(dotInfo, cursubj, DEBUG, opacity)
%% practice checkerboard task
setup.subj = subj;
setup.design = 1;
setup.ET = 0;
setup.in_scanner = 0;
setup.dummyScans = 0;
setup.add_display = 0; % if not in scanner: additional display connected?
setup.test_trigger = 0; % test scanner trigger (1) or not (0)
setup.DEBUG = 1; % debug mode?
setup.transparency = .99; % only relevant if DEBUG == 1
setup.verbosity = 4; % magnitude of PTB output
setup.EPI = 0;
setup.BGmode = 'black'; % black/grey mode
setup.mode = 'task';
[checkerInfo_practice, setup] = PureCheckerParameters_Practice_170403(setup);
setup.catchPractice = 0;
setup.subjectsPath = subjectsPath;
checkerBoard_Practice_Threshold_170705(checkerInfo_practice, setup);
setup.subj = subj;
setup.design = 1;
setup.ET = 0;
setup.in_scanner = 0;
setup.dummyScans = 0;
setup.add_display = 0; % if not in scanner: additional display connected?
setup.test_trigger = 0; % test scanner trigger (1) or not (0)
setup.DEBUG = 1; % debug mode?
setup.transparency = .99; % only relevant if DEBUG == 1
setup.verbosity = 4; % magnitude of PTB output
setup.EPI = 0;
setup.BGmode = 'black'; % black/grey mode
setup.mode = 'task';
[checkerInfo, setup] = PureCheckerParameters_170403(setup);
setup.outputName = 'Task';
setup.subjectsPath = subjectsPath;
checkerContrastComp_170706(checkerInfo, setup)
dotInfo = [];
dotInfo = createDotInfo_JQK_170704(thresholds);
dotInfo.dataDir = subjectsPath;
DEBUG = 1; opacity = 1;
MAT_experiment_170704(dotInfo, cursubj, DEBUG, opacity)