Hello,
I scripted my own version of the Spatial N-Back task. Inquisit even runs the entire script. After presenting the end instructions, the program closes, shuts down and I get a note from windows Explorer: "Inquisit no longer works".
The funny thing is, Inquisit still gives me the data sheet for the raw data. But the summary sheet I don't get. And like I said the entire program shuts down... It shows in the background that it is trying to store results and seconds later i get the information that it just broke down...
Maybe someone can tell me what I am doing to Inquisit? Did I script something wrong for the summary data sheet?
The following is the script. For a better understanding: 2 practice blocks (1 easy, 1 hard), 4 experiment blocks (easy1, hard1, easy2, hard2). And yes I need to know the single data of every trial.
I really hope someone can find the bug in it. And especially why Inquisit is just shutting down like that? Am I asking too many parameters and it can't calculate it anymore?
I am reallly looking forward to an answer.
Kind regards,
Ulrike Nestler
************************************************************************************************************************************************************************
DEFAULTS
<defaults>
/ minimumversion = "4.0.0.0"
/ fontstyle = ("Arial", 16pt)
/ screencolor = (255, 255, 255)
/ txcolor = (0, 0, 0)
/ txbgcolor = (255, 255, 255)
</defaults>
<values>
/StartN = 1
/LastN = 3
/debugmode = 0
</values>
******************************************
experimental parameters updated at runtime
******************************************
/completed: 0 = script was not completed (script was prematurely aborted); 1 = script was completed (all conditions run)
minus1: contains the stimulusitemnumber of the stimulus in the trial preceding the current one
minus2: contains the stimulusitemnumber of the stimulus shown 2 trials before the current one
minus3: contains the stimulusitemnumber of the stimulus shown 3 trials before the current one
minus4: contains the stimulusitemnumber of the stimulus shown 4 trials before the current one
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
starttrialcounter: keeps track of how many start trials have been run
repetitioncounter: keeps track of how many times an experimental block has been run
trial_Hit: codes for each trial: trial_Hit = 1 (it's a hit), trial_Hit = 0 (it's not a hit)
trial_Miss: codes for each trial: trial_Miss = 1 (it's a Miss), trial_Miss = 0 (it's not a Miss)
trial_CR: codes for each trial: trial_CR = 1 (it's a correct rejection), trial_CR = 0 (it's not a correct rejection)
trial_FA: codes for each trial: trial_FA = 1 (it's a false alarm), trial_FA = 0 (it's not a a false alarm)
<values >
/completed = 0
/minus1 = 0
/minus2 = 0
/minus3 = 0
/minus4 = 0
/N = 0
/currenttarget = 0
/Hits = 0
/FalseA = 0
/Misses = 0
/CorrReject = 0
/TotalHits = 0
/TotalFA = 0
/TotalMisses = 0
/TotalCR = 0
/Hits_easy1 = 0
/FalseA_easy1 = 0
/Misses_easy1 = 0
/CorrReject_easy1 = 0
/TotalHits_easy1 = 0
/TotalFA_easy1 = 0
/TotalMisses_easy1 = 0
/TotalCR_easy1 = 0
/Hits_easy2 = 0
/FalseA_easy2 = 0
/Misses_easy2 = 0
/CorrReject_easy2 = 0
/TotalHits_easy2 = 0
/TotalFA_easy2 = 0
/TotalMisses_easy2 = 0
/TotalCR_easy2 = 0
/Hits_hard1 = 0
/FalseA_hard1 = 0
/Misses_hard1 = 0
/CorrReject_hard1 = 0
/TotalHits_hard1 = 0
/TotalFA_hard1 = 0
/TotalMisses_hard1 = 0
/TotalCR_hard1 = 0
/Hits_hard2 = 0
/FalseA_hard2 = 0
/Misses_hard2 = 0
/CorrReject_hard2 = 0
/TotalHits_hard2 = 0
/TotalFA_hard2 = 0
/TotalMisses_hard2 = 0
/TotalCR_hard2 = 0
/TotalBlocks = 0
/starttrialcounter = 0
/repetitioncounter = 0
/trial_Hit = 0
/trial_Miss = 0
/trial_CR = 0
/trial_FA = 0
/trialcount_easy1 = 0
/count_target_easy1 = 0
/count_nontarget_easy1 = 0
/trialcount_easy2 = 0
/count_target_easy2 = 0
/count_nontarget_easy2 = 0
/trialcount_hard1 = 0
/count_target_hard1 = 0
/count_nontarget_hard1 = 0
/trialcount_hard2 = 0
/count_target_hard2 = 0
/count_nontarget_hard2 = 0
/sumrt_target_easy1 = 0
/sumrt_target_hard1 = 0
/sumrt_nontarget_easy1 = 0
/sumrt_nontarget_hard1 = 0
/sumrt_target_easy2 = 0
/sumrt_target_hard2 = 0
/sumrt_nontarget_easy2 = 0
/sumrt_nontarget_hard2 = 0
</values>
<expressions>
/errors_easy= expressions.fa_easy+ expressions.oe_easy
/errors_hard= expressions.errors_hard+ expressions.oe_hard
/FA_easy = values.TotalFA_easy1 + values.TotalFA_easy2
/FA_hard = values.TotalFA_hard1 + values.TotalFA_hard2
/OE_easy = values.TotalMisses_easy1 + values.Misses_easy2
/OE_hard = values.TotalMisses_hard1 + values.Misses_hard2
/correctresponse_easy= expressions.hits_easy+expressions.cr_easy
/correctresponse_hard=expressions.hits_hard+expressions.cr_hard
/Hits_easy =values.TotalHits_easy1 + values.TotalHits_easy2
/Hits_hard=values.TotalHits_hard1 + values.TotalHits_hard2
/CR_easy=values.corrreject_easy1 + values.corrreject_easy2
/CR_hard=values.corrreject_hard1+values.corrreject_hard2
/ meanlatency.easy = meanlatency(trial.target_easy1, trial.target_easy2, trial.nontarget_easy1, trial.nontarget_easy2)
/ meanlatency.hard = meanlatency(trial.target_hard1, trial.target_hard2, trial.nontarget_hard1, trial.nontarget_hard2)
/sumrt_target_easy= values.sumrt_target_easy1 +values.sumrt_target_easy2
/sumrt_target_hard=values.sumrt_target_hard1+values.sumrt_target_hard2
/sumrt_nontarget_easy= values.sumrt_nontarget_easy1+values.sumrt_nontarget_easy2
/sumrt_nontarget_hard=values.sumrt_nontarget_hard1+values.sumrt_nontarget_hard2
/meanrt_target_easy=expressions.sumrt_target_easy/expressions.Hits_easy
/meanrt_target_hard=expressions.sumrt_target_hard/expressions.Hits_hard
</expressions>
<data>
/ file = "NBack_rawdata.iqdat"
/ columns = [date, time, subject, values.N, blockcode, values.TotalBlocks, trialcode, trialnum, stimulusitem, stimulusnumber,
values.currenttarget, response, latency, correct, values.trial_Hit, values.trial_FA, values.trial_Miss, values.trial_CR,
values.Hits_easy1, values.FalseA_easy1, values.Misses_easy1, values.CorrReject_easy1, values.Hits_easy2, values.FalseA_easy2, values.Misses_easy2, values.CorrReject_easy2, values.Hits_hard1, values.FalseA_hard1,values.Misses_hard1, values.CorrReject_hard1,values.Hits_hard2, values.FalseA_hard2, values.Misses_hard2, values.CorrReject_hard2, values.TotalHits, values.TotalFA, values.TotalMisses, values.TotalCR, latency, values.trial.misses, values.sumrt_target_easy1, values.sumrt_target_easy2,values.sumrt_target_hard1, values.sumrt_target_hard2,values.sumrt_nontarget_easy1, values.sumrt_nontarget_easy2, values.sumrt_nontarget_hard1, values.sumrt_nontarget_hard2 ]
/ separatefiles = false
</data>
<summarydata >
/ file = "NBack_summary.iqdat"
/ columns = [script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, values.completed, values.TotalHits, values.TotalFA, values.TotalMisses, values.TotalCR, expressions.errors_easy, expressions.fa_easy, expressions.oe_easy, expressions.errors_hard, expressions.fa_hard, expressions.oe_hard, expressions.correctresponse_easy, expressions.hits_easy, expressions.cr_easy, expressions.correctresponse_hard, expressions.hits_hard, expressions.cr_hard, expressions.sumrt_target_easy, expressions.sumrt_target_hard, expressions.sumrt_nontarget_easy, expressions.sumrt_nontarget_hard, expressions.meanrt_target_easy, expressions.meanrt_target_hard]
</summarydata>
************************************************************************************************************************************************************************
DATA COLLECTION
this implementation suggests to collect the following information:
date: Date of Experiment
time: Time of Day
subject: Subjectnumber
values.N: the type of N-back trial
blockcode: the name of the current block
values.TotalBlocks: the total number of experimental blocks run
trialcode: the name of the current trial
stimulusitem: the file of the stimulus shown during a trial
stimulusnumber: the item number of the stimulus shown during a trial
values.currenttarget: the item number of the current target
response: the response of the participant (30 = "A", 38 = "L", 0 = noresponse & invalid keys)
latency: how fast a participant responded within the 3000ms timeframe, if at all
Note: if noresponse or invalid keys, latency = 3000
correct: the correctness of the response
values.trial_Hit: whether it was a Hit (=1)
values.trial_FA: whether it was a False Alarm (=1)
values.trial_Miss: whether it was Miss (=1)
values.trial_CR: whether it 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
************************
raw data
************************
************************
summary data
************************
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)
/completed: 0 = script was not completed (script was 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.TotalMisses: the sum of Misses in a block
values.TotalCR: the sum of Correct Rejections in a block
+++++++++++++++++++++++++++
Expressions
+++++++++++++++++++++++++++
errors_easy: total of false alarms and omission errors in the easy condition
errors_hard: total of false alarms and omission errors in the hard condition
FA_easy: total of false alarms in the easy condition
OE_easy: total of omission errors in the hard condition
FA_hard: total of false alarms in the hard condition
OE_hard: total of omission errors in the hard condition
correctresponse_easy: total of hits and correct rejections in the easy condition
correctresponse_hard: total of hits and correct rejections in the hard condition
Hits_easy: total of hits in the easy condition
Hits_hard: total of hits in the hard condition
CR_easy: total of correct rejections in the easy condition
CR_hard: total of correct rejections in the hard condition
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EXPERIMENT
<expt>
/ onexptbegin = [if (values.debugmode == 1) text.targetalert.textcolor = (red)]
/ preinstructions = (intro1, intro2)
/ blocks = [1 = practice_easy; 2 = intro3; 3 = practice_hard; 4= inter1; 5= nback_easy1; 6= inter2; 7=nback_hard1; 8= inter3; 9=nback_easy2; 10=inter4; 11= nback_hard2]
/ onexptend = [values.completed = 1]
/ postinstructions = (end)
</expt>
PRACTICE-BLOCKS
<block practice_easy>
/ onblockbegin = [values.N = 1]
/ onblockbegin = [
values.currenttarget = 0; values.minus1 = 0; values.minus2 = 0; values.minus3 = 0; values.minus4 = 0;
values.TotalBlocks += 1;
values.starttrialcounter = 0;
values.repetitioncounter += 1;
]
/ trials = [1 = start; 2-25 = noreplace(nontarget, nontarget, nontarget, target)]
/ errormessage = true(ErrorFeedback, 500)
/ correctmessage = true(CorrectFeedback, 500)
/ screencolor = (255, 255, 255)
/ recorddata = false
</block>
<block practice_hard>
/ onblockbegin = [values.N = 3]
/ onblockbegin = [
values.currenttarget = 0; values.minus1 = 0; values.minus2 = 0; values.minus3 = 0; values.minus4 = 0;
values.TotalBlocks += 1;
values.starttrialcounter = 0;
values.repetitioncounter += 1;
]
/ trials = [1 = start; 2-25 = noreplace(nontarget, nontarget, nontarget, target)]
/ errormessage = true(ErrorFeedback, 500)
/ correctmessage = true(CorrectFeedback, 500)
/ screencolor = (255, 255, 255)
/ recorddata = false
</block>
EXPERIMENTAL-BLOCKS
<block nback_easy1>
/ onblockbegin = [values.N = 1; values.TotalHits_easy1 = 0; values.TotalFA_easy1 = 0; values.TotalBlocks = 0; values.TotalMisses_easy1 = 0; values.TotalCR_easy1 = 0]
/ onblockbegin = [
values.currenttarget = 0; values.minus1 = 0; values.minus2 = 0; values.minus3 = 0; values.minus4 = 0;
values.Hits_easy1 = 0; values.FalseA_easy1 = 0; values.Misses_easy1 = 0; values.CorrReject_easy1 = 0;
]
/ trials = [1 = start; 2 - 25 = noreplace(nontarget_easy1, nontarget_easy1, nontarget_easy1, target_easy1)]
/ errormessage = true(Eraser, 500)
/ correctmessage = true(Eraser, 500)
/ screencolor = (255, 255, 255)
</block>
<block nback_hard1>
/ onblockbegin = [values.N = 3; values.TotalHits_hard1 = 0; values.TotalFA_hard1 = 0; values.TotalBlocks = 0; values.TotalMisses_hard1 = 0; values.TotalCR_hard1 = 0]
/ onblockbegin = [
values.currenttarget = 0; values.minus1 = 0; values.minus2 = 0; values.minus3 = 0; values.minus4 = 0;
values.Hits_hard1 = 0; values.FalseA_hard1 = 0; values.Misses_hard1 = 0; values.CorrReject_hard1 = 0;
values.TotalBlocks += 1;
values.starttrialcounter = 0;
values.repetitioncounter += 1;
]
/ trials = [1 = start; 2 - 25 = noreplace(nontarget_hard1, nontarget_hard1, nontarget_hard1, target_hard1)]
/ errormessage = true(Eraser, 500)
/ correctmessage = true(Eraser, 500)
/ screencolor = (255, 255, 255)
</block>
<block nback_easy2>
/ onblockbegin = [values.N = 1; values.TotalHits_easy2 = 0; values.TotalFA_easy2 = 0; values.TotalBlocks = 0; values.TotalMisses_easy2 = 0; values.TotalCR_easy2 = 0]
/ onblockbegin = [
values.currenttarget = 0; values.minus1 = 0; values.minus2 = 0; values.minus3 = 0; values.minus4 = 0;
values.Hits_easy2 = 0; values.FalseA_easy2 = 0; values.Misses_easy2 = 0; values.CorrReject_easy2 = 0;
values.TotalBlocks += 1;
values.starttrialcounter = 0;
values.repetitioncounter += 1;
]
/ trials = [1 = start; 2 - 25 = noreplace(nontarget_easy2, nontarget_easy2, nontarget_easy2, target_easy2)]
/ errormessage = true(Eraser, 500)
/ correctmessage = true(Eraser, 500)
/ screencolor = (255, 255, 255)
</block>
<block nback_hard2>
/ onblockbegin = [values.N = 3; values.TotalHits_hard2 = 0; values.TotalFA_hard2 = 0; values.TotalBlocks = 0; values.TotalMisses_hard2 = 0; values.TotalCR_hard2 = 0]
/ onblockbegin = [
values.currenttarget = 0; values.minus1 = 0; values.minus2 = 0; values.minus3 = 0; values.minus4 = 0;
values.Hits_hard2 = 0; values.FalseA_hard2 = 0; values.Misses_hard2 = 0; values.CorrReject_hard2 = 0;
values.TotalBlocks += 1;
values.starttrialcounter = 0;
values.repetitioncounter += 1;
]
/ trials = [1 = start; 2 - 25 = noreplace(nontarget_hard2, nontarget_hard2, nontarget_hard2, target_hard2)]
/ errormessage = true(Eraser, 500)
/ correctmessage = true(Eraser, 500)
/ screencolor = (255, 255, 255)
</block>
INSTRUCTIONS
<instruct>
/ windowsize = (1000,700)
/ inputdevice = keyboard
/ prevkey = (28)
/ nextkey = (57)
/ prevlabel = "Zurück [Enter]"
/ nextlabel = "Weiter [Leertaste]"
/ finishlabel = "Aufgabe starten [Leertaste]"
</instruct>
<htmlpage intro1>
/ file = "nbackintro1.htm"
</htmlpage>
<htmlpage intro2>
/ file = "nbackintro2easy.htm"
</htmlpage>
<htmlpage intro3>
/ file = "nbackintro2hard.htm"
</htmlpage>
<htmlpage inter1>
/ file = "nbackinter1easy.htm"
</htmlpage>
<htmlpage inter2>
/ file = "nbackinter2hard.htm"
</htmlpage>
<htmlpage inter3>
/ file = "nbackinter3easy.htm"
</htmlpage>
<htmlpage inter4>
/ file = "nbackinter4hard.htm"
</htmlpage>
<htmlpage end>
/ file = "nback_end.htm"
</htmlpage>
<block intro3>
/ preinstructions = (intro3)
/ recorddata = false
</block>
<block inter1>
/ preinstructions = (inter1)
/ recorddata = false
</block>
<block inter2>
/ preinstructions = (inter2)
/ recorddata = false
</block>
<block inter3>
/ preinstructions = (inter3)
/ recorddata = false
</block>
<block inter4>
/ preinstructions = (inter4)
/ recorddata = false
</block>
<block end>
/ preinstructions = (end)
/ recorddata = false
</block>
SHAPES
<item shapes>
/ 1 = "flash1.png"
/ 2 = "flash2.png"
/ 3 = "flash3.png"
/ 4 = "flash4.png"
/ 5 = "flash5.png"
/ 6 = "flash6.png"
/ 7 = "flash7.png"
/ 8 = "flash8.png"
</item>
************************************************************************************************************************************************************************
STIMULI-SELECTION
****List Variable to select notargetvalue
*list.notargetvalue selects any of the 8 numbers (item indices) but the one selected for values.currenttarget
<list notargetvalue>
/ items = (1, 2, 3, 4, 5, 6, 7, 8)
/ not = (values.currenttarget)
/ replace = true
</list>
***randomly selects one of the shapes
<picture startshape>
/ items = shapes
/ select = replace
/ size = (30%, 30%)
</picture>
***selects any shape but the established target
<picture nontargetshape>
/ items = shapes
/ select = notargetvalue
/ size = (30%, 30%)
</picture>
***selects the item with the same item number as the established target
<picture targetshape>
/ items = shapes
/ select = values.currenttarget
/ size = (30%, 30%)
</picture>
************************************************************************************************************************************************************************
FEEDBACK MESSAGES FOR PRACTICE TRIALS ONLY
<picture CorrectFeedback>
/ items = ("happyc.png")
/ position = (50, 50)
/ size = (30%,30%)
</picture>
<picture ErrorFeedback>
/ items = ("sadc.png")
/ position = (50, 50)
/ size = (30%,30%)
</picture>
************************************************************************************************************************************************************************
ASSISTANT STIMULI
*****acts as an eraser after showing the key stimuli for 500ms, staying on for the remainder of the time dedicated to each trial
<picture eraser>
/ items = ("flash9.png")
/ position = (50, 50)
/ size = (30%,30%)
</picture>
*****Debug Code:
<text targetalert>
/ items = ("target")
/ position = (50%, 80%)
/ txcolor = (255, 255, 255)
/ txbgcolor = (255, 255, 255)
/ fontstyle = ("Arial", 3%, true, false, false, false, 5, 1)
</text>
<text fixcross>
/ items = ("+")
/ fontstyle = ("Arial", 34pt)
</text>
************************************************************************************************************************************************************************
TRIALS
<trial start>
/ stimulustimes = [0=fixcross; 300= startshape; 2500 = Eraser]
/ validresponse = (44, 50)
/ correctresponse = (44)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3};
values.starttrialcounter += 1;
]
/ ontrialend = [
{if (values.N == 0) values.currenttarget = picture.startshape.currentitemnumber};
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.startshape.currentitemnumber
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
/ recorddata = false
/ branch = [if (values.starttrialcounter < values.N) trial.start]
</trial>
<trial nontarget>
/ stimulustimes = [0=fixcross; 300 = nontargetshape; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (44)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3}
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ recorddata = false
/ timeout = 2500
</trial>
<trial nontarget_easy1>
/ stimulustimes = [0=fixcross; 300 = nontargetshape; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (44)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3}
]
/ ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0]
/ ontrialbegin = [values.trialcount_easy1 += 1; values.count_nontarget_easy1 += 1]
/ ontrialend = [if (trial.nontarget_easy1.response != 0) {values.sumrt_nontarget_easy1 += trial.nontarget_easy1.latency}]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.nontargetshape.currentitemnumber;
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.TotalCR = values.TotalCR + trial.nontarget.correct;
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
</trial>
<trial nontarget_easy2>
/ stimulustimes = [0=fixcross; 300 = nontargetshape; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (44)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3}
]
/ ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0]
/ ontrialbegin = [values.trialcount_easy2 += 1; values.count_nontarget_easy2 += 1]
/ ontrialend = [if (trial.nontarget_easy2.response != 0) {values.sumrt_nontarget_easy2 += trial.nontarget_easy2.latency}]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.nontargetshape.currentitemnumber;
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.TotalCR = values.TotalCR + trial.nontarget.correct;
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
</trial>
<trial nontarget_hard1>
/ stimulustimes = [0=fixcross; 300 = nontargetshape; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (44)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3}
]
/ ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0]
/ ontrialbegin = [values.trialcount_hard1 += 1; values.count_nontarget_hard1 += 1]
/ ontrialend = [if (trial.nontarget_hard1.response != 0) {values.sumrt_nontarget_hard1 += trial.nontarget_hard1.latency}]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.nontargetshape.currentitemnumber;
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.TotalCR= values.TotalCR + trial.nontarget.correct;
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
</trial>
<trial nontarget_hard2>
/ stimulustimes = [0=fixcross; 300 = nontargetshape; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (44)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3}
]
/ ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0]
/ ontrialbegin = [values.trialcount_hard1 += 1; values.count_nontarget_hard2 += 1]
/ ontrialend = [if (trial.nontarget_hard2.response != 0) {values.sumrt_nontarget_hard2 += trial.nontarget_hard2.latency}]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.nontargetshape.currentitemnumber;
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.TotalCR = values.TotalCR + trial.nontarget.correct;
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
</trial>
<trial target>
/ stimulustimes = [0=fixcross; 300= targetshape, targetalert; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (50)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3};
]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.targetshape.currentitemnumber;
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ recorddata = false
/ timeout = 2500
</trial>
<trial target_easy1>
/ stimulustimes = [0=fixcross; 300= targetshape, targetalert; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (50)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3};
]
/ ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0]
/ ontrialbegin = [values.trialcount_easy1 += 1; values.count_target_easy1 += 1]
/ ontrialend = [if (trial.target_easy1.response != 0) {values.sumrt_target_easy1 += trial.target_easy1.latency}]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.targetshape.currentitemnumber;
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.TotalMisses = values.TotalMisses + trial.target.error;
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
</trial>
<trial target_easy2>
/ stimulustimes = [0=fixcross; 300= targetshape, targetalert; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (50)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3};
]
/ ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0]
/ ontrialbegin = [values.trialcount_easy2 += 1; values.count_target_easy2 += 1]
/ ontrialend = [if (trial.target_easy2.response != 0) {values.sumrt_target_easy2 += trial.target_easy2.latency}]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.targetshape.currentitemnumber;
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.TotalMisses = values.TotalMisses + trial.target.error;
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
</trial>
<trial target_hard1>
/ stimulustimes = [0=fixcross; 300= targetshape, targetalert; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (50)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3};
]
/ ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0]
/ ontrialbegin = [values.trialcount_hard1 += 1; values.count_target_hard1 += 1]
/ ontrialend = [if (trial.target_hard1.response != 0) {values.sumrt_target_hard1 += trial.target_hard1.latency}]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.targetshape.currentitemnumber;
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.TotalMisses = values.TotalMisses + trial.target.error;
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
</trial>
<trial target_hard2>
/ stimulustimes = [0=fixcross; 300= targetshape, targetalert; 2500 = eraser]
/ validresponse = (44, 50)
/ correctresponse = (50)
/ ontrialbegin = [
{if (values.N == 1) values.currenttarget = values.minus1};
{if (values.N == 2) values.currenttarget = values.minus2};
{if (values.N == 3) values.currenttarget = values.minus3};
]
/ ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0]
/ ontrialbegin = [values.trialcount_hard2 += 1; values.count_target_hard2 += 1]
/ ontrialend = [if (trial.target_hard2.response != 0) {values.sumrt_target_hard2 += trial.target_hard2.latency}]
/ ontrialend = [
values.minus3 = values.minus2;
values.minus2 = values.minus1;
values.minus1 = picture.targetshape.currentitemnumber;
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.TotalMisses = values.TotalMisses + trial.target.error;
]
/ beginresponsetime = 300
/ responseinterrupt = immediate
/ timeout = 2500
</trial>