Eyes Test: custom SCRIPT INFO Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC Date: 02-26-2017 last updated: 02-27-2017 by K.Borchert (katjab@millisecond.com) for Millisecond Software LLC Script Copyright © 02-27-2017 Millisecond Software BACKGROUND INFO *Purpose* This script implements a computerized version of the revised Eyes Test by: Baron-Cohen, S., Wheelwright, S., Hill, J., Raste, Y., & Plumb, I. (2001). The 'Reading the Mind in the Eyes' Test Revised Version: A Study with Normal Adults, and Adults with Asperger Syndrome or High-functioning Autism. Journal of Child Psychiatry and Psychiatry, 42, 241-252 Materials are downloadable from the following link: https://www.autismresearchcentre.com/arc_tests/ *Task* Participants are given 40 photographs of people's eyes and four word descriptions that describe the possible mental state of the person in question. Participants are asked to select the option that they think best describes the mental state of the person. There is no time limit to this test and participants can look up the descriptions of the words anytime they need to. DATA FILE INFORMATION: The default data stored in the data files are: (1) Raw data file: 'eyestest_raw*.iqdat' (a separate file for each participant)* build: Inquisit build computer.platform: the platform the script was run on date, time, subject, group: date and time script was run with the current subject/groupnumber blockcode, blocknum: the name and number of the current block trialcode, trialnum: the name and number of the currently recorded trial (Note: not all trials that are run might record data; by default data is collected unless /recorddata = false is set for a particular trial/block) /gender: "f"(emale) vs. "m"(ale) (gender of image) /image: stores the current image name /word1: stores the current word1 (top left) /word2: stores the current word2 (top right) /word3: stores the current word3 (bottom left) /word4: stores the current word4 (bottom right) /corrResp: the correct response (1-4) response: the participant's response: selected word (word1-word4) correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms) of current trial; measured from: onset of image until response is selected /rt: the cumulative time (in ms) spent on the current image (includes time spent on dictionary); measured from onset of image until a word is selected /countCorr: running count of correctly identified expressions (2) Summary data file: 'eyestest_summary*.iqdat' (a separate file for each participant)* 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) computer.platform: the platform the script was run on /completed: 0 = script was not completed (prematurely aborted); 1 = script was completed (all conditions run) /countCorr: count of correctly identified expressions /propCorrect: proportion correctly identified expressions /meanRT: mean latency (ms) of correctly identified expressions * separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section "DATA" and follow further instructions EXPERIMENTAL SET-UP (1) Practice: 1 image (2) Test: Part1: 17 images (3) Test: Part2: 19 images Trial: an image is presented with 4 surrounding words, guessing probability = 0.25 Chance Performance = 36*0.25 = 9 items Note: images are presented in a fixed sequence STIMULI provided by Millisecond Software - can be edited under section Editable Stimuli INSTRUCTIONS provided by Millisecond Software - can be edited under section Editable Instructions EDITABLE CODE: check below for (relatively) easily editable parameters, stimuli, instructions etc. Keep in mind that you can use this script as a template and therefore always "mess" with the entire code to further customize your experiment. The parameters you can change are: /showSummaryFeedback: true (1): participants are given the number of correctly selected emotions and their median reaction time false (0): no performance feedback is provided at the end ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** /showSummaryFeedback = false ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** /1 = "adult_practice.png" /1 = "jealous" /1 = "panicked" /1 = "arrogant" /1 = "hateful" /1 = "m" /1 = "2" /1 = "adult_part1_1.png" /2 = "adult_part1_2.png" /3 = "adult_part1_3.png" /4 = "adult_part1_4.png" /5 = "adult_part1_5.png" /6 = "adult_part1_6.png" /7 = "adult_part1_7.png" /8 = "adult_part1_8.png" /9 = "adult_part1_9.png" /10 = "adult_part1_10.png" /11 = "adult_part1_11.png" /12 = "adult_part1_12.png" /13 = "adult_part1_13.png" /14 = "adult_part1_14.png" /15 = "adult_part1_15.png" /16 = "adult_part1_16.png" /17 = "adult_part1_17.png" /18 = "adult_part2_18.png" /19 = "adult_part2_19.png" /20 = "adult_part2_20.png" /21 = "adult_part2_21.png" /22 = "adult_part2_22.png" /23 = "adult_part2_23.png" /24 = "adult_part2_24.png" /25 = "adult_part2_25.png" /26 = "adult_part2_26.png" /27 = "adult_part2_27.png" /28 = "adult_part2_28.png" /29 = "adult_part2_29.png" /30 = "adult_part2_30.png" /31 = "adult_part2_31.png" /32 = "adult_part2_32.png" /33 = "adult_part2_33.png" /34 = "adult_part2_34.png" /35 = "adult_part2_35.png" /36 = "adult_part2_36.png" / poolsize = 36 / selectionmode = sequence / resetinterval = 0 /1="playful" /2="terrified" /3="joking" /4="joking" /5="irritated" /6="aghast" /7="apologetic" /8="despondent" /9="annoyed" /10="cautious" /11="terrified" /12="indifferent" /13="decisive" /14="irritated" /15="contemplative" /16="irritated" /17="doubtful" /18="decisive" /19="arrogant" /20="dominant" /21="embarrassed" /22="preoccupied" /23="contented" /24="pensive" /25="panicked" /26="alarmed" /27="joking" /28="interested" /29="impatient" /30="grateful" /31="ashamed" /32="serious" /33="embarrassed" /34="aghast" /35="puzzled" /36="ashamed" /1="comforting" /2="upset" /3="flustered" /4="insisting" /5="sarcastic" /6="fantasizing" /7="friendly" /8="relieved" /9="hostile" /10="insisting" /11="amused" /12="embarrassed" /13="anticipating" /14="disappointed" /15="flustered" /16="thoughtful" /17="affectionate" /18="amused" /19="grateful" /20="friendly" /21="fantasizing" /22="grateful" /23="apologetic" /24="irritated" /25="incredulous" /26="shy" /27="cautious" /28="joking" /29="aghast" /30="flirtatious" /31="confident" /32="ashamed" /33="guilty" /34="baffled" /35="nervous" /36="nervous" /1="irritated" /2="arrogant" /3="desire" /4="amused" /5="worried" /6="impatient" /7="uneasy" /8="shy" /9="horrified" /10="bored" /11="regretful" /12="sceptical" /13="threatening" /14="depressed" /15="encouraging" /16="encouraging" /17="playful" /18="aghast" /19="sarcastic" /20="guilty" /21="confused" /22="insisting" /23="defiant" /24="excited" /25="despondent" /26="hostile" /27="arrogant" /28="affectionate" /29="irritated" /30="hostile" /31="joking" /32="bewildered" /33="fantasizing" /34="distrustful" /35="insisting" /36="suspicious" /1="bored" /2="annoyed" /3="convinced" /4="relaxed" /5="friendly" /6="alarmed" /7="dispirited" /8="excited" /9="preoccupied" /10="aghast" /11="flirtatious" /12="dispirited" /13="shy" /14="accusing" /15="amused" /16="sympathetic" /17="aghast" /18="bored" /19="tentative" /20="horrified" /21="panicked" /22="imploring" /23="curious" /24="hostile" /25="interested" /26="anxious" /27="reassuring" /28="contented" /29="reflective" /30="disappointed" /31="dispirited" /32="alarmed" /33="concerned" /34="terrified" /35="contemplative" /36="indecisive" /1="M" /2="M" /3="F" /4="M" /5="M" /6="F" /7="M" /8="M" /9="F" /10="M" /11="M" /12="M" /13="M" /14="M" /15="F" /16="M" /17="F" /18="F" /19="F" /20="M" /21="F" /22="F" /23="M" /24="M" /25="F" /26="M" /27="F" /28="F" /29="F" /30="F" /31="F" /32="M" /33="M" /34="F" /35="F" /36="M" /1="1" /2="2" /3="3" /4="2" /5="3" /6="2" /7="3" /8="1" /9="4" /10="1" /11="3" /12="3" /13="2" /14="4" /15="1" /16="2" /17="1" /18="1" /19="4" /20="2" /21="2" /22="1" /23="3" /24="1" /25="4" /26="3" /27="2" /28="1" /29="4" /30="2" /31="2" /32="1" /33="4" /34="3" /35="2" /36="3" / items = ("dictionary.htm") / size = (75%, 75%) / showborders = true / showscrollbars = true /hposition = shape.windowframe.hposition /vposition = shape.windowframe.vposition / items = ("show dictionary") / position = (50%, 95%) / size = (20%, 3%) / fontstyle = ("Arial", 2%, false, false, false, false, 5, 1) / txbgcolor = gray / txcolor = white / vjustify = center / items = ("Thank you for your participation!") / position = (50%, 25%) / size = (80%, 10%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center optional: / items = ("Number of correctly selected emotions: <%values.countCorr%> out of 36 ~nAverage Response Time: <%expressions.meanRT%> ms") / position = (50%, 50%) / size = (80%, 30%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / items = ("CLICK HERE TO FINISH") / position = (50%, 80%) / size = (30%, 5%) / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / vjustify = center / txbgcolor = green ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / txcolor = black / screencolor = white / windowsize = (80%, 80%) / finishlabel = "START" ^Instructions ^^For each set of eyes, select with your <%expressions.buttoninstruct1%> which word best describes what the person in the picture is thinking or feeling. ^^You may feel that more than one word is applicable but please choose just one word, the word which you consider to be most suitable. ^^Before making your choice, make sure that you have read all 4 words. ^^ You should try to do the task as quickly as possible but you will not be timed. If you really don't know what a word means you can look it up in the definition handout. **************************************************************************************************** general instruction expressions: adjust the instruction text depending on device used to run script **************************************************************************************************** /buttoninstruct1 = "mouse" ************************************************************************************************************** ************************************************************************************************************** EDITABLE LISTS: change editable lists here ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** !!!REMAINING CODE: Customize after careful consideration only!!! ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 5.0.11.0 or higher /canvasaspectratio = (4,3) / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = white / txcolor = black / screencolor = white / inputdevice = mouse ************************************************************************************************************** ************************************************************************************************************** DATA ************************************************************************************************************** ************************************************************************************************************** Note: data file explanations under User Manual Information at the top To change from one data file per participant to one data file for all participants, set /separatefiles = false *********************** raw data file *********************** / separatefiles = true / columns = [build, computer.platform, date, time, subject, group, blockcode, blocknum, trialcode, trialnum, values.gender, values.trialcount, values.image, values.word1, values.word2, values.word3, values.word4, values.corrResp, response, correct, latency, values.rt, values.countCorr] *********************** summary data file *********************** /columns = [script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed, values.countCorr, expressions.propCorrect, expressions.meanRT] / separatefiles = true ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /completed: 0 = script was not completed; 1 = script was completed (all conditions run) /completed = 0 /word1 = 0 /word2 = 0 /word3 = 0 /word4 = 0 /gender = "" /corrResp = 0 /imageSelect = 1 /image = "" /countCorr = 0 /rt = 0 /trialcount = 0 ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /propCorrect = percentcorrect(trial.test) /meanRT = meanlatency(trial.test) ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** / items = practiceImage / select = values.imageSelect / position = (50%, 50%) / size = (50%, 20%) / erase = false / items = practiceword1 / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / erase = false / select = values.ImageSelect / position = (25%, 25%) / items = practiceword2 / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / erase = false / select = values.ImageSelect / position = (75%, 25%) / items = practiceword3 / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / erase = false / select = values.ImageSelect / position = (25%, 75%) / items = practiceword4 / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / erase = false / select = values.ImageSelect / position = (75%, 75%) /shape =rectangle / color = white / size = (100%, 100%) / items = images / select = values.imageSelect / position = (50%, 50%) / size = (50%, 20%) / erase = false / items = word1 / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / erase = false / select = values.ImageSelect / position = (25%, 25%) / items = word2 / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / erase = false / select = values.ImageSelect / position = (75%, 25%) / items = word3 / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / erase = false / select = values.ImageSelect / position = (25%, 75%) / items = word4 / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / erase = false / select = values.ImageSelect / position = (75%, 75%) / items = ("<%values.trialcount%>") / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / position = (50%, 10%) / erase = false /shape = rectangle /size = (80%, 80%) /color = black /position = (50%, 50%) /shape = rectangle /color = white /hposition = shape.windowframe.hposition /vposition = shape.windowframe.vposition /height = shape.windowframe.height - 1% /width = shape.windowframe.width - 1% /items = ("X") /hposition = shape.popupwindow.hposition + 0.5*shape.popupwindow.width /vposition = shape.popupwindow.vposition + 0.5*shape.popupwindow.height / fontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1) / txcolor = white /txbgcolor = red /size = (5%, 3%) /vjustify = center ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 Note: list stores the latency of correct responses for each relevant trial ************************************************************************************************************** ************************************************************************************************************** TRIALS ************************************************************************************************************** ************************************************************************************************************** / ontrialbegin = [ values.imageSelect = 1; values.corrResp = item.practiceCorrResp.item(values.imageSelect); values.gender = item.practiceGender.item(values.imageSelect); values.word1 = item.practiceWord1.item(values.imageSelect); values.word2 = item.practiceWord2.item(values.imageSelect); values.word3 = item.practiceWord3.item(values.imageSelect); values.word4 = item.practiceWord4.item(values.imageSelect); values.image = item.practiceImage.item(values.imageSelect); ] / stimulusframes = [1 = clearscreen, practiceImage, practiceWord1, practiceWord2, practiceWord3, practiceWord4, showDictionary, trialcount] / validresponse = (practiceWord1, practiceWord2, practiceWord3, practiceWord4, showDictionary) / iscorrectresponse = [ (trial.practice.response == "practiceWord1" && values.corrResp == 1) || (trial.practice.response == "practiceWord2" && values.corrResp == 2) || (trial.practice.response == "practiceWord3" && values.corrResp == 3) || (trial.practice.response == "practiceWord4" && values.corrResp == 4) ] / ontrialend = [ values.rt += trial.practice.latency; ] / branch = [ if (trial.practice.response == "showDictionary"){ trial.practiceDictionary; }; ] / stimulusframes = [1 = windowframe, popupwindow, close, dictionary] / validresponse = (close) / ontrialend = [ values.rt += trial.practiceDictionary.latency; ] / branch = [ trial.practice; ] / ontrialbegin = [ values.trialcount += 1; values.rt = 0; values.imageSelect = list.itemnumbers.nextindex; values.corrResp = item.corrResp.item(values.imageSelect); values.gender = item.gender.item(values.imageSelect); values.word1 = item.word1.item(values.imageSelect); values.word2 = item.word2.item(values.imageSelect); values.word3 = item.word3.item(values.imageSelect); values.word4 = item.word4.item(values.imageSelect); values.image = item.images.item(values.imageSelect); ] / stimulusframes = [1 = clearscreen, image, word1, word2, word3, word4, showDictionary, trialcount] / validresponse = (word1, word2, word3, word4, showDictionary) / iscorrectresponse = [ (trial.test.response == "word1" && values.corrResp == 1) || (trial.test.response == "word2" && values.corrResp == 2) || (trial.test.response == "word3" && values.corrResp == 3) || (trial.test.response == "word4" && values.corrResp == 4) ] / ontrialend = [ values.rt += trial.test.latency; if (trial.test.response != "showDictionary"){ values.countCorr += trial.test.correct; list.accuracy.appenditem(trial.test.correct); if (trial.test.correct){ list.latencies.appenditem(values.rt); }; }; ] / branch = [ if (trial.test.response == "showDictionary"){ trial.dictionary; }; ] / stimulusframes = [1 = windowframe, popupwindow, close, dictionary] / validresponse = (close) / ontrialend = [ values.rt += trial.dictionary.latency; ] / branch = [ trial.continueTest; ] / stimulusframes = [1 = clearscreen, image, word1, word2, word3, word4, showDictionary, trialcount] / validresponse = (word1, word2, word3, word4, showDictionary) / iscorrectresponse = [ (trial.continueTest.response == "word1" && values.corrResp == 1) || (trial.continueTest.response == "word2" && values.corrResp == 2) || (trial.continueTest.response == "word3" && values.corrResp == 3) || (trial.continueTest.response == "word4" && values.corrResp == 4) ] / ontrialend = [ values.rt += trial.continueTest.latency; if (trial.continueTest.response != "showDictionary"){ values.countCorr += trial.continueTest.correct; list.accuracy.appenditem(trial.continueTest.correct); if (trial.continueTest.correct){ list.latencies.appenditem(values.rt); }; }; ] / branch = [ if (trial.continueTest.response == "showDictionary"){ trial.dictionary; }; ] / inputdevice = mouse / ontrialbegin = [ if (expressions.showSummaryFeedback == false){ text.SummaryFeedback.skip = true; }; ] / stimulusframes = [1 = clearscreen, thankYou, SummaryFeedback, finish] / validresponse = (finish) / recorddata = false ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** / onblockbegin = [ values.rt = 0; values.trialcount = "practice"; ] / trials = [1 = practice] / onblockbegin = [ values.trialcount = 0; ] / trials = [1-17 = test] / trials = [1-19 = test; 20 = finish] ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** / preinstructions = (intro) / blocks = [ 1 = practice; 2 = eyesTest_part1; 3 = eyesTest_part2; ] / onexptend = [ values.completed = 1; ] ************************************************************************************************************** End of File **************************************************************************************************************