I'm sorry, but these text elements really don't make sense as given. What is
supposed to do? Both text elements only have a single item, there's nothing to select based on the target stimulus.
(1) You add them to the script. Where you put them doesn't matter, but I'd suggest you place them alongside the other already existing <text> elements.
(2) You add them to the relevant <trial> elements' /stimulustimes.
(3) Because the screen gets cleared at some point during a trial, you also need to add logic to redraw the two text elements to the screen at that time.
All of these are things the code already does with other stuff, so if you've spent some time with the code, it should be fairly clear.
<usermanual>
___________________________________________________________________________________________________________________
SINGLE N-BACK TASK - numbers (nonadaptive, 2-key version)
___________________________________________________________________________________________________________________
Script Author: Katja Borchert, Ph.D. (
katjab@millisecond.com) for Millisecond Software LLC
Date: March, 2012
last updated: 02-25-2022 by K. Borchert (
katjab@millisecond.com) for Millisecond Software, LLC
Script Copyright © 02-25-2022 Millisecond Software
___________________________________________________________________________________________________________________
BACKGROUND INFO
___________________________________________________________________________________________________________________
This script implements a basic numbers n-back procedure. The n-back task is a go/nogo working-memory performance task
with increasing levels of difficulty.
The implemented procedure is based on:
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.
Millisecond Software thanks Dr. Susanne Jaeggi for kindly providing original instruction materials, stimuli,
as well as assistance!
Adjustments to z-scores as recommended by:
Gregg, A. & Sedikides, C. (2010). Narcissistic Fragility:
Rethinking Its Links to Explicit and Implicit Self-esteem, Self and Identity, 9:2, 142-161 (p.148)
___________________________________________________________________________________________________________________
TASK DESCRIPTION
___________________________________________________________________________________________________________________
In the 1-key single n-back task, participants are shown a sequence of stimuli (here: a sequence of yellow numberss
on a black background) and are asked to indicate whether the currently presented stimulus fulfills the following criteria:
for N=0 trials:
- is the numbers the same as the numbers '1.gif'? If so (it's a target), and press "A". If not, press the "L" key.
for N=1 trials:
- is the numbers the same as the one that preceded it? If so (it's a target), and press "A". If not, press the "L" key.
for N=2 trials:
- is the numbers the same as the one presented two trials before? If so (it's a target), and press "A". If not, press the "L" key.
for N=3 trials:
- is the numbers the same as the one presented three trials before? If so (it's a target), and press "A". If not, press the "L" key.
etc. for increasing levels of N
___________________________________________________________________________________________________________________
DURATION
___________________________________________________________________________________________________________________
the default set-up of the script takes appr. 15 minutes to complete
___________________________________________________________________________________________________________________
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
(1) Raw data file: 'singlenbacktask_numberss_2keys_raw.iqdat' (a separate file for each participant)
build: The specific Inquisit version used (the 'build') that was run
computer.platform: the platform the script was run on (win/mac/ios/android)
date, time: date and time script was run
subject, group, with the current subject/groupnumber
session: with the current session id
blockcode, blocknum: the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum: the name and number of the currently recorded trial (built-in Inquisit variable)
Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
that do not store data to the data file such as feedback trials. Thus, trialnum
may not reflect the number of main trials run per block.
TotalBlocks: the total number of experimental blocks run
N: the current level N tested
starttrialcounter: keeps track of how many start trials have been run
stimulusitem.1: the numbers presented
stimulusnumber.1: the item number of the presented numbers
currenttarget: the item number of the current target
response: the Response of the participant (scancode of response button):
0 = no response
31 = 'A' key (target key)
38 = 'L' key (non-target key)
(57 = spacebar)
responseCategory: "Correct", "Incorrect", "No Response"
correct: the correctness of the response (1 = correct; 0 = otherwise)
latency: how fast a participant responded within the given timeframe, if at all (in ms)
no responses = the entire trialduration
list.blockACC.mean: proportion correct during the current block (start trials are excluded from block ACC assessment by default, editable)
(2) Summary data file: 'singlenbacktask_numberss_2_keys_summary*.iqdat' (a separate file for each participant)
inquisit.version: Inquisit version run
computer.platform: the platform the script was run on (win/mac/ios/android)
startdate: date script was run
starttime: time script was started
subjectid: assigned subject id number
groupid: assigned group id number
sessionid: assigned session id number
elapsedtime: time it took to run script (in ms); measured from onset to offset of script
completed: 0 = script was not completed (prematurely aborted);
1 = script was completed (all conditions run)
TotalBlocks: the total number of experimental blocks run
the following summary variables are only based on performance on trial.target/trial.nontarget
(excludes trial.start even if parameters.excludeStartTrialfromPerformanceMeasure = false)
propCorrect_overall: overall proportion correct (across all test blocks)
Note: z-score calculations: adjustments (see Gregg & Sedikides, 2010, p.148)
If the hit rate FA rate is 0 => 0.005 is used instead (aka 0.005 is added to the hitFA rate)
IF the hit rate FA rate is 1.0 => 0.995 is used instead (aka 0.005 is subtracted from the hitFA rate)
TargetTrialCount_overall: the overall count of target trials runs (across all test blocks)
propCorrect_targets_overall: the overall proportion correctly responding to target trials (across all test blocks)
mean_corrRT_targets_overall: mean response time (in ms) of correctly responding to target trials (across all test blocks)
mean_incorrRT_targets_overall: mean response time (in ms) of pressing incorrect response key for target trials (across all test blocks)
propNR_targets_overall: the overall proportion of No Response target trials (across all test blocks)
NonTargetTrialCount_overall: the overall count of nontarget trials runs (across all test blocks)
propCorrect_nontargets_overall: the overall proportion correctly responding to nontarget trials (across all test blocks)
mean_corrRT_nontargets_overall: mean response time (in ms) of pressing correct response key for nontarget trials (across all test blocks)
mean_incorrRT_nontargets_overall: mean response time (in ms) of pressing incorrect response key for nontarget trials (across all test blocks)
propNR_nontargets_overall: the overall proportion of No Response nontarget trials (across all test blocks)
hitRate_overall: overall hit rate (across all test blocks);
HIT = hitting 'A' for targets (no responses and incorrect responses are both treated as 'misses' for this analysis)
FArate_overall: overall False Alarm/Commission Error Rate (across all test blocks);
FALSE ALARM = hitting 'A' for nontargets (correct rejections and no responses are treated as 'correct' for this analysis)
zhitrate_overall: the z-score of the overall hit rate
zFArate_overall: the z-score of the overall False Alarm rate
dprime_overall: Computes d' (parametric measure of sensitivity):
The higher the value, the better targets were overall correctly distinguished
from nontargets (d' = 0: chance performance; negative values: nontargets were treated as targets
and targets were treated as nontargets)
The following variables look at the different levels of N. If a level of N was not run,
the variables will store "not run"
//Example Level N = 0
TargetTrialCount_N0: the overall count of target trials runs (in 0-back blocks)
propCorrect_targets_N0: the overall proportion correctly responding to target trials (in 0-back blocks)
mean_corrRT_targets_N0: mean response time (in ms) of correctly responding to target trials (in 0-back blocks)
mean_incorrRT_targets_N0: mean response time (in ms) of pressing incorrect response key for target trials (in 0-back blocks)
propNR_targets_N0: the overall proportion of No Response target trials (in 0-back blocks)
NonTargetTrialCount_N0: the overall count of nontarget trials runs (in 0-back blocks)
propCorrect_nontargets_N0: the overall proportion correctly responding to nontarget trials (in 0-back blocks)
mean_corrRT_nontargets_N0: mean response time (in ms) of pressing correct response key for nontarget trials (in 0-back blocks)
mean_incorrRT_nontargets_N0: mean response time (in ms) of pressing incorrect response key for nontarget trials (in 0-back blocks)
propNR_nontargets_N0: the overall proportion of No Response nontarget trials (in 0-back blocks)
hitRate_N0: overall hit rate (in 0-back blocks);
HIT = hitting 'A' for targets (no responses and incorrect responses are both treated as 'misses' for this analysis)
FArate_N0: overall False Alarm/Commission Error Rate (in 0-back blocks);
FALSE ALARM = hitting 'A' for nontargets (correct rejections and no responses are treated as 'correct' for this analysis)
zhitrate_N0: the z-score of the overall hit rate
zFArate_N0: the z-score of the overall False Alarm rate
dprime_N0: Computes d' (parametric measure of sensitivity):
The higher the value, the better targets were overall correctly distinguished
from nontargets (d' = 0: chance performance; negative values: nontargets were treated as targets
and targets were treated as nontargets)
(same for Level N=1-6)
Note: if additional levels of N are run, go to section DATA and follow further instructions
___________________________________________________________________________________________________________________
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________
- After instructions, participants receive 10 trials of practice per level N tested (here: N = 2 to N = 4),
Note: edit list.nextN_practice to change levels of N practiced
- once practice is done, participants get the option to repeat practice (see parameters.allowPracticeRepeat)
- After practice, participants receive 3 blocks per level of N tested. By default, the level of N increases from
1 to 3.
Note: edit list.Nlevel to change a) N levels tested b) number of testblocks c)selection of N-levels
Block Information:
- Each single n-task block consists of 20+ trials using 8 different numberss.
=> + trials are the N trials that cannot display target numberss 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 20 experimental trials, 6 present a target and 14 do not (3:7 ratio).
To change the ratio, you need to change the relevant code under block.Test
- The computer selects randomly
a) whether it is a target trial or not and
b) what numbers to show if it is not a target trial
Trial Information:
- Each trial presents the numbers for 500ms and waits another 2500ms before presenting the next numbers in the sequence
The trialduration can be edited by experimenter.
- Participants have the entire 3000ms to respond by pressing "A" if they detect a target or "L".
___________________________________________________________________________________________________________________
STIMULI
___________________________________________________________________________________________________________________
8 numberss, see section Editable Stimuli
___________________________________________________________________________________________________________________
INSTRUCTIONS
___________________________________________________________________________________________________________________
provided by Millisecond Software - can be edited under section Editable Instructions
Instructions are not original to the task. They are provided by Millisecond Software
as htm pages and simple page elements and can be edited either by changing
the provided html files or directly under Editable Instructions.
Note: in order for the instructions to reflect alternative parameter settings,
some of the conditionalized code used in the htm files can be found in the script itself.
___________________________________________________________________________________________________________________
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:
/allowPracticeRepeat: true: practice can be repeated as often as indicated (default)
false: practice cannot be repeated
/excludeStartTrialfromPerformanceMeasure: true (1): performance during start trials that cannot be targets yet is not considered
for Block level performance analyses, e.g. for feedback purposes (default)
false (0): performance during start trials that cannot be targets yet IS considered for block performance analyses (default)
/SOA: Stimulus Onset Asynchrony (default: 3000ms)
/stimulusPresentationtime: the presentation time (in ms) of the stimuli (default: 500ms)
debugmode = 0 debugmode = 1: targetalerts are shown on screen,
debugmode = 0, no targetalerts are shown (default)
(in general: if levels of N are changed, adjustments need to be made to instructions and list.Nlevel)
</usermanual>
**************************************************************************************************************
**************************************************************************************************************
EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
<parameters>
/allowPracticeRepeat = false
/excludeStartTrialfromPerformanceMeasure = true
/SOA = 3000
/stimulusPresentationtime = 500
/debugmode = 0
</parameters>
**************************************************************************************************************
**************************************************************************************************************
EDITABLE STIMULI: change editable stimuli here
**************************************************************************************************************
**************************************************************************************************************
*yellow on black background
*original numberss, kindly provided by Jaeggi et al (2010)
<item numbers>
/1 = "1"
/2 = "2"
/3 = "3"
/4 = "4"
/5 = "5"
/6 = "6"
/7 = "7"
/8 = "8"
/9 = "9"
</item>
**************************************************************************************************************
**************************************************************************************************************
EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 2.67%, false, false, false, false, 5, 0)
</instruct>
*******************************************************************************
General Introduction pages:
see below for possible edits of General Instruction Block
*******************************************************************************
<htmlpage generalintro>
/ file = "nback_generalintro.htm"
</htmlpage>
<htmlpage intro1back>
/ file = "nback_intro1back.htm"
</htmlpage>
<htmlpage intro2back>
/ file = "nback_intro2back.htm"
</htmlpage>
<htmlpage intro3back>
/ file = "nback_intro3back.htm"
</htmlpage>
Note: if you changed the levels of N tested, you need to adapt this intro page
<htmlpage practicestart>
/ file = "nback_practicestart.htm"
</htmlpage>
Note: if you changed the levels of N tested, you need to adapt this intro page
<htmlpage practiceend>
/ file = "nbackintro_practiceend.htm"
</htmlpage>
**************************************
Change instructions:
if not all instruction pages should be
run, remove pages from
/preinstruction = ()
Alternatively, you can also add
as many pages as you want
**************************************
<block Introduction>
// preinstructions = (generalintro, intro1back, intro2back, intro3back, practicestart)
/ preinstructions = (generalintro)
/ recorddata = false
</block>
<block PracticeIntro1back>
/ preinstructions = (intro1back, practicestart)
/ recorddata = false
/ branch = [
block.Practice;
]
</block>
<block PracticeIntro2back>
/ preinstructions = (intro2back, practicestart)
/ recorddata = false
/ branch = [
block.Practice;
]
</block>
<block PracticeIntro3back>
/ preinstructions = (intro3back, practicestart)
/ recorddata = false
/ branch = [
block.Practice;
]
</block>
*******************************************************************************
Level N Instructions:
*******************************************************************************
<htmlpage nback_levelInstructions>
/ file = "nback_levelinstructions.htm"
</htmlpage>
<expressions>
/nback_levelInstructions = {
if (values.N == 0){
"is the following numbers:<br>
<img src='1.gif' style='height: 20vh' />"
} else {
"is the same as the one <%values.N%> trial(s) before"
}
}
</expressions>
*******************************************************************************
Repeat and Start pages
*******************************************************************************
<html repeatpractice_page>
/items = ("nback_repeatpractice.htm")
/size = (100%, 100%)
</html>
<htmlpage nback_testStart>
/ file = "nback_expstart.htm"
</htmlpage>
*******************************************************************************
Finish Pages
*******************************************************************************
<text finish>
/ items = ("Thank you!")
/ fontstyle = ("Arial", 8%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 80%)
/ vjustify = center
/ valign = center
/ halign = center
/ txbgcolor = black
/ txcolor = white
</text>
<text exit>
/ items = ("<press spacebar to exit>")
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
/ valign = center
/ halign = center
/ txbgcolor = black
/ txcolor = white
</text>
**************************************************************************************************************
**************************************************************************************************************
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
<list nextN_practice>
/items = (1, 2, 3)
/ selectionmode = sequence
/ selectionrate = block
/ resetinterval = 0
</list>
*list.Nlevel selects the next N level (the experiment runs as many blocks as there are
items in this list) in sequence
! 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
! you can add levels other than 1-3 (e.g. you can add level 5); however, summary variables are
only collected for 0 <= N <= 6
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 (no other changes are required)
<list Nlevel>
/items = (1, 2, 3)
/ selectionmode = sequence
/ resetinterval = 0
</list>
**************************************************************************************************************
!!!REMAINING CODE: Customize after careful consideration only!!!
**************************************************************************************************************
**************************************************************************************************************
**************************************************************************************************************
DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher
<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = white
/ txcolor = (0, 0, 0)
/ screencolor = black
</defaults>
**************************************************************************************************************
**************************************************************************************************************
DATA
**************************************************************************************************************
**************************************************************************************************************
Note: data file explanations under User Manual Information at the top
*********************
raw data
*********************
<data>
/ columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum,
trialcode, trialnum, values.phase,
values.TotalPracticeBlocks, values.TotalTestBlocks, values.N, values.starttrialcounter, stimulusitem, stimulusnumber,
values.currenttarget, response, responsetext, values.responseCategory, correct, latency, list.blockACC.mean)
</data>
*********************
summary data
*********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime,
script.subjectid, script.groupid, script.sessionid, script.elapsedtime,
script.completed,
values.TotalPracticeBlocks, values.TotalTestBlocks, expressions.propCorrect_overall,
expressions.TargetTrialCount_overall, expressions.propCorrect_targets_overall,expressions.mean_corrRT_targets_overall,
expressions.mean_incorrRT_targets_overall,expressions.propNR_targets_overall,
expressions.NonTargetTrialCount_overall, expressions.propCorrect_nontargets_overall,expressions.mean_corrRT_nontargets_overall,
expressions.mean_incorrRT_nontargets_overall,expressions.propNR_nontargets_overall,
expressions.hitRate_overall, expressions.FArate_overall, expressions.zhitrate_overall, expressions.zFArate_overall,
expressions.dprime_overall,
expressions.TargetTrialCount_N0, expressions.propCorrect_targets_N0,expressions.mean_corrRT_targets_N0,
expressions.mean_incorrRT_targets_N0,expressions.propNR_targets_N0,
expressions.NonTargetTrialCount_N0, expressions.propCorrect_nontargets_N0,expressions.mean_corrRT_nontargets_N0,
expressions.mean_incorrRT_nontargets_N0,expressions.propNR_nontargets_N0,
expressions.hitRate_N0, expressions.FArate_N0, expressions.zhitrate_N0, expressions.zFArate_N0, expressions.dprime_N0,
expressions.TargetTrialCount_N1, expressions.propCorrect_targets_N1,expressions.mean_corrRT_targets_N1,
expressions.mean_incorrRT_targets_N1,expressions.propNR_targets_N1,
expressions.NonTargetTrialCount_N1, expressions.propCorrect_nontargets_N1,expressions.mean_corrRT_nontargets_N1,
expressions.mean_incorrRT_nontargets_N1,expressions.propNR_nontargets_N1,
expressions.hitRate_N1, expressions.FArate_N1, expressions.zhitrate_N1, expressions.zFArate_N1, expressions.dprime_N1,
expressions.TargetTrialCount_N2, expressions.propCorrect_targets_N2,expressions.mean_corrRT_targets_N2,
expressions.mean_incorrRT_targets_N2,expressions.propNR_targets_N2,
expressions.NonTargetTrialCount_N2, expressions.propCorrect_nontargets_N2,expressions.mean_corrRT_nontargets_N2,
expressions.mean_incorrRT_nontargets_N2,expressions.propNR_nontargets_N2,
expressions.hitRate_N2, expressions.FArate_N2, expressions.zhitrate_N2, expressions.zFArate_N2, expressions.dprime_N2,
expressions.TargetTrialCount_N3, expressions.propCorrect_targets_N3,expressions.mean_corrRT_targets_N3,
expressions.mean_incorrRT_targets_N3,expressions.propNR_targets_N3,
expressions.NonTargetTrialCount_N3, expressions.propCorrect_nontargets_N3,expressions.mean_corrRT_nontargets_N3,
expressions.mean_incorrRT_nontargets_N3,expressions.propNR_nontargets_N3,
expressions.hitRate_N3, expressions.FArate_N3, expressions.zhitrate_N3, expressions.zFArate_N3, expressions.dprime_N3,
expressions.TargetTrialCount_N4, expressions.propCorrect_targets_N4,expressions.mean_corrRT_targets_N4,
expressions.mean_incorrRT_targets_N4,expressions.propNR_targets_N4,
expressions.NonTargetTrialCount_N4, expressions.propCorrect_nontargets_N4,expressions.mean_corrRT_nontargets_N4,
expressions.mean_incorrRT_nontargets_N4,expressions.propNR_nontargets_N4,
expressions.hitRate_N4, expressions.FArate_N4, expressions.zhitrate_N4, expressions.zFArate_N4, expressions.dprime_N4,
expressions.TargetTrialCount_N5, expressions.propCorrect_targets_N5,expressions.mean_corrRT_targets_N5,
expressions.mean_incorrRT_targets_N5,expressions.propNR_targets_N5,
expressions.NonTargetTrialCount_N5, expressions.propCorrect_nontargets_N5,expressions.mean_corrRT_nontargets_N5,
expressions.mean_incorrRT_nontargets_N5,expressions.propNR_nontargets_N5,
expressions.hitRate_N5, expressions.FArate_N5, expressions.zhitrate_N5, expressions.zFArate_N5, expressions.dprime_N5,
expressions.TargetTrialCount_N6, expressions.propCorrect_targets_N6,expressions.mean_corrRT_targets_N6,
expressions.mean_incorrRT_targets_N6,expressions.propNR_targets_N6,
expressions.NonTargetTrialCount_N6, expressions.propCorrect_nontargets_N6,expressions.mean_corrRT_nontargets_N6,
expressions.mean_incorrRT_nontargets_N6,expressions.propNR_nontargets_N6,
expressions.hitRate_N6, expressions.FArate_N6, expressions.zhitrate_N6, expressions.zFArate_N6, expressions.dprime_N6
)
</summarydata>
Note: by default, this script only stores summary variables of N=0 to N=6 (though other level of N can be run).
To store, summary variables for levels of N higher than 6, you need to:
1. add the necessary lists under section "Lists"
2. add necessary code to trial.target/trial.nontarget
3. add necessary expressions to section "Expressions"
4. reset necessary lists under block.StartTest
5. add necessary expressions to the summary data file
**************************************************************************************************************
**************************************************************************************************************
VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************
/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 the numbers 'M')
/TotalBlocks: the total number of experimental blocks run
/starttrialcounter: keeps track of how many start trials have been run
/lastIndex: helper variable to manage the last N presented numbers list
/responseCategory: "Hit" vs. "Omission Error" vs. "CorrReject" vs. "Commission Error"
<values>
/ phase = ""
/ N = 0
/ currenttarget = 0
/ TotalPracticeBlocks = 0
/ TotalTestBlocks = 0
/ starttrialcounter = 0
/ lastIndex = 0
/ responseCategory = ""
</values>
**************************************************************************************************************
**************************************************************************************************************
EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/fillitemlist: recursive function that fills list.items with N items at the beginning of each new block
<expressions>
/fillitemlist = {
if (values.lastIndex < values.N){
list.items.insertitem(0, 1);
values.lastIndex += 1;
expressions.fillitemlist;
} else {
list.items.insertitem(0, 1);
};
}
</expressions>
<expressions>
/propCorrect_overall = ((list.ACC_nontargets.mean * list.ACC_nontargets.itemcount) + (list.ACC_targets.mean * list.ACC_targets.itemcount))/
(list.ACC_nontargets.itemcount + list.ACC_targets.itemcount)
/TargetTrialCount_overall = list.ACC_targets.itemcount
/propCorrect_targets_overall = list.ACC_targets.mean
/mean_corrRT_targets_overall = list.corrRT_targets.mean
/mean_incorrRT_targets_overall = list.incorrRT_targets.mean
/propNR_targets_overall = list.NR_targets.mean
/NonTargetTrialCount_overall = list.ACC_nontargets.itemcount
/propCorrect_nontargets_overall = list.ACC_nontargets.mean
/mean_corrRT_nontargets_overall = list.corrRT_nontargets.mean
/mean_incorrRT_nontargets_overall = list.incorrRT_nontargets.mean
/propNR_nontargets_overall = list.NR_nontargets.mean
/hitRate_overall = list.ACC_targets.mean
//False Alarms = pressing target key for nontargets: calculated based on the difference of correct responses to nontargets minus the number of no responses
/FArate_overall = (list.ACC_nontargets.itemcount - (list.ACC_nontargets.mean*list.ACC_nontargets.itemcount)-(list.NR_nontargets.mean*list.NR_nontargets.itemcount))/(list.ACC_nontargets.itemcount)
/ zhitrate_overall = {
if (expressions.hitRate_overall == 0){
zofp(expressions.hitRate_overall + 0.005)
} else if (expressions.hitRate_overall == 1){
zofp(expressions.hitRate_overall - 0.005)
} else {
zofp(expressions.hitRate_overall)
};
}
/ zFArate_overall = {
if (expressions.FArate_overall == 0){
zofp(expressions.FArate_overall + 0.005)
} else if (expressions.FArate_overall == 1){
zofp(expressions.FArate_overall - 0.005)
} else {
zofp(expressions.FArate_overall)
};
}
/ dprime_overall = (expressions.zhitrate_overall-expressions.zFArate_overall)
//if there are no items in list.ACC_targets_N0 then level N = 0 was not run
/TargetTrialCount_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.ACC_targets_N0.itemcount;
} else {
"not run";
};
};
/propCorrect_targets_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.ACC_targets_N0.mean;
} else {
"not run";
};
};
/mean_corrRT_targets_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.corrRT_targets_N0.mean;
} else {
"not run";
};
};
/mean_incorrRT_targets_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.incorrRT_targets_N0.mean;
} else {
"not run";
};
};
/propNR_targets_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.NR_targets_N0.mean;
} else {
"not run";
};
};
/NonTargetTrialCount_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.ACC_nontargets_N0.itemcount;
} else {
"not run";
};
};
/propCorrect_nontargets_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.ACC_nontargets_N0.mean;
} else {
"not run";
};
};
/mean_corrRT_nontargets_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.corrRT_nontargets_N0.mean;
} else {
"not run";
};
};
/mean_incorrRT_nontargets_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.incorrRT_nontargets_N0.mean;
} else {
"not run";
};
};
/propNR_nontargets_N0 = {
if (list.ACC_targets_N0.itemcount > 0){
list.NR_nontargets_N0.mean;
} else {
"not run";
};
};
/hitRate_N0 = if (list.ACC_targets_N0.itemcount > 0){
list.ACC_targets_N0.mean;
} else {
"not run";
}
/FArate_N0 = if (list.ACC_targets_N0.itemcount > 0){
(list.ACC_nontargets_N0.itemcount - (list.ACC_nontargets_N0.mean*list.ACC_nontargets_N0.itemcount)-(list.NR_nontargets_N0.mean*list.NR_nontargets_N0.itemcount))/
(list.ACC_nontargets_N0.itemcount);
} else {
"not run";
}
/ zhitrate_N0 =
if (list.ACC_targets_N0.itemcount > 0){
if (expressions.hitRate_N0 == 0){
zofp(expressions.hitRate_N0 + 0.005)
} else if (expressions.hitRate_N0 == 1){
zofp(expressions.hitRate_N0 - 0.005)
} else {
zofp(expressions.hitRate_N0);
};
} else {
"not run";
}
/ zFArate_N0 =
if (list.ACC_targets_N0.itemcount > 0){
if (expressions.FArate_N0 == 0){
zofp(expressions.FArate_N0 + 0.005)
} else if (expressions.FArate_N0 == 1){
zofp(expressions.FArate_N0 - 0.005)
} else {
zofp(expressions.FArate_N0)
};
} else {
"not run";
}
/ dprime_N0 = if (list.ACC_targets_N0.itemcount > 0){
(expressions.zhitrate_N0-expressions.zFArate_N0);
} else {
"not run";
}
//if there are no items in list.ACC_targets_N1 then level N = 0 was not run
/TargetTrialCount_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.ACC_targets_N1.itemcount;
} else {
"not run";
};
};
/propCorrect_targets_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.ACC_targets_N1.mean;
} else {
"not run";
};
};
/mean_corrRT_targets_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.corrRT_targets_N1.mean;
} else {
"not run";
};
};
/mean_incorrRT_targets_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.incorrRT_targets_N1.mean;
} else {
"not run";
};
};
/propNR_targets_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.NR_targets_N1.mean;
} else {
"not run";
};
};
/NonTargetTrialCount_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.ACC_nontargets_N1.itemcount;
} else {
"not run";
};
};
/propCorrect_nontargets_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.ACC_nontargets_N1.mean;
} else {
"not run";
};
};
/mean_corrRT_nontargets_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.corrRT_nontargets_N1.mean;
} else {
"not run";
};
};
/mean_incorrRT_nontargets_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.incorrRT_nontargets_N1.mean;
} else {
"not run";
};
};
/propNR_nontargets_N1 = {
if (list.ACC_targets_N1.itemcount > 0){
list.NR_nontargets_N1.mean;
} else {
"not run";
};
};
/hitRate_N1 = if (list.ACC_targets_N1.itemcount > 0){
list.ACC_targets_N1.mean;
} else {
"not run";
}
/FArate_N1 = if (list.ACC_targets_N1.itemcount > 0){
(list.ACC_nontargets_N1.itemcount-(list.ACC_nontargets_N1.mean*list.ACC_nontargets_N1.itemcount)-(list.NR_nontargets_N1.mean*list.NR_nontargets_N1.itemcount))/
(list.ACC_nontargets_N1.itemcount);
} else {
"not run";
}
/ zhitrate_N1 =
if (list.ACC_targets_N1.itemcount > 0){
if (expressions.hitRate_N1 == 0){
zofp(expressions.hitRate_N1 + 0.005)
} else if (expressions.hitRate_N1 == 1){
zofp(expressions.hitRate_N1 - 0.005)
} else {
zofp(expressions.hitRate_N1);
};
} else {
"not run";
}
/ zFArate_N1 =
if (list.ACC_targets_N1.itemcount > 0){
if (expressions.FArate_N1 == 0){
zofp(expressions.FArate_N1 + 0.005)
} else if (expressions.FArate_N1 == 1){
zofp(expressions.FArate_N1 - 0.005)
} else {
zofp(expressions.FArate_N1)
};
} else {
"not run";
}
/ dprime_N1 = if (list.ACC_targets_N1.itemcount > 0){
(expressions.zhitrate_N1-expressions.zFArate_N1);
} else {
"not run";
}
//if there are no items in list.ACC_targets_N2 then level N = 0 was not run
/TargetTrialCount_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.ACC_targets_N2.itemcount;
} else {
"not run";
};
};
/propCorrect_targets_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.ACC_targets_N2.mean;
} else {
"not run";
};
};
/mean_corrRT_targets_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.corrRT_targets_N2.mean;
} else {
"not run";
};
};
/mean_incorrRT_targets_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.incorrRT_targets_N2.mean;
} else {
"not run";
};
};
/propNR_targets_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.NR_targets_N2.mean;
} else {
"not run";
};
};
/NonTargetTrialCount_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.ACC_nontargets_N2.itemcount;
} else {
"not run";
};
};
/propCorrect_nontargets_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.ACC_nontargets_N2.mean;
} else {
"not run";
};
};
/mean_corrRT_nontargets_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.corrRT_nontargets_N2.mean;
} else {
"not run";
};
};
/mean_incorrRT_nontargets_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.incorrRT_nontargets_N2.mean;
} else {
"not run";
};
};
/propNR_nontargets_N2 = {
if (list.ACC_targets_N2.itemcount > 0){
list.NR_nontargets_N2.mean;
} else {
"not run";
};
};
/hitRate_N2 = if (list.ACC_targets_N2.itemcount > 0){
list.ACC_targets_N2.mean;
} else {
"not run";
}
/FArate_N2 = if (list.ACC_targets_N2.itemcount > 0){
(list.ACC_nontargets_N2.itemcount - (list.ACC_nontargets_N2.mean*list.ACC_nontargets_N2.itemcount)-(list.NR_nontargets_N2.mean*list.NR_nontargets_N2.itemcount))/
(list.ACC_nontargets_N2.itemcount);
} else {
"not run";
}
/ zhitrate_N2 =
if (list.ACC_targets_N2.itemcount > 0){
if (expressions.hitRate_N2 == 0){
zofp(expressions.hitRate_N2 + 0.005)
} else if (expressions.hitRate_N2 == 1){
zofp(expressions.hitRate_N2 - 0.005)
} else {
zofp(expressions.hitRate_N2);
};
} else {
"not run";
}
/ zFArate_N2 =
if (list.ACC_targets_N2.itemcount > 0){
if (expressions.FArate_N2 == 0){
zofp(expressions.FArate_N2 + 0.005)
} else if (expressions.FArate_N2 == 1){
zofp(expressions.FArate_N2 - 0.005)
} else {
zofp(expressions.FArate_N2)
};
} else {
"not run";
}
/ dprime_N2 = if (list.ACC_targets_N2.itemcount > 0){
(expressions.zhitrate_N2-expressions.zFArate_N2);
} else {
"not run";
}
//if there are no items in list.ACC_targets_N3 then level N = 0 was not run
/TargetTrialCount_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.ACC_targets_N3.itemcount;
} else {
"not run";
};
};
/propCorrect_targets_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.ACC_targets_N3.mean;
} else {
"not run";
};
};
/mean_corrRT_targets_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.corrRT_targets_N3.mean;
} else {
"not run";
};
};
/mean_incorrRT_targets_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.incorrRT_targets_N3.mean;
} else {
"not run";
};
};
/propNR_targets_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.NR_targets_N3.mean;
} else {
"not run";
};
};
/NonTargetTrialCount_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.ACC_nontargets_N3.itemcount;
} else {
"not run";
};
};
/propCorrect_nontargets_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.ACC_nontargets_N3.mean;
} else {
"not run";
};
};
/mean_corrRT_nontargets_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.corrRT_nontargets_N3.mean;
} else {
"not run";
};
};
/mean_incorrRT_nontargets_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.incorrRT_nontargets_N3.mean;
} else {
"not run";
};
};
/propNR_nontargets_N3 = {
if (list.ACC_targets_N3.itemcount > 0){
list.NR_nontargets_N3.mean;
} else {
"not run";
};
};
/hitRate_N3 = if (list.ACC_targets_N3.itemcount > 0){
list.ACC_targets_N3.mean;
} else {
"not run";
}
/FArate_N3 = if (list.ACC_targets_N3.itemcount > 0){
(list.ACC_nontargets_N3.itemcount - (list.ACC_nontargets_N3.mean*list.ACC_nontargets_N3.itemcount)-(list.NR_nontargets_N3.mean*list.NR_nontargets_N3.itemcount))/
(list.ACC_nontargets_N3.itemcount);
} else {
"not run";
}
/ zhitrate_N3 =
if (list.ACC_targets_N3.itemcount > 0){
if (expressions.hitRate_N3 == 0){
zofp(expressions.hitRate_N3 + 0.005)
} else if (expressions.hitRate_N3 == 1){
zofp(expressions.hitRate_N3 - 0.005)
} else {
zofp(expressions.hitRate_N3);
};
} else {
"not run";
}
/ zFArate_N3 =
if (list.ACC_targets_N3.itemcount > 0){
if (expressions.FArate_N3 == 0){
zofp(expressions.FArate_N3 + 0.005)
} else if (expressions.FArate_N3 == 1){
zofp(expressions.FArate_N3 - 0.005)
} else {
zofp(expressions.FArate_N3)
};
} else {
"not run";
}
/ dprime_N3 = if (list.ACC_targets_N3.itemcount > 0){
(expressions.zhitrate_N3-expressions.zFArate_N3);
} else {
"not run";
}
//if there are no items in list.ACC_targets_N4 then level N = 0 was not run
/TargetTrialCount_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.ACC_targets_N4.itemcount;
} else {
"not run";
};
};
/propCorrect_targets_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.ACC_targets_N4.mean;
} else {
"not run";
};
};
/mean_corrRT_targets_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.corrRT_targets_N4.mean;
} else {
"not run";
};
};
/mean_incorrRT_targets_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.incorrRT_targets_N4.mean;
} else {
"not run";
};
};
/propNR_targets_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.NR_targets_N4.mean;
} else {
"not run";
};
};
/NonTargetTrialCount_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.ACC_nontargets_N4.itemcount;
} else {
"not run";
};
};
/propCorrect_nontargets_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.ACC_nontargets_N4.mean;
} else {
"not run";
};
};
/mean_corrRT_nontargets_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.corrRT_nontargets_N4.mean;
} else {
"not run";
};
};
/mean_incorrRT_nontargets_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.incorrRT_nontargets_N4.mean;
} else {
"not run";
};
};
/propNR_nontargets_N4 = {
if (list.ACC_targets_N4.itemcount > 0){
list.NR_nontargets_N4.mean;
} else {
"not run";
};
};
/hitRate_N4 = if (list.ACC_targets_N4.itemcount > 0){
list.ACC_targets_N4.mean;
} else {
"not run";
}
/FArate_N4 = if (list.ACC_targets_N4.itemcount > 0){
(list.ACC_nontargets_N4.itemcount - (list.ACC_nontargets_N4.mean*list.ACC_nontargets_N4.itemcount)-(list.NR_nontargets_N4.mean*list.NR_nontargets_N4.itemcount))/
(list.ACC_nontargets_N4.itemcount);
} else {
"not run";
}
/ zhitrate_N4 =
if (list.ACC_targets_N4.itemcount > 0){
if (expressions.hitRate_N4 == 0){
zofp(expressions.hitRate_N4 + 0.005)
} else if (expressions.hitRate_N4 == 1){
zofp(expressions.hitRate_N4 - 0.005)
} else {
zofp(expressions.hitRate_N4);
};
} else {
"not run";
}
/ zFArate_N4 =
if (list.ACC_targets_N4.itemcount > 0){
if (expressions.FArate_N4 == 0){
zofp(expressions.FArate_N4 + 0.005)
} else if (expressions.FArate_N4 == 1){
zofp(expressions.FArate_N4 - 0.005)
} else {
zofp(expressions.FArate_N4)
};
} else {
"not run";
}
/ dprime_N4 = if (list.ACC_targets_N4.itemcount > 0){
(expressions.zhitrate_N4-expressions.zFArate_N4);
} else {
"not run";
}
//if there are no items in list.ACC_targets_N5 then level N = 0 was not run
/TargetTrialCount_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.ACC_targets_N5.itemcount;
} else {
"not run";
};
};
/propCorrect_targets_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.ACC_targets_N5.mean;
} else {
"not run";
};
};
/mean_corrRT_targets_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.corrRT_targets_N5.mean;
} else {
"not run";
};
};
/mean_incorrRT_targets_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.incorrRT_targets_N5.mean;
} else {
"not run";
};
};
/propNR_targets_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.NR_targets_N5.mean;
} else {
"not run";
};
};
/NonTargetTrialCount_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.ACC_nontargets_N5.itemcount;
} else {
"not run";
};
};
/propCorrect_nontargets_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.ACC_nontargets_N5.mean;
} else {
"not run";
};
};
/mean_corrRT_nontargets_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.corrRT_nontargets_N5.mean;
} else {
"not run";
};
};
/mean_incorrRT_nontargets_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.incorrRT_nontargets_N5.mean;
} else {
"not run";
};
};
/propNR_nontargets_N5 = {
if (list.ACC_targets_N5.itemcount > 0){
list.NR_nontargets_N5.mean;
} else {
"not run";
};
};
/hitRate_N5 = if (list.ACC_targets_N5.itemcount > 0){
list.ACC_targets_N5.mean;
} else {
"not run";
}
/FArate_N5 = if (list.ACC_targets_N5.itemcount > 0){
(list.ACC_nontargets_N5.itemcount - (list.ACC_nontargets_N5.mean*list.ACC_nontargets_N5.itemcount)-(list.NR_nontargets_N5.mean*list.NR_nontargets_N5.itemcount))/
(list.ACC_nontargets_N5.itemcount);
} else {
"not run";
}
/ zhitrate_N5 =
if (list.ACC_targets_N5.itemcount > 0){
if (expressions.hitRate_N5 == 0){
zofp(expressions.hitRate_N5 + 0.005)
} else if (expressions.hitRate_N5 == 1){
zofp(expressions.hitRate_N5 - 0.005)
} else {
zofp(expressions.hitRate_N5);
};
} else {
"not run";
}
/ zFArate_N5 =
if (list.ACC_targets_N5.itemcount > 0){
if (expressions.FArate_N5 == 0){
zofp(expressions.FArate_N5 + 0.005)
} else if (expressions.FArate_N5 == 1){
zofp(expressions.FArate_N5 - 0.005)
} else {
zofp(expressions.FArate_N5)
};
} else {
"not run";
}
/ dprime_N5 = if (list.ACC_targets_N5.itemcount > 0){
(expressions.zhitrate_N5-expressions.zFArate_N5);
} else {
"not run";
}
//if there are no items in list.ACC_targets_N6 then level N = 0 was not run
/TargetTrialCount_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.ACC_targets_N6.itemcount;
} else {
"not run";
};
};
/propCorrect_targets_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.ACC_targets_N6.mean;
} else {
"not run";
};
};
/mean_corrRT_targets_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.corrRT_targets_N6.mean;
} else {
"not run";
};
};
/mean_incorrRT_targets_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.incorrRT_targets_N6.mean;
} else {
"not run";
};
};
/propNR_targets_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.NR_targets_N6.mean;
} else {
"not run";
};
};
/NonTargetTrialCount_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.ACC_nontargets_N6.itemcount;
} else {
"not run";
};
};
/propCorrect_nontargets_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.ACC_nontargets_N6.mean;
} else {
"not run";
};
};
/mean_corrRT_nontargets_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.corrRT_nontargets_N6.mean;
} else {
"not run";
};
};
/mean_incorrRT_nontargets_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.incorrRT_nontargets_N6.mean;
} else {
"not run";
};
};
/propNR_nontargets_N6 = {
if (list.ACC_targets_N6.itemcount > 0){
list.NR_nontargets_N6.mean;
} else {
"not run";
};
};
/hitRate_N6 = if (list.ACC_targets_N6.itemcount > 0){
list.ACC_targets_N6.mean;
} else {
"not run";
}
/FArate_N6 = if (list.ACC_targets_N6.itemcount > 0){
(list.ACC_nontargets_N6.itemcount - (list.ACC_nontargets_N6.mean*list.ACC_nontargets_N6.itemcount)-(list.NR_nontargets_N6.mean*list.NR_nontargets_N6.itemcount))/
(list.ACC_nontargets_N6.itemcount);
} else {
"not run";
}
/ zhitrate_N6 =
if (list.ACC_targets_N6.itemcount > 0){
if (expressions.hitRate_N6 == 0){
zofp(expressions.hitRate_N6 + 0.005)
} else if (expressions.hitRate_N6 == 1){
zofp(expressions.hitRate_N6 - 0.005)
} else {
zofp(expressions.hitRate_N6);
};
} else {
"not run";
}
/ zFArate_N6 =
if (list.ACC_targets_N6.itemcount > 0){
if (expressions.FArate_N6 == 0){
zofp(expressions.FArate_N6 + 0.005)
} else if (expressions.FArate_N6 == 1){
zofp(expressions.FArate_N6 - 0.005)
} else {
zofp(expressions.FArate_N6)
};
} else {
"not run";
}
/ dprime_N6 = if (list.ACC_targets_N6.itemcount > 0){
(expressions.zhitrate_N6-expressions.zFArate_N6);
} else {
"not run";
}
</expressions>
**************************************************************************************************************
**************************************************************************************************************
INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************
<trial repeatpractice>
/ stimulusframes = [1 = repeatpractice_page]
/ validresponse = ("Y", "N")
/ recorddata = false
</trial>
<trial finish>
/ inputdevice = keyboard
/ stimulusframes = [1 = finish, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>
**************************************************************************************************************
**************************************************************************************************************
STIMULI
**************************************************************************************************************
**************************************************************************************************************
***randomly selects one of the
<text startnumbers>
/ items = numbers
/select = replace
/ position = (50%, 50%)
/ txcolor = white
/ txbgcolor = black
/ fontstyle = ("Arial", 20%, false, false, false, false, 5, 0)
</text>
***selects any number that cannot be a target
<text nontargetnumbers>
/ items = numbers
/select = list.notargetvalue.nextvalue
/ position = (50%, 50%)
/ txcolor = white
/ txbgcolor = black
/ fontstyle = ("Arial", 20%, false, false, false, false, 5, 0)
</text>
***selects the item with the same item number as the established target
<text targetnumbers>
/ items = numbers
/select = values.currenttarget
/ position = (50%, 50%)
/ txcolor = white
/ txbgcolor = black
/ fontstyle = ("Arial", 20%, false, false, false, false, 5, 0)
</text>
FEEDBACK MESSAGES FOR PRACTICE TRIALS ONLY (default: they are NOT used)
<text ErrorFeedback>
/ items = ("ERROR")
/ fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 0)
/ txcolor = red
/ txbgcolor = black
/ position = (50%, 70%)
</text>
<text CorrectFeedback>
/ items = ("CORRECT")
/ fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 0)
/ txcolor = red
/ txbgcolor = black
/ position = (50%, 70%)
</text>
ASSISTANT STIMULI:
*****reminder that the number participants see during the first trial in N = 0 nback trials is the target
<text targetreminder>
/ items = ("this is the target")
/ position = (50%, 25%)
/ txbgcolor = black
/ txcolor = black
/ fontstyle = ("Arial", 3.00%, false, false, false, false, 5, 0)
</text>
*****For timed instructions, this shape covers up the original instructions (on slides)
that instruct participants to use the Spacebar to continue
<shape eraserrec>
/shape = rectangle
/color = black
/ position = (50%, 95%)
/ size = (100%, 8%)
</shape>
*****Debug Code:
<text targetalert>
/ onprepare = [text.targetalert.skip = !parameters.debugmode;]
/items = ("target")
/position = (50%, 80%)
/txcolor = red
/txbgcolor = black
/ fontstyle = ("Arial", 3%, true, false, false, false, 5, 1)
</text>
<text leftkey_reminder>
/ items = ("A = Yes")
/ fontstyle = ("Arial", 4%, true)
/ txcolor = white
/ txbgcolor = black
/ erase = false
/ position = (10%, 90%)
</text>
<text rightkey_reminder>
/ items = ("L = No")
/ fontstyle = ("Arial", 4%, true)
/ txcolor = white
/ txbgcolor = black
/ erase = false
/ position = (90%, 90%)
</text>
<text resp_left>
/ items = ("You pressed A")
/ fontstyle = ("Arial", 4%, true)
/ txcolor = white
/ txbgcolor = black
/ position = (50%, 80%)
</text>
<text resp_right>
/ items = ("You pressed L")
/ fontstyle = ("Arial", 4%, true)
/ txcolor = white
/ txbgcolor = black
/ position = (50%, 80%)
</text>
**************************************************************************************************************
**************************************************************************************************************
LISTS
**************************************************************************************************************
**************************************************************************************************************
****list Variables to select notargetvalue
*list.notargetvalue selects any of the 8 numbers but the one selected for targetvalue
<list notargetvalue>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9)
/ not = (values.currenttarget)
/ replace = true
</list>
Note: list contains the itemnumbers of the presented numberss in reversed order (dynamic list)
(item 1 is always the last one presented)
<list items>
</list>
*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************
<list blockACC>
</list>
1 = correct response to targets; 0 = otherwise
<list ACC_targets>
</list>
1 = a no response to a target; 0 = any other response
<list NR_targets>
</list>
stores the latencies of correct target trials
<list corrRT_targets>
</list>
stores the latencies of incorrect responses (no responses excluded) to targets
<list incorrRT_targets>
</list>
<list ACC_nontargets>
</list>
<list NR_nontargets>
</list>
<list corrRT_nontargets>
</list>
<list incorrRT_nontargets>
</list>
****************************************
per level of N
****************************************
<list ACC_targets_N0>
</list>
<list NR_targets_N0>
</list>
<list corrRT_targets_N0>
</list>
<list incorrRT_targets_N0>
</list>
<list ACC_nontargets_N0>
</list>
<list NR_nontargets_N0>
</list>
<list corrRT_nontargets_N0>
</list>
<list incorrRT_nontargets_N0>
</list>
<list ACC_targets_N1>
</list>
<list NR_targets_N1>
</list>
<list corrRT_targets_N1>
</list>
<list incorrRT_targets_N1>
</list>
<list ACC_nontargets_N1>
</list>
<list NR_nontargets_N1>
</list>
<list corrRT_nontargets_N1>
</list>
<list incorrRT_nontargets_N1>
</list>
<list ACC_targets_N2>
</list>
<list NR_targets_N2>
</list>
<list corrRT_targets_N2>
</list>
<list incorrRT_targets_N2>
</list>
<list ACC_nontargets_N2>
</list>
<list NR_nontargets_N2>
</list>
<list corrRT_nontargets_N2>
</list>
<list incorrRT_nontargets_N2>
</list>
<list ACC_targets_N3>
</list>
<list NR_targets_N3>
</list>
<list corrRT_targets_N3>
</list>
<list incorrRT_targets_N3>
</list>
<list ACC_nontargets_N3>
</list>
<list NR_nontargets_N3>
</list>
<list corrRT_nontargets_N3>
</list>
<list incorrRT_nontargets_N3>
</list>
<list ACC_targets_N4>
</list>
<list NR_targets_N4>
</list>
<list corrRT_targets_N4>
</list>
<list incorrRT_targets_N4>
</list>
<list ACC_nontargets_N4>
</list>
<list NR_nontargets_N4>
</list>
<list corrRT_nontargets_N4>
</list>
<list incorrRT_nontargets_N4>
</list>
<list ACC_targets_N5>
</list>
<list NR_targets_N5>
</list>
<list corrRT_targets_N5>
</list>
<list incorrRT_targets_N5>
</list>
<list ACC_nontargets_N5>
</list>
<list NR_nontargets_N5>
</list>
<list corrRT_nontargets_N5>
</list>
<list incorrRT_nontargets_N5>
</list>
<list ACC_targets_N6>
</list>
<list NR_targets_N6>
</list>
<list corrRT_targets_N6>
</list>
<list incorrRT_targets_N6>
</list>
<list ACC_nontargets_N6>
</list>
<list NR_nontargets_N6>
</list>
<list corrRT_nontargets_N6>
</list>
<list incorrRT_nontargets_N6>
</list>
**************************************************************************************************************
**************************************************************************************************************
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 is skipped)
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 trial is skipped
* for any other N: start trial runs N-times
<trial start>
/skip =[
values.N == 0;
]
/ ontrialbegin = [
trial.start.insertstimulustime(clearscreen, parameters.stimulusPresentationtime);
trial.start.insertstimulustime(text.leftkey_reminder, parameters.stimulusPresentationtime);
trial.start.insertstimulustime(text.rightkey_reminder, parameters.stimulusPresentationtime);
values.starttrialcounter += 1;
]
/ stimulustimes = [0 = startnumbers, targetreminder, leftkey_reminder, rightkey_reminder]
/ beginresponsetime = 0
/ validresponse = (noresponse, "A", "L")
/ correctresponse = ("L")
/ responsemessage = ("A", text.resp_left, 500)
/ responsemessage = ("L", text.resp_right, 500)
/ ontrialend = [
trial.start.resetstimulusframes();
list.items.insertitem(text.startnumbers.currentitemnumber, 1);
text.targetreminder.textcolor = black;
if (trial.start.correct){
values.responseCategory = "Correct";
} else if (trial.start.responsetext == "A"){
values.responseCategory = "Incorrect ";
} else {
values.responseCategory = "No response";
};
if (parameters.excludeStartTrialfromPerformanceMeasure == false){
list.blockACC.appenditem(trial.start.correct);
};
]
/trialduration = parameters.SOA
/branch = [
if (values.starttrialcounter < values.N) {
return trial.start;
};
]
</trial>
**********************************
Nontarget Trials
**********************************
<trial nontarget>
/ ontrialbegin = [
trial.nontarget.insertstimulustime(clearscreen, parameters.stimulusPresentationtime);
trial.nontarget.insertstimulustime(text.leftkey_reminder, parameters.stimulusPresentationtime);
trial.nontarget.insertstimulustime(text.rightkey_reminder, parameters.stimulusPresentationtime);
if (values.N > 0){
values.currenttarget = list.items.item(values.N);
};
]
/ stimulustimes = [0 = nontargetnumbers, leftkey_reminder, rightkey_reminder]
/validresponse = (noresponse, "A", "L")
/ beginresponsetime = 0
/ correctresponse = ("L")
/ responsemessage = ("A", text.resp_left, 500)
/ responsemessage = ("L", text.resp_right, 500)
/ ontrialend = [
trial.nontarget.resetstimulusframes();
list.items.insertitem(text.nontargetnumbers.currentitemnumber, 1);
list.blockACC.appenditem(trial.nontarget.correct);
]
/ ontrialend = [
if (values.phase == "Test") {
if (trial.nontarget.correct){
values.responseCategory = "Correct";
list.ACC_nontargets.appenditem(1);
list.corrRT_nontargets.appenditem(trial.nontarget.latency);
list.NR_nontargets.appenditem(0);
if (values.N == 0){
list.ACC_nontargets_N0.appenditem(1);
list.corrRT_nontargets_N0.appenditem(trial.nontarget.latency);
list.NR_nontargets_N0.appenditem(0);
} else if (values.N == 1){
list.ACC_nontargets_N1.appenditem(1);
list.corrRT_nontargets_N1.appenditem(trial.nontarget.latency);
list.NR_nontargets_N1.appenditem(0);
} else if (values.N == 2){
list.ACC_nontargets_N2.appenditem(1);
list.corrRT_nontargets_N2.appenditem(trial.nontarget.latency);
list.NR_nontargets_N2.appenditem(0);
} else if (values.N == 3){
list.ACC_nontargets_N3.appenditem(1);
list.corrRT_nontargets_N3.appenditem(trial.nontarget.latency);
list.NR_nontargets_N3.appenditem(0);
} else if (values.N == 4){
list.ACC_nontargets_N4.appenditem(1);
list.corrRT_nontargets_N4.appenditem(trial.nontarget.latency);
list.NR_nontargets_N4.appenditem(0);
} else if (values.N == 5){
list.ACC_nontargets_N5.appenditem(1);
list.corrRT_nontargets_N5.appenditem(trial.nontarget.latency);
list.NR_nontargets_N5.appenditem(0);
} else if (values.N == 6){
list.ACC_nontargets_N6.appenditem(1);
list.corrRT_nontargets_N6.appenditem(trial.nontarget.latency);
list.NR_nontargets_N6.appenditem(0);
}//if further values of N should be added, add the necessary code here
} else if (trial.nontarget.responsetext == "A"){
values.responseCategory = "Incorrect";
list.ACC_nontargets.appenditem(0);
list.incorrRT_nontargets.appenditem(trial.nontarget.latency);
list.NR_nontargets.appenditem(0);
if (values.N == 0){
list.ACC_nontargets_N0.appenditem(0);
list.incorrRT_nontargets_N0.appenditem(trial.nontarget.latency);
list.NR_nontargets_N0.appenditem(0);
} else if (values.N == 1){
list.ACC_nontargets_N1.appenditem(0);
list.incorrRT_nontargets_N1.appenditem(trial.nontarget.latency);
list.NR_nontargets_N1.appenditem(0);
} else if (values.N == 2){
list.ACC_nontargets_N2.appenditem(0);
list.incorrRT_nontargets_N2.appenditem(trial.nontarget.latency);
list.NR_nontargets_N2.appenditem(0);
} else if (values.N == 3){
list.ACC_nontargets_N3.appenditem(0);
list.incorrRT_nontargets_N3.appenditem(trial.nontarget.latency);
list.NR_nontargets_N3.appenditem(0);
} else if (values.N == 4){
list.ACC_nontargets_N4.appenditem(0);
list.incorrRT_nontargets_N4.appenditem(trial.nontarget.latency);
list.NR_nontargets_N4.appenditem(0);
} else if (values.N == 5){
list.ACC_nontargets_N5.appenditem(0);
list.incorrRT_nontargets_N5.appenditem(trial.nontarget.latency);
list.NR_nontargets_N5.appenditem(0);
} else if (values.N == 6){
list.ACC_nontargets_N6.appenditem(0);
list.incorrRT_nontargets_N6.appenditem(trial.nontarget.latency);
list.NR_nontargets_N6.appenditem(0);
}//if further values of N should be added, add the necessary code here
} else {
values.responseCategory = "No Response";
list.ACC_nontargets.appenditem(0);
list.NR_nontargets.appenditem(1);
if (values.N == 0){
list.ACC_nontargets_N0.appenditem(0);
list.NR_nontargets_N0.appenditem(1);
} else if (values.N == 1){
list.ACC_nontargets_N1.appenditem(0);
list.NR_nontargets_N1.appenditem(1);
} else if (values.N == 2){
list.ACC_nontargets_N2.appenditem(0);
list.NR_nontargets_N2.appenditem(1);
} else if (values.N == 3){
list.ACC_nontargets_N3.appenditem(0);
list.NR_nontargets_N3.appenditem(1);
} else if (values.N == 4){
list.ACC_nontargets_N4.appenditem(0);
list.NR_nontargets_N4.appenditem(1);
} else if (values.N == 5){
list.ACC_nontargets_N5.appenditem(0);
list.NR_nontargets_N5.appenditem(1);
} else if (values.N == 6){
list.ACC_nontargets_N6.appenditem(0);
list.NR_nontargets_N6.appenditem(1);
}//if further values of N should be added, add the necessary code here
};
};
]
/ ontrialend = [
if (values.phase == "Practice") {
if (trial.nontarget.correct){
values.responseCategory = "Correct";
} else if (trial.nontarget.responsetext == "A"){
values.responseCategory = "Incorrect";
} else {
values.responseCategory = "No Response";
};
};
]
/ trialduration = parameters.SOA
</trial>
**********************************
Target Trials
**********************************
**if target, press the numbers "A" (code: "A")
<trial target>
/ ontrialbegin = [
trial.target.insertstimulustime(clearscreen, parameters.stimulusPresentationtime);
trial.target.insertstimulustime(text.leftkey_reminder, parameters.stimulusPresentationtime);
trial.target.insertstimulustime(text.rightkey_reminder, parameters.stimulusPresentationtime);
if (values.N > 0){
values.currenttarget = list.items.item(values.N);
};
]
/ stimulustimes = [0 = targetnumbers, targetalert, leftkey_reminder, rightkey_reminder]
/validresponse = (noresponse, "A", "L")
/ beginresponsetime = 0
/ correctresponse = ("A")
/ responsemessage = ("A", text.resp_left, 500)
/ responsemessage = ("L", text.resp_right, 500)
/ ontrialend = [
trial.target.resetstimulusframes();
list.items.insertitem(text.targetnumbers.currentitemnumber, 1);
list.blockACC.appenditem(trial.target.correct);
]
/ ontrialend = [
if (values.phase == "Test") {
//summary variables:
if (trial.target.correct){
values.responseCategory = "Correct";
list.ACC_targets.appenditem(1);
list.corrRT_targets.appenditem(trial.target.latency);
list.NR_targets.appenditem(0);
if (values.N == 0){
list.ACC_targets_N0.appenditem(1);
list.corrRT_targets_N0.appenditem(trial.target.latency);
list.NR_targets_N0.appenditem(0);
} else if (values.N == 1){
list.ACC_targets_N1.appenditem(1);
list.corrRT_targets_N1.appenditem(trial.target.latency);
list.NR_targets_N1.appenditem(0);
} else if (values.N == 2){
list.ACC_targets_N2.appenditem(1);
list.corrRT_targets_N2.appenditem(trial.target.latency);
list.NR_targets_N2.appenditem(0);
} else if (values.N == 3){
list.ACC_targets_N3.appenditem(1);
list.corrRT_targets_N3.appenditem(trial.target.latency);
list.NR_targets_N3.appenditem(0);
} else if (values.N == 4){
list.ACC_targets_N4.appenditem(1);
list.corrRT_targets_N4.appenditem(trial.target.latency);
list.NR_targets_N4.appenditem(0);
} else if (values.N == 5){
list.ACC_targets_N5.appenditem(1);
list.corrRT_targets_N5.appenditem(trial.target.latency);
list.NR_targets_N5.appenditem(0);
} else if (values.N == 6){
list.ACC_targets_N6.appenditem(1);
list.corrRT_targets_N6.appenditem(trial.target.latency);
list.NR_targets_N6.appenditem(0);
}//if further values of N should be added, add the necessary code here
} else if (trial.target.responsetext == "L"){
values.responseCategory = "Incorrect";
list.ACC_targets.appenditem(0);
list.incorrRT_targets.appenditem(trial.target.latency);
list.NR_targets.appenditem(0);
if (values.N == 0){
list.ACC_targets_N0.appenditem(0);
list.incorrRT_targets_N0.appenditem(trial.target.latency);
list.NR_targets_N0.appenditem(0);
} else if (values.N == 1){
list.ACC_targets_N1.appenditem(0);
list.incorrRT_targets_N1.appenditem(trial.target.latency);
list.NR_targets_N1.appenditem(0);
} else if (values.N == 2){
list.ACC_targets_N2.appenditem(0);
list.incorrRT_targets_N2.appenditem(trial.target.latency);
list.NR_targets_N2.appenditem(0);
} else if (values.N == 3){
list.ACC_targets_N3.appenditem(0);
list.incorrRT_targets_N3.appenditem(trial.target.latency);
list.NR_targets_N3.appenditem(0);
} else if (values.N == 4){
list.ACC_targets_N4.appenditem(0);
list.incorrRT_targets_N4.appenditem(trial.target.latency);
list.NR_targets_N4.appenditem(0);
} else if (values.N == 5){
list.ACC_targets_N5.appenditem(0);
list.incorrRT_targets_N5.appenditem(trial.target.latency);
list.NR_targets_N5.appenditem(0);
} else if (values.N == 6){
list.ACC_targets_N6.appenditem(0);
list.incorrRT_targets_N6.appenditem(trial.target.latency);
list.NR_targets_N6.appenditem(0);
}//if further values of N should be added, add the necessary code here
} else {
values.responseCategory = "No Response";
list.ACC_targets.appenditem(0);
list.NR_targets.appenditem(1);
if (values.N == 0){
list.ACC_targets_N0.appenditem(0);
list.NR_targets_N0.appenditem(1);
} else if (values.N == 1){
list.ACC_targets_N1.appenditem(0);
list.NR_targets_N1.appenditem(1);
} else if (values.N == 2){
list.ACC_targets_N2.appenditem(0);
list.NR_targets_N2.appenditem(1);
} else if (values.N == 3){
list.ACC_targets_N3.appenditem(0);
list.NR_targets_N3.appenditem(1);
} else if (values.N == 4){
list.ACC_targets_N4.appenditem(0);
list.NR_targets_N4.appenditem(1);
} else if (values.N == 5){
list.ACC_targets_N5.appenditem(0);
list.NR_targets_N5.appenditem(1);
} else if (values.N == 6){
list.ACC_targets_N6.appenditem(0);
list.NR_targets_N6.appenditem(1);
}//if further values of N should be added, add the necessary code here
};
};
]
/ ontrialend = [
if (values.phase == "Practice") {
if (trial.target.correct){
values.responseCategory = "Correct";
} else if (trial.target.responsetext == "L"){
values.responseCategory = "Incorrect";
} else {
values.responseCategory = "No Response";
};
};
]
/ trialduration = parameters.SOA
</trial>
**********************************
Textbox
**********************************
<survey nbacksurvey>
/ pages = [
1 = nbackperception1;]
</survey>
<surveypage nbackperception1>
/ questions = [1 = textbox.nbackperception2]
</surveypage>
<textbox nbackperception2>
/ caption = "Please enter what percentage of the trials you think you got correct on the N-back task from 0-100%, with 0 being none correct, and 100 being all trails correct"
/ fontstyle = ("Arial", 3.13%, false, false, false, false, 5, 1)
/ size = (90%, 20%)
/ mask = positiveinteger
/ range = (0,100)
/ textboxsize = (20%, 5%)
/ txcolor = white
/ position = (15%, 30%)
/ required = true
</textbox>
**********************************
Slider Trials
**********************************
<slidertrial nbackperception>
/ stimulusframes = [1=clearscreen, perceptionquestion, perception50]
/ range = (0,100)
/ increment = 1
/ orientation = horizontal
/ labels = ("<font color=white>0</font>", "<font color=white>100</font>")
/ required = true
/ position = (50%, 60%)
/ size = (90%, 20%)
/ buttonlabel = "Submit"
</slidertrial>
<text perceptionquestion>
/ items = ("Please enter the percentage you believe you got correct on the N-back task")
/ txcolor = white
/ txbgcolor = black
/ position = (50%, 30%)
</text>
<text perception50>
/ items = ("50")
/ txcolor = white
/ txbgcolor = black
/ position = (50%, 55%)
</text>
**************************************************************************************************************
**************************************************************************************************************
BLOCKS
**************************************************************************************************************
**************************************************************************************************************
**********************************************
PRACTICE
**********************************************
* Practice Blocks give feedback
* Block starts with
(b) N start-trials that cannot present Targets yet (for N=0, trial.start is skipped)
(c) 10 practice trials: ratio targets : nontargets = 3 : 7
* stops after lever N = highestN (set by experimenter)
(d) runs level of N from list.nextN_practice in the order specified under list settings
<block PracticeNlevelSelect>
/ onblockbegin = [
values.N = list.nextN_practice.nextvalue;
values.currenttarget = 0;
if (values.N == 0){
values.currenttarget = 1;
};
list.items.reset();
values.TotalPracticeBlocks += 1;
values.phase = "Practice";
values.starttrialcounter = 0;
list.blockACC.reset();
]
/ branch = [
if (values.N == 1) {
block.PracticeIntro1back;
} else if (values.N == 2) {
block.PracticeIntro2back;
} else if (values.N == 3) {
block.PracticeIntro3back;
};
]
</block>
<block Practice>
/ preinstructions = (nback_levelInstructions)
/ trials = [
1 = start;
2 - 10 = noreplace(nontarget, nontarget, target);
]
/ screencolor = (0, 0, 0)
/ recorddata = true
/ errormessage = true(text.ErrorFeedback, 500)
/ correctmessage = true(text.CorrectFeedback, 500)
/ branch = [
block.PracticeEnd;
]
</block>
/ branch = [
if (values.TotalBlocks >= list.nextN_practice.itemcount) {
values.TotalBlocks = 0;
block.RepeatPractice;
} else {
block.Practice;
};
]
if trial feedback is desired:
/ errormessage = true(ErrorFeedback, 500)
/ correctmessage = true(CorrectFeedback, 500)
<block RepeatPractice>
/ skip = [
parameters.allowPracticeRepeat == false;
]
/ trials = [1 = repeatpractice]
/ recorddata = false
/ branch = [
if (trial.repeatpractice.responsetext == "Y") {
return block.Practice;
};
]
/ screencolor = black
</block>
<block PracticeEnd>
/ preinstructions = (practiceend)
/ recorddata = false
/ branch = [
block.Test;
]
</block>
**********************************************
EXPERIMENTAL-BLOCKS NONADAPTIVE
**********************************************
<block StartTest>
/ preinstructions = (htmlpage.nback_testStart)
/ recorddata = false
/ onblockbegin = [
values.TotalTestBlocks = 0;
//reset all necessary lists
list.ACC_nontargets.reset();
list.incorrRT_nontargets.reset();
list.corrRT_nontargets.reset();
list.NR_nontargets.reset();
list.ACC_targets.reset();
list.incorrRT_targets.reset();
list.corrRT_targets.reset();
list.NR_targets.reset();
list.ACC_nontargets_N0.reset();
list.incorrRT_nontargets_N0.reset();
list.corrRT_nontargets_N0.reset();
list.NR_nontargets_N0.reset();
list.ACC_targets_N0.reset();
list.incorrRT_targets_N0.reset();
list.corrRT_targets_N0.reset();
list.NR_targets_N0.reset();
list.ACC_nontargets_N1.reset();
list.incorrRT_nontargets_N1.reset();
list.corrRT_nontargets_N1.reset();
list.NR_nontargets_N1.reset();
list.ACC_targets_N1.reset();
list.incorrRT_targets_N1.reset();
list.corrRT_targets_N1.reset();
list.NR_targets_N1.reset();
list.ACC_nontargets_N2.reset();
list.incorrRT_nontargets_N2.reset();
list.corrRT_nontargets_N2.reset();
list.NR_nontargets_N2.reset();
list.ACC_targets_N2.reset();
list.incorrRT_targets_N2.reset();
list.corrRT_targets_N2.reset();
list.NR_targets_N2.reset();
list.ACC_nontargets_N3.reset();
list.incorrRT_nontargets_N3.reset();
list.corrRT_nontargets_N3.reset();
list.NR_nontargets_N3.reset();
list.ACC_targets_N3.reset();
list.incorrRT_targets_N3.reset();
list.corrRT_targets_N3.reset();
list.NR_targets_N3.reset();
list.ACC_nontargets_N4.reset();
list.incorrRT_nontargets_N4.reset();
list.corrRT_nontargets_N4.reset();
list.NR_nontargets_N4.reset();
list.ACC_targets_N4.reset();
list.incorrRT_targets_N4.reset();
list.corrRT_targets_N4.reset();
list.NR_targets_N4.reset();
list.ACC_nontargets_N5.reset();
list.incorrRT_nontargets_N5.reset();
list.corrRT_nontargets_N5.reset();
list.NR_nontargets_N5.reset();
list.ACC_targets_N5.reset();
list.incorrRT_targets_N5.reset();
list.corrRT_targets_N5.reset();
list.NR_targets_N5.reset();
list.ACC_nontargets_N6.reset();
list.incorrRT_nontargets_N6.reset();
list.corrRT_nontargets_N6.reset();
list.NR_nontargets_N6.reset();
list.ACC_targets_N6.reset();
list.incorrRT_targets_N6.reset();
list.corrRT_targets_N6.reset();
list.NR_targets_N6.reset();
//if any further N-levels should be run, reset the necessary lists here
]
</block>
* Block starts with
(a) Instructions
(b) N start-trials that cannot present Targets yet
(c) 20 Experimental trials
* ratio targets : nontargets = 6 : 14 = 3 : 7
* Block runs as many times as there are items in list.Nlevel and in the sequence controlled by list.Nlevel
<block Test>
/ preinstructions = (nback_levelInstructions)
/ onblockbegin = [
list.blockACC.reset();
values.N = list.Nlevel.nextvalue;
values.currenttarget = 0;
if (values.N == 0){
values.currenttarget = 1;
};
list.items.reset();
values.lastIndex = 1;
expressions.fillitemlist;
values.TotalTestBlocks += 1;
values.phase = "Test";
values.starttrialcounter = 0;
]
/ trials = [
1 = start;
2 - 98 = noreplace(nontarget, nontarget,target);
99 = surveypage.nbackperception1;
]
/ screencolor = (0, 0, 0)
/ branch = [
//as long as the number of test blocks run is smaller than the items in list.Nlevel, another test block will start
if (values.TotalTestBlocks < list.Nlevel.itemcount){
return block.PracticeNlevelSelect;
};
]
</block>
<block Finish>
/ trials = [
1 = finish;
]
</block>
**************************************************************************************************************
**************************************************************************************************************
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)
<expt>
/ blocks = [
1 = Introduction;
2 = PracticeNlevelSelect;
// 3 = PracticeEnd;
// 4 = StartTest;
// 5 = Test;
3 = Finish;
]
</expt>
**************************************************************************************************************
End of File
**************************************************************************************************************