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