Skip to content
TaskPipeline_v4.m 3.77 KiB
Newer Older
Julian Kosciessa's avatar
Julian Kosciessa committed
% Pipeline including task practice/threshold estimation, MAT pre, checkerboard and MAT post assessment

%%%%%%%%%%%%%%%%%%%%%%
%% enter subject ID %%
%%%%%%%%%%%%%%%%%%%%%%

subj = 'JQK_170707_v2';
Julian Kosciessa's avatar
Julian Kosciessa committed

%% 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 = [];
Julian Kosciessa's avatar
Julian Kosciessa committed
dotInfo = createDotInfo_JQK_170704;
dotInfo.dataDir = subjectsPath;

DEBUG = 1; opacity = 1;
cursubj = [subj, '_MAT_Practice'];
thresholds = MAT_practice_170707(dotInfo, cursubj, DEBUG, opacity, P);
Julian Kosciessa's avatar
Julian Kosciessa committed

disp(thresholds); disp('Please check whether they are reasonable.')

%% run MAT Task (Pre-CB) 

dotInfo = createDotInfo_JQK_170704(thresholds);
dotInfo.dataDir = [pn.root, 'data/'];

cursubj = [subj, '_MAT_Pre'];
Julian Kosciessa's avatar
Julian Kosciessa committed
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);
Julian Kosciessa's avatar
Julian Kosciessa committed

%% set up and run checkerboard

setup               = [];
Julian Kosciessa's avatar
Julian Kosciessa committed
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)
Julian Kosciessa's avatar
Julian Kosciessa committed

%% run MAT Task (post-CB)

dotInfo         = [];
dotInfo         = createDotInfo_JQK_170704(thresholds);
dotInfo.dataDir = subjectsPath;
Julian Kosciessa's avatar
Julian Kosciessa committed

cursubj = [subj, '_MAT_Post'];
Julian Kosciessa's avatar
Julian Kosciessa committed
DEBUG = 1; opacity = 1;
MAT_experiment_170704(dotInfo, cursubj, DEBUG, opacity)