***************GNAT Demonstration Program*********************
**********************Brian Nosek*****************************
*******************nosek@virginia.edu*************************
**********************10/29/2000******************************

Note: This task is for demonstration purposes only.  Using the GNAT for research 
requires intentional decisions about numerous design parameters.  Discussion of 
some of those parameters can be found in Nosek and Banaji (2001; Social Cognition).
This example is a minimalist example and is not designed to maximize reliability, it
only demonstrates the core properties of the task.

Also, note that the coding for distractor trials (no response) results in Inquisit 
marking errors (hitting the space bar) as 'correct' and correct responses (not hitting 
the space bar) as 'errors'.  This is a consequence of ensuring accurate feedback to the 
user, but should be recognized for data analysis.

<defaults>
/ font = ("Arial", -37, 700, 0, 34) 
/ txbgcolor = (0, 0, 0) 
/ screencolor = (0, 0, 0)
/ validkeys = (" ") 
/ pretrialpause = 0 
/ posttrialpause = 500 
</defaults>

<data>
/ columns = [date time build subject trialcode blocknum trialnum latency response correct stimulusitem blockcode]
/ format = TAB 
</data>

<text speedup>
/ items = ("The next set of blocks is faster than the last.  Get ready!")
/ position = (50, 75) 
/ color = (255, 255, 255) 
/ font = ("Arial", -26, 700, 0, 34) 
/ numitems = 1
</text>

<text remind>
/ items = ("New categories - Press space bar for practice trials")
/ position = (50, 75) 
/ color = (255, 255, 255) 
/ font = ("Arial", -26, 700, 0, 34) 
/ numitems = 1
</text>

<text pause>
/ items = ("Ready? - Press space bar to begin")
/ position = (50, 75) 
/ color = (255, 255, 255) 
/ font = ("Arial", -26, 700, 0, 34) 
/ numitems = 1 
</text>

<text Bugbackground>
/ numitems = 24 
/ items = Bugbackground 
/ font = ("Arial", -37, 700, 0, 34) 
/ color = (255, 255, 255) 
</text>

<item Bugbackground>
/1 = "fish"  
/2 = "shark" 
/3 = "trout"
/4 = "penguin" 
/5 = "sparrow"
/6 = "eagle" 
/7 = "snake"
/8 = "alligator" 
/9 = "dog"
/10 = "horse" 
/11 = "antelope"
/12 = "raccoon" 
/13 = "rabbit"
/14 = "monkey" 
/15 = "wolf"
/16 = "ostrich" 
/17 = "salamander"
/18 = "groundhog" 
/19 = "pig"
/20 = "whale" 
/21 = "octopus"
/22 = "giraffe" 
/23 = "lizard"
/24 = "mouse" 
</item>

<text Fruitbackground>
/ numitems = 24 
/ items = fruitbackground 
/ font = ("Arial", -37, 700, 0, 34) 
/ color = (255, 255, 255) 
</text>

<item fruitbackground>
/1 = "steak"
/2 = "lasagne"
/3 = "peas"
/4 = "almonds"
/5 = "butter"
/6 = "salt"
/7 = "gravy"
/8 = "herbs"
/9 = "paprika"
/10 = "oregano"
/11 = "parsley"
/12 = "yams"
/13 = "beef"
/14 = "chicken"
/15 = "broccoli"
/16 = "cheesecake"
/17 = "spaghetti"
/18 = "turnip"
/19 = "mozzarella"
/20 = "peanuts"
/21 = "pudding"
/22 = "pizza"
/23 = "rice"
/24 = "potato"
</item>

<text bugs>
/ numitems = 24 
/ items = bugs 
/ font = ("Arial", -37, 700, 0, 34) 
/ color = (255, 255, 255) 
</text>

<item bugs>
/1 = "gnat"
/2 = "bugs"
/3 = "insect"
/4 = "ants"
/5 = "bees"
/6 = "mosquito"
/7 = "spider"
/8 = "beetle"
/9 = "roach"
/10 = "wasp"
/11 = "grasshopper"
/12 = "aphid"
/13 = "flea"
/14 = "cockroach"
/15 = "cricket"
/16 = "caterpillar"
/17 = "tick"
/18 = "centipede"
/19 = "moth"
/20 = "termite"
/21 = "dragonfly"
/22 = "maggot"
/23 = "stinkbug"
/24 = "hornet"
</item>

<text fruit>
/ numitems = 24 
/ items = fruit 
/ font = ("Arial", -37, 700, 0, 34) 
/ color = (255, 255, 255) 
</text>

<item fruit>
/1 = "fruit"
/2 = "apple"
/3 = "orange"
/4 = "pear"
/5 = "banana"
/6 = "peach"
/7 = "grape"
/8 = "cherry"
/9 = "plum"
/10 = "grapefruit"
/11 = "lemon"
/12 = "tangerine"	
/13 = "apricot"
/14 = "pineapple"
/15 = "lime"
/16 = "strawberry"
/17 = "watermelon"
/18 = "raspberry"
/19 = "blueberry"
/20 = "mango"	
/21 = "nectarine"
/22 = "berry"
/23 = "melon"
/24 = "cantaloupe"
</item>

<text good>
/ numitems = 24 
/ items = good 
/ font = ("Arial", -37, 700, 0, 34) 
/color = (0, 255, 255) 
</text>

<item good>
/1 = "celebrating"
/2 = "pleasure"
/3 = "happy"
/4 = "friendly"
/5 = "joyful"
/6 = "loving"
/7 = "beautiful"
/8 = "smiling"
/9 = "glee"
/10 = "glad"
/11 = "glorious"
/12 = "excitement"
/13 = "wonderful"
/14 = "triumph"
/15 = "good"
/16 = "excellent"
/17 = "fabulous"
/18 = "superb"
/19 = "marvelous"
/20 = "splendid"
/21 = "laughing"
/22 = "cheerful"
/23 = "terrific"
/24 = "likable"
</item>

<text bad>
/ numitems = 24 
/ items = bad 
/ font = ("Arial", -37, 700, 0, 34) 
/ color = (0, 255, 255) 
</text>

<item bad>
/1 = "horrible"
/2 = "angry"
/3 = "terrible"
/4 = "noxious"
/5 = "tragic"
/6 = "unpleasant"
/7 = "hate"
/8 = "destroy"
/9 = "brutal"
/10 = "bad"
/11 = "evil"
/12 = "humiliate"
/13 = "disaster"
/14 = "nasty"
/15 = "gross"
/16 = "painful"
/17 = "yucky"
/18 = "ugly"
/19 = "dirty"
/20 = "dislike"
/21 = "awful"
/22 = "disgusting"
/23 = "revolting"
/24 = "sickening"
</item>

********************* Reminder Stimuli *********************

<text bugsremind>
/ numitems = 1 
/ items = ("bugs") 
/ color = (255, 255, 255) 
/ position = (30,15) 
</text>

<text fruitremind>
/ numitems = 1 
/ items = ("fruit") 
/ color = (255, 255, 255) 
/ position = (30,15) 
</text>

<text goodremind>
/ numitems = 1 
/ items = ("good") 
/ color = (0, 255, 255) 
/ position = (70,15) 
</text>

<text badremind>
/ numitems = 1 
/ items = ("bad") 
/ color = (0, 255, 255) 
/ position = (70, 15) 
</text>

<text error>
/ numitems = 1 
/ items = ("X") 
/ position = (50,65) 
/ color = (255, 0, 0) 
</text>

<text correctresp>
/ numitems = 1 
/ items = ("O") 
/ position = (50,65) 
/ color = (0, 255, 0) 
</text>

*************************** Instructions *******************

<instruct>
/ nextkey = (" ") 
/ prevkey = ("a") 
/ nextlabel = "Space Bar to Continue"
/ prevlabel = "a" 
/ wait = 1000 
/ font = ("Arial", -19, 700, 0, 34) 
</instruct>

<page begin>
Thank you for your interest in the Go/No-go Association Task. Please read the instructions carefully 
before proceeding with the demonstration task.^^
Our research investigates cognitive processes that are used in decisions 
that involve memory. We are seeking to develop and test theories of the cognitive processes 
that occur outside of awareness in the routine use of memory. Stimuli for the category 
task will be presented on this display screen, and your responses will be entered on the keyboard.  
You will have an opportunity to practice at the task before your responses are recorded by 
the computer.
</page>

<page begin2>
This work assumes that you can read English fluently, and that your vision is normal or corrected 
to normal. ^^The tasks that you will be doing in this experiment involve category judgment. For 
instance, in one condition your task may be to search for all the words that represent the 
categories 'good' (e.g., happy, celebrate) or the category 'bugs' (e.g., mosquito, termite).^^
All categorizations will be made with the space bar.  When you see a word that 
belongs to the categories (e.g., good and bugs) hit the space bar as fast 
as possible. Ignore words that do not belong to either category.^^  
</page>

<page begin3>
The words you will be looking for will be from the 4 groups listed below.^^
Fruit (blue letters): apple, orange, mango, nectarine, pear, ...^
Bugs (blue letters): aphid, ants, bees, wasp, maggot, ...^^
Good (white letters): happy, joyful, pleased, celebrating, glee, ...^
Bad (white letters): awful, terrible, nasty, dislike, noxious, ...^^
All 'good' and 'bad' items are descriptive (adjectives or adverbs), while 'fruit' and 'bugs' 
are all objects (nouns).  The color coding of the words is there to help distinguish between 
the evaluative (good and bad) words and the object categories.
</page>

<page begin4>
The task will get faster and harder as you get further along. In fact, you may at 
times find it very difficult to correctly classify ANY of the trials. Do not despair.  
This task is designed to be difficult and no one is expected to perform it perfectly.  
Please persevere and just try to catch as many words as possible.^^
You will have an opportunity to practice each new set before the task begins.^^
Hit the space bar when you are ready to begin.
</page>

<page end>
Thank you!^^
If you have any questions about the procedure of the GNAT please contact Brian Nosek 
(Brian.Nosek@yale.edu; http://kirtland13.eng.yale.edu).
</page>


<trial bugs_true1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450) 
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=bugs] 
</trial>

<trial fruit_true1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=fruit] 
</trial>

<trial good_true1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=good] 
</trial>

<trial bad_true1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=bad] 
</trial>

<trial bugs_true600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=bugs] 
</trial>

<trial fruit_true600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=fruit] 
</trial>

<trial good_true600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=good] 
</trial>

<trial bad_true600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450) 
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=bad] 
</trial>

<trial bugs_true750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=bugs] 
</trial>

<trial fruit_true750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=fruit] 
</trial>

<trial good_true750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=good] 
</trial>

<trial bad_true750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(error, 450)
/ correctmessage = true(correctresp, 250) 
/ numframes = 1 
/ frames = [1=bad] 
</trial>

<trial fruit_false1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=fruit] 
</trial>

<trial bugs_false1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bugs] 
</trial>

<trial good_false1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=good] 
</trial>

<trial bugbackground_false1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bugbackground] 
</trial>

<trial fruitbackground_false1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=fruitbackground] 
</trial>

<trial bad_false1000>
/ responsemode = timeout(1000) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bad] 
</trial>

<trial bugs_false600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bugs] 
</trial>

<trial fruit_false600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=fruit] 
</trial>

<trial good_false600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=good] 
</trial>

<trial bad_false600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bad] 
</trial>

<trial bugbackground_false600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bugbackground] 
</trial>

<trial bugbackground_false750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bugbackground] 
</trial>

<trial fruitbackground_false600>
/ responsemode = timeout(600) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=fruitbackground] 
</trial>

<trial fruitbackground_false750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=fruitbackground] 
</trial>

<trial bugs_false750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bugs] 
</trial>

<trial fruit_false750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=fruit] 
</trial>

<trial good_false750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=good] 
</trial>

<trial bad_false750>
/ responsemode = timeout(750) 
/ correctresponse = (" ") 
/ errormessage = true(correctresp, 450)
/ correctmessage = true(error, 250) 
/ numframes = 1 
/ frames = [1=bad] 
</trial>

<trial reminder>
/ correctresponse = (" ") 
/ frames = [1=remind] 
/ responsemode = correct 
</trial> 

<trial speedup>
/ correctresponse = (" ") 
/ frames = [1=speedup] 
/ responsemode = correct 
</trial> 

<trial pause>
/ correctresponse = (" ") 
/ frames = [1=pause] 
/ responsemode = correct 
</trial> 

<block speedup>
/ trials = [1 = speedup] 
</block>

<block goodRT1000>
/ bgstim = (goodremind)
/ trials = [2-21 = random(good_true1000, bad_false1000); 1 = reminder] 
</block>

<block badRT1000>
/ bgstim = (badremind)
/ trials = [2-21 = random(bad_true1000, good_false1000); 1 = reminder] 
</block>

<block bugsRT1000>
/ bgstim = (bugsremind)
/ trials = [2-21 = random(bugs_true1000, bugbackground_false1000); 1 = reminder] 
</block>

<block fruitRT1000>
/ bgstim = (fruitremind)
/ trials = [2-21 = random(fruit_true1000, fruitbackground_false1000); 1 = reminder] 
</block>

<block fruitgoodRT600>
/ bgstim = (fruitremind, goodremind)
/ trials = [2-17 = random(fruit_true600, fruitbackground_false600, good_true600, bad_false600);
            1 = reminder;18 = pause;
            19-78 = random(fruit_true600, fruitbackground_false600, good_true600, bad_false600)] 
</block>

<block fruitbadRT600>
/ bgstim = (fruitremind, badremind)
/ trials = [2-17 = random(fruit_true600, fruitbackground_false600, good_false600, bad_true600);
            1 = reminder;18 = pause;
            19-78 = random(fruit_true600, fruitbackground_false600, good_false600, bad_true600)] 
</block>

<block bugsgoodRT600>
/ bgstim = (bugsremind, goodremind)
/ trials = [2-17 = random(bugs_true600, bugbackground_false600, good_true600, bad_false600);
            1 = reminder;18 = pause;
            19-78 = random(bugs_true600, bugbackground_false600, good_true600, bad_false600)] 
</block>

<block bugsbadRT600>
/ bgstim = (bugsremind, badremind)
/ trials = [2-17 = random(bugs_true600,, bugbackground_false600, good_false600, bad_true600);
            1 = reminder;18 = pause;
            19-78 = random(bugs_true600, bugbackground_false600, good_false600, bad_true600)] 
</block>

<block fruitgoodRT750>
/ bgstim = (fruitremind, goodremind)
/ trials = [2-17 = random(fruit_true750, fruitbackground_false750, good_true750, bad_false750);
            1 = reminder;18 = pause;
            19-78 = random(fruit_true750, fruitbackground_false750, good_true750, bad_false750)] 
</block>

<block fruitbadRT750>
/ bgstim = (fruitremind, badremind)
/ trials = [2-17 = random(fruit_true750, fruitbackground_false750, good_false750, bad_true750);
            1 = reminder;18 = pause;
            19-78 = random(fruit_true750, fruitbackground_false750, good_false750, bad_true750)] 
</block>

<block bugsgoodRT750>
/ bgstim = (bugsremind, goodremind)
/ trials = [2-17 = random(bugs_true750, bugbackground_false750, good_true750, bad_false750);
            1 = reminder;18 = pause;
            19-78 = random(bugs_true750, bugbackground_false750, good_true750, bad_false750)] 
</block>

<block bugsbadRT750>
/ bgstim = (bugsremind, badremind)
/ trials = [2-17 = random(bugs_true750, bugbackground_false750, good_false750, bad_true750);
            1 = reminder;18 = pause;
            19-78 = random(bugs_true750, bugbackground_false750, good_false750, bad_true750)] 
</block>

************************** Experimental Code ************************

<expt>
/ preinstructions = (begin, begin2, begin3, begin4)
/ blocks = [1-4   = random (goodRT1000, badRT1000, bugsRT1000, fruitRT1000); 
            5-8   = random(fruitgoodRT750, fruitbadRT750, bugsgoodRT750, bugsbadRT750);
            9      = speedup;
            10-13 = random(fruitgoodRT600, fruitbadRT600, bugsgoodRT600, bugsbadRT600)]
/ postinstructions = (end)
</expt>
