Millisecond Forums

"Inquisit no longer works" -

https://forums.millisecond.com/Topic17765.aspx

By Ulrike Nestler - 11/19/2015

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>


By Dave - 11/20/2015

The problem is a fatal error in one of your <expressions>

<expressions>
...
/errors_hard = (expressions.errors_hard + expressions.oe_hard)
...
</expressions>

Note that the expressions refers to *itself*, i.e., it is recursive. This cannot be sensibly evaluated (i.e., there can be no meaningful end result), leads to an infinite loop (the expression runs itself over and over again) and ultimately a crash.

A personal request: If possible, please do not paste entire scripts into the message body. Instead use the forum's file attachment facilities to attach the actual script file. Thanks.
By Ulrike Nestler - 11/23/2015

Hello Dave,

yes, thanks so much! That was the error! A writing mistake due to lack of concentration I guess... And yes, of course, next time I will use the attachment facilities. Sorry, didn't see it.

Have a great day!
Kind regards,
Ulrike