GENERIC IMAGE DOT PROBE TASK SCRIPT INFO Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC Date: 05-28-2015 last updated: 04-19-2017 by K.Borchert (katjab@millisecond.com) for Millisecond Software LLC Copyright © 04-19-2017 Millisecond Software BACKGROUND INFO *Purpose* This script implements a generic dotprobe procedure with images. It is based on the procedure published in: Miller, M.A. & Fillmore, M.T (2010). The effect of image complexity on attentional bias towards alcohol-related images in adult drinkers. Addiction, 105, 883–890. Note: Due to the fact that no differences were found with complex stimuli, this script only implements the dot probe task with simple pictures. Millisecond Software thanks Dr. Fillmore for ample assistance and generously sharing the original stimuli! *Task* After presentation of a fixation cross in the center of the screen, participants are presented with 2 pictures from two categories (here: alcohol and neutral pictures). The position of the pictures is randomly chosen to be either left or right to the location of the fixation cross. After a short duration, the two pictures disappear and a probe stimulus (here: X) appears in the location of one of the pictures. Participants are asked to press one key if the probe is left and another if the probe is right. DATA FILE INFORMATION: The default data stored in the data files are: (1) Raw data file: 'genericdotprobe_images_raw*.iqdat' (a separate file for each participant) build: Inquisit build computer.platform: the platform the script was run on date, time, subject: date and time script was run with the current subject /task: 1 = practice; 2 = test 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) /category: 1 = Category1 (here: alcohol); 2 = category2 (here: filler) /congruence: 1 = probe and target (e.g. alcohol) position same; 2 = probe and target (e.g. alcohol) position different /target_position: 1 = target (e.g. alcohol) image on left; 2 = target (e.g. alcohol) image on right /target_x-probe_x: the x-coordinate (in %) of the target (e.g. alcohol)/ comp ('paired with target') /probe stims /itemnumber: itemnumber of currently selected picture /target_image: stores the currently presented target (e.g. alcohol) image /comp_image: stores the currently presented comp ('paired with target') image response: the participant's response (scancode of response button) latency: the response latency in ms (measured from onset of probe) correct: accuracy of response (regardless of whether latency >= parameters.minimum_latency) 1 = correct; 0 = incorrect /valid: latency in ms that is >= parameters.minimum_latency /validcorrect: 1 = response was correct and latency was >= parameters.minimum_latency; 0 = otherwise (2) Summary data file: 'genericdotprobe_images_rawsummary*.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) /fixationduration/targetduration: the duration of the fixation cross (default: 500ms)/the targets (default: 1000ms)/ /probeduration: the duration of the probe presentation (default: 1000ms) /iti: intertrial interval in ms /probe: the symbol used for the probe (default: X) /responsekey_left-responsekey_right: the keyboard scancodes associated with left probe and right probe /responsekey_left_label: responsekey labels /minimum_latency: the minimum latency of a correct response that is included into summary variables (default: 100ms) NOTE: all latency/accuracy summary variables are based on correct responses with latencies >= parameters.minimum_latency (default: 100ms) /propcorrect: proportion correct overall /meanrt: overall mean latency /propcorrect_congruent_category1: proportion correct in congruent Category1 (here: alcohol) trials /propcorrect_incongruent_category1: proportion correct in incongruent Category1 (here: alcohol) trials /meanRT_congruent_category1: mean latency of congruent Category1 (here: alcohol) trials /meanRT_incongruent_category1: mean latency of incongruent Category1 (here: alcohol) trials /AB_category1: Attentional Bias for Category1 pics (here: alcohol): If AB_category1 > 0 => faster mean latencies to congruent category1 trials (target and probe congruent) than incongruent ones /propcorrect_congruent_category2: proportion correct in congruent Category2 (here: filler) trials /propcorrect_incongruent_category2: proportion correct in incongruent Category2 (here: filler) trials /meanRT_congruent_category2: mean latency of congruent Category2 trials /meanRT_incongruent_category2: mean latency of incongruent Category2 trials /AB_category2: Attentional Bias for Category2 pics (here: filler): If AB_category2 > 0 => => faster mean latencies to congruent category2 trials (target and probe congruent)than incongruent ones EXPERIMENTAL SET-UP 2 categories tested (Category1: here ->alcohol; Category2: here->filler); within-design - 1 block of 10 practice trials - 1 block of 80 trials: 40 category1 trials (alcohol-neutral pairings) and 40 category2 (filler1-filler2 pairings) 10 alcohol/neutral simple pictures, all pictures presented 4 times category1: => right/left, followed by prime/not followed by prime => 10 * 4 = 40 trials category2 Trials: same for category2 trials Note: all 80 trials are randomly sampled without replacement DEFAULT TRIAL SEQUENCES fixation cross (500ms) -> target image pair (1000ms) -> tp_isi (0ms) -> probe (max. 1000ms) (latency measured from onset of probe until response or offset of probe; whichever comes first) STIMULI Stimuli were generously shared by Dr. Fillmore and can be easily edited under EDITABLE STIMULI TASK INSTRUCTIONS Instructions were generously shared by Dr. Fillmore and can be easily edited under EDITABLE CODE -> Editable Instructions INSTRUCTIONS TO ADD CATEGORIES go to section INSTRUCTIONS HOW TO ADD ADDITIONAL CATEGORIES 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: /fixationduration/targetduration: the duration of the fixation cross (default: 500ms)/the targets (default: 1000ms) /tp_isi: target-probe interstimulus interval in ms (default: 0) /probeduration: the duration of the probe presentation (default: 1000ms) Note: by default this scripts allows for responses for the entire probe duration; the trial terminates after parameters.probeduration is over /iti: intertrialpause in ms (default: 0ms) /probe: the symbol used for the probe (default: X) /responsekey_left: the scancode of the left response button (default: 18) /responsekey_right: the scancode of the left response button (default: 23) /responsekey_left_label: the label of the left response button ("E") /responsekey_right_label: the label of the right response button ("I") /minimum_latency: the minimum latency of a correct response that is included into summary variables (default: 100ms) Physical Settings of Display: Note: change the settings to optimize the display on your computer screen /target_left_x-target_right_x: the x-coordinate in % of the right/left target (default: 27%, 73%) /target_y: the y-coordinate of the target (default: center at 50%) /fixationcross_height: the height of the fixation cross in canvas height percentage (default: 5%) /probe_height: the height of the probe in canvas height percentage (default: 5%) /imageheight: the height of the image in canvas height percentage (default: 40%) ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** / fixationduration = 500 / targetduration = 1500 / tp_isi = 0 / probeduration = 1500 / iti = 0 / probe = "X" / responsekey_left = 18 / responsekey_right = 23 / responsekey_left_label = "E" / responsekey_right_label = "I" / minimum_latency = 100 / target_left_x = 27% / target_right_x = 73% / target_y = 50% / fixationcross_height = 5% / probe_height = 5% / imageheight = 40% ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS HOW TO ADD ADDITIONAL CATEGORIES ************************************************************************************************************** ************************************************************************************************************** NOTE: testing additional categories -> use the existing code as a template (1) Go to section EDITABLE STIMULI and add the necessary stimuli (also edit practice stimuli) (2) Go to section EDITABE LISTS and add the necessary lists for the added categories (3) Go to section VALUES and add the necessary summary values for the added categories (4) Go to section EXPRESSIONS and add the necessary expressions for the added categories (5) Go to section DATA and add the necessary summary variables to summary data file (6) Go to section STIMULI and add the necessary picture elements for the added categories (7) Go to section TRIALS and add the necessary trials for the added categories (8) Go to section BLOCKS: edit the trial list block.ImageDotProbe TIP: once all categories have been added: use the "FIND/REPLACE" functions to replace "Category1" with the actual name of the category you are running as category1 (and same for all other categories) ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI: change editable stimuli here ************************************************************************************************************** ************************************************************************************************************** Note: itemnumbers 1-16: here: anger faces / 1 = "01F_AN_O.bmp" / 2 = "05F_AN_O.bmp" / 3 = "07F_AN_O.bmp" / 4 = "09F_AN_O.bmp" / 5 = "13F_AN_O.bmp" / 6 = "14F_AN_O.bmp" / 7 = "18F_AN_O.bmp" / 8 = "19F_AN_O.bmp" / 9 = "25M_AN_O.bmp" / 10 = "29M_AN_O.bmp" / 11 = "33M_AN_O.bmp" / 12 = "36M_AN_O.bmp" / 13 = "38M_AN_O.bmp" / 14 = "40M_AN_O.bmp" / 15 = "42M_AN_O.bmp" / 16 = "43M_AN_O.bmp" Note: itemnumbers 1-16: here: neutral faces paired with the anger faces / 1 = "01F_NE_C.bmp" / 2 = "05F_NE_C.bmp" / 3 = "07F_NE_C.bmp" / 4 = "09F_NE_C.bmp" / 5 = "13F_NE_C.bmp" / 6 = "14F_NE_C.bmp" / 7 = "18F_NE_C.bmp" / 8 = "19F_NE_C.bmp" / 9 = "25M_NE_C.bmp" / 10 = "29M_NE_C.bmp" / 11 = "33M_NE_C.bmp" / 12 = "36M_NE_C.bmp" / 13 = "38M_NE_C.bmp" / 14 = "40M_NE_C.bmp" / 15 = "42M_NE_C.bmp" / 16 = "43M_NE_C.bmp" Note: itemnumbers 1-16: here: fear faces / 1 = "01F_FE_O.bmp" / 2 = "05F_FE_O.bmp" / 3 = "07F_FE_O.bmp" / 4 = "09F_FE_O.bmp" / 5 = "13F_FE_O.bmp" / 6 = "14F_FE_O.bmp" / 7 = "18F_FE_O.bmp" / 8 = "19F_FE_O.bmp" / 9 = "25M_FE_O.bmp" / 10 = "29M_FE_O.bmp" / 11 = "33M_FE_O.bmp" / 12 = "36M_FE_O.bmp" / 13 = "38M_FE_O.bmp" / 14 = "40M_FE_O.bmp" / 15 = "42M_FE_O.bmp" / 16 = "43M_FE_O.bmp" Note: itemnumbers 1-16: here: neutral faces paired with fear faces / 1 = "01F_NE_C.bmp" / 2 = "05F_NE_C.bmp" / 3 = "07F_NE_C.bmp" / 4 = "09F_NE_C.bmp" / 5 = "13F_NE_C.bmp" / 6 = "14F_NE_C.bmp" / 7 = "18F_NE_C.bmp" / 8 = "19F_NE_C.bmp" / 9 = "25M_NE_C.bmp" / 10 = "29M_NE_C.bmp" / 11 = "33M_NE_C.bmp" / 12 = "36M_NE_C.bmp" / 13 = "38M_NE_C.bmp" / 14 = "40M_NE_C.bmp" / 15 = "42M_NE_C.bmp" / 16 = "43M_NE_C.bmp" Note: itemnumbers 1-16: here: sad faces / 1 = "01F_SA_C.bmp" / 2 = "05F_SA_C.bmp" / 3 = "07F_SA_C.bmp" / 4 = "09F_SA_C.bmp" / 5 = "13F_SA_C.bmp" / 6 = "14F_SA_C.bmp" / 7 = "18F_SA_C.bmp" / 8 = "19F_SA_C.bmp" / 9 = "25M_SA_C.bmp" / 10 = "29M_SA_C.bmp" / 11 = "33M_SA_C.bmp" / 12 = "36M_SA_C.bmp" / 13 = "38M_SA_C.bmp" / 14 = "40M_SA_C.bmp" / 15 = "42M_SA_C.bmp" / 16 = "43M_SA_C.bmp" Note: itemnumbers 1-16: here: neutral faces paired with sad faces / 1 = "01F_NE_C.bmp" / 2 = "05F_NE_C.bmp" / 3 = "07F_NE_C.bmp" / 4 = "09F_NE_C.bmp" / 5 = "13F_NE_C.bmp" / 6 = "14F_NE_C.bmp" / 7 = "18F_NE_C.bmp" / 8 = "19F_NE_C.bmp" / 9 = "25M_NE_C.bmp" / 10 = "29M_NE_C.bmp" / 11 = "33M_NE_C.bmp" / 12 = "36M_NE_C.bmp" / 13 = "38M_NE_C.bmp" / 14 = "40M_NE_C.bmp" / 15 = "42M_NE_C.bmp" / 16 = "43M_NE_C.bmp" Note: itemnumbers 1-16: here: neutral faces / 1 = "01F_NE_C.bmp" / 2 = "05F_NE_C.bmp" / 3 = "07F_NE_C.bmp" / 4 = "09F_NE_C.bmp" / 5 = "13F_NE_C.bmp" / 6 = "14F_NE_C.bmp" / 7 = "18F_NE_C.bmp" / 8 = "19F_NE_C.bmp" / 9 = "25M_NE_C.bmp" / 10 = "29M_NE_C.bmp" / 11 = "33M_NE_C.bmp" / 12 = "36M_NE_C.bmp" / 13 = "38M_NE_C.bmp" / 14 = "40M_NE_C.bmp" / 15 = "42M_NE_C.bmp" / 16 = "43M_NE_C.bmp" Note: itemnumbers 1-16: here: neutral faces paired with neutral faces / 1 = "01F_NE_C.bmp" / 2 = "05F_NE_C.bmp" / 3 = "07F_NE_C.bmp" / 4 = "09F_NE_C.bmp" / 5 = "13F_NE_C.bmp" / 6 = "14F_NE_C.bmp" / 7 = "18F_NE_C.bmp" / 8 = "19F_NE_C.bmp" / 9 = "25M_NE_C.bmp" / 10 = "29M_NE_C.bmp" / 11 = "33M_NE_C.bmp" / 12 = "36M_NE_C.bmp" / 13 = "38M_NE_C.bmp" / 14 = "40M_NE_C.bmp" / 15 = "42M_NE_C.bmp" / 16 = "43M_NE_C.bmp" ******************************** Practice Stimuli ******************************** / 1 = "01F_NE_C.bmp" / 2 = "05F_NE_C.bmp" / 3 = "07F_NE_C.bmp" / 4 = "09F_NE_C.bmp" / 5 = "13F_NE_C.bmp" / 6 = "14F_NE_C.bmp" / 7 = "18F_NE_C.bmp" / 8 = "19F_NE_C.bmp" / 9 = "25M_NE_C.bmp" / 10 = "29M_NE_C.bmp" / 11 = "33M_NE_C.bmp" / 12 = "36M_NE_C.bmp" / 13 = "38M_NE_C.bmp" / 14 = "40M_NE_C.bmp" / 15 = "42M_NE_C.bmp" / 16 = "43M_NE_C.bmp" / 1 = "01F_NE_C.bmp" / 2 = "05F_NE_C.bmp" / 3 = "07F_NE_C.bmp" / 4 = "09F_NE_C.bmp" / 5 = "13F_NE_C.bmp" / 6 = "14F_NE_C.bmp" / 7 = "18F_NE_C.bmp" / 8 = "19F_NE_C.bmp" / 9 = "25M_NE_C.bmp" / 10 = "29M_NE_C.bmp" / 11 = "33M_NE_C.bmp" / 12 = "36M_NE_C.bmp" / 13 = "38M_NE_C.bmp" / 14 = "40M_NE_C.bmp" / 15 = "42M_NE_C.bmp" / 16 = "43M_NE_C.bmp" ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** / fontstyle = ("Arial", 2.80%, false, false, false, false, 5, 1) / txcolor = black Note: the main instructions were generously provided by Dr. Fillmore. Customize below. This is a reaction time task. ^^Please place the index and middle fingers of your right hand on the <%parameters.responsekey_left_label%> and <%parameters.responsekey_right_label%> keys. You will be presented with a fixation point at the center of the screen followed by a pair of images. These images are of various objects. You are to look at and focus on both of the pictures while they are on the screen. Do not focus in the center. You will need to move your eyes back and forth to focus on each of the pictures while they are on the screen. Once the images disappear from the screen, an X will appear on either the left or right side of the screen. ^^Your task is to respond as quickly as possible to the X by pressing the <%parameters.responsekey_left_label%> key if the X is on the left side of the screen or the <%parameters.responsekey_right_label%> key if the X is on the right side of the screen. Once you respond to the X, another fixation point will appear followed by the presentation of a new set of images. You will perform several of these trials. ^^Any questions? Are you ready to begin? Please keep your attention on the computer screen and remember to respond as quickly as possible. ^^^Please press the spacebar key to begin some practice. Practice is over. If you have any questions, please ask your experimenter now. ^^^^When you are ready, continue on to the actual task. The actual task is like practice but there is not going to be any feedback. ^^^^^^^^^^^^^Please press the spacebar key to begin. Thank you for your participation! ************************************************************************************************************** ************************************************************************************************************** EDITABLE LISTS: change editable lists here ************************************************************************************************************** ************************************************************************************************************** Note: the following lists control the presentation of each image. They run 40 trials for each Category => each image is presented 4 times => each image is presented left 2 times and right 2 times (-> list.Category1Target_position; it's linked to the itemnumbers by selectionmode) => if presented on the left: one presentation is congruent with probe; one is incongruent with probe (-> list.Category1Target_congruence; it's linked to the item numbers by selectionmode) => if presented on the right: one presentation is congruent with probe; one is incongruent with probe (-> list.Category1Target_congruence; it's linked to the item numbers by selectionmode) !!!!If the number of itemnumbers != 10, update the lists accordingly !!!!If the trialnumber changes, update the lists accordingly ******************************************** anger lists ******************************************** Note: the following list contains the 2 repetitions of the 16 itemnumber of the angerTarget stimuli the list randomly selects one itemnumber (without replacement) for anger trials (the same itemnumbers are used for comp stimuli) / items = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) / replace = false Note: the following list samples the left (1) or right (2) position of the angerTarget stimuli that is tied to the sampled itemnumber (by its list position index) => each item number is presented twice on the left and twice on the right) / items = ( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) / selectionmode = list.angerTarget_itemnumbers.currentindex Note: the following list samples the angerTarget and probe congruence that is tied to the sampled itemnumber (by its list position index) => each itemnumber is presented once left and is followed by the probe (congruent = 1) => each itemnumber is presented once left is is not followed by the probe (incongruent = 2) => each itemnumber is presented once right and is followed by the probe (congruent = 1) => each itemnumber is presented once right is is not followed by the probe (incongruent = 2) / items = ( 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2) / selectionmode = list.angerTarget_itemnumbers.currentindex ******************************************** fearTarget lists ******************************************** Note: the following list contains the 2 repetitions of the 16 itemnumber of the fearTarget stimuli the list randomly selects one itemnumber (without replacement) for fear trials (the same itemnumbers are used for comp stimuli) / items = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) / replace = false Note: the following list samples the left (1) or right (2) position of the fearTarget stimuli that is tied to the sampled itemnumber (by its list position index) => each item number is presented twice on the left and twice on the right) / items = ( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) / selectionmode = list.fearTarget_itemnumbers.currentindex Note: the following list samples the fearTarget and probe congruence that is tied to the sampled itemnumber (by its list position index) => each itemnumber is presented once left and is followed by the probe (congruent = 1) => each itemnumber is presented once left is is not followed by the probe (incongruent = 2) => each itemnumber is presented once right and is followed by the probe (congruent = 1) => each itemnumber is presented once right is is not followed by the probe (incongruent = 2) / items = ( 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2) / selectionmode = list.fearTarget_itemnumbers.currentindex ******************************************** sadTarget lists ******************************************** Note: the following list contains the 2 repetitions of the 16 itemnumber of the sadTarget stimuli the list randomly selects one itemnumber (without replacement) for sad trials (the same itemnumbers are used for comp stimuli) / items = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) / replace = false Note: the following list samples the left (1) or right (2) position of the sadTarget stimuli that is tied to the sampled itemnumber (by its list position index) => each item number is presented twice on the left and twice on the right) / items = ( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) / selectionmode = list.sadTarget_itemnumbers.currentindex Note: the following list samples the sadTarget and probe congruence that is tied to the sampled itemnumber (by its list position index) => each itemnumber is presented once left and is followed by the probe (congruent = 1) => each itemnumber is presented once left is is not followed by the probe (incongruent = 2) => each itemnumber is presented once right and is followed by the probe (congruent = 1) => each itemnumber is presented once right is is not followed by the probe (incongruent = 2) / items = ( 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2) / selectionmode = list.sadTarget_itemnumbers.currentindex ******************************************** neutTarget lists ******************************************** Note: the following list contains the 2 repetitions of the 16 itemnumber of the neutTarget stimuli the list randomly selects one itemnumber (without replacement) for neut trials (the same itemnumbers are used for comp stimuli) / items = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) / replace = false Note: the following list samples the left (1) or right (2) position of the neutTarget stimuli that is tied to the sampled itemnumber (by its list position index) => each item number is presented twice on the left and twice on the right) / items = ( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) / selectionmode = list.neutTarget_itemnumbers.currentindex Note: the following list samples the sadTarget and probe congruence that is tied to the sampled itemnumber (by its list position index) => each itemnumber is presented once left and is followed by the probe (congruent = 1) => each itemnumber is presented once left is is not followed by the probe (incongruent = 2) => each itemnumber is presented once right and is followed by the probe (congruent = 1) => each itemnumber is presented once right is is not followed by the probe (incongruent = 2) / items = ( 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2) / selectionmode = list.neutTarget_itemnumbers.currentindex ************************************************************************************************************** !!!REMAINING CODE: Customize after careful consideration only!!! ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** requires Inquisit 5.0.0.0 or higher / minimumversion = "5.0.0.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / txcolor = white / txbgcolor = black / screencolor = black / canvasaspectratio = (4,3) ******************************************************************************************************************* ******************************************************************************************************************* DATA ******************************************************************************************************************* ******************************************************************************************************************* for explanations of custom values, go to VALUES/EXPRESSIONS. Customize. ******************** raw data ******************** / separatefiles = true / file = "C:\Users\Partners\Desktop\dot probe data\dot probe raw" / columns = (build, computer.platform, date, time, subject, group, values.task, blockcode, blocknum, trialcode, trialnum, values.category, values.congruence, values.target_position, values.comp_x, values.target_x, values.probe_x, values.itemnumber, values.target_image, values.comp_image, response, latency, correct, values.valid, values.validcorrect) ******************** summary data ******************** / file = "C:\Users\Partners\Desktop\dot probe data\dot probe summary" / columns = (script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed, parameters.fixationduration, parameters.targetduration, parameters.probeduration, parameters.iti, parameters.minimum_latency, values.sumrt, values.sumcorrect expressions.propcorrect, expressions.meanrt, expressions.propcorrect_congruent_anger, expressions.meanrt_congruent_anger, expressions.propcorrect_incongruent_anger, expressions.meanrt_incongruent_anger, expressions.propcorrect_congruent_fear, expressions.meanrt_congruent_fear, expressions.propcorrect_incongruent_fear, expressions.meanrt_incongruent_fear, expressions.propcorrect_congruent_sad, expressions.meanrt_congruent_sad, expressions.propcorrect_incongruent_sad, expressions.meanrt_incongruent_sad, expressions.propcorrect_congruent_neut, expressions.meanrt_congruent_neut, expressions.propcorrect_incongruent_neut, expressions.meanrt_incongruent_neut, expressions.AB_anger, expressions.AB_fear, expressions.AB_sad, expressions.AB_neut) / separatefiles = true ******************************************************************************************************************* ******************************************************************************************************************* VALUES ******************************************************************************************************************* ******************************************************************************************************************* ******************** automatically updated ******************** /completed: 0 = script was not completed; 1 = script was completed (all conditions run) /category: 1 = Category1 (here: alcohol); 2 = category2 (here: filler) /itemnumber: itemnumber of currently selected picture /selecteditem: helper variable to determine itemnumber /target_x-probe_x: the x-coordinate (in %) of the target (e.g. alcohol)/ comp ('paired with target') /probe stims /comp_image: stores the currently presented comp ('paired with target') image /target_image: stores the currently presented target (e.g. alcohol) image /target_position: 1 = target (e.g. alcohol) image on left; 2 = target (e.g. alcohol) image on right /congruence: 1 = probe and target (e.g. alcohol) position same; 2 = probe and target (e.g. alcohol) position different /task: 1 = practice; 2 = test /valid: latency in ms that is >= parameters.minimum_latency /validcorrect: 1 = response was correct and latency was >= parameters.minimum_latency; 0 = otherwise Summary Variables: Note: * all latency/accuracy summary variables are based on correct responses with latencies >= parameters.minimum_latency (default: 100ms) /counttrials: counts all trials /sumcorrect: counts all correct responses >= parameters.minimum_latency (here: 100ms) /sumrt: sums up all latencies for correct responses >= parameters.minimum_latency (here: 100ms) /count_congruent_category1: counts all congruent Category1 (here: alcohol) trials /count_incongruent_category1: counts all incongruent Category1 (here: alcohol) trials /sumcorrect_congruent_category1: counts the correct responses to congruent trials for Category1 (here: alcohol) /sumcorrect_incongruent_category1: counts the correct responses to incongruent trials for Category1 (here: alcohol) /sumrt_congruent_category1: adds up the latencies for CORRECT responses in congruent trials for Category1 (here: alcohol) /sumrt_incongruent_category1: adds up the latencies for CORRECT responses in incongruent trials for Category1 (here: alcohol) /count_congruent_category2: counts all congruent Category2 (here: filler) trials /count_incongruent_category2: counts all incongruent Category2 (here: filler) trials /sumcorrect_congruent_category2: counts the correct responses to congruent trials for Category2 (here: filler) /sumcorrect_incongruent_category2: counts the correct responses to incongruent trials for Category2 (here: filler) /sumrt_congruent_category2: adds up the latencies for CORRECT responses in congruent trials for Category2 (here: filler) /sumrt_incongruent_category2: adds up the latencies for CORRECT responses in incongruent trials for Category2 (here: filler) / completed = 0 / category = 0 / itemnumber = 0 / selecteditem = "" / target_x = 0 / comp_x = 0 / probe_x = 0 / probe_y = 0 / comp_image = "" / target_image = "" / target_position = 0 / congruence = 0 / task = 0 / valid = "" / validcorrect = 0 / trialcount = 0 / sumcorrect = 0 / sumrt = 0 / count_congruent_anger = 0 / count_incongruent_anger = 0 / sumcorrect_congruent_anger = 0 / sumcorrect_incongruent_anger = 0 / sumrt_congruent_anger = 0 / sumrt_incongruent_anger = 0 / count_congruent_fear = 0 / count_incongruent_fear = 0 / sumcorrect_congruent_fear = 0 / sumcorrect_incongruent_fear = 0 / sumrt_congruent_fear = 0 / sumrt_incongruent_fear = 0 / count_congruent_sad = 0 / count_incongruent_sad = 0 / sumcorrect_congruent_sad = 0 / sumcorrect_incongruent_sad = 0 / sumrt_congruent_sad = 0 / sumrt_incongruent_sad = 0 / count_congruent_neut = 0 / count_incongruent_neut = 0 / sumcorrect_congruent_neut = 0 / sumcorrect_incongruent_neut = 0 / sumrt_congruent_neut = 0 / sumrt_incongruent_neut = 0 ******************************************************************************************************************* ******************************************************************************************************************* EXPRESSIONS ******************************************************************************************************************* ******************************************************************************************************************* NOTE: all latency/accuracy summary variables are based on correct responses with latencies >= parameters.minimum_latency (default: 100ms) /propcorrect: proportion correct overall /meanrt: overall mean latency /propcorrect_congruent_category1: proportion correct in congruent Category1 (here: alcohol) trials /propcorrect_incongruent_category1: proportion correct in incongruent Category1 (here: alcohol) trials /meanRT_congruent_category1: mean latency of congruent Category1 (here: alcohol) trials /meanRT_incongruent_category1: mean latency of incongruent Category1 (here: alcohol) trials /AB_category1: Attentional Bias for Category1 pics (here: alcohol): If AB_category1 > 0 => => faster mean latencies to congruent category1 trials (target and probe congruent)than incongruent ones /propcorrect_congruent_category2: proportion correct in congruent Category2 (here: filler) trials /propcorrect_incongruent_category2: proportion correct in incongruent Category2 (here: filler) trials /meanRT_congruent_category2: mean latency of congruent Category2 trials /meanRT_incongruent_category2: mean latency of incongruent Category2 trials /AB_category2: Attentional Bias for Category2 pics (here: filler): If AB_category2 > 0 => => faster mean latencies to congruent category2 trials (target and probe congruent)than incongruent ones / propcorrect = values.sumcorrect/values.trialcount / meanrt = values.sumrt/values.sumcorrect / propcorrect_congruent_anger = values.sumcorrect_congruent_anger/values.count_congruent_anger / propcorrect_incongruent_anger = values.sumcorrect_incongruent_anger/values.count_incongruent_anger / meanRT_congruent_anger = values.sumrt_congruent_anger/values.sumcorrect_congruent_anger / meanRT_incongruent_anger = values.sumrt_incongruent_anger/values.sumcorrect_incongruent_anger / AB_anger = expressions.meanRT_incongruent_anger - expressions.meanRT_congruent_anger / propcorrect_congruent_fear = values.sumcorrect_congruent_fear/values.count_congruent_fear / propcorrect_incongruent_fear = values.sumcorrect_incongruent_fear/values.count_incongruent_fear / meanRT_congruent_fear = values.sumrt_congruent_fear/values.sumcorrect_congruent_fear / meanRT_incongruent_fear = values.sumrt_incongruent_fear/values.sumcorrect_incongruent_fear / AB_fear = expressions.meanRT_incongruent_fear - expressions.meanRT_congruent_fear / propcorrect_congruent_sad = values.sumcorrect_congruent_sad/values.count_congruent_sad / propcorrect_incongruent_sad = values.sumcorrect_incongruent_sad/values.count_incongruent_sad / meanRT_congruent_sad = values.sumrt_congruent_sad/values.sumcorrect_congruent_sad / meanRT_incongruent_sad = values.sumrt_incongruent_sad/values.sumcorrect_incongruent_sad / AB_sad = expressions.meanRT_incongruent_sad - expressions.meanRT_congruent_sad / propcorrect_congruent_neut = values.sumcorrect_congruent_neut/values.count_congruent_neut / propcorrect_incongruent_neut = values.sumcorrect_incongruent_neut/values.count_incongruent_neut / meanRT_congruent_neut = values.sumrt_congruent_neut/values.sumcorrect_congruent_neut / meanRT_incongruent_neut = values.sumrt_incongruent_neut/values.sumcorrect_incongruent_neut / AB_neut = expressions.meanRT_incongruent_neut - expressions.meanRT_congruent_neut / propcorrect2 = list.accuracy.mean / meanrt2 = list.latencies.mean / propcorrect_congruent_anger = list.accuracy_anger_C.mean / propcorrect_incongruent_anger = list.accuracy_anger_IC.mean / meanRT_congruent_anger = list.latencies_anger_C.mean / meanRT_incongruent_anger = list.latencies_anger_IC.mean / propcorrect_congruent_fear = list.accuracy_fear_C.mean / propcorrect_incongruent_fear = list.accuracy_fear_IC.mean / meanRT_congruent_fear = list.latencies_fear_C.mean / meanRT_incongruent_fear = list.latencies_fear.mean / propcorrect_congruent_sad = list.accuracy_sad_C.mean / propcorrect_incongruent_sad = list.accuracy_sad_IC.mean / meanRT_congruent_sad = list.latencies_sad_C.mean / meanRT_incongruent_sad = list.latencies_sad.mean / propcorrect_congruent_neut = list.accuracy_neut_C.mean / propcorrect_incongruent_neut = list.accuracy_neut_IC.mean / meanRT_congruent_neut = list.latencies_neut_C.mean / meanRT_incongruent_neut = list.latencies_neut.mean ******************************************************************************************************************* ******************************************************************************************************************* STIMULI ******************************************************************************************************************* ******************************************************************************************************************* / items = angerTarget_images / select = values.itemnumber / hposition = values.Target_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) / items = angerComp_images / select = values.itemnumber / hposition = values.Comp_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) / items = fearTarget_images / select = values.itemnumber / hposition = values.Target_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) / items = fearComp_images / select = values.itemnumber / hposition = values.Comp_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) /items = sadTarget_images / select = values.itemnumber / hposition = values.Target_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) / items = sadComp_images / select = values.itemnumber / hposition = values.Comp_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) / items = neutTarget_images / select = values.itemnumber / hposition = values.Target_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) / items = neutComp_images / select = values.itemnumber / hposition = values.Comp_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) / items = PracticeTargets / select = noreplace / hposition = values.Target_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) / items = PracticeComps / select = picture.PracticeTarget.currentitemnumber / hposition = values.Comp_x / vposition = parameters.target_y / size = (parameters.imageheight, parameters.imageheight) ****************************** other stimuli ****************************** / items = ("+") / position = (50%, 50%) / fontstyle = ("Arial", parameters.fixationcross_height, false, false, false, false, 5, 1) / erase = false / items = ("<%parameters.probe%>") / hposition = values.probe_x / vposition = parameters.target_y / txcolor = white / fontstyle = ("Arial", parameters.probe_height, false, false, false, false, 5, 1) / erase = false / shape = rectangle / size = (100%, 100%) / color = black / position = (50%, 50%) / erase = false / items = ("ERROR") / txcolor = red / position = (50%, 50%) / fontstyle = ("Arial", 10%, true, false, false, false, 5, 1) ******************************************************************************************************************* ******************************************************************************************************************* PRACTICE TRIALS ******************************************************************************************************************* ******************************************************************************************************************* *************************************************************************** Lists that control the position of the emotion face and the probe for practice *************************************************************************** Note: selects randomly with replacement the position (1=left, 2 = right) of the emotion face for practice trials / items = (1, 2) / replace = true Note: selects randomly without replacement the probe position (1=left, 2 = right) for 8 practice trials / items = (1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2) / replace = false / ontrialbegin = [ values.category = "Practice"; values.target_position = list.PracticeTarget_positions.nextvalue; values.congruence = list.PracticeTargetprobe_congruence.nextvalue; if (values.target_position == 1) { values.target_x = parameters.target_left_x; values.comp_x = parameters.target_right_x; } else { values.target_x = parameters.target_right_x; values.comp_x = parameters.target_left_x; }; if (values.congruence == 1) { values.probe_x = values.target_x; } else { values.probe_x = values.comp_x; }; trial.Practice.insertstimulustime(shape.eraser, parameters.fixationduration); trial.Practice.insertstimulustime(picture.PracticeTarget, parameters.fixationduration); trial.Practice.insertstimulustime(picture.PracticeComp, parameters.fixationduration); trial.Practice.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration)); trial.Practice.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration + parameters.TP_ISI)); ] / stimulusframes = [1 = fixation] / beginresponsetime = parameters.fixationduration + parameters.targetduration + parameters.TP_ISI / responseinterrupt = immediate / validresponse = (parameters.responsekey_left, parameters.responsekey_right) / iscorrectresponse = [(values.probe_x == parameters.target_left_x && trial.Practice.response == parameters.responsekey_left) || (values.probe_x == parameters.target_right_x && trial.Practice.response == parameters.responsekey_right)] / ontrialend = [ values.target_image = picture.PracticeTarget.currentitem; values.comp_image = picture.PracticeComp.currentitem; trial.Practice.resetstimulusframes(); ] / timeout = (parameters.fixationduration + parameters.targetduration + parameters.tp_isi + parameters.probeduration) / posttrialpause = parameters.iti ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* ************************************************************************************************************** ************************************************************************************************************** TRIALS ************************************************************************************************************** ************************************************************************************************************** Note: trial.category1 * samples the next target itemnumber, its location on the screen, and its probe congruence * selects the appropriate screen coordinates for target, comp, probe * presents fixation cross for parameters.fixationduration * presents the images for parameters.targetduration * presents the probe for parameters.probeduration * starts collecting responses at onset of probe * terminates trial with positive response * updates summary variables / ontrialbegin = [ values.valid = 0; values.validcorrect = 0; values.trialcount += 1; values.category="anger"; values.itemnumber = list.angerTarget_itemnumbers.nextvalue; values.target_position = list.angerTarget_positions.nextvalue; values.congruence = list.angerTargetprobe_congruence.nextvalue; if (values.target_position == 1) { values.target_x = parameters.target_left_x; values.comp_x = parameters.target_right_x; } else { values.target_x = parameters.target_right_x; values.comp_x = parameters.target_left_x; }; if (values.congruence == 1) { values.probe_x = values.target_x; values.count_congruent_anger += 1; } else { values.probe_x = values.comp_x; values.count_incongruent_anger += 1; }; trial.anger.insertstimulustime(shape.eraser, parameters.fixationduration); trial.anger.insertstimulustime(picture.angerTarget, parameters.fixationduration); trial.anger.insertstimulustime(picture.angerComp, parameters.fixationduration); trial.anger.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration)); trial.anger.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration + parameters.tp_isi)); ] / stimulusframes = [1 = fixation] / beginresponsetime = parameters.fixationduration + parameters.targetduration + parameters.tp_isi / responseinterrupt = immediate / validresponse = (parameters.responsekey_left, parameters.responsekey_right) / iscorrectresponse = [(values.probe_x == parameters.target_left_x && trial.anger.response == parameters.responsekey_left) || (values.probe_x == parameters.target_right_x && trial.anger.response == parameters.responsekey_right)] / ontrialend = [ trial.anger.resetstimulusframes(); values.target_image = picture.angerTarget.currentitem; values.comp_image = picture.angerComp.currentitem; if (trial.anger.latency >= parameters.minimum_latency) values.valid = 1; if (values.valid == 1) { if (trial.anger.correct) { values.validcorrect = 1; values.sumcorrect += 1; values.sumrt += trial.anger.latency; if (values.congruence == 1) { values.sumcorrect_congruent_anger += 1; values.sumrt_congruent_anger += trial.anger.latency; list.latencies_anger_C.insertitem(trial.anger.latency, 1); list.latencies.insertitem(trial.anger.latency, 1); } else { values.sumcorrect_incongruent_anger += 1; values.sumrt_incongruent_anger += trial.anger.latency; list.latencies_anger_IC.insertitem(trial.anger.latency, 1); list.latencies.insertitem(trial.anger.latency, 1); } } } ; list.accuracy.insertitem(values.validcorrect, 1); if (values.congruence == 1) { list.accuracy_anger_C.insertitem(values.validcorrect, 1); } else { list.accuracy_anger_IC.insertitem(values.validcorrect, 1); }; ] / timeout = (parameters.fixationduration + parameters.targetduration + parameters.tp_isi + parameters.probeduration) / posttrialpause = parameters.iti / ontrialbegin = [ values.valid = 0; values.validcorrect = 0; values.trialcount += 1; values.category="fear"; values.itemnumber = list.fearTarget_itemnumbers.nextvalue; values.target_position = list.fearTarget_positions.nextvalue; values.congruence = list.fearTargetprobe_congruence.nextvalue; if (values.target_position == 1) { values.target_x = parameters.target_left_x; values.comp_x = parameters.target_right_x; } else { values.target_x = parameters.target_right_x; values.comp_x = parameters.target_left_x; }; if (values.congruence == 1) { values.probe_x = values.target_x; values.count_congruent_fear += 1; } else { values.probe_x = values.comp_x; values.count_incongruent_fear += 1; }; trial.fear.insertstimulustime(shape.eraser, parameters.fixationduration); trial.fear.insertstimulustime(picture.fearTarget, parameters.fixationduration); trial.fear.insertstimulustime(picture.fearComp, parameters.fixationduration); trial.fear.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration)); trial.fear.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration + parameters.tp_isi)); ] / stimulusframes = [1 = fixation] / beginresponsetime = parameters.fixationduration + parameters.targetduration + parameters.tp_isi / responseinterrupt = immediate / validresponse = (parameters.responsekey_left, parameters.responsekey_right) / iscorrectresponse = [(values.probe_x == parameters.target_left_x && trial.fear.response == parameters.responsekey_left) || (values.probe_x == parameters.target_right_x && trial.fear.response == parameters.responsekey_right)] / ontrialend = [ trial.fear.resetstimulusframes(); values.target_image = picture.fearTarget.currentitem; values.comp_image = picture.fearComp.currentitem; if (trial.fear.latency >= parameters.minimum_latency) values.valid = 1; if (values.valid == 1) { if (trial.fear.correct) { values.validcorrect = 1; values.sumcorrect += 1; values.sumrt += trial.fear.latency; if (values.congruence == 1) { values.sumcorrect_congruent_fear += 1; values.sumrt_congruent_fear += trial.fear.latency; list.latencies_fear_C.insertitem(trial.fear.latency, 1); list.latencies.insertitem(trial.fear.latency, 1); } else { values.sumcorrect_incongruent_fear += 1; values.sumrt_incongruent_fear += trial.fear.latency; list.latencies_fear_IC.insertitem(trial.fear.latency, 1); list.latencies.insertitem(trial.fear.latency, 1); } } } ; list.accuracy.insertitem(values.validcorrect, 1); if (values.congruence == 1) { list.accuracy_fear_C.insertitem(values.validcorrect, 1); } else { list.accuracy_fear_IC.insertitem(values.validcorrect, 1); }; ] / timeout = (parameters.fixationduration + parameters.targetduration + parameters.tp_isi + parameters.probeduration) / posttrialpause = parameters.iti / ontrialbegin = [ values.valid = 0; values.validcorrect = 0; values.trialcount += 1; values.category="sad"; values.itemnumber = list.sadTarget_itemnumbers.nextvalue; values.target_position = list.sadTarget_positions.nextvalue; values.congruence = list.sadTargetprobe_congruence.nextvalue; if (values.target_position == 1) { values.target_x = parameters.target_left_x; values.comp_x = parameters.target_right_x; } else { values.target_x = parameters.target_right_x; values.comp_x = parameters.target_left_x; }; if (values.congruence == 1) { values.probe_x = values.target_x; values.count_congruent_sad += 1; } else { values.probe_x = values.comp_x; values.count_incongruent_sad += 1; }; trial.sad.insertstimulustime(shape.eraser, parameters.fixationduration); trial.sad.insertstimulustime(picture.sadTarget, parameters.fixationduration); trial.sad.insertstimulustime(picture.sadComp, parameters.fixationduration); trial.sad.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration)); trial.sad.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration + parameters.tp_isi)); ] / stimulusframes = [1 = fixation] / beginresponsetime = parameters.fixationduration + parameters.targetduration + parameters.tp_isi / responseinterrupt = immediate / validresponse = (parameters.responsekey_left, parameters.responsekey_right) / iscorrectresponse = [(values.probe_x == parameters.target_left_x && trial.sad.response == parameters.responsekey_left) || (values.probe_x == parameters.target_right_x && trial.sad.response == parameters.responsekey_right)] / ontrialend = [ trial.sad.resetstimulusframes(); values.target_image = picture.sadTarget.currentitem; values.comp_image = picture.sadComp.currentitem; if (trial.sad.latency >= parameters.minimum_latency) values.valid = 1; if (values.valid == 1) { if (trial.sad.correct) { values.validcorrect = 1; values.sumcorrect += 1; values.sumrt += trial.sad.latency; if (values.congruence == 1) { values.sumcorrect_congruent_sad += 1; values.sumrt_congruent_sad += trial.sad.latency; list.latencies_sad_C.insertitem(trial.sad.latency, 1); list.latencies.insertitem(trial.sad.latency, 1); } else { values.sumcorrect_incongruent_sad += 1; values.sumrt_incongruent_sad += trial.sad.latency; list.latencies_sad_IC.insertitem(trial.sad.latency, 1); list.latencies.insertitem(trial.sad.latency, 1); } } } ; list.accuracy.insertitem(values.validcorrect, 1); if (values.congruence == 1) { list.accuracy_sad_C.insertitem(values.validcorrect, 1); } else { list.accuracy_sad_IC.insertitem(values.validcorrect, 1); }; ] / timeout = (parameters.fixationduration + parameters.targetduration + parameters.tp_isi + parameters.probeduration) / posttrialpause = parameters.iti / ontrialbegin = [ values.valid = 0; values.validcorrect = 0; values.trialcount += 1; values.category="neut"; values.itemnumber = list.neutTarget_itemnumbers.nextvalue; values.target_position = list.neutTarget_positions.nextvalue; values.congruence = list.neutTargetprobe_congruence.nextvalue; if (values.target_position == 1) { values.target_x = parameters.target_left_x; values.comp_x = parameters.target_right_x; } else { values.target_x = parameters.target_right_x; values.comp_x = parameters.target_left_x; }; if (values.congruence == 1) { values.probe_x = values.target_x; values.count_congruent_neut += 1; } else { values.probe_x = values.comp_x; values.count_incongruent_neut += 1; }; trial.neut.insertstimulustime(shape.eraser, parameters.fixationduration); trial.neut.insertstimulustime(picture.neutTarget, parameters.fixationduration); trial.neut.insertstimulustime(picture.neutComp, parameters.fixationduration); trial.neut.insertstimulustime(shape.eraser, (parameters.fixationduration + parameters.targetduration)); trial.neut.insertstimulustime(text.probe, (parameters.fixationduration + parameters.targetduration + parameters.tp_isi)); ] / stimulusframes = [1 = fixation] / beginresponsetime = parameters.fixationduration + parameters.targetduration + parameters.tp_isi / responseinterrupt = immediate / validresponse = (parameters.responsekey_left, parameters.responsekey_right) / iscorrectresponse = [(values.probe_x == parameters.target_left_x && trial.neut.response == parameters.responsekey_left) || (values.probe_x == parameters.target_right_x && trial.neut.response == parameters.responsekey_right)] / ontrialend = [ trial.neut.resetstimulusframes(); values.target_image = picture.neutTarget.currentitem; values.comp_image = picture.neutComp.currentitem; if (trial.neut.latency >= parameters.minimum_latency) values.valid = 1; if (values.valid == 1) { if (trial.neut.correct) { values.validcorrect = 1; values.sumcorrect += 1; values.sumrt += trial.neut.latency; if (values.congruence == 1) { values.sumcorrect_congruent_neut += 1; values.sumrt_congruent_neut += trial.neut.latency; list.latencies_neut_C.insertitem(trial.neut.latency, 1); list.latencies.insertitem(trial.neut.latency, 1); } else { values.sumcorrect_incongruent_neut += 1; values.sumrt_incongruent_neut += trial.neut.latency; list.latencies_neut_IC.insertitem(trial.neut.latency, 1); list.latencies.insertitem(trial.neut.latency, 1); } } } ; list.accuracy.insertitem(values.validcorrect, 1); if (values.congruence == 1) { list.accuracy_neut_C.insertitem(values.validcorrect, 1); } else { list.accuracy_neut_IC.insertitem(values.validcorrect, 1); }; ] / timeout = (parameters.fixationduration + parameters.targetduration + parameters.tp_isi + parameters.probeduration) / posttrialpause = parameters.iti ******************************************************************************************************************* ******************************************************************************************************************* BLOCKS ******************************************************************************************************************* ******************************************************************************************************************* Note: * presents 16 practice trials (order is random) / onblockbegin = [values.task = 1] / postinstructions = (practice) / trials = [1-16 = practice] / errormessage = true(feedback, 500) Note: presents 164 trials (trial order is determined randomly) / onblockbegin = [values.task = 2] / trials = [1-164 = noreplace(anger, fear, sad, neut)] ******************************************************************************************************************* ******************************************************************************************************************* EXPERIMENT ******************************************************************************************************************* ******************************************************************************************************************* / preinstructions = (instructions) / postinstructions = (thankyou) / blocks = [1 = Practice; 2 = ImageDotProbeTask] / onexptend = [values.completed = 1] Note: debug element / latencydistribution = normal(300, 50) ******************************************************************************************************************* End of File *******************************************************************************************************************