By gracethenoob - 5/5/2016
Hello,
I have an experiment in which participants see a stream of images and must report whether some target image within that stream is facing left or facing right. So far, the presentation of the trials is going perfect - everything shows up at the right time and in the right order but when I run the script in monkey mode, none of the responses are recorded. (I tested this on other scripts and responses are being recorded for them so it's not a program-wide problem). I cannot figure out what's different/incorrect about my script! Any suggestions?
Things that are correct in the data file: -date, time, subject, blockcode, trialcode -values that do not rely on participant response (e.g., what position the target is within the image stream)
Things that are incorrect in the data file: -response -> all zeros -correct -> all zeros -latency -> all zeros except my rest trial which gives the rest duration -values that do rely on participant response (e.g., the count of how many trials have been correct so far for a particular trial type) -> all zeros
Here is an abridged version of my script:
<trial TR_SOA150_pos14> /ontrialbegin = [list.fillers.reset();] /stimulustimes = [0 = fixation; 500 = filler01; 600 = eraser; 610 = filler02; 750 = eraser; 760 = filler03; 900 = eraser; 910 = filler04; 1050 = eraser; 1060 = filler05; 1200 = eraser; 1210 = filler06; 1350 = eraser; 1360 = filler07; 1500 = eraser; 1510 = filler08; 1650 = eraser; 1660 = filler09; 1800 = eraser; 1810 = filler10; 1950 = eraser; 1960 = filler11; 2100 = eraser; 2110 = filler12; 2250 = eraser; 2260 = filler13; 2400 = eraser; 2410 = target_right; 2550 = eraser; 2560 = filler14; 2700 = eraser; 2710 = filler15; 2850 = eraser; 2860 = filler16; 3000 = eraser; 3010 = responsecue] /timeout = 2000 /recorddata = true /correctresponse = ("H") /validresponse = ("G", "H") /ontrialbegin = [values.target_pos = 14; values.SOA = 150] /ontrialend = [if(trial.TR_SOA150_pos14.correct) {values.150count += 1}] </trial>
<block titrate> /trials = [1 = instructions1; 2 = instructions2; 3 = instructions3; 4 = instructions4; 5-9 = noreplacenorepeat(Tl_SOA150_pos10, Tl_SOA150_pos12, TL_SOA150_pos14, TR_SOA150_pos10, TR_SOA150_pos12, TR_SOA150_pos14)] </block>
<expt > /blocks = [1 = titrate] </expt>
<data titration_data> / file = "titration_data.iqdat" / columns = [date, time, subject, response, latency, correct, blockcode, trialcode, values.SOA, values.target_pos, values.150count] / separatefiles = true </data>
|
By Dave - 5/5/2016
<trial TR_SOA150_pos14> ... /stimulustimes = [0 = fixation; 500 = filler01; 600 = eraser; ... 3010 = responsecue] /timeout = 2000 ... </trial>
The <trial> is set to time out -- i.e. *not accept any more responses* -- after 2000ms, that is before it even would have started *listening for responses* which only happens once all stimuli specified in /stimulustimes have been presented (after 3010ms).
That's why you see nothing recorded.
If you want to allow for 2000ms time to submit a response after the presentation of 'responsecue', you ought to specify
<trial TR_SOA150_pos14> ... /stimulustimes = [0 = fixation; 500 = filler01; 600 = eraser; ... 3010 = responsecue] /timeout = 5010 ... </trial>
For details on the various timing components of a trial and how they relate to each other, see the diagram and accompanying explanations in the "How to Control Trial Duration and Inter-Trial Intervals" topic in the Inquisit documentation:
https://www.millisecond.com/support/docs/v4/html/howto/howtocontroltiming.htm
|
|