SINGLE N-BACK TASK NON-ADAPTIVE (1-KEY VERSION)- LETTERS SCRIPT INFO Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software LLC Date: March, 2012 last updated: 10-18-2017 by K.Borchert (katjab@millisecond.com) for Millisecond Software LLC Copyright © 10-18-2017 Millisecond Software BACKGROUND INFO *Purpose* The current script is based on the SingleTaskNBack.exp script which implements the single-task version of the N-Back procedure as described in the following publication: Jaeggi, Susanne M.; Studer-Luethi, Barbara; Buschkuehl, Martin; Su, Yi-Fen; Jonides, John; Perrig, Walter J. (2010). The relationship between n-back performance and matrix reasoning - implications for training and transfer. Intelligence, 38, 625-635. The current script is adapted to implement the procedure of the Single N-back task using letters as described in: Ragland, J.D., Turetsky, B.I., Gur, R.C, Gunning-Dixon, F., Turner, T, Schroeder, L., Chan, R., & Gur, R.E. (2002).Working Memory for Complex Figures: An fMRI Comparison of Letter and Fractal n-Back Tasks. Neuropsychology, 16, 370-379. This Inquisit script provides trials and instructions for single n-back tasks with 20 upper case consonants for 4 levels of N (N = 0, N = 1, N = 2, N = 3). Other levels of N can be implemented with minimal change. *Task* In the 1-key single n-back task, participants are shown a sequence of stimuli (here: a sequence of white letters on a black background) and are asked to indicate whether the currently presented stimulus fulfills the following criteria: for N=0 trials*: - is the letter the same as the first letter presented in the sequence? If so (it's a target), and press "A". If not, don't respond. for N=1 trials: - is the letter the same as the one that preceded it? If so (it's a target), and press "A". If not, don't respond. for N=2 trials: - is the letter the same as the one presented two trials before? If so (it's a target), and press "A". If not, don't respond. for N=3 trials: - is the letter the same as the one presented three trials before? If so (it's a target), and press "A". If not, don't respond. *Note: The implementation for 0-nback tasks in this script differs from the procedure used by Jaeggi and collegues in her research. Jaeggi and collegues used a pre-defined shape. In this script, the target shape is defined at runtime for each participant during the first trial. Participants are instructed to pay close attention to this first presentation and are warned that presentation time is short. Furthermore in this script, the experimenter can set how long the target letter should be presented to participants in 0 nback trials, as well as how much time before starting the actual task (after the target has disappeared) DATA FILE INFORMATION: The default data stored in the data files are: (1) Raw data file: 'SingleTaskNBack_letters_raw.iqdat' (a separate file for each participant) build: Inquisit build computer.platform: the platform the script was run on date, time, subject, group: date and time script was run with the current subject/groupnumber blockcode: the name of the current block values.TotalBlocks: the total number of experimental blocks run trialcode: the name of the current trial starttrialcounter: keeps track of how many start trials have been run stimulusitem: the letter presented stimulusnumber: the item number of the presented letter values.currenttarget: the item number of the current target response: the response of the participant correct: the correctness of the response latency: how fast a participant responded within the given timeframe, if at all (in ms) values.trial_Hit: whether the response was a Hit (=1) values.trial_FA: whether the response was a False Alarm (=1) values.trial_Miss: whether the response was Miss (=1) values.trial_CR: whether the response was a Correct Rejection ( = 1) values.Hits: the sum of Hits in a block values.FalseA: the sum of False Alarms in a block values. Misses: the sum of Misses in a block values.CorrReject: the sum of Correct Rejections in a block values.TotalHits: the sum of total hits across all experimental blocks values.TotalFA: the number of total false alarms across all experimental blocks values.DV: the proportion of (TotalHits - TotalFA)/number of experimental blocks (2) Summary data file: 'SingleTaskNBack_letters_summary*.iqdat' (a separate file for each participant) script.startdate: date script was run script.starttime: time script was started script.subjectid: subject id number script.groupid: group id number script.elapsedtime: time it took to run script (in ms) computer.platform: the platform the script was run on /completed: 0 = script was not completed (prematurely aborted); 1 = script was completed (all conditions run) values.TotalHits: the sum of total hits across all experimental blocks values.TotalFA: the number of total false alarms across all experimental blocks values.DV: the proportion of (TotalHits - TotalFA)/number of experimental blocks EXPERIMENTAL SET-UP: - After instructions, participants receive 9 trials of practice per level N tested (here: N = 0 to N = 3) , (-> can be changed to eliminate N = 3 as was done by Ragland et al (2002)) - once practice is done, participants get the option to repeat practice - After practice, participants receive 3 blocks per level of N tested. Which particular level a participant works on is pseudo-randomly determined (see Ragland et al, 2002). - the instructions are self-paced as a default, to change them to a timed format (default = 9s, see Ragland et al, 2002), follow instructions under parameters.instruction_duration Block Information: - Each single n-task block consists of 15+ trials (Ragland et al, 2002) using 20 different consonants. => + trials are the N trials that cannot display target shapes yet (=start trials). Their numbers vary depending on N. The data collected during these start trials are NOT included in performance counts for Correct Rejections/False Alarms. => Of the actual 15 experimental trials, 5 present a target and 10 do not (1:2 ratio as in Ragland et al, 2002). - The computer selects randomly a) whether it is a target trial or not and b) what letter to show if it is not a target trial Trial Information: - Each trial presents the letter for 500ms and waits another 2000ms before presenting the next letter in the sequence (see Ragland et al. for InterstimulusInterval = 2500ms). The trialduration can be edited by experimenter. - Participants have the entire 2500ms to respond by pressing "A" if they detect a target. INFORMATION FOR CODE-CHANGES (e.g. ADDITIONAL/DIFFERENT LEVELS OF N) Instructions for changing code for additional Ns are provided with this script. Please check the following sections for the relevant info: 1. Custom Values 2. Instructions: (a) Instruction Slides -> Editable Instructions (b) Instruction Blocks -> section Instructions (block.Nbackinstruct_start) 3. Trials 4. Blocks: (a) Practice (b) Experimental EDITABLE CODE: check below for (relatively) easily editable parameters, stimuli, instructions etc. Keep in mind that you can use this script as a template and therefore always "mess" with the entire code to further customize your experiment. The parameters you can change are: trialduration: Interstimulusinterval (in ms) for regular n-back trials, default = 2500ms, posttrialpause_aftertarget0: the posttrialpause (in ms) after the target in 0nback tasks disappears from sight and the actual 0 nback testing starts (default = 2000ms, to make it comparable to the remaining trials) showtarget0: the amount of time the target for N = 0 trials should be presented; default = 3000 instruction_duration: the time the instructions for each experimental block are shown (in ms), default = 9000ms only applies if instructions for experimental blocks are NOT self-paced (see INSTRUCTIONS -> INSTRUCTION TRIALS -> trial.expinstructiontrial for further info) NOTE: the default for this script are self-paced instructions debugmode = 0 debugmode = 1: targetalerts are shown on screen, debugmode = 0, no targetalerts are shown (default) /stimulusPresentationtime: the presentation time (in ms) of the stimuli (default: 500ms) (in general: if levels of N are changed, adjustments need to be made to instructions and list.Nlevel) Original: defaults> /canvasaspectratio = (4,3) /minimumversion = "5.0.5.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = white / txcolor = (0, 0, 0) / screencolor = black From task switching: /canvasaspectratio = (4,3) / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = black / txcolor = white / screencolor = black / fontstyle = ("Arial", 2.8%, false, false, false, false, 5, 0) / txcolor = white / screencolor = black / blocks = [1 = survey, Instructionsblock, Nbackinstruct_start, practice_s_ntask, chooseLevel, endsurvey] / trials = [1 = leveldifficulty, levelenjoy, end] / finishlabel = "Finish" / questions = [1 = endcaption] / showpagenumbers = false / showquestionnumbers = false / itemfontstyle = ("Arial", 3%, true, false, false, false, 5, 1) / nextbuttonposition = (90%, 90%) / caption = "You have now come to the end of the experiment. Thank you for participating! If you have any further questions or comments, please don't hesitate to contact the experimenter." / position = (0%, 25%) / ontrialend = [ if (expt.exp.response == "CTRL+'Q'" || expt.exp.response == "CTRL+'B'") {script.abort();}] ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** /trialduration = 2500 /posttrialpause_aftertarget0 = 2000 /instruction_duration = 9000 /showtarget0 = 3000 /debugmode = 0 /stimulusPresentationtime = 500 /trialduration = 2500 /posttrialpause_aftertarget0 = 2000 /instruction_duration = 9000 /showtarget0 = 3000 /debugmode = 0 /stimulusPresentationtime = 500 ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI: change editable stimuli here ************************************************************************************************************** ************************************************************************************************************** * 20 consonants /1 = "B" /2 = "C" /3 = "D" /4 = "F" /5 = "G" /6 = "H" /7 = "J" /8 = "K" /9 = "L" /10 = "M" /11 = "N" /12 = "P" /13 = "Q" /14 = "R" /15 = "S" /16 = "T" /17 = "V" /18 = "W" /19 = "X" /20 = "Z" ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** ***********INSTRUCTION SLIDES***************************** Note: these instruction slides are adapted from the original instructions kindly provided to Millisecond Software by Jaeggi et al . Thank you! ********************************************************* NOTE: If you only run N = 0 to N = 2, remove/exchange the instructionslides that reference N = 3 ********************************************************** /1 = "SingleNbackInstructions_letters_start.gif" /2 = "SingleNbackInstructions_letters_N0.gif" /3 = "SingleNbackInstructions_letters_N1.gif" /4 = "SingleNbackInstructions_letters_N2.gif" /5 = "SingleNbackInstructions_letters_N3.gif" /6 = "nback4intro.png" /7 = "SingleNbackInstructions_letters_practice012new.gif" ********************************************************* Alternative if only N=0 - N=2 is run -> "SingleNbackInstructions_letters_practice012.gif" ********************************************************* ********************************************************* Alternative if only N=0 - N=2 is run -> "SingleNbackInstructions_letters_practiceend012.gif" ********************************************************* *slides to start experimental trials/end experiment /1 = "StartExpt.gif" *Instructions for individual practice N-levels (not original) /1 = "SingleNbackInstructionsN0_letters_exp.gif" /2 = "SingleNbackInstructionsN1_letters_exp.gif" /3 = "SingleNbackInstructionsN2_letters_exp.gif" /4 = "SingleNbackInstructionsN3_letters_exp.gif" /5 = "SingleNbackInstructionsN4_letters_exp.gif" Note: presents the instructions for the test blocks / file = "ExpInstructions.htm" Used in htmlpage 'ExpInstructions' /expInstructions = if (values.N > 0){ "

Press 'A' if the current letter is the same as the letter <%values.N%> trial(s) before. Otherwise don't do anything.



"; } else { "

Once you start the test, pay close attention to the first letter. This shape will be your target for the remaining trials.

Press 'A' if the current letter is the same one as the one in the very first trial otherwise don't do anything.



" };
*******CODE CHANGES: If you would like to run different levels of N in practice/experimental trials, change/add the necessary instruction slides under the appropriate item categories above, as well as pay attention to the changes necessary under "Instruction Blocks" block.Nbackinstruct_start ********************************* Summary ********************************* *A feedback page that is presented at the end of each practice block ^^ FEEDBACK ^^ ^^CORRECT: <% ((values.Hits + values.CorrReject) /20) * 100 %>% of the time ^^ FEEDBACK ^^ ^^CORRECT: <% (values.Hits/(values.Hits+values.Misses) + values.CorrReject/(values.CorrReject+values.FalseA))/2 * 100 %>% of the time ************************************************************************************************************** ************************************************************************************************************** EDITABLE LISTS: change editable lists here ************************************************************************************************************** ************************************************************************************************************** Note: list controls the level of N run during practice. By default, practice runs level 2, 3, 4 once and in sequence /items = (0,1,2,3,4) / selectionmode = sequence / selectionrate = block / resetinterval = 0 *list.Nlevel pseudorandomly selects the next N level (the experiment runs as many blocks as there are items in this list) ! if you do NOT run level N = 3, remove all 3s from the item list of this list ! if you want to run a level more or fewer times adjust the number of the digits in the item list accordingly ! if you want to run the levels in sequence, replace /replace=false with /selectionmode = sequence IN GENERAL: if you run different levels of N or change the number of repetitions, you need to adjust the item list of list.nlevel /items = (1) / replace = false / resetinterval = 0 /items = (1,2,3,4,5,6,7,8,9,10) ************************************************************************************************************** !!!REMAINING CODE: Customize after careful consideration only!!! ************************************************************************************************************** ***** ********************************************************************************************************* ************************************************************************************************************** DATA ************************************************************************************************************** ************************************************************************************************************** Note: data file explanations under User Manual Information at the top ********************* raw data ********************* data> /columns = (values.N, build, computer.platform, date, time, subject, group, values.N, blockcode, values.TotalBlocks, trialcode, trialnum, values.starttrialcounter, stimulusitem, stimulusnumber, values.currenttarget, response, correct, latency, values.trial_Hit, values.trial_FA, values.trial_Miss, values.trial_CR, values.Hits, values.FalseA, values.Misses, values.CorrReject, values.TotalHits, values.TotalFA, values.DV, values.success) / separatefiles = true ********************* summary data ********************* summarydata> /columns = (script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed, values.TotalHits, values.TotalFA, values.DV) / separatefiles = true ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /completed: 0 = script was not completed (script was prematurely aborted); 1 = script was completed (all conditions run) stim: contains the current stimulusitem stimnumber: contains the current stimulusitemnumber N: the lag between a target and the stimulus it repeats currenttarget: contains the stimulusnumber of the current target (a target in N = 0 trials is a stimulus with the same stimulus number as stored in target0) Hits: codes the number of correctly identifiying a target FalseA: codes the number of times a participant identifies a non-target as a target Misses: codes the number of times a participant misses to identify a target CorrReject: codes the number of times a participant correctly identifies a non-target (and does nothing) values.TotalHits: the number of total hits across all experimental blocks values.TotalFA: the number of total false alarms across all experimental blocks values.TotalBlocks: the total number of experimental blocks run values.: dependent variable (DV) in Jaeggi et al (2010): the proportion of (TotalHits - TotalFA)/number of total blocks starttrialcounter: keeps track of how many start trials have been run trialduration_starttrial: the time for the starttrials, depends on level of N (starttrial for N = 0 trials differs) starttrialposttrialpause: the posttrialpause of starttrials (can be set for N = 0 trials, for all others it's 0) /lastIndex: helper variable to manage the last N presented shape list /completed = 0 /N = 0 /currentLevel = 0 /currenttarget = 0 /Hits = 0 /FalseA = 0 /Misses = 0 /CorrReject = 0 /TotalHits = 0 /TotalFA = 0 /DV = 0 /TotalBlocks = 0 /starttrialcounter = 0 /trialduration_starttrial = 0 /starttrialposttrialpause = 0 /trial_Hit = 0 /trial_Miss = 0 /trial_CR = 0 /trial_FA = 0 / success = 0 /reward = 0 /lastIndex = 0 /completednback = 0 **************************ADDITIONAL N-LEVELS************************************* * if additional N-levels are needed, create and add further "minusN" values and set them to 0, Example: N = 5 /minus5 = 0 ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** expressions.selectinstruct helps to select the adequate instructions for adaptive n-back testing /selectinstruct = values.N + 1 /fillitemlist: recursive function that fills list.items with N items at the beginning of each new block /fillitemlist = { if (values.lastIndex < values.N){ list.items.insertitem(0, 1); values.lastIndex += 1; expressions.fillitemlist; } else { list.items.insertitem(0, 1); }; } ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** ***********INSTRUCTION IMAGE SELECTION****************************************** / items = Nback_startinstructions / select = sequence / size = (100%, 100%) /file = "practice_end.htm" / items = startendslides / select = 1 / size = (100%, 100%) / stimulusframes = [1 = blank] / validresponse = ("") /trialduration = 1 / items = ("") ^^^^This part of the experiment is now completed. ^^^Please press the space bar to continue. *instructions for individual experimental trials are selected depending on level of N /items = expinstructions /select = expressions.selectinstruct /size = (100%, 100%) /items = ("SingleNbackInstructions_practicerepeat.gif") /size = (100%, 100%) ***********INSTRUCTION TRIALS******************************************* **************************************************************************************** Note: * instructions for each level of N are self-paced. * If they should be shown for a predetermined time (e.g. 9s, see Ragland et al, 2002) use the following code instead in trial.expinstructiontrial: / stimulusframes = [1 = expinstructionslide, eraserrec, wait] / validresponse = (noresponse) / timeout = (parameters.instruction_duration) **************************************************************************************** / stimulusframes = [1 = expinstructionslide] / validresponse = (57) / recorddata = false / stimulusframes = [1 = SingleNbackinstructions_start] / validresponse = (57) / recorddata = false / stimulusframes = [1 = StartExp_slide] / validresponse = (57) / recorddata = false / stimulusframes = [1 = repeatpractice_page] / validresponse = (49, 21) / recorddata = false ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** ***randomly selects one of the letters / items = letters /select = replace / position = (50%, 50%) / txcolor = white / txbgcolor = black / fontstyle = ("Arial", 20%, false, false, false, false, 5, 0) ***selects any letter that cannot be a target / items = letters /select = list.notargetvalue.nextvalue / position = (50%, 50%) / txcolor = white / txbgcolor = black / fontstyle = ("Arial", 20%, false, false, false, false, 5, 0) ***selects the item with the same item number as the established target / items = letters /select = values.currenttarget / position = (50%, 50%) / txcolor = white / txbgcolor = black / fontstyle = ("Arial", 20%, false, false, false, false, 5, 0) FEEDBACK MESSAGES FOR PRACTICE TRIALS ONLY (default: they are NOT used) / items = ("ERROR") / fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 0) / txcolor = red / txbgcolor = black / position = (50%, 70%) / items = ("CORRECT") / fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 0) / txcolor = green / txbgcolor = black / position = (50%, 70%) ASSISTANT STIMULI: *****reminder that the letter participants see during the first trial in N = 0 nback trials is the target / items = ("this is the target") / position = (50%, 25%) / txbgcolor = black / txcolor = black / fontstyle = ("Arial", 3.00%, false, false, false, false, 5, 0) *****For timed instructions, this shape covers up the original instructions (on slides) that instruct participants to use the Spacebar to continue /shape = rectangle /color = black / position = (50%, 95%) / size = (100%, 8%) *****For timed instructions this text alerts participants that the task starts in the predetermined amount of time (default: 9s) / items = ("the task will start automatically in <%parameters.instruction_duration/1000%> s") / position = (50%, 95%) / txbgcolor = black / txcolor = white / fontstyle = ("Arial", 2.08%, false, false, false, false, 5, 0) *****Debug Code: /items = ("target") /position = (50%, 80%) /txcolor = black /txbgcolor = black / fontstyle = ("Arial", 3%, true, false, false, false, 5, 1) ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ****list Variables to select notargetvalue *list.notargetvalue selects any of the 8 numbers but the one selected for targetvalue /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) / not = (values.currenttarget) / replace = true Note: list contains the itemnumbers of the presented shapes in reversed order (dynamic list) (item 1 is always the last one presented) ************************************************************************************************************** ************************************************************************************************************** TRIALS ************************************************************************************************************** ************************************************************************************************************** *there are 3 types of trials 1. start: presented at beginning of block when number of trials too small for Target trials; they can present any of the stimuli (N = 0, start trial presents the target shape) 2. nontarget: trials that present stimuli that do not repeat the stimulus of n-trials before 3. target: trials that present Target stimuli ********************************** Starttrial ********************************** NOTE: for N = 0 trials: - the first trial shows the target for a set amount of time (editable), together with a text stimulus that reminds participants that this letter is the target. - There is a pause (length is editable) before the next trial starts *start trial runs N-times (unless N = 0, then it runs N = 1 time) / ontrialbegin = [ if (values.N == 0) { text.targetreminder.textcolor = red; values.trialduration_starttrial = parameters.showtarget0; values.starttrialposttrialpause = parameters.posttrialpause_aftertarget0; } else { trial.start.insertstimulustime(clearscreen, parameters.stimulusPresentationtime); values.trialduration_starttrial = parameters.trialduration; values.starttrialposttrialpause = 0; }; values.starttrialcounter += 1; values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0; ] / stimulustimes = [0 = startletter, targetreminder] / validresponse = (noresponse, 30) / correctresponse = (noresponse) / ontrialend = [ trial.start.resetstimulusframes(); if (values.N == 0) { values.currenttarget = text.startletter.currentitemnumber; } list.items.insertitem(text.startletter.currentitemnumber, 1); text.targetreminder.textcolor = black; ] / beginresponsetime = 0 /trialduration = values.trialduration_starttrial /posttrialpause = (values.starttrialposttrialpause) /branch = [if (values.starttrialcounter < values.N) trial.start] ********************************** Nontarget Trials ********************************** / stimulustimes = [0 = nontargetletter] /validresponse = (noresponse, 30) / correctresponse = (noresponse) / ontrialbegin = [ trial.nontarget.insertstimulustime(clearscreen, parameters.stimulusPresentationtime); if (values.N > 0){ values.currenttarget = list.items.item(values.N); }; values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0; ] / ontrialend = [ trial.nontarget.resetstimulusframes(); list.items.insertitem(text.nontargetletter.currentitemnumber, 1); values.CorrReject = values.CorrReject + trial.nontarget.correct; values.trial_CR = trial.nontarget.correct; values.FalseA = values.FalseA + trial.nontarget.error; values.trial_FA = trial.nontarget.error; values.TotalFA = values.TotalFA + trial.nontarget.error; values.DV = (values.TotalHits - values.TotalFA)/values.TotalBlocks; ] / beginresponsetime = 0 / trialduration = parameters.trialduration ********************************** Target Trials ********************************** **if target, press the letter "A" (code: 30) / stimulustimes = [0 = targetletter, targetalert] /validresponse = (noresponse, 30) / correctresponse = (30) / ontrialbegin = [ trial.target.insertstimulustime(clearscreen, parameters.stimulusPresentationtime); if (values.N > 0){ values.currenttarget = list.items.item(values.N); }; values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0; ] / ontrialend = [ trial.target.resetstimulusframes(); list.items.insertitem(text.targetletter.currentitemnumber, 1); values.Hits = values.Hits+ trial.target.correct; values.trial_Hit = trial.target.correct; values.Misses = values.Misses + trial.target.error; values.trial_Miss = trial.target.error; values.TotalHits = values.TotalHits + trial.target.correct; values.DV = (values.TotalHits - values.TotalFA)/values.TotalBlocks; ] / beginresponsetime = 0 / trialduration = parameters.trialduration ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** ATTENTION: PRACTICE BLOCKS (1) This block sets the beginning N value for practice trials to the lowest level of N run in the experiment (2) runs instructions 1-6, for N=0-3, if more/fewer than four N levels are run adjust /trials = [1-X.....] Example: N=0 to N = 2: / trials = [1-5 = Nbackinstruct_starttrial] / trials = [1-7 = Nbackinstruct_starttrial] / recorddata = false /trials = [1 = repeatpractice] / recorddata = false / branch = [ if (trial.repeatpractice.response == 21) {block.practice_s_ntask} else block.Practiceblock_end; ] / screencolor = black / preinstructions = (Practice_end) ********************************************** PRACTICE ********************************************** * Practice Blocks give feedback and do NOT record data * Block starts with (a) Instructiontrial (b) N start-trials that cannot present Targets yet (no data collected) , if N = 0, the first trial presents the target letter (c) 9 practice trials: ratio targets : nontargets = 1 : 2 * stops after lever N = highestN (set by experimenter) (d) runs from the lowest N to the highest N / onblockbegin = [ values.N = list.nextN_practice.nextvalue; values.currenttarget = 0; values.currenttarget = 0; list.items.reset(); values.TotalBlocks += 1; values.starttrialcounter = 0; values.Hits = 0; values.FalseA = 0; values.Misses = 0; values.CorrReject = 0; ] / trials = [1 = expinstructiontrial; 2 = start; 3 - 11 = noreplace(nontarget, nontarget, target)] / onblockend = [values.TotalHits = 0; values.TotalFA = 0; values.DV = 0; values.TotalHits = 0;] / screencolor = (0, 0, 0) / recorddata = false / postinstructions = (BlockSummary_practice) / branch = [ if (values.TotalBlocks >= list.nextN_practice.itemcount) { values.TotalBlocks = 0; block.RepeatPractice; } else { block.practice_s_ntask; }; ] if trial feedback is desired: / errormessage = true(ErrorFeedback, 500) / correctmessage = true(CorrectFeedback, 500) ********************************************** EXPERIMENTAL-BLOCKS NONADAPTIVE ********************************************** / trials = [1 = StartExp_trial] / recorddata = false / onblockbegin = [ values.TotalHits = 0; values.TotalFA = 0; values.TotalBlocks = 0; values.DV = 0; ] * Block starts with (a) Instructiontrial (b) N start-trials that cannot present Targets yet (c) 15 Experimental trials * Experimental trials: ratio targets : nontargets = 1 : 2 * N level is pseudo-randomly selected by list.Nlevel * Block runs as many times as there are items in list.Nlevel 2- 16 = noreplace(nontarget, nontarget, target block s_ntask1> / onblockbegin = [ values.N = list.Nlevel.nextvalue; values.rewardselector = values.N; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.Hits = 0; values.FalseA = 0; values.Misses = 0; values.CorrReject = 0; values.TotalBlocks += 1; values.starttrialcounter = 0;] / trials = [1 = chooseLevel] /trials = [ 1 = chooseLevel] / branch = [block.s_ntask1] / preinstructions = (ExpInstructions) / onblockbegin = [ values.N = values.currentLevel; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.Hits = 0; values.FalseA = 0; values.Misses = 0; values.CorrReject = 0; values.TotalBlocks += 1; values.starttrialcounter = 0; ] / trials = [1 = start; 2 - 16 = noreplace(target, nontarget, nontarget)] / screencolor = (0, 0, 0) / branch = [ if (values.TotalBlocks < 15){ block.chooseLevel; } else { block.EndExp; }; ] / questions = [1 = chooseLevel] / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / itemfontstyle = ("Arial", 3%, true, false, false, false, 5, 1) / responsefontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1) / showbackbutton = false / showmousecursor = true / showpagenumbers = false / showquestionnumbers = false / txcolor = white / ontrialend = [ if (radiobuttons.chooseLevel.response == "level 0") { values.currentLevel = 0; } else if (radiobuttons.chooseLevel.response == "level 1") { values.currentLevel = 1; } else if (radiobuttons.chooseLevel.response == "level 2") { values.currentLevel = 2; } else if (radiobuttons.chooseLevel.response == "level 3") { values.currentLevel = 3; } else if (radiobuttons.chooseLevel.response == "level 4") { values.currentLevel = 4; }; ] / nextbuttonposition = (10%, 40%) / finishlabel = "submit" / caption = "Choose the default problem level for the next N-back level." / options = ("Level 0", "Level 1", "Level 2", "Level 3", "Level 4") / required = true / preinstructions = (Intro1) / file = "intro1.htm" / trials = [1 = EndExp] / postinstructions = (winningspage) / onblockbegin = [values.completednback = 1] ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** *After running the initial instructions, participants work through practice blocks for N = lowestN to N = highestN * After practice, participants work through 3 blocks for each of the level of N (levels are pseudorandomly determined) 1 = Nbackinstruct_start 2 = practice_s_ntask; 3 = StartExp; 4 = s_ntask; expt> /onexptbegin = [if (parameters.debugmode == 1) text.targetalert.textcolor = red] / blocks = [1 = Nbackinstruct_start; 2 = practice_s_ntask; 3 = StartExp; 4 = chooseLevel; ] /onexptend = [values.completed = 1] /file = "mood.iqx" / navigationbuttonfontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / pages = [1 = moodintro, mood1, amspage1] / finishlabel = "Continue" / navigationbuttonsize = (15%, 5%) / showpagenumbers = false / showquestionnumbers = false / screencolor = white / txcolor = black / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / itemfontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1) / questions = [1 = diff0, diff1, diff2, diff3, diff4] / showpagenumbers = false / showquestionnumbers = false / nextbuttonposition = (90%, 90%) / backbuttonposition = (80%, 90%) / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / itemfontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1) / questions = [1 = enjoy0, enjoy1, enjoy2, enjoy3, enjoy4] / showpagenumbers = false / showquestionnumbers = false / nextbuttonposition = (90%, 90%) / backbuttonposition = (80%, 90%) / caption = "How difficult did you find the 0-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,10%) / orientation = horizontalequal / caption = "How difficult did you find the 1-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,25%) / orientation = horizontalequal / caption = "How difficult did you find the 2-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,40%) / orientation = horizontalequal / caption = "How difficult did you find the 3-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,55%) / orientation = horizontalequal / caption = "How difficult did you find the 4-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,70%) / orientation = horizontalequal / caption = "How enjoyable did you find the 0-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,10%) / orientation = horizontalequal / caption = "How enjoyable did you find the 1-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,25%) / orientation = horizontalequal / caption = "How enjoyable did you find the 2-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,40%) / orientation = horizontalequal / caption = "How enjoyable did you find the 3-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,55%) / orientation = horizontalequal / caption = "How enjoyable did you find the 4-back task?" / options = ("Not at all", " ", " ", "Extremely", "did not choose this level") / required = true / optionvalues = ("1","2","3","4","0") / position = (-10%,70%) / orientation = horizontalequal / caption = "Please rate the extent to which you agree with the following statements:" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / subcaptionfontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1) / itemfontstyle = ("Arial", 3%, true, false, false, false, 5, 1) / responsefontstyle = ("Arial", 1.75%, false, false, false, false, 5, 1) / showquestionnumbers = false / questions = [1 = ams1, ams2, ams3, ams4, ams5, ams6, ams7, attentioncheck, ams8, ams9, ams10] / showpagenumbers = false / nextbuttonposition = (90%, 170%) / backbuttonposition = (90%, 164%) / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / subcaptionfontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1) / itemfontstyle = ("Arial", 3%, true, false, false, false, 5, 1) / responsefontstyle = ("Arial", 1.75%, false, false, false, false, 5, 1) / showquestionnumbers = false / questions = [1 = moodintro] / showpagenumbers = false / backbuttonposition = (90%, 85%) / nextbuttonposition = (90%, 90%) / caption = "On the following page you will find a list of expressions that characterize different moods. Please take a look at the list, word by word, and mark for each word the answer that represents best the actual intensity of your mood status. • Within the list there are some attributes that possibly describe the same or similar moods. Please do not get irritated due to this fact, and judge each attribute irrespective of your answer to another attribute. • Please judge only how you feel at this moment, and not how you normally or sometimes feel. • If you have some difficulties in finding an answer, please mark those answer that fits best. " / position = (0%, 25%) / caption = "I like situations, in which I can find out how capable I am." / options = ("Strongly disagree", "","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 15%) / caption = "When I am confronted with a problem, which I can possibly solve, I am enticed to start working on it immediately." / options = ("Strongly disagree","","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 28%) / caption = "I enjoy situations, in which I can make use of my abilities." / options = ("Strongly disagree", "","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 45%) / caption = "I am appealed by situations allowing me to test my abilities." / options = ("Strongly disagree","","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 60%) / caption = "I am attracted by tasks, in which I can test my abilities." / options = ("Strongly disagree","","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 75%) / caption = "I am afraid of failing in somewhat difficult situations, when a lot depends on me." / options = ("Strongly disagree", "","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 90%) / caption = "I feel uneasy to do something if I am not sure of succeeding." / options = ("Strongly disagree", "","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 105%) / caption = "Select the second option for this question please." / options = ("Strongly disagree", "","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 120%) / caption = "Even if nobody would notice my failure, I’m afraid of tasks, which I’m not able to solve." / options = ("Strongly disagree", "","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 135%) / caption = "Even if nobody is watching, I feel quite anxious in new situations." / options = ("Strongly disagree", "","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 150%) / caption = "If I do not understand a problem immediately I start feeling anxious." / options = ("Strongly disagree", "","", "Strongly agree") / required = true / optionvalues = ("1", "2", "3", "4") / orientation = horizontalequal / position = (10%, 165%) ************************************************************************************************************** End of File **************************************************************************************************************