Emotional Stroop


Author
Message
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 102K
Dave - 7/30/2024
Dave - 7/30/2024
Igor Iarrobino - 7/30/2024
Dave - 7/29/2024
Igor Iarrobino - 7/29/2024
Dave - 7/26/2024
Igor Iarrobino - 7/26/2024
Dave - 7/22/2024
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Hi Dave,

It seems it's working everything properly and I thank you very much for your kindness and your helpfulness.

Actually, I would try to study the user manual, but when they give you 4 scripts  to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly.
And I'm sorry for that.

I would have a new question, an advice/clue/hint.
I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics:
  1. stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
  2. and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D

Thank you in advance.
Have a nice weekend.

You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done.
Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htm
Videos stop upon response by default.
Dear Dave,

thank you for your answer and tips.

I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!
But I won't bother you about my work stress anymore.

If you can suggest a script to be easily modified, I would be extremely glad!
Otherwise, I thank you a lot again for your help so far.

Have a nice day


You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need.

Hello Dave,

I found something to modify and I did it.
Actually, I have some problems, as always.

I just explain a bit the idea. The script was a simple reaction time task. I have to make a more complex task, with more blocks and practices, but with the same response phylosophy as reactiontimes: I just need the latency measures of the responses to the stimuli.
Stimuli are videos of morphed emotional faces of 3 kinds.

I modified the script this way:
Now I have 3 test blocks allegedly linked to 3 practice blocks and randomized as in the stroop, if you rememeber.
Could you check this before please? Thank you.

Then, I tried to insert a list of stimuli for each block to be run in random order.
Could you check also this please? Thank you.

At last, I have problems with response buttons (in the script they were two assigned but just one working; I left it like this, just changing the names): the issue is thatSt everytime a try to respond the script exit/crash.
Could you check also this please? Thank you.

If the last problem is solved, and the other two checks are ok, maybe I'm close to the end of this coding!
Finger crossed!!

Here you can find attached the script modified, and the link to the stimuli in a zip folder as follows (it was too big to upload the folder):

 https://drive.google.com/file/d/10IcobiN9nUpEEys0ngde8Ba6kg56a_N3/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                        EMOTIONAL MORPHING                                 
___________________________________________________________________________________________________________________    

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024.

Script Copyright © 02-17-2022 Millisecond Software

___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants are asked to press a certain response key (here: SPACEBAR) whenever the emotion appearing in the videoclip is recognized according to the block purpose.
___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
The set-up of the script takes appr. 10 minutes to complete

Note: the test can easily be aborted by pressing "Ctrl+Alt+A"
__________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________        
The default data stored in the data files are:

(1) Raw data file: 'simplereactiontime_cogdras_raw*.iqdat' (a separate file for each participant)*


build:                                The specific Inquisit version used (the 'build') that was run
computer.platform:                    the platform the script was run on (win/mac/ios/android)
date, time:                         date and time script was run
subject, group:                     with the current subject/groupnumber
session:                            with the current session id

blockcode, blocknum:                the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:                 the name and number of the currently recorded trial (built-in Inquisit variable)
                                        Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                        that do not store data to the data file.
                                        
stimulusitem:                        the presented stimuli in order of trial presentation
response:                            the participant's response (scancode of response buttons)                                

latency:                             the response latency (in ms); measured from: onset of videoclip

iti:                                the intertrial interval (in ms) run at the end of the current trial

(2) Summary data file: 'simplereactiontime_emomorph_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                     the Inquisit build/version run
computer.platform:                    the platform the script was run on (win/mac/ios/android)
startDate:                            date script was run
startTime:                            time script was started
subjectid:                            assigned subject id number
groupid:                            assigned group id number
sessionid:                            assigned session id number
elapsedTime:                        time it took to run script (in ms); measured from onset to offset of script
completed:                            0 = script was not completed (prematurely aborted);
                                    1 = script was completed (all conditions run)
                                    
011_RT; 100DIS; 100APP:                                the mean response time (in ms) in the 3 blocks        
                                    (measured from onset of videos in the center of the screen)
                            
                            
* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. 3 Test blocks:
- 20 trials
- 24 trials
- 24 trials

Trial sequence:
- videoclip (wait for response) -> random iti (1000-1500ms) -> videoclip....

___________________________________________________________________________________________________________________
STIMULI
___________________________________________________________________________________________________________________
ADFES videoclip and morphed mixed emotions made ad-hoc

_________________________________________________________________________________________________________________    
INSTRUCTIONS
___________________________________________________________________________________________________________________    
provided by Millisecond Software - edited by IGOR IARROBINO
___________________________________________________________________________________________________________________    
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:
</usermanual>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************

<parameters>

/spacekey = "C"    
/rightkey = "P"                        //the space-response key (here: SPACEBAR)
/responsekey = parameters.spacekey                //the assignment of space to responsekey (here SPACEBAR)
/nokey = parameters.rightkey
</parameters>

<expressions>
/iti = rand(1000, 1500)                        //selects the intertrial interval randomly somewhere from 1000 to 2500ms
</expressions>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************
<list practice0100_itemnumbers>
/ items = (1, 2, 3, 4, 5)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_0100>
/1="Anger.1.mp4"
/2="Disgust.2.mp4"
/3="Fear.3.mp4"
/4="Happy.4.mp4"
/5="Sad.1.mp4"
</item>

<video practicevideo_0100>
/items = item.practicevideo_0100
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>


<list practice100DIS_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_100DIS>
/1="A DIS.1.mp4"
/2="A DIS.8.mp4"
/3="D DIS.2.mp4"
/4="D DIS.7.mp4"
/5="F DIS.3.mp4"
/6="F DIS.6.mp4"
</item>

<video practicevideo_100DIS>
/items = item.practicevideo_100DIS
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

<list practice100APP_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_100APP>
/1="A APP.4.mp4"
/2="A APP.5.mp4"
/3="D APP.1.mp4"
/4="D APP.8.mp4"
/5="F APP.2.mp4"
/6="F APP.7.mp4"
</item>

<video practicevideo_100APP>
/items = item.practicevideo_100APP
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

//main stimulus that appreas in the middle of the screen
<list 0100_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ resetinterval = 0
</list>

<item video_0100>
/1="Anger.1.mp4"
/2="Anger.2.mp4"
/3="Anger.3.mp4"
/4="Anger.4.mp4"
/5="Disgust.1.mp4"
/6="Disgust.2.mp4"
/7="Disgust.3.mp4"
/8="Disgust.4.mp4"
/9="Fear.1.mp4"
/10="Fear.2.mp4"
/11="Fear.3.mp4"
/12="Fear.4.mp4"
/13="Happy.1.mp4"
/14="Happy.2.mp4"
/15="Happy.3.mp4"
/16="Happy.4.mp4"
/17="Sad.1.mp4"
/18="Sad.2.mp4"
/19="Sad.3.mp4"
/20="Sad.4.mp4"
</item>

<video video_0100>
/items = item.video_0100
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>


<list 100DIS_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item video_100DIS>
/1="A DIS.1.mp4"
/2="A DIS.2.mp4"
/3="A DIS.3.mp4"
/4="A DIS.4.mp4"
/5="A DIS.5.mp4"
/6="A DIS.6.mp4"
/7="A DIS.7.mp4"
/8="A DIS.8.mp4"
/9="D DIS.1.mp4"
/10="D DIS.2.mp4"
/11="D DIS.3.mp4"
/12="D DIS.4.mp4"
/13="D DIS.5.mp4"
/14="D DIS.6.mp4"
/15="D DIS.7.mp4"
/16="D DIS.8.mp4"
/17="F DIS.1.mp4"
/18="F DIS.2.mp4"
/19="F DIS.3.mp4"
/20="F DIS.4.mp4"
/21="F DIS.5.mp4"
/22="F DIS.6.mp4"
/23="F DIS.7.mp4"
/24="F DIS.8.mp4"
</item>

<video video_100DIS>
/items = item.video_100DIS
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

<list 100APP_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item video_100APP>
/1="A APP.1.mp4"
/2="A APP.2.mp4"
/3="A APP.3.mp4"
/4="A APP.4.mp4"
/5="A APP.5.mp4"
/6="A APP.6.mp4"
/7="A APP.7.mp4"
/8="A APP.8.mp4"
/9="D APP.1.mp4"
/10="D APP.2.mp4"
/11="D APP.3.mp4"
/12="D APP.4.mp4"
/13="D APP.5.mp4"
/14="D APP.6.mp4"
/15="D APP.7.mp4"
/16="D APP.8.mp4"
/17="F APP.1.mp4"
/18="F APP.2.mp4"
/19="F APP.3.mp4"
/20="F APP.4.mp4"
/21="F APP.5.mp4"
/22="F APP.6.mp4"
/23="F APP.7.mp4"
/24="F APP.8.mp4"
</item>

<video video_100APP>
/items = item.video_100APP
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>
**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
</instruct>

<text header>
/ items = ("MORPHING")
/ voiceover = false
/ position = (50%, 10%)
/ size = (80%, 10%)
/ vjustify = center
/ fontstyle = ("Arial", 6%, true, false, false, false, 5, 1)
</text>

<text intro0100>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che da un'espressione neutra esprimerà un'emozione piena.

Le emozioni di interesse sono FELICITÀ, TRISTEZZA, DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che quell'emozione APPARE sul volto rappresentato.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text intro100DIS>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione.

Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia SCOMPARENDO dal volto rappresentato nel passaggio verso l'altra emozione.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text intro100APP>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione.

Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia COMPARENDO sul volto rappresentato nel passaggio da un'emozione ad un'altra.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text continue>
/ items = ("<%expressions.continueInstructions%>")

/ position = (50%, 95%)
/ size = (45%, 5%)
/ vjustify = center
/ fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1)
/ txbgcolor = black
/ txcolor = white
/ erase = false
</text>

<expressions>
/continueInstructions = "Prema la '<%parameters.responsekey%>' per continuare."
</expressions>

<text start>
/ items = ("Prema '<%parameters.responsekey%>' per iniziare.")

/ position = (50%, 95%)
/ size = (40%, 5%)
/ vjustify = center
/ fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1)
/ txbgcolor = black
/ txcolor = white
/ erase = false
</text>

<text getReadyInstructions>
/ items = ("Pronti:

<%expressions.readyInstruct%>")
/ fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 40%)
/ vjustify = center
/ voiceover = false
</text>

<expressions>
/readyInstruct = "Posizioni il suo indice sulla '<%parameters.responsekey%>' sulla tastiera."
</expressions>


<text finish>
/ items = ("Grazie per aver partecipato all'esperimento!")
/ voiceover = false
/ fontstyle = ("Arial", 10%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 10%)
/ vjustify = center
/ valign = center
/ halign = center
</text>

<text exit>
/ items = ("<%expressions.continueInstructions%>")
/ voiceover = false
/ fontstyle = ("Arial", 3%, true, false, false, false, 5, 1)
/ position = (50%, 95%)
/ size = (40%, 5%)
/ vjustify = center
/ valign = center
/ halign = center
/ txbgcolor = black
/ txcolor = white
</text>

**************************************************************************************************************
                !!!REMAINING CODE: Customize after careful consideration only!!!
**************************************************************************************************************


**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = lightGray
/ txcolor = black
/ screencolor = lightGray
/ inputdevice = keyboard
/ quitcommand = (Ctrl+Alt+30)
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum, stimulusitem, response, values.responseLabel, latency, values.iti)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startDate, script.startTime,
script.subjectId, script.groupId, script.sessionId,
script.elapsedTime, script.completed, expressions.0100_RT, expressions.100DIS_RT, expressions.100APP_RT)
</summarydata>

**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

<values>
/countTrials = 0
/ITI = ""
/0100_RT = ""
/100DIS_RT = ""
/100APP_RT = ""
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************

<expressions>
/0100_RT = list.RT0100.mean
/100DIS_RT = list.RT100DIS.mean
/100APP_RT = list.RT100APP.mean
</expressions>


**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<trial intro0100>
/ stimulusframes = [1 = header, intro0100, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

<trial intro100DIS>
/ stimulusframes = [1 = header, intro100DIS, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

<trial intro100APP>
/ stimulusframes = [1 = header, intro100APP, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

This trial is used when participants are asked to place their fingers on specific response
buttons.
<trial getReady>
/ stimulusframes = [1 = clearScreen, getReadyInstructions, start]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
/ posttrialpause = expressions.iti
// responsemessage = (parameters.leftkey, clearScreen, 0)
</trial>

<trial finish>
/ stimulusframes = [1 = clearScreen, finish]
/ recorddata = false
/ timeout = 250
</trial>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************


*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores the latency of correct responses for each relevant trial
<list practiceRT0100>
</list>

<list RT0100>
</list>

<list practiceRT100DIS>
</list>

<list RT100DIS>
</list>

<list practiceRT100APP>
</list>

<list RT100APP>
</list>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS     
**************************************************************************************************************
**************************************************************************************************************
<trial practice0100>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_0100]
/ validresponse = (parameters.spacekey,parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT0100.appendItem(trial.practice0100.latency)
]
</trial>

<trial 0100>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_0100]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT0100.appendItem(trial.0100.latency)
]
</trial>

<trial practice100DIS>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_100DIS]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT100DIS.appendItem(trial.practice100DIS.latency)
]
</trial>

<trial 100DIS>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100DIS]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT100DIS.appendItem(trial.100DIS.latency)
]
</trial>

<trial practice100APP>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT100APP.appendItem(trial.practice100APP.latency)
]
</trial>

<trial 100APP>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT100APP.appendItem(trial.100APP.latency)
]
</trial>
**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block practice0100>
/ trials = [
    1 = intro0100;
    2 = getReady;
    3-7 = practice0100;
]
/ branch = [
return block.0100;
]
</block>

<block 0100>
/ trials = [
    1 = intro0100;
    2 = getReady;
    3-22 = 0100;
]
</block>

<block practice100DIS>
/ trials = [
    1 = intro100DIS;
    2 = getReady;
    3-8 = practice100DIS;
]
/ branch = [
return block.100DIS;
]
</block>

<block 100DIS>
/ trials = [
    1 = intro100DIS;
    2 = getReady;
    3-26 = 100DIS;
]
</block>

<block practice100APP>
/ trials = [
    1 = intro100APP;
    2 = getReady;
    3-8 = practice100APP;
]
/ branch = [
return block.100APP;
]
</block>

<block 100APP>
/ trials = [
    1 = intro100APP;
    2 = getReady;
    3-26 = 100APP;
]
</block>

<block finish>
/ trials = [
    1 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ blocks = [
    1 = noreplace(practice0100, practice100DIS, practice100APP );
    2 = finish;
]
/ onexptend = [
    values.0100_RT = expressions.0100_RT;
values.100DIS_RT = expressions.100DIS_RT;
values.100APP_RT = expressions.100APP_RT;
]

</expt>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

I don't understand what you want me to check regarding the first two modifications. You can run the task, you have data files available, and those should show you whether things work as you intended or not. If you have concrete questions because something is not working as you want, I'll be happy to answer those.

Regarding your 3rd issue, I'll be happy to take a look. Your link, however, is not publicly accessible.

As for why the script crashes: It does so when it tries to record data after a response. The crash occurs because you have the script instructed to record a variable -- values.responseLabel -- which does not exist, presumably because you removed it from whatever original script you modified.



The app tells you exactly what and where the error is, too, as you can see above. To get rid of the crash, remove the non-existent variable from the <data> element's /columns.

<data>
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum, stimulusitem, response, latency, values.iti)
</data>


Beyond that, I don't understand why you set up your trials like this:

<trial 100APP>
/ ontrialbegin = [
  values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct

/ posttrialpause = values.iti
/ ontrialend = [
  list.RT100APP.appendItem(trial.100APP.latency)
]
</trial>

You've specified two different keys (C and P) as allowable responses in /validresponse.

C is always the /correctresponse. Because you've set /response = correct, pressing the P key will never do anytihng whatsoever, except mess up the accuracy. (which you are not logging).

This makes little sense. If you have only a single key you want to be used, then you should just specfiy that instead of jumping through hoops to first allow two keys and then effectlvely disable one through other settings (with side effects).

<trial 100APP>
/ ontrialbegin = [
values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100APP]
/ validresponse = (parameters.rightkey) // only one key is to be used
// correctresponse = (parameters.responsekey) // technically not needed
// response = correct // definitely not needed
/ posttrialpause = values.iti
/ ontrialend = [
list.RT100APP.appendItem(trial.100APP.latency)
]
</trial>


As for

> Now I have 3 test blocks allegedly linked to 3 practice blocks and randomized as in the stroop, if you rememeber."

You have three practice blocls, only one of which you run at random.

<expt>
/ blocks = [
  1 = noreplace(practice0100, practice100DIS, practice100APP);
  2 = finish;
]
...
>/block>

That practice block then branches to the corresponding test block. Then the task ends,

If you wanted to run all three practice blocks (each followed by their respective test block) in random order, you obviously need to sample all three, not just one,

<expt>
/ blocks = [
  1-3 = noreplace(practice0100, practice100DIS, practice100APP);
  4 = finish;
]
...
</expt>





Edited 2 Months Ago by Dave
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 102K
Dave - 7/30/2024
Igor Iarrobino - 7/30/2024
Dave - 7/29/2024
Igor Iarrobino - 7/29/2024
Dave - 7/26/2024
Igor Iarrobino - 7/26/2024
Dave - 7/22/2024
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Hi Dave,

It seems it's working everything properly and I thank you very much for your kindness and your helpfulness.

Actually, I would try to study the user manual, but when they give you 4 scripts  to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly.
And I'm sorry for that.

I would have a new question, an advice/clue/hint.
I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics:
  1. stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
  2. and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D

Thank you in advance.
Have a nice weekend.

You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done.
Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htm
Videos stop upon response by default.
Dear Dave,

thank you for your answer and tips.

I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!
But I won't bother you about my work stress anymore.

If you can suggest a script to be easily modified, I would be extremely glad!
Otherwise, I thank you a lot again for your help so far.

Have a nice day


You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need.

Hello Dave,

I found something to modify and I did it.
Actually, I have some problems, as always.

I just explain a bit the idea. The script was a simple reaction time task. I have to make a more complex task, with more blocks and practices, but with the same response phylosophy as reactiontimes: I just need the latency measures of the responses to the stimuli.
Stimuli are videos of morphed emotional faces of 3 kinds.

I modified the script this way:
Now I have 3 test blocks allegedly linked to 3 practice blocks and randomized as in the stroop, if you rememeber.
Could you check this before please? Thank you.

Then, I tried to insert a list of stimuli for each block to be run in random order.
Could you check also this please? Thank you.

At last, I have problems with response buttons (in the script they were two assigned but just one working; I left it like this, just changing the names): the issue is thatSt everytime a try to respond the script exit/crash.
Could you check also this please? Thank you.

If the last problem is solved, and the other two checks are ok, maybe I'm close to the end of this coding!
Finger crossed!!

Here you can find attached the script modified, and the link to the stimuli in a zip folder as follows (it was too big to upload the folder):

 https://drive.google.com/file/d/10IcobiN9nUpEEys0ngde8Ba6kg56a_N3/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                        EMOTIONAL MORPHING                                 
___________________________________________________________________________________________________________________    

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024.

Script Copyright © 02-17-2022 Millisecond Software

___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants are asked to press a certain response key (here: SPACEBAR) whenever the emotion appearing in the videoclip is recognized according to the block purpose.
___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
The set-up of the script takes appr. 10 minutes to complete

Note: the test can easily be aborted by pressing "Ctrl+Alt+A"
__________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________        
The default data stored in the data files are:

(1) Raw data file: 'simplereactiontime_cogdras_raw*.iqdat' (a separate file for each participant)*


build:                                The specific Inquisit version used (the 'build') that was run
computer.platform:                    the platform the script was run on (win/mac/ios/android)
date, time:                         date and time script was run
subject, group:                     with the current subject/groupnumber
session:                            with the current session id

blockcode, blocknum:                the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:                 the name and number of the currently recorded trial (built-in Inquisit variable)
                                        Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                        that do not store data to the data file.
                                        
stimulusitem:                        the presented stimuli in order of trial presentation
response:                            the participant's response (scancode of response buttons)                                

latency:                             the response latency (in ms); measured from: onset of videoclip

iti:                                the intertrial interval (in ms) run at the end of the current trial

(2) Summary data file: 'simplereactiontime_emomorph_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                     the Inquisit build/version run
computer.platform:                    the platform the script was run on (win/mac/ios/android)
startDate:                            date script was run
startTime:                            time script was started
subjectid:                            assigned subject id number
groupid:                            assigned group id number
sessionid:                            assigned session id number
elapsedTime:                        time it took to run script (in ms); measured from onset to offset of script
completed:                            0 = script was not completed (prematurely aborted);
                                    1 = script was completed (all conditions run)
                                    
011_RT; 100DIS; 100APP:                                the mean response time (in ms) in the 3 blocks        
                                    (measured from onset of videos in the center of the screen)
                            
                            
* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. 3 Test blocks:
- 20 trials
- 24 trials
- 24 trials

Trial sequence:
- videoclip (wait for response) -> random iti (1000-1500ms) -> videoclip....

___________________________________________________________________________________________________________________
STIMULI
___________________________________________________________________________________________________________________
ADFES videoclip and morphed mixed emotions made ad-hoc

_________________________________________________________________________________________________________________    
INSTRUCTIONS
___________________________________________________________________________________________________________________    
provided by Millisecond Software - edited by IGOR IARROBINO
___________________________________________________________________________________________________________________    
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:
</usermanual>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************

<parameters>

/spacekey = "C"    
/rightkey = "P"                        //the space-response key (here: SPACEBAR)
/responsekey = parameters.spacekey                //the assignment of space to responsekey (here SPACEBAR)
/nokey = parameters.rightkey
</parameters>

<expressions>
/iti = rand(1000, 1500)                        //selects the intertrial interval randomly somewhere from 1000 to 2500ms
</expressions>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************
<list practice0100_itemnumbers>
/ items = (1, 2, 3, 4, 5)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_0100>
/1="Anger.1.mp4"
/2="Disgust.2.mp4"
/3="Fear.3.mp4"
/4="Happy.4.mp4"
/5="Sad.1.mp4"
</item>

<video practicevideo_0100>
/items = item.practicevideo_0100
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>


<list practice100DIS_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_100DIS>
/1="A DIS.1.mp4"
/2="A DIS.8.mp4"
/3="D DIS.2.mp4"
/4="D DIS.7.mp4"
/5="F DIS.3.mp4"
/6="F DIS.6.mp4"
</item>

<video practicevideo_100DIS>
/items = item.practicevideo_100DIS
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

<list practice100APP_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_100APP>
/1="A APP.4.mp4"
/2="A APP.5.mp4"
/3="D APP.1.mp4"
/4="D APP.8.mp4"
/5="F APP.2.mp4"
/6="F APP.7.mp4"
</item>

<video practicevideo_100APP>
/items = item.practicevideo_100APP
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

//main stimulus that appreas in the middle of the screen
<list 0100_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ resetinterval = 0
</list>

<item video_0100>
/1="Anger.1.mp4"
/2="Anger.2.mp4"
/3="Anger.3.mp4"
/4="Anger.4.mp4"
/5="Disgust.1.mp4"
/6="Disgust.2.mp4"
/7="Disgust.3.mp4"
/8="Disgust.4.mp4"
/9="Fear.1.mp4"
/10="Fear.2.mp4"
/11="Fear.3.mp4"
/12="Fear.4.mp4"
/13="Happy.1.mp4"
/14="Happy.2.mp4"
/15="Happy.3.mp4"
/16="Happy.4.mp4"
/17="Sad.1.mp4"
/18="Sad.2.mp4"
/19="Sad.3.mp4"
/20="Sad.4.mp4"
</item>

<video video_0100>
/items = item.video_0100
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>


<list 100DIS_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item video_100DIS>
/1="A DIS.1.mp4"
/2="A DIS.2.mp4"
/3="A DIS.3.mp4"
/4="A DIS.4.mp4"
/5="A DIS.5.mp4"
/6="A DIS.6.mp4"
/7="A DIS.7.mp4"
/8="A DIS.8.mp4"
/9="D DIS.1.mp4"
/10="D DIS.2.mp4"
/11="D DIS.3.mp4"
/12="D DIS.4.mp4"
/13="D DIS.5.mp4"
/14="D DIS.6.mp4"
/15="D DIS.7.mp4"
/16="D DIS.8.mp4"
/17="F DIS.1.mp4"
/18="F DIS.2.mp4"
/19="F DIS.3.mp4"
/20="F DIS.4.mp4"
/21="F DIS.5.mp4"
/22="F DIS.6.mp4"
/23="F DIS.7.mp4"
/24="F DIS.8.mp4"
</item>

<video video_100DIS>
/items = item.video_100DIS
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

<list 100APP_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item video_100APP>
/1="A APP.1.mp4"
/2="A APP.2.mp4"
/3="A APP.3.mp4"
/4="A APP.4.mp4"
/5="A APP.5.mp4"
/6="A APP.6.mp4"
/7="A APP.7.mp4"
/8="A APP.8.mp4"
/9="D APP.1.mp4"
/10="D APP.2.mp4"
/11="D APP.3.mp4"
/12="D APP.4.mp4"
/13="D APP.5.mp4"
/14="D APP.6.mp4"
/15="D APP.7.mp4"
/16="D APP.8.mp4"
/17="F APP.1.mp4"
/18="F APP.2.mp4"
/19="F APP.3.mp4"
/20="F APP.4.mp4"
/21="F APP.5.mp4"
/22="F APP.6.mp4"
/23="F APP.7.mp4"
/24="F APP.8.mp4"
</item>

<video video_100APP>
/items = item.video_100APP
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>
**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
</instruct>

<text header>
/ items = ("MORPHING")
/ voiceover = false
/ position = (50%, 10%)
/ size = (80%, 10%)
/ vjustify = center
/ fontstyle = ("Arial", 6%, true, false, false, false, 5, 1)
</text>

<text intro0100>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che da un'espressione neutra esprimerà un'emozione piena.

Le emozioni di interesse sono FELICITÀ, TRISTEZZA, DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che quell'emozione APPARE sul volto rappresentato.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text intro100DIS>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione.

Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia SCOMPARENDO dal volto rappresentato nel passaggio verso l'altra emozione.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text intro100APP>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione.

Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia COMPARENDO sul volto rappresentato nel passaggio da un'emozione ad un'altra.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text continue>
/ items = ("<%expressions.continueInstructions%>")

/ position = (50%, 95%)
/ size = (45%, 5%)
/ vjustify = center
/ fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1)
/ txbgcolor = black
/ txcolor = white
/ erase = false
</text>

<expressions>
/continueInstructions = "Prema la '<%parameters.responsekey%>' per continuare."
</expressions>

<text start>
/ items = ("Prema '<%parameters.responsekey%>' per iniziare.")

/ position = (50%, 95%)
/ size = (40%, 5%)
/ vjustify = center
/ fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1)
/ txbgcolor = black
/ txcolor = white
/ erase = false
</text>

<text getReadyInstructions>
/ items = ("Pronti:

<%expressions.readyInstruct%>")
/ fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 40%)
/ vjustify = center
/ voiceover = false
</text>

<expressions>
/readyInstruct = "Posizioni il suo indice sulla '<%parameters.responsekey%>' sulla tastiera."
</expressions>


<text finish>
/ items = ("Grazie per aver partecipato all'esperimento!")
/ voiceover = false
/ fontstyle = ("Arial", 10%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 10%)
/ vjustify = center
/ valign = center
/ halign = center
</text>

<text exit>
/ items = ("<%expressions.continueInstructions%>")
/ voiceover = false
/ fontstyle = ("Arial", 3%, true, false, false, false, 5, 1)
/ position = (50%, 95%)
/ size = (40%, 5%)
/ vjustify = center
/ valign = center
/ halign = center
/ txbgcolor = black
/ txcolor = white
</text>

**************************************************************************************************************
                !!!REMAINING CODE: Customize after careful consideration only!!!
**************************************************************************************************************


**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = lightGray
/ txcolor = black
/ screencolor = lightGray
/ inputdevice = keyboard
/ quitcommand = (Ctrl+Alt+30)
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum, stimulusitem, response, values.responseLabel, latency, values.iti)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startDate, script.startTime,
script.subjectId, script.groupId, script.sessionId,
script.elapsedTime, script.completed, expressions.0100_RT, expressions.100DIS_RT, expressions.100APP_RT)
</summarydata>

**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

<values>
/countTrials = 0
/ITI = ""
/0100_RT = ""
/100DIS_RT = ""
/100APP_RT = ""
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************

<expressions>
/0100_RT = list.RT0100.mean
/100DIS_RT = list.RT100DIS.mean
/100APP_RT = list.RT100APP.mean
</expressions>


**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<trial intro0100>
/ stimulusframes = [1 = header, intro0100, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

<trial intro100DIS>
/ stimulusframes = [1 = header, intro100DIS, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

<trial intro100APP>
/ stimulusframes = [1 = header, intro100APP, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

This trial is used when participants are asked to place their fingers on specific response
buttons.
<trial getReady>
/ stimulusframes = [1 = clearScreen, getReadyInstructions, start]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
/ posttrialpause = expressions.iti
// responsemessage = (parameters.leftkey, clearScreen, 0)
</trial>

<trial finish>
/ stimulusframes = [1 = clearScreen, finish]
/ recorddata = false
/ timeout = 250
</trial>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************


*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores the latency of correct responses for each relevant trial
<list practiceRT0100>
</list>

<list RT0100>
</list>

<list practiceRT100DIS>
</list>

<list RT100DIS>
</list>

<list practiceRT100APP>
</list>

<list RT100APP>
</list>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS     
**************************************************************************************************************
**************************************************************************************************************
<trial practice0100>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_0100]
/ validresponse = (parameters.spacekey,parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT0100.appendItem(trial.practice0100.latency)
]
</trial>

<trial 0100>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_0100]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT0100.appendItem(trial.0100.latency)
]
</trial>

<trial practice100DIS>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_100DIS]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT100DIS.appendItem(trial.practice100DIS.latency)
]
</trial>

<trial 100DIS>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100DIS]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT100DIS.appendItem(trial.100DIS.latency)
]
</trial>

<trial practice100APP>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT100APP.appendItem(trial.practice100APP.latency)
]
</trial>

<trial 100APP>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT100APP.appendItem(trial.100APP.latency)
]
</trial>
**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block practice0100>
/ trials = [
    1 = intro0100;
    2 = getReady;
    3-7 = practice0100;
]
/ branch = [
return block.0100;
]
</block>

<block 0100>
/ trials = [
    1 = intro0100;
    2 = getReady;
    3-22 = 0100;
]
</block>

<block practice100DIS>
/ trials = [
    1 = intro100DIS;
    2 = getReady;
    3-8 = practice100DIS;
]
/ branch = [
return block.100DIS;
]
</block>

<block 100DIS>
/ trials = [
    1 = intro100DIS;
    2 = getReady;
    3-26 = 100DIS;
]
</block>

<block practice100APP>
/ trials = [
    1 = intro100APP;
    2 = getReady;
    3-8 = practice100APP;
]
/ branch = [
return block.100APP;
]
</block>

<block 100APP>
/ trials = [
    1 = intro100APP;
    2 = getReady;
    3-26 = 100APP;
]
</block>

<block finish>
/ trials = [
    1 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ blocks = [
    1 = noreplace(practice0100, practice100DIS, practice100APP );
    2 = finish;
]
/ onexptend = [
    values.0100_RT = expressions.0100_RT;
values.100DIS_RT = expressions.100DIS_RT;
values.100APP_RT = expressions.100APP_RT;
]

</expt>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

I don't understand what you want me to check regarding the first two modifications. You can run the task, you have data files available, and those should show you whether things work as you intended or not. If you have concrete questions because something is not working as you want, I'll be happy to answer those.

Regarding your 3rd issue, I'll be happy to take a look. Your link, however, is not publicly accessible.

As for why the script crashes: It does so when it tries to record data after a response. The crash occurs because you have the script instructed to record a variable -- values.responseLabel -- which does not exist, presumably because you removed it from whatever original script you modified.



The app tells you exactly what and where the error is, too, as you can see above. To get rid of the crash, remove the non-existent variable from the <data> element's /columns.

<data>
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum, stimulusitem, response, latency, values.iti)
</data>


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 102K
Igor Iarrobino - 7/30/2024
Dave - 7/29/2024
Igor Iarrobino - 7/29/2024
Dave - 7/26/2024
Igor Iarrobino - 7/26/2024
Dave - 7/22/2024
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Hi Dave,

It seems it's working everything properly and I thank you very much for your kindness and your helpfulness.

Actually, I would try to study the user manual, but when they give you 4 scripts  to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly.
And I'm sorry for that.

I would have a new question, an advice/clue/hint.
I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics:
  1. stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
  2. and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D

Thank you in advance.
Have a nice weekend.

You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done.
Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htm
Videos stop upon response by default.
Dear Dave,

thank you for your answer and tips.

I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!
But I won't bother you about my work stress anymore.

If you can suggest a script to be easily modified, I would be extremely glad!
Otherwise, I thank you a lot again for your help so far.

Have a nice day


You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need.

Hello Dave,

I found something to modify and I did it.
Actually, I have some problems, as always.

I just explain a bit the idea. The script was a simple reaction time task. I have to make a more complex task, with more blocks and practices, but with the same response phylosophy as reactiontimes: I just need the latency measures of the responses to the stimuli.
Stimuli are videos of morphed emotional faces of 3 kinds.

I modified the script this way:
Now I have 3 test blocks allegedly linked to 3 practice blocks and randomized as in the stroop, if you rememeber.
Could you check this before please? Thank you.

Then, I tried to insert a list of stimuli for each block to be run in random order.
Could you check also this please? Thank you.

At last, I have problems with response buttons (in the script they were two assigned but just one working; I left it like this, just changing the names): the issue is thatSt everytime a try to respond the script exit/crash.
Could you check also this please? Thank you.

If the last problem is solved, and the other two checks are ok, maybe I'm close to the end of this coding!
Finger crossed!!

Here you can find attached the script modified, and the link to the stimuli in a zip folder as follows (it was too big to upload the folder):

 https://drive.google.com/file/d/10IcobiN9nUpEEys0ngde8Ba6kg56a_N3/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                        EMOTIONAL MORPHING                                 
___________________________________________________________________________________________________________________    

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024.

Script Copyright © 02-17-2022 Millisecond Software

___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants are asked to press a certain response key (here: SPACEBAR) whenever the emotion appearing in the videoclip is recognized according to the block purpose.
___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
The set-up of the script takes appr. 10 minutes to complete

Note: the test can easily be aborted by pressing "Ctrl+Alt+A"
__________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________        
The default data stored in the data files are:

(1) Raw data file: 'simplereactiontime_cogdras_raw*.iqdat' (a separate file for each participant)*


build:                                The specific Inquisit version used (the 'build') that was run
computer.platform:                    the platform the script was run on (win/mac/ios/android)
date, time:                         date and time script was run
subject, group:                     with the current subject/groupnumber
session:                            with the current session id

blockcode, blocknum:                the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:                 the name and number of the currently recorded trial (built-in Inquisit variable)
                                        Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                        that do not store data to the data file.
                                        
stimulusitem:                        the presented stimuli in order of trial presentation
response:                            the participant's response (scancode of response buttons)                                

latency:                             the response latency (in ms); measured from: onset of videoclip

iti:                                the intertrial interval (in ms) run at the end of the current trial

(2) Summary data file: 'simplereactiontime_emomorph_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                     the Inquisit build/version run
computer.platform:                    the platform the script was run on (win/mac/ios/android)
startDate:                            date script was run
startTime:                            time script was started
subjectid:                            assigned subject id number
groupid:                            assigned group id number
sessionid:                            assigned session id number
elapsedTime:                        time it took to run script (in ms); measured from onset to offset of script
completed:                            0 = script was not completed (prematurely aborted);
                                    1 = script was completed (all conditions run)
                                    
011_RT; 100DIS; 100APP:                                the mean response time (in ms) in the 3 blocks        
                                    (measured from onset of videos in the center of the screen)
                            
                            
* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. 3 Test blocks:
- 20 trials
- 24 trials
- 24 trials

Trial sequence:
- videoclip (wait for response) -> random iti (1000-1500ms) -> videoclip....

___________________________________________________________________________________________________________________
STIMULI
___________________________________________________________________________________________________________________
ADFES videoclip and morphed mixed emotions made ad-hoc

_________________________________________________________________________________________________________________    
INSTRUCTIONS
___________________________________________________________________________________________________________________    
provided by Millisecond Software - edited by IGOR IARROBINO
___________________________________________________________________________________________________________________    
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:
</usermanual>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************

<parameters>

/spacekey = "C"    
/rightkey = "P"                        //the space-response key (here: SPACEBAR)
/responsekey = parameters.spacekey                //the assignment of space to responsekey (here SPACEBAR)
/nokey = parameters.rightkey
</parameters>

<expressions>
/iti = rand(1000, 1500)                        //selects the intertrial interval randomly somewhere from 1000 to 2500ms
</expressions>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************
<list practice0100_itemnumbers>
/ items = (1, 2, 3, 4, 5)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_0100>
/1="Anger.1.mp4"
/2="Disgust.2.mp4"
/3="Fear.3.mp4"
/4="Happy.4.mp4"
/5="Sad.1.mp4"
</item>

<video practicevideo_0100>
/items = item.practicevideo_0100
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>


<list practice100DIS_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_100DIS>
/1="A DIS.1.mp4"
/2="A DIS.8.mp4"
/3="D DIS.2.mp4"
/4="D DIS.7.mp4"
/5="F DIS.3.mp4"
/6="F DIS.6.mp4"
</item>

<video practicevideo_100DIS>
/items = item.practicevideo_100DIS
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

<list practice100APP_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_100APP>
/1="A APP.4.mp4"
/2="A APP.5.mp4"
/3="D APP.1.mp4"
/4="D APP.8.mp4"
/5="F APP.2.mp4"
/6="F APP.7.mp4"
</item>

<video practicevideo_100APP>
/items = item.practicevideo_100APP
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

//main stimulus that appreas in the middle of the screen
<list 0100_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ resetinterval = 0
</list>

<item video_0100>
/1="Anger.1.mp4"
/2="Anger.2.mp4"
/3="Anger.3.mp4"
/4="Anger.4.mp4"
/5="Disgust.1.mp4"
/6="Disgust.2.mp4"
/7="Disgust.3.mp4"
/8="Disgust.4.mp4"
/9="Fear.1.mp4"
/10="Fear.2.mp4"
/11="Fear.3.mp4"
/12="Fear.4.mp4"
/13="Happy.1.mp4"
/14="Happy.2.mp4"
/15="Happy.3.mp4"
/16="Happy.4.mp4"
/17="Sad.1.mp4"
/18="Sad.2.mp4"
/19="Sad.3.mp4"
/20="Sad.4.mp4"
</item>

<video video_0100>
/items = item.video_0100
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>


<list 100DIS_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item video_100DIS>
/1="A DIS.1.mp4"
/2="A DIS.2.mp4"
/3="A DIS.3.mp4"
/4="A DIS.4.mp4"
/5="A DIS.5.mp4"
/6="A DIS.6.mp4"
/7="A DIS.7.mp4"
/8="A DIS.8.mp4"
/9="D DIS.1.mp4"
/10="D DIS.2.mp4"
/11="D DIS.3.mp4"
/12="D DIS.4.mp4"
/13="D DIS.5.mp4"
/14="D DIS.6.mp4"
/15="D DIS.7.mp4"
/16="D DIS.8.mp4"
/17="F DIS.1.mp4"
/18="F DIS.2.mp4"
/19="F DIS.3.mp4"
/20="F DIS.4.mp4"
/21="F DIS.5.mp4"
/22="F DIS.6.mp4"
/23="F DIS.7.mp4"
/24="F DIS.8.mp4"
</item>

<video video_100DIS>
/items = item.video_100DIS
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

<list 100APP_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item video_100APP>
/1="A APP.1.mp4"
/2="A APP.2.mp4"
/3="A APP.3.mp4"
/4="A APP.4.mp4"
/5="A APP.5.mp4"
/6="A APP.6.mp4"
/7="A APP.7.mp4"
/8="A APP.8.mp4"
/9="D APP.1.mp4"
/10="D APP.2.mp4"
/11="D APP.3.mp4"
/12="D APP.4.mp4"
/13="D APP.5.mp4"
/14="D APP.6.mp4"
/15="D APP.7.mp4"
/16="D APP.8.mp4"
/17="F APP.1.mp4"
/18="F APP.2.mp4"
/19="F APP.3.mp4"
/20="F APP.4.mp4"
/21="F APP.5.mp4"
/22="F APP.6.mp4"
/23="F APP.7.mp4"
/24="F APP.8.mp4"
</item>

<video video_100APP>
/items = item.video_100APP
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>
**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
</instruct>

<text header>
/ items = ("MORPHING")
/ voiceover = false
/ position = (50%, 10%)
/ size = (80%, 10%)
/ vjustify = center
/ fontstyle = ("Arial", 6%, true, false, false, false, 5, 1)
</text>

<text intro0100>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che da un'espressione neutra esprimerà un'emozione piena.

Le emozioni di interesse sono FELICITÀ, TRISTEZZA, DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che quell'emozione APPARE sul volto rappresentato.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text intro100DIS>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione.

Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia SCOMPARENDO dal volto rappresentato nel passaggio verso l'altra emozione.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text intro100APP>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione.

Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia COMPARENDO sul volto rappresentato nel passaggio da un'emozione ad un'altra.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text continue>
/ items = ("<%expressions.continueInstructions%>")

/ position = (50%, 95%)
/ size = (45%, 5%)
/ vjustify = center
/ fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1)
/ txbgcolor = black
/ txcolor = white
/ erase = false
</text>

<expressions>
/continueInstructions = "Prema la '<%parameters.responsekey%>' per continuare."
</expressions>

<text start>
/ items = ("Prema '<%parameters.responsekey%>' per iniziare.")

/ position = (50%, 95%)
/ size = (40%, 5%)
/ vjustify = center
/ fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1)
/ txbgcolor = black
/ txcolor = white
/ erase = false
</text>

<text getReadyInstructions>
/ items = ("Pronti:

<%expressions.readyInstruct%>")
/ fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 40%)
/ vjustify = center
/ voiceover = false
</text>

<expressions>
/readyInstruct = "Posizioni il suo indice sulla '<%parameters.responsekey%>' sulla tastiera."
</expressions>


<text finish>
/ items = ("Grazie per aver partecipato all'esperimento!")
/ voiceover = false
/ fontstyle = ("Arial", 10%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 10%)
/ vjustify = center
/ valign = center
/ halign = center
</text>

<text exit>
/ items = ("<%expressions.continueInstructions%>")
/ voiceover = false
/ fontstyle = ("Arial", 3%, true, false, false, false, 5, 1)
/ position = (50%, 95%)
/ size = (40%, 5%)
/ vjustify = center
/ valign = center
/ halign = center
/ txbgcolor = black
/ txcolor = white
</text>

**************************************************************************************************************
                !!!REMAINING CODE: Customize after careful consideration only!!!
**************************************************************************************************************


**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = lightGray
/ txcolor = black
/ screencolor = lightGray
/ inputdevice = keyboard
/ quitcommand = (Ctrl+Alt+30)
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum, stimulusitem, response, values.responseLabel, latency, values.iti)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startDate, script.startTime,
script.subjectId, script.groupId, script.sessionId,
script.elapsedTime, script.completed, expressions.0100_RT, expressions.100DIS_RT, expressions.100APP_RT)
</summarydata>

**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

<values>
/countTrials = 0
/ITI = ""
/0100_RT = ""
/100DIS_RT = ""
/100APP_RT = ""
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************

<expressions>
/0100_RT = list.RT0100.mean
/100DIS_RT = list.RT100DIS.mean
/100APP_RT = list.RT100APP.mean
</expressions>


**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<trial intro0100>
/ stimulusframes = [1 = header, intro0100, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

<trial intro100DIS>
/ stimulusframes = [1 = header, intro100DIS, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

<trial intro100APP>
/ stimulusframes = [1 = header, intro100APP, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

This trial is used when participants are asked to place their fingers on specific response
buttons.
<trial getReady>
/ stimulusframes = [1 = clearScreen, getReadyInstructions, start]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
/ posttrialpause = expressions.iti
// responsemessage = (parameters.leftkey, clearScreen, 0)
</trial>

<trial finish>
/ stimulusframes = [1 = clearScreen, finish]
/ recorddata = false
/ timeout = 250
</trial>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************


*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores the latency of correct responses for each relevant trial
<list practiceRT0100>
</list>

<list RT0100>
</list>

<list practiceRT100DIS>
</list>

<list RT100DIS>
</list>

<list practiceRT100APP>
</list>

<list RT100APP>
</list>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS     
**************************************************************************************************************
**************************************************************************************************************
<trial practice0100>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_0100]
/ validresponse = (parameters.spacekey,parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT0100.appendItem(trial.practice0100.latency)
]
</trial>

<trial 0100>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_0100]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT0100.appendItem(trial.0100.latency)
]
</trial>

<trial practice100DIS>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_100DIS]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT100DIS.appendItem(trial.practice100DIS.latency)
]
</trial>

<trial 100DIS>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100DIS]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT100DIS.appendItem(trial.100DIS.latency)
]
</trial>

<trial practice100APP>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT100APP.appendItem(trial.practice100APP.latency)
]
</trial>

<trial 100APP>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT100APP.appendItem(trial.100APP.latency)
]
</trial>
**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block practice0100>
/ trials = [
    1 = intro0100;
    2 = getReady;
    3-7 = practice0100;
]
/ branch = [
return block.0100;
]
</block>

<block 0100>
/ trials = [
    1 = intro0100;
    2 = getReady;
    3-22 = 0100;
]
</block>

<block practice100DIS>
/ trials = [
    1 = intro100DIS;
    2 = getReady;
    3-8 = practice100DIS;
]
/ branch = [
return block.100DIS;
]
</block>

<block 100DIS>
/ trials = [
    1 = intro100DIS;
    2 = getReady;
    3-26 = 100DIS;
]
</block>

<block practice100APP>
/ trials = [
    1 = intro100APP;
    2 = getReady;
    3-8 = practice100APP;
]
/ branch = [
return block.100APP;
]
</block>

<block 100APP>
/ trials = [
    1 = intro100APP;
    2 = getReady;
    3-26 = 100APP;
]
</block>

<block finish>
/ trials = [
    1 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ blocks = [
    1 = noreplace(practice0100, practice100DIS, practice100APP );
    2 = finish;
]
/ onexptend = [
    values.0100_RT = expressions.0100_RT;
values.100DIS_RT = expressions.100DIS_RT;
values.100APP_RT = expressions.100APP_RT;
]

</expt>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

I don't understand what you want me to check regarding the first two modifications. You can run the task, you have data files available, and those should show you whether things work as you intended or not. If you have concrete questions because something is not working as you want, I'll be happy to answer those.

Regarding your 3rd issue, I'll be happy to take a look. Your link, however, is not publicly accessible.
Igor Iarrobino
Igor Iarrobino
New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)
Group: Forum Members
Posts: 11, Visits: 27
Dave - 7/29/2024
Igor Iarrobino - 7/29/2024
Dave - 7/26/2024
Igor Iarrobino - 7/26/2024
Dave - 7/22/2024
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Hi Dave,

It seems it's working everything properly and I thank you very much for your kindness and your helpfulness.

Actually, I would try to study the user manual, but when they give you 4 scripts  to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly.
And I'm sorry for that.

I would have a new question, an advice/clue/hint.
I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics:
  1. stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
  2. and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D

Thank you in advance.
Have a nice weekend.

You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done.
Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htm
Videos stop upon response by default.
Dear Dave,

thank you for your answer and tips.

I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!
But I won't bother you about my work stress anymore.

If you can suggest a script to be easily modified, I would be extremely glad!
Otherwise, I thank you a lot again for your help so far.

Have a nice day


You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need.

Hello Dave,

I found something to modify and I did it.
Actually, I have some problems, as always.

I just explain a bit the idea. The script was a simple reaction time task. I have to make a more complex task, with more blocks and practices, but with the same response phylosophy as reactiontimes: I just need the latency measures of the responses to the stimuli.
Stimuli are videos of morphed emotional faces of 3 kinds.

I modified the script this way:
Now I have 3 test blocks allegedly linked to 3 practice blocks and randomized as in the stroop, if you rememeber.
Could you check this before please? Thank you.

Then, I tried to insert a list of stimuli for each block to be run in random order.
Could you check also this please? Thank you.

At last, I have problems with response buttons (in the script they were two assigned but just one working; I left it like this, just changing the names): the issue is thatSt everytime a try to respond the script exit/crash.
Could you check also this please? Thank you.

If the last problem is solved, and the other two checks are ok, maybe I'm close to the end of this coding!
Finger crossed!!

Here you can find attached the script modified, and the link to the stimuli in a zip folder as follows (it was too big to upload the folder):

 https://drive.google.com/file/d/10IcobiN9nUpEEys0ngde8Ba6kg56a_N3/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                        EMOTIONAL MORPHING                                 
___________________________________________________________________________________________________________________    

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024.

Script Copyright © 02-17-2022 Millisecond Software

___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants are asked to press a certain response key (here: SPACEBAR) whenever the emotion appearing in the videoclip is recognized according to the block purpose.
___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
The set-up of the script takes appr. 10 minutes to complete

Note: the test can easily be aborted by pressing "Ctrl+Alt+A"
__________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________        
The default data stored in the data files are:

(1) Raw data file: 'simplereactiontime_cogdras_raw*.iqdat' (a separate file for each participant)*


build:                                The specific Inquisit version used (the 'build') that was run
computer.platform:                    the platform the script was run on (win/mac/ios/android)
date, time:                         date and time script was run
subject, group:                     with the current subject/groupnumber
session:                            with the current session id

blockcode, blocknum:                the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:                 the name and number of the currently recorded trial (built-in Inquisit variable)
                                        Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                        that do not store data to the data file.
                                        
stimulusitem:                        the presented stimuli in order of trial presentation
response:                            the participant's response (scancode of response buttons)                                

latency:                             the response latency (in ms); measured from: onset of videoclip

iti:                                the intertrial interval (in ms) run at the end of the current trial

(2) Summary data file: 'simplereactiontime_emomorph_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                     the Inquisit build/version run
computer.platform:                    the platform the script was run on (win/mac/ios/android)
startDate:                            date script was run
startTime:                            time script was started
subjectid:                            assigned subject id number
groupid:                            assigned group id number
sessionid:                            assigned session id number
elapsedTime:                        time it took to run script (in ms); measured from onset to offset of script
completed:                            0 = script was not completed (prematurely aborted);
                                    1 = script was completed (all conditions run)
                                    
011_RT; 100DIS; 100APP:                                the mean response time (in ms) in the 3 blocks        
                                    (measured from onset of videos in the center of the screen)
                            
                            
* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. 3 Test blocks:
- 20 trials
- 24 trials
- 24 trials

Trial sequence:
- videoclip (wait for response) -> random iti (1000-1500ms) -> videoclip....

___________________________________________________________________________________________________________________
STIMULI
___________________________________________________________________________________________________________________
ADFES videoclip and morphed mixed emotions made ad-hoc

_________________________________________________________________________________________________________________    
INSTRUCTIONS
___________________________________________________________________________________________________________________    
provided by Millisecond Software - edited by IGOR IARROBINO
___________________________________________________________________________________________________________________    
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:
</usermanual>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************

<parameters>

/spacekey = "C"    
/rightkey = "P"                        //the space-response key (here: SPACEBAR)
/responsekey = parameters.spacekey                //the assignment of space to responsekey (here SPACEBAR)
/nokey = parameters.rightkey
</parameters>

<expressions>
/iti = rand(1000, 1500)                        //selects the intertrial interval randomly somewhere from 1000 to 2500ms
</expressions>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************
<list practice0100_itemnumbers>
/ items = (1, 2, 3, 4, 5)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_0100>
/1="Anger.1.mp4"
/2="Disgust.2.mp4"
/3="Fear.3.mp4"
/4="Happy.4.mp4"
/5="Sad.1.mp4"
</item>

<video practicevideo_0100>
/items = item.practicevideo_0100
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>


<list practice100DIS_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_100DIS>
/1="A DIS.1.mp4"
/2="A DIS.8.mp4"
/3="D DIS.2.mp4"
/4="D DIS.7.mp4"
/5="F DIS.3.mp4"
/6="F DIS.6.mp4"
</item>

<video practicevideo_100DIS>
/items = item.practicevideo_100DIS
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

<list practice100APP_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item practicevideo_100APP>
/1="A APP.4.mp4"
/2="A APP.5.mp4"
/3="D APP.1.mp4"
/4="D APP.8.mp4"
/5="F APP.2.mp4"
/6="F APP.7.mp4"
</item>

<video practicevideo_100APP>
/items = item.practicevideo_100APP
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

//main stimulus that appreas in the middle of the screen
<list 0100_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20)
/ replace = false
/ resetinterval = 0
</list>

<item video_0100>
/1="Anger.1.mp4"
/2="Anger.2.mp4"
/3="Anger.3.mp4"
/4="Anger.4.mp4"
/5="Disgust.1.mp4"
/6="Disgust.2.mp4"
/7="Disgust.3.mp4"
/8="Disgust.4.mp4"
/9="Fear.1.mp4"
/10="Fear.2.mp4"
/11="Fear.3.mp4"
/12="Fear.4.mp4"
/13="Happy.1.mp4"
/14="Happy.2.mp4"
/15="Happy.3.mp4"
/16="Happy.4.mp4"
/17="Sad.1.mp4"
/18="Sad.2.mp4"
/19="Sad.3.mp4"
/20="Sad.4.mp4"
</item>

<video video_0100>
/items = item.video_0100
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>


<list 100DIS_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item video_100DIS>
/1="A DIS.1.mp4"
/2="A DIS.2.mp4"
/3="A DIS.3.mp4"
/4="A DIS.4.mp4"
/5="A DIS.5.mp4"
/6="A DIS.6.mp4"
/7="A DIS.7.mp4"
/8="A DIS.8.mp4"
/9="D DIS.1.mp4"
/10="D DIS.2.mp4"
/11="D DIS.3.mp4"
/12="D DIS.4.mp4"
/13="D DIS.5.mp4"
/14="D DIS.6.mp4"
/15="D DIS.7.mp4"
/16="D DIS.8.mp4"
/17="F DIS.1.mp4"
/18="F DIS.2.mp4"
/19="F DIS.3.mp4"
/20="F DIS.4.mp4"
/21="F DIS.5.mp4"
/22="F DIS.6.mp4"
/23="F DIS.7.mp4"
/24="F DIS.8.mp4"
</item>

<video video_100DIS>
/items = item.video_100DIS
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>

<list 100APP_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/ replace = false
/ resetinterval = 0
</list>

<item video_100APP>
/1="A APP.1.mp4"
/2="A APP.2.mp4"
/3="A APP.3.mp4"
/4="A APP.4.mp4"
/5="A APP.5.mp4"
/6="A APP.6.mp4"
/7="A APP.7.mp4"
/8="A APP.8.mp4"
/9="D APP.1.mp4"
/10="D APP.2.mp4"
/11="D APP.3.mp4"
/12="D APP.4.mp4"
/13="D APP.5.mp4"
/14="D APP.6.mp4"
/15="D APP.7.mp4"
/16="D APP.8.mp4"
/17="F APP.1.mp4"
/18="F APP.2.mp4"
/19="F APP.3.mp4"
/20="F APP.4.mp4"
/21="F APP.5.mp4"
/22="F APP.6.mp4"
/23="F APP.7.mp4"
/24="F APP.8.mp4"
</item>

<video video_100APP>
/items = item.video_100APP
/ position = (50%, 50%)
/ size = (80%, 80%)
</video>
**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
</instruct>

<text header>
/ items = ("MORPHING")
/ voiceover = false
/ position = (50%, 10%)
/ size = (80%, 10%)
/ vjustify = center
/ fontstyle = ("Arial", 6%, true, false, false, false, 5, 1)
</text>

<text intro0100>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che da un'espressione neutra esprimerà un'emozione piena.

Le emozioni di interesse sono FELICITÀ, TRISTEZZA, DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che quell'emozione APPARE sul volto rappresentato.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text intro100DIS>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione.

Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia SCOMPARENDO dal volto rappresentato nel passaggio verso l'altra emozione.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text intro100APP>
/ items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo.
In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione.

Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA.
All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere.

Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia COMPARENDO sul volto rappresentato nel passaggio da un'emozione ad un'altra.
RICORDI di rispondere il più velocemente possibile!")

/ position = (50%, 50%)
/ size = (80%, 60%)
/ vjustify = center
/ hjustify = left
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
</text>

<text continue>
/ items = ("<%expressions.continueInstructions%>")

/ position = (50%, 95%)
/ size = (45%, 5%)
/ vjustify = center
/ fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1)
/ txbgcolor = black
/ txcolor = white
/ erase = false
</text>

<expressions>
/continueInstructions = "Prema la '<%parameters.responsekey%>' per continuare."
</expressions>

<text start>
/ items = ("Prema '<%parameters.responsekey%>' per iniziare.")

/ position = (50%, 95%)
/ size = (40%, 5%)
/ vjustify = center
/ fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1)
/ txbgcolor = black
/ txcolor = white
/ erase = false
</text>

<text getReadyInstructions>
/ items = ("Pronti:

<%expressions.readyInstruct%>")
/ fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 40%)
/ vjustify = center
/ voiceover = false
</text>

<expressions>
/readyInstruct = "Posizioni il suo indice sulla '<%parameters.responsekey%>' sulla tastiera."
</expressions>


<text finish>
/ items = ("Grazie per aver partecipato all'esperimento!")
/ voiceover = false
/ fontstyle = ("Arial", 10%, true, false, false, false, 5, 1)
/ position = (50%, 50%)
/ size = (80%, 10%)
/ vjustify = center
/ valign = center
/ halign = center
</text>

<text exit>
/ items = ("<%expressions.continueInstructions%>")
/ voiceover = false
/ fontstyle = ("Arial", 3%, true, false, false, false, 5, 1)
/ position = (50%, 95%)
/ size = (40%, 5%)
/ vjustify = center
/ valign = center
/ halign = center
/ txbgcolor = black
/ txcolor = white
</text>

**************************************************************************************************************
                !!!REMAINING CODE: Customize after careful consideration only!!!
**************************************************************************************************************


**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = lightGray
/ txcolor = black
/ screencolor = lightGray
/ inputdevice = keyboard
/ quitcommand = (Ctrl+Alt+30)
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum, stimulusitem, response, values.responseLabel, latency, values.iti)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startDate, script.startTime,
script.subjectId, script.groupId, script.sessionId,
script.elapsedTime, script.completed, expressions.0100_RT, expressions.100DIS_RT, expressions.100APP_RT)
</summarydata>

**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

<values>
/countTrials = 0
/ITI = ""
/0100_RT = ""
/100DIS_RT = ""
/100APP_RT = ""
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************

<expressions>
/0100_RT = list.RT0100.mean
/100DIS_RT = list.RT100DIS.mean
/100APP_RT = list.RT100APP.mean
</expressions>


**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<trial intro0100>
/ stimulusframes = [1 = header, intro0100, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

<trial intro100DIS>
/ stimulusframes = [1 = header, intro100DIS, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

<trial intro100APP>
/ stimulusframes = [1 = header, intro100APP, continue]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
// responsemessage = (parameters.responsekey, clearScreen, 0)
</trial>

This trial is used when participants are asked to place their fingers on specific response
buttons.
<trial getReady>
/ stimulusframes = [1 = clearScreen, getReadyInstructions, start]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ recorddata = false
/ posttrialpause = expressions.iti
// responsemessage = (parameters.leftkey, clearScreen, 0)
</trial>

<trial finish>
/ stimulusframes = [1 = clearScreen, finish]
/ recorddata = false
/ timeout = 250
</trial>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************


*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores the latency of correct responses for each relevant trial
<list practiceRT0100>
</list>

<list RT0100>
</list>

<list practiceRT100DIS>
</list>

<list RT100DIS>
</list>

<list practiceRT100APP>
</list>

<list RT100APP>
</list>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS     
**************************************************************************************************************
**************************************************************************************************************
<trial practice0100>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_0100]
/ validresponse = (parameters.spacekey,parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT0100.appendItem(trial.practice0100.latency)
]
</trial>

<trial 0100>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_0100]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT0100.appendItem(trial.0100.latency)
]
</trial>

<trial practice100DIS>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_100DIS]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT100DIS.appendItem(trial.practice100DIS.latency)
]
</trial>

<trial 100DIS>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100DIS]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT100DIS.appendItem(trial.100DIS.latency)
]
</trial>

<trial practice100APP>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, practicevideo_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.practiceRT100APP.appendItem(trial.practice100APP.latency)
]
</trial>

<trial 100APP>
/ ontrialbegin = [
    values.ITI = expressions.iti
]
/ stimulustimes = [1 = clearscreen, video_100APP]
/ validresponse = (parameters.spacekey, parameters.rightkey)
/ correctresponse = (parameters.responsekey)
/ response = correct
/ posttrialpause = values.iti
/ ontrialend = [
    list.RT100APP.appendItem(trial.100APP.latency)
]
</trial>
**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block practice0100>
/ trials = [
    1 = intro0100;
    2 = getReady;
    3-7 = practice0100;
]
/ branch = [
return block.0100;
]
</block>

<block 0100>
/ trials = [
    1 = intro0100;
    2 = getReady;
    3-22 = 0100;
]
</block>

<block practice100DIS>
/ trials = [
    1 = intro100DIS;
    2 = getReady;
    3-8 = practice100DIS;
]
/ branch = [
return block.100DIS;
]
</block>

<block 100DIS>
/ trials = [
    1 = intro100DIS;
    2 = getReady;
    3-26 = 100DIS;
]
</block>

<block practice100APP>
/ trials = [
    1 = intro100APP;
    2 = getReady;
    3-8 = practice100APP;
]
/ branch = [
return block.100APP;
]
</block>

<block 100APP>
/ trials = [
    1 = intro100APP;
    2 = getReady;
    3-26 = 100APP;
]
</block>

<block finish>
/ trials = [
    1 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ blocks = [
    1 = noreplace(practice0100, practice100DIS, practice100APP );
    2 = finish;
]
/ onexptend = [
    values.0100_RT = expressions.0100_RT;
values.100DIS_RT = expressions.100DIS_RT;
values.100APP_RT = expressions.100APP_RT;
]

</expt>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************



Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 102K
Igor Iarrobino - 7/29/2024
Dave - 7/26/2024
Igor Iarrobino - 7/26/2024
Dave - 7/22/2024
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Hi Dave,

It seems it's working everything properly and I thank you very much for your kindness and your helpfulness.

Actually, I would try to study the user manual, but when they give you 4 scripts  to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly.
And I'm sorry for that.

I would have a new question, an advice/clue/hint.
I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics:
  1. stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
  2. and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D

Thank you in advance.
Have a nice weekend.

You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done.
Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htm
Videos stop upon response by default.
Dear Dave,

thank you for your answer and tips.

I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!
But I won't bother you about my work stress anymore.

If you can suggest a script to be easily modified, I would be extremely glad!
Otherwise, I thank you a lot again for your help so far.

Have a nice day


You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need.

Igor Iarrobino
Igor Iarrobino
New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)
Group: Forum Members
Posts: 11, Visits: 27
Dave - 7/26/2024
Igor Iarrobino - 7/26/2024
Dave - 7/22/2024
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Hi Dave,

It seems it's working everything properly and I thank you very much for your kindness and your helpfulness.

Actually, I would try to study the user manual, but when they give you 4 scripts  to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly.
And I'm sorry for that.

I would have a new question, an advice/clue/hint.
I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics:
  1. stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
  2. and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D

Thank you in advance.
Have a nice weekend.

You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done.
Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htm
Videos stop upon response by default.
Dear Dave,

thank you for your answer and tips.

I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!
But I won't bother you about my work stress anymore.

If you can suggest a script to be easily modified, I would be extremely glad!
Otherwise, I thank you a lot again for your help so far.

Have a nice day




Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 102K
Igor Iarrobino - 7/26/2024
Dave - 7/22/2024
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Hi Dave,

It seems it's working everything properly and I thank you very much for your kindness and your helpfulness.

Actually, I would try to study the user manual, but when they give you 4 scripts  to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly.
And I'm sorry for that.

I would have a new question, an advice/clue/hint.
I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics:
  1. stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
  2. and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D

Thank you in advance.
Have a nice weekend.

You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done.
Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htm
Videos stop upon response by default.
Igor Iarrobino
Igor Iarrobino
New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)
Group: Forum Members
Posts: 11, Visits: 27
Dave - 7/22/2024
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Hi Dave,

It seems it's working everything properly and I thank you very much for your kindness and your helpfulness.

Actually, I would try to study the user manual, but when they give you 4 scripts  to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly.
And I'm sorry for that.

I would have a new question, an advice/clue/hint.
I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics:
  1. stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
  2. and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D

Thank you in advance.
Have a nice weekend.



Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 102K
Igor Iarrobino - 7/22/2024
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link

<usermanual>
___________________________________________________________________________________________________________________    

                                    ABCD Emotional Stroop (keyboard version)
                                -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT
___________________________________________________________________________________________________________________

Script Author: IGOR IARROBINO, Research Fellow (igor.iarrobino@unimore.it/igor.iarrobino@gmail.com) for UNIMORE
Date: July 2024

Script Copyright © 05-18-2022 Millisecond Software

The script was originally designed for ABCD to be run on ipads and
was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version.
This is an adaptation of ABCD Emotional Stroop to a custom version of the task.
___________________________________________________________________________________________________________________
TASK DESCRIPTION    
___________________________________________________________________________________________________________________    

Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling.
The words are presented at the center of images. The image either show a word congruent face emotion
(e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato").
Images depict disgust/disgusto and fear/paura emotions of Caucasian faces.
Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word.
In another block, the participant have to respond to the emotional face.
Block order is determined randomly.

In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located
on the right side of the screen.

___________________________________________________________________________________________________________________    
DURATION
___________________________________________________________________________________________________________________    
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________    
DATA FILE INFORMATION
___________________________________________________________________________________________________________________
The default data stored in the data files are:

(1) Raw data file: 'emotionalstroop_ld_raw*.iqdat' (a separate file for each participant)*

build:                            The specific Inquisit version used (the 'build') that was run
computer.platform:                the platform the script was run on (win/mac/ios/android)
date, time:                     date and time script was run
subject, group:                 with the current subject/groupnumber
session:                        with the current session id

blockcode, blocknum:            the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum:             the name and number of the currently recorded trial (built-in Inquisit variable)
                                    Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
                                    that do not store data to the data file such as feedback trials. Thus, trialnum
                                    may not reflect the number of main trials run per block.
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)                                
                                    
wordposition:                    center
word_y:                            stores the vertical coordinate of the current word (in % of canvas height)
congruence:                        1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions)
selectStim:                        itemnumber of selected stimulus

stimulusitem.1-:                the presented stimuli in order of trial presentation
stimulusitem.3                    1) an empty stimulus (clearscreen)
                                2) presented image
                                3) presented word
                                        
correctButton:                    stores the correct response button for the current trial

response:                        the participant's response (scancode of response key)
                                16 = Z = left ("disgust/disgusto")
                                25 = M = right ("fear/paura")

correct:                        accuracy of response: 1 = correct response; 0 = otherwise
latency:                         the response latency (in ms); measured from: onset of image/word pair
list.accuracy.mean:                proportion correct of current block        


(2) Summary data file: 'abcdemotionalstroop_ln_summary*.iqdat' (a separate file for each participant)*

inquisit.version:                Inquisit version run
computer.platform:                the platform the script was run on (win/mac/ios/android)
startdate:                        date script was run
starttime:                        time script was started
subjectid:                        assigned subject id number
groupid:                        assigned group id number
sessionid:                        assigned session id number
elapsedtime:                    time it took to run script (in ms); measured from onset to offset of script
completed:                        0 = script was not completed (prematurely aborted);
                                1 = script was completed (all conditions run)
                                
                                
keyAssignment:                    "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura)
                                
ACC_practice1:                    proportion correct in final practice1 run
practice1Runs:                    number of practice1 runs needed
ACC_practice2:                    proportion correct in final practice2 run
practice2Runs:                    number of practice2 runs needed

ACC_all:                        proportion correct overall (across all test trials)
ACC_equal:                        proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalCongruent:                proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_equalIncongruent:            proportion correct in "equal numbers of congruentincongruent pairings" block
ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

meanRT_all:                     mean correct latency (in ms) overall
meanRT_equal:                    mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalCongruent:            mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_equalIncongruent:        mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block
meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
meanRT_incongruent:                mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________    
EXPERIMENTAL SET-UP
___________________________________________________________________________________________________________________    

1. Practice Block: 8 trials selected from 6 possible combinations
=> feedback provided
=> practice block is repeated if proportion correct of the last 8 trials is < 100%

2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each

1) Respond to Word
2) Respond to Face

For both:
=> feedback provided
=> practice block is repeated if proportion correct is < 100%


3. 2 Test Blocks:

(1) Respond to Word - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)

(2) Respond to Face - Equal number of congruent and incongruent pairings
-24 congruent word valence - pic valence pairings (fixed pairs)
-24 incongruent word valence - pic valence pairings (fixed pairs)
    
Trial Sequence:
Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms)

___________________________________________________________________________________________________________________    
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:

Duration Parameters:
/wordPresentationTime_practice:                    word duration (in ms) during practice trials (default: 2500ms)
/feedbackDuration:                                feedback duration (in ms) during practice
/wordPresentationTime_test:                        word duration (in ms) during test trials (default: 2500ms)
/ITI:                                            intertrial interval (in ms) between test trials (default: 1500ms)
/readyDuration:                                    duration (in ms) of ready trial (default: 3000ms)

Interface:
/wordSize:                                        sizing of words proportional to canvas height (default: 5%)
/picsize:                                        sizing of images proportional to canvas height (default: 45%)
/top_y:                                            vertical coordinate of top word in relation to canvas (default: 40%)
/bottom_y:                                        vertical coordinate of bottom word in relation to canvas (default: 60%)
                                                    Note: top of canvas = 0%; bottom of canvas = 100%

/leftresponsekey:                                the left response key (default: "Z")
/rightresponsekey:                                the right response key (default: "M")

</usermanual>



**************************************************************************************************************
**************************************************************************************************************
    EDITABLE PARAMETERS: change editable parameters here
**************************************************************************************************************
**************************************************************************************************************
Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms

<parameters>
/ wordPresentationTime_practice = 3000
/feedbackDuration = 1000
/wordPresentationTime_test = 3000
/ITI = 1500
/readyDuration = 2000

/wordSize = 5%
/picsize = 50%
/top_y = 50%
/bottom_y = 50%

/leftresponsekey = "Z"
/rightresponsekey = "M"
</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</instruct>


<item instructions>
/1 = "

EMOTIONAL STROOP"

/2 = "PRATICA LESSICO

In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA.

Le PAROLE che le verranno presentate sono:
~n~n~n~n~n~n"

/3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO.

Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA.

Premi la BARRA quando è pronto ad iniziare la pratica."

/4 = "PRATICA PAROLA
Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/5 = "Grazie per aver svolto la prova.

Adesso svolgerà il test.

Prema la BARRA per continuare"

/6 = "PRATICA VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa.
Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'"

/7 = "Grazie per aver svolto la prova.

Prema la BARRA per andare al Test"

/8 = "TEST PAROLA.
Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione.
Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo."

/9 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!"

/10 = "TEST VOLTO
Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione.
Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti.
Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi."

/11 = "Ricordi:
Per il DISGUSTO prema '<%values.disgustokey%>'
Per la PAURA prema '<%values.paurakey%>'

Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!"

/12 = "Lei è a metà strada!"

/13 = "Grazie per aver partecipato!"

/14 = "Grazie per aver svolto la prima prova."

</item>


<item continueButtons>
/1 = "Prema la BARRA per iniziare"
/2 = "Prema la BARRA per continuare"
/3 = "Prema la BARRA per iniziare"
/4 = "Prema la BARRA per iniziare"
/5 = "Prema la BARRA per iniziare"
/6 = "Prema la BARRA per iniziare"
/7 = "Prema la BARRA per continuare"
/8 = "Prema la BARRA per continuare"
/9 = "Prema la BARRA per iniziare"
/10 = "Prema la BARRA per continuare"
/11 = "Prema la BARRA per iniziare"
/12 = "Prema la BARRA per continuare"
/13 = "Stop"
/14 = "Prema la BARRA per continuare"
</item>

<text getReadyMessage>
/ items = ("Si tenga pronto! Il test sta per cominciare...

<%expressions.buttoninstruct3%>")
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (80%, 80%)
</text>

<text disgustoKeyReminder>
/ items = ("DISGUSTO = <%values.disgustokey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (25%, 90%)
/ erase = false
</text>

<text pauraKeyReminder>
/ items = ("PAURA = <%values.paurakey%>")
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ size = (30%, 5%)
/ vjustify = center
/ txcolor = BLACK
/ position = (75%, 90%)
/ erase = false
</text>

<text disgustoButton_instruct>
/ items = ("DISGUSTO = Prema '<%values.disgustokey%>'")
/ position = (25%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text pauraButton_instruct>
/ items = ("PAURA = Prema '<%values.paurakey%>'")
/ position = (75%, 60%)
/ fontstyle = ("Arial", 5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 10%)
/ txcolor = black
</text>

<text disgustoEmotionExamples>
/ items = ("disgustato~nnauseato~nstomacato")
/ position = (25%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>

<text pauraEmotionExamples>
/ items = ("intimorito~nimpaurito~nterrorizzato")
/ position = (75%, 70%)
/ fontstyle = ("Arial", 4%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (40%, 40%)
</text>


*******************************
General Helper Instructions
******************************

<text repeatPractice>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2W>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text repeatPractice2F>
/ items = ("Ci provi ancora!")
/ fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
/ position = (50%, 30%)
</text>

<text exit>
/ items = ("<prema la BARRA per uscire>")
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
/ position = (50%, 90%)
/ size = (80%, 5%)
/ vjustify = center
</text>

<expressions>
/buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";}
else {
"un tasto";}
/buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";}
else {
"un altro tasto";}
/buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";}
else {
"Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";}
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI
**************************************************************************************************************
**************************************************************************************************************

********************************************
practice 1
********************************************

<list practice1_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6)
/ replace = false
/ resetinterval = 0
</list>

<item words_practice1>
/1 = "disgustato"
/2 = "nauseato"
/3 = "stomacato"
/4 = "intimorito"
/5 = "impaurito"
/6 = "terrorizzato"
</item>

<item correctButton_practice1>
/1 = "disgustoButton"
/2 = "disgustoButton"
/3 = "disgustoButton"
/4 = "pauraButton"
/5 = "pauraButton"
/6 = "pauraButton"
</item>

<item feedback>
/1 = "Corretto"
/2 = "Non corretto"
/3 = "Tempo scaduto"
</item>

********************************************
practice 2W (F = word response block)
********************************************

<list practice2W_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2W>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2W>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2W>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2W>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2W>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "pauraButton"
/4 = "disgustoButton"
</item>

********************************************
practice 2F (F = face response block)
********************************************

<list practice2F_itemnumbers>
/ items = (1, 2, 3, 4)
/ replace = false
/ resetinterval = 0
</list>

<item pics_practice2F>
/1 = "F08-Disgust-Apex.jpg"
/2 = "F04-Fear-Apex.jpg"
/3 = "M03-Disgust-Apex.jpg"
/4 = "M06-Fear-Apex.jpg"
</item>

<item words_practice2F>
/1 = "nauseato"
/2 = "intimorito"
/3 = "terrorizzato"
/4 = "stomacato"
</item>

<list wordPositions_practice2F>
/ items = (0, 0, 0, 0)
/ select = values.selectStim
</list>

<list congruency_practice2F>
/items = (1, 1, 2, 2)
/ select = values.selectStim
</list>

<item correctButton_practice2F>
/1 = "disgustoButton"
/2 = "pauraButton"
/3 = "disgustoButton"
/4 = "pauraButton"
</item>

****************************
TestEW
(E = equal number of congruent and incongruent pairings; W = word response block)
****************************

<list testEW_itemnumbers>
/ items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEW>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEW>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEW>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEW>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="pauraButton"
/14="pauraButton"
/15="pauraButton"
/16="pauraButton"
/17="pauraButton"
/18="pauraButton"
/19="pauraButton"
/20="pauraButton"
/21="pauraButton"
/22="pauraButton"
/23="pauraButton"
/24="pauraButton"
/25="disgustoButton"
/26="disgustoButton"
/27="disgustoButton"
/28="disgustoButton"
/29="disgustoButton"
/30="disgustoButton"
/31="disgustoButton"
/32="disgustoButton"
/33="disgustoButton"
/34="disgustoButton"
/35="disgustoButton"
/36="disgustoButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

****************************
TestEF
(E = equal number of congruent and incongruent pairings; F = face response block)
****************************

<list testEF_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
/ replace = false
/ resetinterval = 0
</list>

<item pics_testEF>
/1="F06-Disgust-Apex.jpg"
/2="F04-Disgust-Apex.jpg"
/3="F08-Disgust-Apex.jpg"
/4="M12-Disgust-Apex.jpg"
/5="M03-Disgust-Apex.jpg"
/6="M06-Disgust-Apex.jpg"
/7="F06-Disgust-Apex.jpg"
/8="F04-Disgust-Apex.jpg"
/9="F08-Disgust-Apex.jpg"
/10="M12-Disgust-Apex.jpg"
/11="M03-Disgust-Apex.jpg"
/12="M06-Disgust-Apex.jpg"
/13="F06-Disgust-Apex.jpg"
/14="F04-Disgust-Apex.jpg"
/15="F08-Disgust-Apex.jpg"
/16="M12-Disgust-Apex.jpg"
/17="M03-Disgust-Apex.jpg"
/18="M06-Disgust-Apex.jpg"
/19="F06-Disgust-Apex.jpg"
/20="F04-Disgust-Apex.jpg"
/21="F08-Disgust-Apex.jpg"
/22="M12-Disgust-Apex.jpg"
/23="M03-Disgust-Apex.jpg"
/24="M06-Disgust-Apex.jpg"
/25="F06-Fear-Apex.jpg"
/26="F04-Fear-Apex.jpg"
/27="F08-Fear-Apex.jpg"
/28="M12-Fear-Apex.jpg"
/29="M03-Fear-Apex.jpg"
/30="M06-Fear-Apex.jpg"
/31="F06-Fear-Apex.jpg"
/32="F04-Fear-Apex.jpg"
/33="F08-Fear-Apex.jpg"
/34="M12-Fear-Apex.jpg"
/35="M03-Fear-Apex.jpg"
/36="M06-Fear-Apex.jpg"
/37="F06-Fear-Apex.jpg"
/38="F04-Fear-Apex.jpg"
/39="F08-Fear-Apex.jpg"
/40="M12-Fear-Apex.jpg"
/41="M03-Fear-Apex.jpg"
/42="M06-Fear-Apex.jpg"
/43="F06-Fear-Apex.jpg"
/44="F04-Fear-Apex.jpg"
/45="F08-Fear-Apex.jpg"
/46="M12-Fear-Apex.jpg"
/47="M03-Fear-Apex.jpg"
/48="M06-Fear-Apex.jpg"
</item>

<item words_testEF>
/1="disgustato"
/2="nauseato"
/3="stomacato"
/4="disgustato"
/5="nauseato"
/6="stomacato"
/7="disgustato"
/8="nauseato"
/9="stomacato"
/10="disgustato"
/11="nauseato"
/12="stomacato"
/13="intimorito"
/14="impaurito"
/15="terrorizzato"
/16="intimorito"
/17="impaurito"
/18="terrorizzato"
/19="intimorito"
/20="impaurito"
/21="terrorizzato"
/22="intimorito"
/23="impaurito"
/24="terrorizzato"
/25="disgustato"
/26="nauseato"
/27="stomacato"
/28="disgustato"
/29="nauseato"
/30="stomacato"
/31="disgustato"
/32="nauseato"
/33="stomacato"
/34="disgustato"
/35="nauseato"
/36="stomacato"
/37="intimorito"
/38="impaurito"
/39="terrorizzato"
/40="intimorito"
/41="impaurito"
/42="terrorizzato"
/43="intimorito"
/44="impaurito"
/45="terrorizzato"
/46="intimorito"
/47="impaurito"
/48="terrorizzato"
</item>

<list congruency_testEF>
/ items = (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,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1)
/ select = values.selectStim
</list>

<item correctButton_testEF>
/1="disgustoButton"
/2="disgustoButton"
/3="disgustoButton"
/4="disgustoButton"
/5="disgustoButton"
/6="disgustoButton"
/7="disgustoButton"
/8="disgustoButton"
/9="disgustoButton"
/10="disgustoButton"
/11="disgustoButton"
/12="disgustoButton"
/13="disgustoButton"
/14="disgustoButton"
/15="disgustoButton"
/16="disgustoButton"
/17="disgustoButton"
/18="disgustoButton"
/19="disgustoButton"
/20="disgustoButton"
/21="disgustoButton"
/22="disgustoButton"
/23="disgustoButton"
/24="disgustoButton"
/25="pauraButton"
/26="pauraButton"
/27="pauraButton"
/28="pauraButton"
/29="pauraButton"
/30="pauraButton"
/31="pauraButton"
/32="pauraButton"
/33="pauraButton"
/34="pauraButton"
/35="pauraButton"
/36="pauraButton"
/37="pauraButton"
/38="pauraButton"
/39="pauraButton"
/40="pauraButton"
/41="pauraButton"
/42="pauraButton"
/43="pauraButton"
/44="pauraButton"
/45="pauraButton"
/46="pauraButton"
/47="pauraButton"
/48="pauraButton"
</item>

**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 6.5.2.0 or higher

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "6.5.2.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = transparent
/ txcolor = black
/ screencolor = lightgrey
/ inputdevice = keyboard
</defaults>

**************************************************************************************************************
**************************************************************************************************************
    DATA
**************************************************************************************************************
**************************************************************************************************************

Note: data file explanations under User Manual Information at the top

To change from one data file per participant to one data file for all participants, set
/separatefiles = false

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = (build, computer.platform, date, time, subject, group, session,
blockcode, blocknum, trialcode, trialnum,values.keyAssignment,
values.wordposition, values.word_y, values.congruence, values.selectStim,
stimulusitem, stimulusitem, stimulusitem,
values.correctButton, response, correct, latency, list.accuracy.mean)
</data>

***********************
summary data file
***********************
<summarydata>
/ columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid,
script.elapsedtime, script.completed,
values.keyAssignment,
values.ACC_practice1,
values.practice1Runs,
values.ACC_practice2,
values.practice2WRuns,
values.practice2FRuns,

expressions.ACC_all,
expressions.ACC_WORD,
expressions.ACC_WORDCongruent,
expressions.ACC_WORDIncongruent,
expressions.ACC_FACE,
expressions.ACC_FACECongruent,
expressions.ACC_FACEIncongruent,
expressions.ACC_congruent,
expressions.ACC_incongruent,
expressions.meanRT_all,
expressions.meanRT_WORD,
expressions.meanRT_WORDCongruent,
expressions.meanRT_WORDIncongruent,
expressions.meanRT_FACE,
expressions.meanRT_FACECongruent,
expressions.meanRT_FACEIncongruent,
expressions.meanRT_congruent,
expressions.meanRT_incongruent)
/ separatefiles = true
</summarydata>


**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************

/countTestBlocks:        counts number of test blocks
/selectWord:            stores the itemnumber of the currently presented word
/selectImage:            stores the itemnumber of the currently presented image
/wordposition:            0 = words at the centre of the image
/word_y:                stores the vertical coordinate of the current word
/congruence:            0 = neutral; 1 = incongruent
/practice1Runs:            counts number of practice1 runs
/practice2WRuns:        counts number of practice2W runs
/practice2FRuns:        counts number of practice2F runs
/selectFeedback:        controls the selection of the feedback text to be presented
/skipReadyTrial:        0 = run ready trial; 1 = skip ready trial

<values>
/countTestBlocks = 0
/selectWord = 1
/selectImage = 1
/selectStim = 1
/wordposition = 0
/correctButton = ""
/word_y = 50%
/congruence = 0
/practice1Runs = 0
/practice2WRuns = 0
/practice2FRuns = 0
/selectFeedback = 0
/skipReadyTrial = 0
/getReady = 1
/keyAssignment = "leftdisgusto"

/disgustokey = parameters.leftresponsekey
/paurakey = parameters.rightresponsekey
</values>

/ACC_practice1:            stores the proportion correct of the current practice run

<values>
/ACC_practice1 = 0
/ACC_practice2 = 0
</values>

**************************************************************************************************************
**************************************************************************************************************
    EXPRESSIONS
**************************************************************************************************************
**************************************************************************************************************
/shadowSize:                        size of shadow text

/ACC_all:                        proportion correct overall (across all test trials)
/meanRT_all:                     mean correct latency (in ms) overall

/ACC_WORD:                     proportion correct in "WORD" block
/ACC_FACE:                     proportion correct in "FACE" block
/ACC_congruent:                    proportion correct in "congruent" pairings trials (across test blocks)
/ACC_incongruent:                proportion correct in "incongruent" pairings trials (across test blocks)

/meanRT_WORD:             mean correct latency (in ms) in "WORD" block
/meanRT_FACE:                    mean correct latency (in ms) in "FACE" block
/meanRT_congruent:                mean correct latency (in ms) in "congruent" pairings trials (across test blocks)
/meanRT_incongruent:            mean correct latency (in ms) in "incongruent" pairings trials (across test blocks)

<expressions>
/shadowSize = parameters.wordSize * 1.01

/ACC_all = list.accuracy.mean
/ACC_WORD = list.accuracyEW.mean
/ACC_WORDCongruent = list.accuracyEWCongruent.mean
/ACC_WORDIncongruent = list.accuracyEWIncongruent.mean
/ACC_FACE = list.accuracyEF.mean
/ACC_FACECongruent = list.accuracyEFCongruent.mean
/ACC_FACEIncongruent = list.accuracyEFIncongruent.mean
/ACC_congruent = list.accuracyCongruent.mean
/ACC_incongruent = list.accuracyIncongruent.mean

/meanRT_all = list.latencies.mean
/meanRT_WORD = list.latenciesEW.mean
/meanRT_WORDCongruent = list.latenciesEWCongruent.mean
/meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean
/meanRT_FACE = list.latenciesEF.mean
/meanRT_FACECongruent = list.latenciesEFCongruent.mean
/meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean
/meanRT_congruent = list.latenciesCongruent.mean
/meanRT_incongruent = list.latenciesIncongruent.mean
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************

<text intro>
/ items = instructions
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2W>
/ items = instructions
/ select = 4
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text intropractice2F>
/ items = instructions
/ select = 6
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2W>
/ items = instructions
/ select = 14
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F1>
/ items = instructions
/ select = 7
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F2>
/ items = instructions
/ select = 8
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text finishpractice2F3>
/ items = instructions
/ select = 9
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock1>
/ items = instructions
/ select = 10
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text newBlock2>
/ items = instructions
/ select = 11
/ position = (50%, 50%)
/ fontstyle = ("Arial", 6%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text break>
/ items = instructions
/ select = 12
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text end>
/ items = instructions
/ select = 13
/ position = (50%, 50%)
/ fontstyle = ("Arial", 8%, false, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (90%, 80%)
</text>

<text continueButton_intro>
/ items = continueButtons
/ select = text.intro.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_testblock>
/ items = continueButtons
/ select = text.newBlock1.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = blue
</text>

<text continueButton_Pnd>
/ items = continueButtons
/ select = text.end.currentitemnumber
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1)
/ vjustify = center
/ hjustify = center
/ size = (45%, 5%)
/ txbgcolor = red
</text>



***********************
Instruction Trials
***********************

<trial intro>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
/ branch = [
    trial.intro2;
]
</trial>

<trial intro2>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial intropractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

trial finishpractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1Start>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice1End>
/ inputdevice = keyboard
/ stimulusframes = [1 = intro, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2WEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2W, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FStart>
/ inputdevice = keyboard
/ stimulusframes = [1 = intropractice2F, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial practice2FEnd>
/ inputdevice = keyboard
/ stimulusframes = [1 = finishpractice2F1, continueButton_intro]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock1a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = finishpractice2F3, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
    values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial finish>
/ inputdevice = keyboard
/ skip = [
    values.countTestBlocks == 1;
]
/ stimulusframes = [1 = clearscreen, end, exit]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial break>
/ skip = [
    values.countTestBlocks > 1;
]
/ ontrialbegin = [
    text.continueButton_Pnd.textbgcolor = blue;
]
/ stimulusframes = [1 = clearscreen, break, continueButton_Pnd]
/ validresponse = (" ")
/ recorddata = false
/ ontrialend = [
    text.continueButton_Pnd.textbgcolor = red;
]
</trial>

*************************************
General Helper Instruction Trials/Blocks
*************************************

<trial getReady1>
/ stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder]
// trialduration = 5000
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) //
/ beginresponsetime = 0
/ errormessage = false
/ recorddata = false
</trial>

**************************************************************************************************************
**************************************************************************************************************
    STIMULI
**************************************************************************************************************
**************************************************************************************************************

<text Word_practice1>
/ items = item.words_practice1
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<text Word_practice2W>
/ items = item.words_practice2W
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<text Word_practice2F>
/ items = item.words_practice2F
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_practice2>
/ items = item.words_practice2
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

<picture pic_practice2W>
/items = pics_practice2W
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<picture pic_practice2F>
/items = pics_practice2F
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEW>
/ items = item.words_testEW
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testMC>
/ items = item.words_testMC
/ select = values.selectStim
/ vposition = values.word_y
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEW>
/items = pics_testEW
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text Word_testEF>
/ items = item.words_testEF
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = white
/ erase = false
</text>

text Wordshadow_testE>
/ items = item.words_testE
/ select = values.selectStim
/ vposition = 50%
/ hposition = 50%
/ fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1)
/ size = (40%, parameters.wordSize*1.5)
/ vjustify = center
/ hjustify = center
/ txcolor = black
/ erase = false
</text>

<picture pic_testEF>
/items = pics_testEF
/ select = values.selectStim
/ position = (50%, 50%)
/ size = (parameters.picsize, parameters.picSize)
/ erase = false
</picture>

<text feedback>
/ items = feedback
/ select = values.selectFeedback
/ txcolor = black
/ fontstyle = ("Arial", 7%, true, false, false, false, 5, 1)
/ position = (50%, 30%)
/ size = (80%, 10%)
/ vjustify = center
/ hjustify = center
/ erase = false
</text>

<shape getReadyEraser>
/ shape = rectangle
/ size = (80%, 40%)
/ position = (50%, 30%)
/ erase = false
/ color = black
</shape>

**************************************************************************************************************
**************************************************************************************************************
    LISTS    
**************************************************************************************************************
**************************************************************************************************************

*************************************************
Data Lists: used for descriptive statistics
store correct latencies/accuracy data
fill up during runtime
*************************************************

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracy>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latencies>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEW>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEWIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEW>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEWIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEF>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyEFIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEF>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesEFIncongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyCongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesCongruent>
</list>

Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial
any response coded as an error is automatically coded as 0
<list accuracyIncongruent>
</list>

Note: list stores the latency of correct responses for each relevant trial
<list latenciesIncongruent>
</list>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice1
**************************************************************************************************************
**************************************************************************************************************

<trial practice1>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice1_itemnumbers.nextvalue;
    values.correctButton = item.correctButton_practice1.item(values.selectStim);
]
/ stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice1.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice1.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice1.correct);
    values.ACC_practice1 = list.accuracy.mean;
    if (trial.practice1.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice1.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS : practice2W & 2F
**************************************************************************************************************
**************************************************************************************************************

<trial practice2W>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2W_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2W.nextvalue;
    values.correctButton = item.correctButton_practice2W.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2W.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2W.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2W.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2W.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2W.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>



<trial practice2F>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.practice2F_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_practice2F.nextvalue;
    values.correctButton = item.correctButton_practice2F.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
//***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
    

//****** Wordshadow_practice2, ****** it was in stimulus frame brackets
/ stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.practice2F.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.practice2F.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.practice2F.correct);
    values.ACC_practice2 = list.accuracy.mean;
    if (trial.practice2F.correct) {
        values.selectFeedback = 1;
        text.feedback.textcolor = green;
    } else if (trial.practice2F.response != 0) {
        values.selectFeedback = 2;
        text.feedback.textcolor = red;
    } else {
        values.selectFeedback = 3;
        text.feedback.textcolor = blue;
    };
]
/ trialduration = parameters.wordPresentationTime_practice
/ branch = [
    return trial.feedback;
]
</trial>

**************************************************************************************************************
**************************************************************************************************************
    TRIALS: test
**************************************************************************************************************
**************************************************************************************************************

=> EW: Equal number congruent/incongruent pairs - WORD Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEW>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEW_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEW.nextvalue;
    values.correctButton = item.correctButton_testEW.item(values.selectStim);
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
    
/ stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEW.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEW.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEW.correct);
    list.accuracyEW.appendItem(trial.testEW.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEW.correct);
        list.accuracyEWCongruent.appenditem(trial.testEW.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEW.correct);
        list.accuracyEWIncongruent.appenditem(trial.testEW.correct);
    };
    if (trial.testEW.correct) {
        list.latencies.appendItem(trial.testEW.latency);
        list.latenciesEW.appendItem(trial.testEW.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEW.latency);
            list.latenciesEWCongruent.appendItem(trial.testEW.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEW.latency);
            list.latenciesEWIncongruent.appendItem(trial.testEW.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

=> EF: Equal number congruent/incongruent pairs - FACE Response
//***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one)
//****** Wordshadow_testE, ***** it was in stimulusframes

<trial testEF>
/ inputdevice = keyboard
/ ontrialbegin = [
    values.selectStim = list.testEF_itemnumbers.nextvalue;
    values.wordposition = 0;
    values.congruence = list.congruency_testEF.nextvalue;
    values.correctButton = item.correctButton_testEF.item(values.selectStim);
    //values.wordposition == 0)
    if (values.wordposition == 0) {
        values.word_y = parameters.top_y;
    } else {
        values.word_y = parameters.bottom_y;
    };
]
        
/ stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder]
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ iscorrectresponse = [
    if (values.correctButton == "disgustoButton") {
        if (trial.testEF.responsetext == values.disgustokey) {
            return true;
        } else {
            return false;
        };
    } else {
        if (trial.testEF.responsetext == values.paurakey) {
            return true;
        } else {
            return false;
        };
    };
]
/ beginresponsetime = 0
/ responseinterrupt = immediate
/ ontrialend = [
    list.accuracy.appendItem(trial.testEF.correct);
    list.accuracyEF.appendItem(trial.testEF.correct);
    if (values.congruence == 1) {
        list.accuracyCongruent.appendItem(trial.testEF.correct);
        list.accuracyEFCongruent.appenditem(trial.testEF.correct);
    } else {
        list.accuracyIncongruent.appendItem(trial.testEF.correct);
        list.accuracyEFIncongruent.appenditem(trial.testEF.correct);
    };
    if (trial.testEF.correct) {
        list.latencies.appendItem(trial.testEF.latency);
        list.latenciesEF.appendItem(trial.testEF.latency);
        if (values.congruence == 1) {
            list.latenciesCongruent.appendItem(trial.testEF.latency);
            list.latenciesEFCongruent.appenditem(trial.testEF.latency);
        } else {
            list.latenciesIncongruent.appendItem(trial.testEF.latency);
            list.latenciesEFIncongruent.appenditem(trial.testEF.latency);
        };
    };
]
/ trialduration = parameters.wordPresentationTime_test
/ branch = [
    return trial.ITI;
]
</trial>

<trial repeatPractice>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2W>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2W, continueButton_intro]
/ validresponse = (" ")
</trial>


<trial repeatPractice2F>
/ inputdevice = keyboard
/ stimulusframes = [1 = repeatPractice2F, continueButton_intro]
/ validresponse = (" ")
</trial>
**************************************************************************************************************
**************************************************************************************************************
    TRIALS : helper trials
**************************************************************************************************************
**************************************************************************************************************

<trial feedback>
/ stimulusframes = [1 = clearscreen, feedback]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.feedbackDuration
</trial>

<trial ITI>
/ stimulusframes = [1 = clearscreen]

//touchscreens: present inactive response buttons
/ validresponse = (parameters.leftresponsekey, parameters.rightresponsekey)
/ isvalidresponse = [
    return(false);
]

/ recorddata = false
/ trialduration = parameters.ITI
</trial>

**************************************************************************************************************
**************************************************************************************************************
    BLOCKS
**************************************************************************************************************
**************************************************************************************************************

<block intro>
/ trials = [1 = intro]
</block>

<block practice1Intro>
/ trials = [1 = practice1Start]
</block>

<block practice1>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice1Runs += 1;
]
/ trials = [1 = getReady1; 2-7 = practice1]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice;
    };
]
</block>

<block repeatPractice>
/ trials = [1=repeatPractice]
/ branch = [
    return block.practice1;
    ]
</block>


<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2W>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    };
]
</block>


<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
    values.skipReadyTrial = 0;
]
</block>

<block practice2F>
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
    values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
    return block.practice2F;
]
</block>


<block testStart>
/ trials = [1 = practice2FEnd]
/ onblockbegin = [
    list.accuracy.reset();
    list.latencies.reset();
    values.skipReadyTrial = 0;
]
</block>

<block testEW>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock1;
    2 = nextBlock1a;
    3 = getReady1;
4-51 = testEW;
    52 = break;
    53 = finish;
]
</block>


<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt>
/ onexptbegin = [
    if (computer.touch && !computer.haskeyboard) {
        text.continueButton_Pnd.skip = true;
        text.continueButton_intro.skip = true;
        text.continueButton_testblock.skip = true;
    };]

/ blocks = [
    1 = intro;
    2 = practice1Intro;
    3 = practice1;
    4 = practice2WIntro;
    5 = practice2W;
    6 = practice2FIntro;
    7 = practice2F;
    8 = testStart;
    9 = testEW;
    10 = testEF;
]
</expt>

<monkey>
/ latencydistribution = normal(50, 20)
</monkey>

**************************************************************************************************************
                                                End of File
**************************************************************************************************************

<trial nextBlock2>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock1, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>

<trial nextBlock2a>
/ skip = [
values.countTestBlocks > 1;
]
/ stimulusframes = [1 = newBlock2, continueButton_testBlock]
/ validresponse = (" ")
/ recorddata = false
</trial>


These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is.

As for the 2nd question, you simply do

<expt>
/ onexptbegin = [
if (computer.touch && !computer.haskeyboard) {
text.continueButton_Pnd.skip = true;
text.continueButton_intro.skip = true;
text.continueButton_testblock.skip = true;
};]

/ blocks = [
1 = intro;
2 = practice1Intro;
3 = practice1;
4-5 = noreplace(practice2WIntro, practice2FIntro);
]
</expt>


with

<block practice2WIntro>
/ trials = [1 = practice2WStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2W;
]
</block>

<block practice2W>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2WRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2W]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2W;
    } else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEW;
    };
]
</block>

<block repeatPractice2W>
/ trials = [1=repeatPractice2W]
/ branch = [
return block.practice2W;
]
</block>

<block practice2FIntro>
/ trials = [1 = practice2FStart]
/ onblockbegin = [
values.skipReadyTrial = 0;
]
/ branch = [
    return block.practice2F;
]
</block>

<block practice2F>
/ onblockbegin = [
list.accuracy.reset();
list.latencies.reset();
values.practice2FRuns += 1;
]
/ trials = [1 = getReady1; 2-5 = practice2F]
/ onblockend = [
values.skipReadyTrial = 1;
]
/ branch = [
    if (list.accuracy.mean < 1 && !monkey.monkeymode) {
        return block.repeatPractice2F;
} else {
        list.accuracy.reset();
        list.latencies.reset();
        values.skipReadyTrial = 0;
        return block.testEF;
    };
]
</block>


<block repeatPractice2F>
/ trials = [1=repeatPractice2F]
/ branch = [
return block.practice2F;
]
</block>


In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code.

https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf

Igor Iarrobino
Igor Iarrobino
New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)New Member (28 reputation)
Group: Forum Members
Posts: 11, Visits: 27
Sorry Dave.

In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.:

<block testEF>
/ onblockbegin = [
    values.countTestBlocks += 1;
]
/ trials = [
    1 = nextBlock2;
    2 = nextBlock2a;
    3 = getReady1;
  4-51 = testEF;
    52 = break;
    53 = finish;
]
</block>


However, in the above and specific block, trials like 'nextBlock2' and  'nextBlock2a' are not selected and the script go directly to getReady1.
And this is my first problem.

Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks.
I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad.

I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link





Edited 2 Months Ago by Dave
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search