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
|
|