Millisecond Forums

Help with if else statement after iaintro with instructions

https://forums.millisecond.com/Topic28730.aspx

By uinib - 4/15/2020

Hello, I am looking for a help. I have to make 3 questions with Yes/No answers. If statement is 2 answers or more are Yes. If it has to end the survery. I want to put this statement after <iaintro> but before big survery. Can somebody help me? As You can see I ve started creating mini survery  befor iaintro in EDITABLE INSTRUCTIONS: change instructions here but Im stuck there. 

this is code
<usermanual>
                        
                                    Implicit Attitude Test (IAT) - with pictures
SCRIPT INFO

Main Inquisit programming: Sean Draine (seandr@millisecond.com)
last updated: 02-12-2018 by K.Borchert (katjab@millisecond.com) for Millisecond Software LLC

Script Copyright © 02-12-2018 Millisecond Software


BACKGROUND INFO

The Implicit Association Task (Greenwald, McGhee, & Schwartz, 1998) is a widely-used cognitive-behavioral paradigm
that measures the strength of automatic (implicit) associations between concepts in people’s minds relying
on latency measures in a simple sorting task.

The strength of an association between concepts is measured by the standardized mean difference score of
the 'hypothesis-inconsistent' pairings and 'hypothesis-consistent' pairings (d-score) (Greenwald, Nosek, & Banaji, 2003).
In general, the higher the d-score the stronger is the association between the 'hypothesis-consistent' pairings
(decided by researchers). Negative d-scores suggest a stronger association between the 'hypothesis-inconsistent' pairings.

Inquisit calculates d-scores using the improved scoring algorithm as described in Greenwald et al (2003).
Error trials are handled by requiring respondents to correct their responses according to recommendation (p.214).

D-scores obtained with this script:
Positive d-scores: support a stronger association between 'Flowers-Good' and 'Insects-Bad' than for the opposite pairings
Negative d-scores: support a stronger association between 'Insects-Good' and 'Flowers-Bad' than for the opposite pairings

References:
Greenwald, A. G., McGhee, D. E., & Schwartz, J. K. L. (1998). Measuring individual differences in implicit cognition:
The Implicit Association Test. Journal of Personality and Social Psychology, 74, 1464-1480.

Greenwald, A. G., Nosek, B. A., & Banaji, M. R. (2003). Understanding and Using the Implicit Association Test:
I. An Improved Scoring Algorithm. Journal of Personality and Social Psychology, 85, 197-216.


                                             *Task*
Participants are asked to categorize attributes (e.g. "joyful"; "tragic") and and target items (e.g "daisy" vs. "wasp")
into predetermined categories via keystroke presses. The basic task is to press a left key (E) if an item (e.g. "joyful")
belongs to the category presented on the left (e.g. "Good") and to press the right key (I) if the word (e.g. "tragic")
belongs to the category ("Bad") presented on the right.
For practice, participants sort items into the target categories "Flowers vs. Insects" and the attribute categories "Good vs. Bad".
For the test, participants are asked to sort categories into the paired/combined categories (e.g.
"Flower OR Good" on the left vs. "Insect OR Bad" on the right). Pairings are reversed for a second test
(e.g. "Insects OR Good" on the left vs. "Flowers OR Bad" on the right). Block order is counterbalanced by groupnumber.    

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

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

build:                            Inquisit build
computer.platform:                the platform the script was run on
date, time, subject, group:        date and time script was run with the current subject/groupnumber
                                        Note: group1/group2 counterbalance the order in which the pairings are run
blockcode, blocknum:            the name and number of the current block
trialcode, trialnum:             the name and number of the currently recorded trial
                                    (Note: not all trials that are run might record data; by default data is collected unless /recorddata = false is set for a particular trial/block)
response:                        the final trial response (scancodes of the keys pressed)
                                        Note: script saves the final and -by design- correct response
correct:                        the accuracy of the initial response
                                        0 = initial response was incorrect and needed to be corrected
                                        1 = initial response is correct
latency:                        the latency of the final (correct) response in ms
stimulusnumber:                    the number of the current stimulus
stimulusitem:                    the currently presented item
expressions.da:                    d-score of the first short blocks
expressions.db:                    d-score of the second long blocks
expressions.d:                    overall d-score(non-weighted mean of the 2 d-scores)
/ percentcorrect:           the overall percent correct score of initial responses of test trials of D-score qualifying latencies

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

script.startdate:                date script was run
script.starttime:                time script was started
script.subjectid:                subject id number
script.groupid:                    group id number
script.elapsedtime:                time it took to run script (in ms)
computer.platform:                the platform the script was run on
/completed:                        0 = script was not completed (prematurely aborted); 1 = script was completed (all conditions run)
expressions.da:                    d-score of the first blocks
expressions.db:                    d-score of the second blocks
expressions.d:                    overall d-score
/ percentcorrect:           the overall percent correct score of initial responses of test trials of D-score qualifying latencies



EXPERIMENTAL SET-UP

Hypothesis-consistent pairings vs. hypothesis-inconsistent pairings; tested within-subjects
=> order is counterbalanced by groupnumber assignment

Block Sequence:
1. Target Category sorting training
2. Attribute sorting training
3. 1. Test Block of hypothesis-consistent* pairings with 20 trials (half the participant start with inconsistent pairings)
4. 2. Test Block of hypothesis-consistent pairings with 40 trials
5. Target Category sorting training with targets switching sides
6. 1. Test Block of hypothesis-inconsistent pairings with 20 trials
7. 2. Test Block of hypothesis-inconsistent pairings with 40 trials

In all Test Blocks:
* attributes and targets alternate
* attributes as well as targets are randomly selected without replacement

Trial Sequence:
Target -> until correct response -> ISI: 250ms (default)-> Target....STIMULI
Stimuli can be edited under section Editable Stimuli

INSTRUCTIONS
* start instruction page is provided as an html page. It automatically adapts to different images and category labels UNLESS
the number of attributes and/or targets have been changed. In this case, changes have to be
made to file "intro_iat.htm", so that the correct number of items are presented in the overview table.

Example: instead of 8 words for target A, only 5 should be presented:

in file "intro_iat.htm":
change:
            <td><%item.targetA.item(1)%>, <%item.targetA.item(2)%>, <%item.targetA.item(3)%>, <%item.targetA.item(4)%>,
                <%item.targetA.item(5)%>, <%item.targetA.item(6)%>, <%item.targetA.item(7)%>, <%item.targetA.item(8)%>
            </td>

To:
            <td><%item.targetA.item(1)%>, <%item.targetA.item(2)%>, <%item.targetA.item(3)%>, <%item.targetA.item(4)%>,
                <%item.targetA.item(5)%>
            </td>

* item.instructions under section 'Editable Instructions' contains the the trial instructions
The instructions adapt automatically if different attributes and targets are used.

EDITABLE CODE:
check below for (relatively) easily editable parameters, stimuli, instructions etc.
Keep in mind that you can use this script as a template and therefore always "mess" with the entire code to further customize your experiment.

The parameters you can change are:

/showsummaryfeedback:        set parameter showsummaryfeedback = true to display summary feedback to participants at the end (default)
                            set parameter showsummaryfeedback = false if no summary feedback should be presented to participants
/ISI:                        interstimulus interval (in ms) (default: 250ms)
</usermanual>


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

<parameters>
/showsummaryfeedback = true
/ISI = 250</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI: change editable stimuli here
**************************************************************************************************************
**************************************************************************************************************
This sample IAT can be easily adapted to different target categories
and attributes. To change the categories, you need only change the
stimulus items and labels immediately below this line.

***********************************************************************
<item attributeAlabel>
/1 = "Слова"
</item>

<item attributeA>
/1 = "кошмар"
/2 = "чужой"
/3 = "красивый"
/4 = "мой"
/5 = "далеко"
/6 = "классный"
/7 = "плохой"
/8 = "любовь"
</item>

<item attributeBlabel>
/1 = "Słowa"
</item>

<item attributeB>
/1 = "ładny"
/2 = "mój"
/3 = "obcy"
/4 = "bliski"
/5 = "zimny"
/6 = "złe"
/7 = "kochany"
/8 = "brzydki"
</item>

<item targetAlabel>
/1 = "Картинки"
</item>

<item targetA>
/1 = "Lenin.jpg"
/2 = "tretiak.jpeg"
/3 = "balet.jpg"
/4 = "kreml.jpg"
/5 = "kolej.jpg"
/6 = "bajka.jpg"
/7 = "dzien zwyciestwa.jpeg"
/8 = "mgu.jpg"
</item>

<item targetBlabel>
/1 = "Obrazki"
</item>

<item targetB>
/1 = "syrenka.jpg"
/2 = "stocznia.jpg"
/3 = "zubr.jpg"
/4 = "wawel.jpg"
/5 = "lewandowski.jpeg"
/6 = "jezus.jpg"
/7 = "piłsudski.jpg"
/8 = "stare miasto waw.jpg"
</item>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************

<values>
/ 1Pyt = 0
</values>
<textbox 1Pyt>
/caption "Posługuje się w obu językach na codzień:"
</textbox>
<surveypage 1ankieta>
/questions = [1=1Pyt]
/ showmousecursor = true

</surveypage>

<trial przechwyt1>
/ ontrialbegin = [values.1Pyt = textbox.1Pyt.response]

/response = noresponse
</trial>

<htmlpage iatintro>
/ file = "instrukcja_poczatek.htm"
</htmlpage>


<item instructions>
/ 1 = "Przyłóż lewy palec na klawiszu odpowiedzi 'E' dla elementów należących do kategorii '<%expressions.leftTarget%>'.
Połóż prawy palec na klawiszu odpowiedzi 'I' dla elementów należących do kategorii '<%expressions.rightTarget%>'.
~nPrzedmioty będą pojawiać się jeden po drugim na środku ekranu.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 2 = "Przyłóż lewy palec na klawiszu odpowiedzi 'E' dla elementów należących do kategorii '<%item.attributeAlabel.item(1)%>'.
Połóż prawy palec na klawiszu odpowiedzi 'I' dla elementów należących do kategorii '<%item.attributeBlabel.item(1)%>'.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 3 = "Naciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.leftTarget%>'.
Nacisnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.rightTarget%>'.
~nKażdy element należy do tylko jednej kategorii.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 4 = "To jest to samo zadanie co poprzednio.
~n~nNaciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.leftTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.rightTarget%>'.
~nKażdy element należy do tylko jednej kategorii.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 5 = "Uwaga! Etykiety zamieniono stronami.
~nNaciśnij lewy klawisz 'E' dla '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%expressions.leftTarget%>'.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 6 = "Naciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.leftTarget%>'.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nZwróć uwagę na, że powstały pary łączone.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 7 = "To jest to samo zadanie co poprzednio.
~nNaciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.leftTarget%>'
~nKażdy element należy do tylko jednej kategorii.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."
</item>

Note: expressions used to assign the correct label to the left and right response keys
<expressions>
/leftTarget = if(mod(script.groupid, 2) != 0){
    item.targetAlabel.item(1);
} else {
    item.targetBlabel.item(1);
};
/rightTarget = if (mod(script.groupid, 2) != 0){
    item.targetBlabel.item(1);
} else {
    item.targetAlabel.item(1);
};
</expressions>

<text spacebar>
/ items = ("Naciśnij klawisz spacji, aby rozpocząć.")
/ position = (60%, 90%)
/ valign = bottom
</text>

<text errorReminder>
/ items = (" Jeśli popełnisz błąd pojawi się czerwony znak X; aby kontynuować naciśnij drugi klawisz odpowiedzi.")
/ position = (50%, 95%)
/ valign = bottom
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/ txcolor = white
/ erase = false
</text>

***********************************************************************
Performance summary
***********************************************************************

<trial summary>
/ stimulustimes = [0=summary]
/ validresponse = (" ")
/ recorddata = false
/ ontrialbegin = [values.magnitude = "little to no"]
/ ontrialbegin = [if( abs(expressions.d) > 0.15 ) values.magnitude = "a slight"]
/ ontrialbegin = [if( abs(expressions.d) > 0.35 ) values.magnitude = "a moderate"]
/ ontrialbegin = [if( abs(expressions.d) >= 0.65 ) values.magnitude = "a strong"]
/ ontrialbegin = [if (expressions.d >= 0.0) values.preferred = item.targetALabel.1]
/ ontrialbegin = [if (expressions.d < 0.0) values.preferred = item.targetBLabel.1]
/ ontrialbegin = [if (expressions.d < 0.0) values.notpreferred= item.targetALabel.1]
/ ontrialbegin = [if (expressions.d >= 0.0) values.notpreferred= item.targetBLabel.1]
</trial>

<text summary>
/ items = ("Dziękuję za badanie")
/ size = (60%, 60%)
/ hjustify = left
</text>

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


**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 5.0.7.0 or higher

<defaults>
/ fontstyle = ("Arial", 3.5%)
/ screencolor = black
/ txbgcolor = black
/ txcolor = white
/ minimumversion = "5.0.7.0"
/ canvasaspectratio = (4, 3)
</defaults>

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

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

***********************
raw data file
***********************
<data>
/ columns = (build, computer.platform, date, time, group, subject, blockcode, blocknum, trialcode, trialnum, response, correct, latency,
stimulusnumber, stimulusitem, expressions.da, expressions.db, expressions.d, expressions.percentcorrect)
/ separatefiles = true
</data>

****************
summary data
****************

<summarydata>
/ columns = (script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed,
expressions.da, expressions.db, expressions.d, expressions.percentcorrect)
/ separatefiles = true
</summarydata>

**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************
            
/completed:                    0 = script was not completed; 1 = script was completed (all conditions run)

/ sum1a:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the first compatible block 1A
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum2a:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the first incompatible block 2A
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum1b:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the second compatible block 1B
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum2b:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the second incompatible block 2B
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ n1a:                        counts the number of trials in first compatible block 1A (except first one)
/ n2a:                        counts the number of trials in first incompatible block 2A (except first one)
/ n1b:                        counts the number of trials in second compatible block 1B
/ n2b:                        counts the number of trials in second incompatible block 2B
/ ss1a:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the first compatible block
/ ss2a                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the first incompatible block
/ ss1b:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the second compatible block
/ ss2b:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the second incompatible block
/ magnitude:                stores the magnitude of the implicit preference: "little to no", "a slight", "a moderate", "a strong"
/ preferred:                stores the preferred target category
/ notpreferred :            stores the non preferred target category
/ n_correct:                counts all initial correct responses of all trials that count towards D score

<values>
/ completed = 0
/ sum1a = 0
/ sum2a = 0
/ sum1b = 0
/ sum2b = 0
/ n1a = 0
/ n2a = 0
/ n1b = 0
/ n2b = 0
/ ss1a = 0
/ ss2a = 0
/ ss1b = 0
/ ss2b = 0
/ magnitude = "unknown"
/ preferred = "unknown"
/ notpreferred = "unknown"
/ n_correct = 0
/progresswidth = 0
/instructionIndex = 0</values>

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

* 1 is compatible, 2 is incompatible
* a is first block, b is second block

/ m1a:                    mean latencies of correct responses in first compatible block
/ m2a:                    mean latencies of correct responses in first incompatible block
/ m1b:                    mean latencies of correct responses in second compatible block
/ m2b:                    mean latencies of correct responses in second incompatible block
/ sd1a:                    standard deviation of latencies of correct responses in first compatible block
/ sd2a                    standard deviation of latencies of correct responses in first incompatible block
/ sd1b:                    standard deviation of latencies of correct responses in second compatible block
/ sd2b:                    standard deviation of latencies of correct responses in second incompatible block
/ sda                    standarddeviation of latencies in first block
/ sdb                     standarddeviation of latencies in second block
/ da:                    D-score for first blocks        
/ db:                    D-score for second blocks
/ d:                    overall D-score
/ percentcorrect:   calculates the overall percent correct score of initial responses of test trials of D-score qualifying latencies
/progress:                sets the length of the progress bar to %

<expressions>
/ m1a = values.sum1a / values.n1a
/ m2a = values.sum2a / values.n2a
/ m1b = values.sum1b / values.n1b
/ m2b = values.sum2b / values.n2b
/ sd1a = sqrt((values.ss1a - (values.n1a * (expressions.m1a * expressions.m1a))) / (values.n1a - 1))
/ sd2a = sqrt((values.ss2a - (values.n2a * (expressions.m2a * expressions.m2a))) / (values.n2a - 1))
/ sd1b = sqrt((values.ss1b - (values.n1b * (expressions.m1b * expressions.m1b))) / (values.n1b - 1))
/ sd2b = sqrt((values.ss2b - (values.n2b * (expressions.m2b * expressions.m2b))) / (values.n2b - 1))
/ sda = sqrt((((values.n1a - 1) * (expressions.sd1a * expressions.sd1a) + (values.n2a - 1) * (expressions.sd2a * expressions.sd2a)) + ((values.n1a + values.n2a) * ((expressions.m1a - expressions.m2a) * (expressions.m1a - expressions.m2a)) / 4) ) / (values.n1a + values.n2a - 1) )
/ sdb = sqrt((((values.n1b - 1) * (expressions.sd1b * expressions.sd1b) + (values.n2b - 1) * (expressions.sd2b * expressions.sd2b)) + ((values.n1b + values.n2b) * ((expressions.m1b - expressions.m2b) * (expressions.m1b - expressions.m2b)) / 4) ) / (values.n1b + values.n2b - 1) )
/ da = (m2a - m1a) / expressions.sda
/ db = (m2b - m1b) / expressions.sdb
/ d = (expressions.da + expressions.db) / 2
/ percentcorrect = (values.n_correct/ (values.n1a + values.n1b + values.n2a + values.n2b)) * 100
/progress = 1% * values.progresswidth
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ screencolor = black
</instruct>

<text instructions>
/ items = instructions
/ position = (10%, 25%)
/ halign = left
/ valign = top
/ hjustify = left
/ vjustify = center
/ size = (80%, 50%)
/ select = values.instructionIndex
</text>

<trial instructions>
/ ontrialbegin = [
    values.progresswidth += 10;
    values.instructionIndex += 1;
]
/ stimulustimes = [1=instructions, spacebar, progressbar, progressbar_fill]
/ correctresponse = (" ")
/ errormessage = false
/ recorddata = false
/ showmousecursor = true
</trial>


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

<shape progressbar>
/shape = rectangle
/ size = (70%, 2%)
/ color = gray
/ position = (15%, 95%)
/ halign = left
/ valign = top
</shape>

<shape progressbar_fill>
/shape = rectangle
/ size = (expressions.progress, 2%)
/ color = green
/ position = (15%, 95%)
/ halign = left
/ valign = top
</shape>

<text attributeA>
/ items = attributeA
/ fontstyle = ("Arial", 5%)
/ txcolor = green
</text>

<text attributeB>
/ items = attributeB
/ fontstyle = ("Arial", 5%)
/ txcolor = green
</text>

<picture targetB>
/ items = targetB
/ size = (55%, 55%)
</picture>

<picture targetA>
/ items = targetA
/ size = (55%, 55%)
</picture>

<text error>
/ position = (50%, 75%)
/ items = ("X")
/ color = red
/ fontstyle = ("Arial", 10%, true)
</text>

<text attributeAleft>
/ items = attributeAlabel
/ valign = top
/ halign = left
/ position = (5%, 5%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
</text>

<text attributeBright>
/ items = attributeBlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
</text>

<text targetBleft>
/ items = targetBlabel
/ valign = top
/ halign = left    
/ position = (5%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBright>
/ items = targetBlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBleftmixed>
/ items = targetBlabel
/ valign = top
/ halign = left
/ position = (5%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBrightmixed>
/ items = targetBlabel
/ valign = top
/ halign = right
/ position = (95%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAleft>
/ items = targetAlabel
/ valign = top
/ halign = left
/ position = (5%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAright>
/ items = targetAlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAleftmixed>
/ items = targetAlabel
/ valign = top
/ halign = left
/ position = (5%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetArightmixed>
/ items = targetAlabel
/ valign = top
/ halign = right
/ position = (95%, 19%)
/ fontstyle = ("Arial", 5%)
</text><text orleft>
/ items = ("or")
/ valign = top
/ halign = left
/ position = (5%, 12%)
/ fontstyle = ("Arial", 5%)
</text>

<text orright>
/ items = ("or")
/ valign = top
/ halign = right
/ position = (95%, 12%)
/ fontstyle = ("Arial", 5%)
</text>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS     
**************************************************************************************************************
**************************************************************************************************************

<trial attributeA>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = attributeA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial attributeB>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = attributeB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetBleft>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = targetB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetBright>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = targetB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetAleft>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = targetA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetAright>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = targetA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

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

<block attributepractice>
/ bgstim = (attributeAleft, attributeBright)
/ trials = [
        1=instructions;
        2-21 = random(attributeA, attributeB);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetcompatiblepractice>
/ bgstim = (targetAleft, targetBright)
/ trials = [
        1=instructions;
        2-21 = random(targetAleft, targetBright);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetincompatiblepractice>
/ bgstim = (targetAright, targetBleft)
/ trials = [
        1=instructions;
        2-21 = random(targetAright, targetBleft);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetcompatiblepracticeswitch>
/ bgstim = (targetAleft, targetBright)
/ trials = [
    1=instructions;
    2-41 = random(targetAleft, targetBright);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetincompatiblepracticeswitch>
/ bgstim = (targetAright, targetBleft)
/ trials = [
    1=instructions;
    2-41 = random(targetAright, targetBleft);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block compatibletest1>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [1=instructions;
3,5,7,9,11,13,15,17,19,21= random(targetAleft, targetBright);
2,4,6,8,10,12,14,16,18,20 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.sum1a = values.sum1a + block.compatibletest1.latency;
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n1a += 1;
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.ss1a = values.ss1a + (block.compatibletest1.latency * block.compatibletest1.latency);
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n_correct += block.compatibletest1.correct;
]
</block>

<block compatibletest2>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40 = random(targetAleft, targetBright);
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.compatibletest2.latency <= 10000) values.sum1b = values.sum1b + block.compatibletest2.latency;
    if(block.compatibletest2.latency <= 10000) values.n1b += 1;
    if(block.compatibletest2.latency <= 10000) values.ss1b = values.ss1b + (block.compatibletest2.latency * block.compatibletest2.latency);
    if(block.compatibletest2.latency <= 10000) values.n_correct += block.compatibletest2.correct;
]
</block>

<block incompatibletest1>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [1=instructions;
3,5,7,9,11,13,15,17,19,21 = random(targetBleft, targetAright);
2,4,6,8,10,12,14,16,18,20 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1) values.sum2a = values.sum2a + block.incompatibletest1.latency;
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.n2a += 1;
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.ss2a = values.ss2a + (block.incompatibletest1.latency * block.incompatibletest1.latency);
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.n_correct += block.incompatibletest1.correct;
]
</block>

<block incompatibletest2>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40 = random(targetBleft, targetAright);
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.incompatibletest2.latency <= 10000) values.sum2b = values.sum2b + block.incompatibletest2.latency;
    if(block.incompatibletest2.latency <= 10000) values.n2b += 1;
    if(block.incompatibletest2.latency <= 10000) values.ss2b = values.ss2b + (block.incompatibletest2.latency * block.incompatibletest2.latency);
    if(block.incompatibletest2.latency <= 10000) values.n_correct += block.incompatibletest2.correct;
]
</block>

<block compatibletestinstructions>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [1=instructions]
/ recorddata = false
</block>

<block incompatibletestinstructions>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [1=instructions]
/ recorddata = false
</block>

<block summary>
/skip = [parameters.showsummaryfeedback == false]
/ trials = [1=summary]
/ recorddata = false
</block>

**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************
Groupassignment is done by groupnumber

<expt>
/ preinstructions = (iatintro)
/subjects = (1 of 2)
/groupassignment = groupnumber
/ blocks = [
    1=targetcompatiblepractice;
    2=attributepractice;
    3=compatibletest1;
    4=compatibletestinstructions;
    5=compatibletest2;
    6=targetincompatiblepractice;
    7=incompatibletest1;
    8=incompatibletestinstructions;
    9=incompatibletest2;
    10=summary;
]
/onexptend = [values.completed = 1]
</expt>

<expt>
/ preinstructions = (iatintro)
/subjects = (2 of 2)
/groupassignment = groupnumber
/ blocks = [
    1=targetincompatiblepractice;
    2=attributepractice;
    3=incompatibletest1;
    4=incompatibletestinstructions;
    5=incompatibletest2;
    6=targetcompatiblepractice;
    7=compatibletest1;
    8=compatibletestinstructions;
    9=compatibletest2;
    10=summary;
]
/onexptend = [values.completed = 1]
</expt>

***********************************************************************
Test Monkey
***********************************************************************
<monkey>
/ latencydistribution = normal(500, 100)
/ percentcorrect = 90
</monkey>
**************************************************************************************************************
                                                End of File
**************************************************************************************************************
By Dave - 4/15/2020

uinib - 4/15/2020
Hello, I am looking for a help. I have to make 3 questions with Yes/No answers. If statement is 2 answers or more are Yes. If it has to end the survery. I want to put this statement after <iaintro> but before big survery. Can somebody help me? As You can see I ve started creating mini survery  befor iaintro in EDITABLE INSTRUCTIONS: change instructions here but Im stuck there. 

this is code
<usermanual>
                        
                                    Implicit Attitude Test (IAT) - with pictures
SCRIPT INFO

Main Inquisit programming: Sean Draine (seandr@millisecond.com)
last updated: 02-12-2018 by K.Borchert (katjab@millisecond.com) for Millisecond Software LLC

Script Copyright © 02-12-2018 Millisecond Software


BACKGROUND INFO

The Implicit Association Task (Greenwald, McGhee, & Schwartz, 1998) is a widely-used cognitive-behavioral paradigm
that measures the strength of automatic (implicit) associations between concepts in people’s minds relying
on latency measures in a simple sorting task.

The strength of an association between concepts is measured by the standardized mean difference score of
the 'hypothesis-inconsistent' pairings and 'hypothesis-consistent' pairings (d-score) (Greenwald, Nosek, & Banaji, 2003).
In general, the higher the d-score the stronger is the association between the 'hypothesis-consistent' pairings
(decided by researchers). Negative d-scores suggest a stronger association between the 'hypothesis-inconsistent' pairings.

Inquisit calculates d-scores using the improved scoring algorithm as described in Greenwald et al (2003).
Error trials are handled by requiring respondents to correct their responses according to recommendation (p.214).

D-scores obtained with this script:
Positive d-scores: support a stronger association between 'Flowers-Good' and 'Insects-Bad' than for the opposite pairings
Negative d-scores: support a stronger association between 'Insects-Good' and 'Flowers-Bad' than for the opposite pairings

References:
Greenwald, A. G., McGhee, D. E., & Schwartz, J. K. L. (1998). Measuring individual differences in implicit cognition:
The Implicit Association Test. Journal of Personality and Social Psychology, 74, 1464-1480.

Greenwald, A. G., Nosek, B. A., & Banaji, M. R. (2003). Understanding and Using the Implicit Association Test:
I. An Improved Scoring Algorithm. Journal of Personality and Social Psychology, 85, 197-216.


                                             *Task*
Participants are asked to categorize attributes (e.g. "joyful"; "tragic") and and target items (e.g "daisy" vs. "wasp")
into predetermined categories via keystroke presses. The basic task is to press a left key (E) if an item (e.g. "joyful")
belongs to the category presented on the left (e.g. "Good") and to press the right key (I) if the word (e.g. "tragic")
belongs to the category ("Bad") presented on the right.
For practice, participants sort items into the target categories "Flowers vs. Insects" and the attribute categories "Good vs. Bad".
For the test, participants are asked to sort categories into the paired/combined categories (e.g.
"Flower OR Good" on the left vs. "Insect OR Bad" on the right). Pairings are reversed for a second test
(e.g. "Insects OR Good" on the left vs. "Flowers OR Bad" on the right). Block order is counterbalanced by groupnumber.    

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

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

build:                            Inquisit build
computer.platform:                the platform the script was run on
date, time, subject, group:        date and time script was run with the current subject/groupnumber
                                        Note: group1/group2 counterbalance the order in which the pairings are run
blockcode, blocknum:            the name and number of the current block
trialcode, trialnum:             the name and number of the currently recorded trial
                                    (Note: not all trials that are run might record data; by default data is collected unless /recorddata = false is set for a particular trial/block)
response:                        the final trial response (scancodes of the keys pressed)
                                        Note: script saves the final and -by design- correct response
correct:                        the accuracy of the initial response
                                        0 = initial response was incorrect and needed to be corrected
                                        1 = initial response is correct
latency:                        the latency of the final (correct) response in ms
stimulusnumber:                    the number of the current stimulus
stimulusitem:                    the currently presented item
expressions.da:                    d-score of the first short blocks
expressions.db:                    d-score of the second long blocks
expressions.d:                    overall d-score(non-weighted mean of the 2 d-scores)
/ percentcorrect:           the overall percent correct score of initial responses of test trials of D-score qualifying latencies

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

script.startdate:                date script was run
script.starttime:                time script was started
script.subjectid:                subject id number
script.groupid:                    group id number
script.elapsedtime:                time it took to run script (in ms)
computer.platform:                the platform the script was run on
/completed:                        0 = script was not completed (prematurely aborted); 1 = script was completed (all conditions run)
expressions.da:                    d-score of the first blocks
expressions.db:                    d-score of the second blocks
expressions.d:                    overall d-score
/ percentcorrect:           the overall percent correct score of initial responses of test trials of D-score qualifying latencies



EXPERIMENTAL SET-UP

Hypothesis-consistent pairings vs. hypothesis-inconsistent pairings; tested within-subjects
=> order is counterbalanced by groupnumber assignment

Block Sequence:
1. Target Category sorting training
2. Attribute sorting training
3. 1. Test Block of hypothesis-consistent* pairings with 20 trials (half the participant start with inconsistent pairings)
4. 2. Test Block of hypothesis-consistent pairings with 40 trials
5. Target Category sorting training with targets switching sides
6. 1. Test Block of hypothesis-inconsistent pairings with 20 trials
7. 2. Test Block of hypothesis-inconsistent pairings with 40 trials

In all Test Blocks:
* attributes and targets alternate
* attributes as well as targets are randomly selected without replacement

Trial Sequence:
Target -> until correct response -> ISI: 250ms (default)-> Target....STIMULI
Stimuli can be edited under section Editable Stimuli

INSTRUCTIONS
* start instruction page is provided as an html page. It automatically adapts to different images and category labels UNLESS
the number of attributes and/or targets have been changed. In this case, changes have to be
made to file "intro_iat.htm", so that the correct number of items are presented in the overview table.

Example: instead of 8 words for target A, only 5 should be presented:

in file "intro_iat.htm":
change:
            <td><%item.targetA.item(1)%>, <%item.targetA.item(2)%>, <%item.targetA.item(3)%>, <%item.targetA.item(4)%>,
                <%item.targetA.item(5)%>, <%item.targetA.item(6)%>, <%item.targetA.item(7)%>, <%item.targetA.item(8)%>
            </td>

To:
            <td><%item.targetA.item(1)%>, <%item.targetA.item(2)%>, <%item.targetA.item(3)%>, <%item.targetA.item(4)%>,
                <%item.targetA.item(5)%>
            </td>

* item.instructions under section 'Editable Instructions' contains the the trial instructions
The instructions adapt automatically if different attributes and targets are used.

EDITABLE CODE:
check below for (relatively) easily editable parameters, stimuli, instructions etc.
Keep in mind that you can use this script as a template and therefore always "mess" with the entire code to further customize your experiment.

The parameters you can change are:

/showsummaryfeedback:        set parameter showsummaryfeedback = true to display summary feedback to participants at the end (default)
                            set parameter showsummaryfeedback = false if no summary feedback should be presented to participants
/ISI:                        interstimulus interval (in ms) (default: 250ms)
</usermanual>


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

<parameters>
/showsummaryfeedback = true
/ISI = 250</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI: change editable stimuli here
**************************************************************************************************************
**************************************************************************************************************
This sample IAT can be easily adapted to different target categories
and attributes. To change the categories, you need only change the
stimulus items and labels immediately below this line.

***********************************************************************
<item attributeAlabel>
/1 = "Слова"
</item>

<item attributeA>
/1 = "кошмар"
/2 = "чужой"
/3 = "красивый"
/4 = "мой"
/5 = "далеко"
/6 = "классный"
/7 = "плохой"
/8 = "любовь"
</item>

<item attributeBlabel>
/1 = "Słowa"
</item>

<item attributeB>
/1 = "ładny"
/2 = "mój"
/3 = "obcy"
/4 = "bliski"
/5 = "zimny"
/6 = "złe"
/7 = "kochany"
/8 = "brzydki"
</item>

<item targetAlabel>
/1 = "Картинки"
</item>

<item targetA>
/1 = "Lenin.jpg"
/2 = "tretiak.jpeg"
/3 = "balet.jpg"
/4 = "kreml.jpg"
/5 = "kolej.jpg"
/6 = "bajka.jpg"
/7 = "dzien zwyciestwa.jpeg"
/8 = "mgu.jpg"
</item>

<item targetBlabel>
/1 = "Obrazki"
</item>

<item targetB>
/1 = "syrenka.jpg"
/2 = "stocznia.jpg"
/3 = "zubr.jpg"
/4 = "wawel.jpg"
/5 = "lewandowski.jpeg"
/6 = "jezus.jpg"
/7 = "piłsudski.jpg"
/8 = "stare miasto waw.jpg"
</item>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************

<values>
/ 1Pyt = 0
</values>
<textbox 1Pyt>
/caption "Posługuje się w obu językach na codzień:"
</textbox>
<surveypage 1ankieta>
/questions = [1=1Pyt]
/ showmousecursor = true

</surveypage>

<trial przechwyt1>
/ ontrialbegin = [values.1Pyt = textbox.1Pyt.response]

/response = noresponse
</trial>

<htmlpage iatintro>
/ file = "instrukcja_poczatek.htm"
</htmlpage>


<item instructions>
/ 1 = "Przyłóż lewy palec na klawiszu odpowiedzi 'E' dla elementów należących do kategorii '<%expressions.leftTarget%>'.
Połóż prawy palec na klawiszu odpowiedzi 'I' dla elementów należących do kategorii '<%expressions.rightTarget%>'.
~nPrzedmioty będą pojawiać się jeden po drugim na środku ekranu.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 2 = "Przyłóż lewy palec na klawiszu odpowiedzi 'E' dla elementów należących do kategorii '<%item.attributeAlabel.item(1)%>'.
Połóż prawy palec na klawiszu odpowiedzi 'I' dla elementów należących do kategorii '<%item.attributeBlabel.item(1)%>'.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 3 = "Naciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.leftTarget%>'.
Nacisnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.rightTarget%>'.
~nKażdy element należy do tylko jednej kategorii.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 4 = "To jest to samo zadanie co poprzednio.
~n~nNaciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.leftTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.rightTarget%>'.
~nKażdy element należy do tylko jednej kategorii.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 5 = "Uwaga! Etykiety zamieniono stronami.
~nNaciśnij lewy klawisz 'E' dla '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%expressions.leftTarget%>'.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 6 = "Naciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.leftTarget%>'.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nZwróć uwagę na, że powstały pary łączone.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 7 = "To jest to samo zadanie co poprzednio.
~nNaciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.leftTarget%>'
~nKażdy element należy do tylko jednej kategorii.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."
</item>

Note: expressions used to assign the correct label to the left and right response keys
<expressions>
/leftTarget = if(mod(script.groupid, 2) != 0){
    item.targetAlabel.item(1);
} else {
    item.targetBlabel.item(1);
};
/rightTarget = if (mod(script.groupid, 2) != 0){
    item.targetBlabel.item(1);
} else {
    item.targetAlabel.item(1);
};
</expressions>

<text spacebar>
/ items = ("Naciśnij klawisz spacji, aby rozpocząć.")
/ position = (60%, 90%)
/ valign = bottom
</text>

<text errorReminder>
/ items = (" Jeśli popełnisz błąd pojawi się czerwony znak X; aby kontynuować naciśnij drugi klawisz odpowiedzi.")
/ position = (50%, 95%)
/ valign = bottom
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/ txcolor = white
/ erase = false
</text>

***********************************************************************
Performance summary
***********************************************************************

<trial summary>
/ stimulustimes = [0=summary]
/ validresponse = (" ")
/ recorddata = false
/ ontrialbegin = [values.magnitude = "little to no"]
/ ontrialbegin = [if( abs(expressions.d) > 0.15 ) values.magnitude = "a slight"]
/ ontrialbegin = [if( abs(expressions.d) > 0.35 ) values.magnitude = "a moderate"]
/ ontrialbegin = [if( abs(expressions.d) >= 0.65 ) values.magnitude = "a strong"]
/ ontrialbegin = [if (expressions.d >= 0.0) values.preferred = item.targetALabel.1]
/ ontrialbegin = [if (expressions.d < 0.0) values.preferred = item.targetBLabel.1]
/ ontrialbegin = [if (expressions.d < 0.0) values.notpreferred= item.targetALabel.1]
/ ontrialbegin = [if (expressions.d >= 0.0) values.notpreferred= item.targetBLabel.1]
</trial>

<text summary>
/ items = ("Dziękuję za badanie")
/ size = (60%, 60%)
/ hjustify = left
</text>

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


**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 5.0.7.0 or higher

<defaults>
/ fontstyle = ("Arial", 3.5%)
/ screencolor = black
/ txbgcolor = black
/ txcolor = white
/ minimumversion = "5.0.7.0"
/ canvasaspectratio = (4, 3)
</defaults>

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

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

***********************
raw data file
***********************
<data>
/ columns = (build, computer.platform, date, time, group, subject, blockcode, blocknum, trialcode, trialnum, response, correct, latency,
stimulusnumber, stimulusitem, expressions.da, expressions.db, expressions.d, expressions.percentcorrect)
/ separatefiles = true
</data>

****************
summary data
****************

<summarydata>
/ columns = (script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed,
expressions.da, expressions.db, expressions.d, expressions.percentcorrect)
/ separatefiles = true
</summarydata>

**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************
            
/completed:                    0 = script was not completed; 1 = script was completed (all conditions run)

/ sum1a:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the first compatible block 1A
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum2a:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the first incompatible block 2A
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum1b:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the second compatible block 1B
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum2b:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the second incompatible block 2B
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ n1a:                        counts the number of trials in first compatible block 1A (except first one)
/ n2a:                        counts the number of trials in first incompatible block 2A (except first one)
/ n1b:                        counts the number of trials in second compatible block 1B
/ n2b:                        counts the number of trials in second incompatible block 2B
/ ss1a:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the first compatible block
/ ss2a                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the first incompatible block
/ ss1b:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the second compatible block
/ ss2b:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the second incompatible block
/ magnitude:                stores the magnitude of the implicit preference: "little to no", "a slight", "a moderate", "a strong"
/ preferred:                stores the preferred target category
/ notpreferred :            stores the non preferred target category
/ n_correct:                counts all initial correct responses of all trials that count towards D score

<values>
/ completed = 0
/ sum1a = 0
/ sum2a = 0
/ sum1b = 0
/ sum2b = 0
/ n1a = 0
/ n2a = 0
/ n1b = 0
/ n2b = 0
/ ss1a = 0
/ ss2a = 0
/ ss1b = 0
/ ss2b = 0
/ magnitude = "unknown"
/ preferred = "unknown"
/ notpreferred = "unknown"
/ n_correct = 0
/progresswidth = 0
/instructionIndex = 0</values>

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

* 1 is compatible, 2 is incompatible
* a is first block, b is second block

/ m1a:                    mean latencies of correct responses in first compatible block
/ m2a:                    mean latencies of correct responses in first incompatible block
/ m1b:                    mean latencies of correct responses in second compatible block
/ m2b:                    mean latencies of correct responses in second incompatible block
/ sd1a:                    standard deviation of latencies of correct responses in first compatible block
/ sd2a                    standard deviation of latencies of correct responses in first incompatible block
/ sd1b:                    standard deviation of latencies of correct responses in second compatible block
/ sd2b:                    standard deviation of latencies of correct responses in second incompatible block
/ sda                    standarddeviation of latencies in first block
/ sdb                     standarddeviation of latencies in second block
/ da:                    D-score for first blocks        
/ db:                    D-score for second blocks
/ d:                    overall D-score
/ percentcorrect:   calculates the overall percent correct score of initial responses of test trials of D-score qualifying latencies
/progress:                sets the length of the progress bar to %

<expressions>
/ m1a = values.sum1a / values.n1a
/ m2a = values.sum2a / values.n2a
/ m1b = values.sum1b / values.n1b
/ m2b = values.sum2b / values.n2b
/ sd1a = sqrt((values.ss1a - (values.n1a * (expressions.m1a * expressions.m1a))) / (values.n1a - 1))
/ sd2a = sqrt((values.ss2a - (values.n2a * (expressions.m2a * expressions.m2a))) / (values.n2a - 1))
/ sd1b = sqrt((values.ss1b - (values.n1b * (expressions.m1b * expressions.m1b))) / (values.n1b - 1))
/ sd2b = sqrt((values.ss2b - (values.n2b * (expressions.m2b * expressions.m2b))) / (values.n2b - 1))
/ sda = sqrt((((values.n1a - 1) * (expressions.sd1a * expressions.sd1a) + (values.n2a - 1) * (expressions.sd2a * expressions.sd2a)) + ((values.n1a + values.n2a) * ((expressions.m1a - expressions.m2a) * (expressions.m1a - expressions.m2a)) / 4) ) / (values.n1a + values.n2a - 1) )
/ sdb = sqrt((((values.n1b - 1) * (expressions.sd1b * expressions.sd1b) + (values.n2b - 1) * (expressions.sd2b * expressions.sd2b)) + ((values.n1b + values.n2b) * ((expressions.m1b - expressions.m2b) * (expressions.m1b - expressions.m2b)) / 4) ) / (values.n1b + values.n2b - 1) )
/ da = (m2a - m1a) / expressions.sda
/ db = (m2b - m1b) / expressions.sdb
/ d = (expressions.da + expressions.db) / 2
/ percentcorrect = (values.n_correct/ (values.n1a + values.n1b + values.n2a + values.n2b)) * 100
/progress = 1% * values.progresswidth
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ screencolor = black
</instruct>

<text instructions>
/ items = instructions
/ position = (10%, 25%)
/ halign = left
/ valign = top
/ hjustify = left
/ vjustify = center
/ size = (80%, 50%)
/ select = values.instructionIndex
</text>

<trial instructions>
/ ontrialbegin = [
    values.progresswidth += 10;
    values.instructionIndex += 1;
]
/ stimulustimes = [1=instructions, spacebar, progressbar, progressbar_fill]
/ correctresponse = (" ")
/ errormessage = false
/ recorddata = false
/ showmousecursor = true
</trial>


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

<shape progressbar>
/shape = rectangle
/ size = (70%, 2%)
/ color = gray
/ position = (15%, 95%)
/ halign = left
/ valign = top
</shape>

<shape progressbar_fill>
/shape = rectangle
/ size = (expressions.progress, 2%)
/ color = green
/ position = (15%, 95%)
/ halign = left
/ valign = top
</shape>

<text attributeA>
/ items = attributeA
/ fontstyle = ("Arial", 5%)
/ txcolor = green
</text>

<text attributeB>
/ items = attributeB
/ fontstyle = ("Arial", 5%)
/ txcolor = green
</text>

<picture targetB>
/ items = targetB
/ size = (55%, 55%)
</picture>

<picture targetA>
/ items = targetA
/ size = (55%, 55%)
</picture>

<text error>
/ position = (50%, 75%)
/ items = ("X")
/ color = red
/ fontstyle = ("Arial", 10%, true)
</text>

<text attributeAleft>
/ items = attributeAlabel
/ valign = top
/ halign = left
/ position = (5%, 5%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
</text>

<text attributeBright>
/ items = attributeBlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
</text>

<text targetBleft>
/ items = targetBlabel
/ valign = top
/ halign = left    
/ position = (5%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBright>
/ items = targetBlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBleftmixed>
/ items = targetBlabel
/ valign = top
/ halign = left
/ position = (5%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBrightmixed>
/ items = targetBlabel
/ valign = top
/ halign = right
/ position = (95%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAleft>
/ items = targetAlabel
/ valign = top
/ halign = left
/ position = (5%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAright>
/ items = targetAlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAleftmixed>
/ items = targetAlabel
/ valign = top
/ halign = left
/ position = (5%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetArightmixed>
/ items = targetAlabel
/ valign = top
/ halign = right
/ position = (95%, 19%)
/ fontstyle = ("Arial", 5%)
</text><text orleft>
/ items = ("or")
/ valign = top
/ halign = left
/ position = (5%, 12%)
/ fontstyle = ("Arial", 5%)
</text>

<text orright>
/ items = ("or")
/ valign = top
/ halign = right
/ position = (95%, 12%)
/ fontstyle = ("Arial", 5%)
</text>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS     
**************************************************************************************************************
**************************************************************************************************************

<trial attributeA>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = attributeA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial attributeB>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = attributeB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetBleft>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = targetB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetBright>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = targetB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetAleft>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = targetA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetAright>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = targetA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

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

<block attributepractice>
/ bgstim = (attributeAleft, attributeBright)
/ trials = [
        1=instructions;
        2-21 = random(attributeA, attributeB);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetcompatiblepractice>
/ bgstim = (targetAleft, targetBright)
/ trials = [
        1=instructions;
        2-21 = random(targetAleft, targetBright);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetincompatiblepractice>
/ bgstim = (targetAright, targetBleft)
/ trials = [
        1=instructions;
        2-21 = random(targetAright, targetBleft);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetcompatiblepracticeswitch>
/ bgstim = (targetAleft, targetBright)
/ trials = [
    1=instructions;
    2-41 = random(targetAleft, targetBright);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetincompatiblepracticeswitch>
/ bgstim = (targetAright, targetBleft)
/ trials = [
    1=instructions;
    2-41 = random(targetAright, targetBleft);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block compatibletest1>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [1=instructions;
3,5,7,9,11,13,15,17,19,21= random(targetAleft, targetBright);
2,4,6,8,10,12,14,16,18,20 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.sum1a = values.sum1a + block.compatibletest1.latency;
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n1a += 1;
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.ss1a = values.ss1a + (block.compatibletest1.latency * block.compatibletest1.latency);
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n_correct += block.compatibletest1.correct;
]
</block>

<block compatibletest2>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40 = random(targetAleft, targetBright);
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.compatibletest2.latency <= 10000) values.sum1b = values.sum1b + block.compatibletest2.latency;
    if(block.compatibletest2.latency <= 10000) values.n1b += 1;
    if(block.compatibletest2.latency <= 10000) values.ss1b = values.ss1b + (block.compatibletest2.latency * block.compatibletest2.latency);
    if(block.compatibletest2.latency <= 10000) values.n_correct += block.compatibletest2.correct;
]
</block>

<block incompatibletest1>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [1=instructions;
3,5,7,9,11,13,15,17,19,21 = random(targetBleft, targetAright);
2,4,6,8,10,12,14,16,18,20 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1) values.sum2a = values.sum2a + block.incompatibletest1.latency;
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.n2a += 1;
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.ss2a = values.ss2a + (block.incompatibletest1.latency * block.incompatibletest1.latency);
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.n_correct += block.incompatibletest1.correct;
]
</block>

<block incompatibletest2>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40 = random(targetBleft, targetAright);
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.incompatibletest2.latency <= 10000) values.sum2b = values.sum2b + block.incompatibletest2.latency;
    if(block.incompatibletest2.latency <= 10000) values.n2b += 1;
    if(block.incompatibletest2.latency <= 10000) values.ss2b = values.ss2b + (block.incompatibletest2.latency * block.incompatibletest2.latency);
    if(block.incompatibletest2.latency <= 10000) values.n_correct += block.incompatibletest2.correct;
]
</block>

<block compatibletestinstructions>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [1=instructions]
/ recorddata = false
</block>

<block incompatibletestinstructions>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [1=instructions]
/ recorddata = false
</block>

<block summary>
/skip = [parameters.showsummaryfeedback == false]
/ trials = [1=summary]
/ recorddata = false
</block>

**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************
Groupassignment is done by groupnumber

<expt>
/ preinstructions = (iatintro)
/subjects = (1 of 2)
/groupassignment = groupnumber
/ blocks = [
    1=targetcompatiblepractice;
    2=attributepractice;
    3=compatibletest1;
    4=compatibletestinstructions;
    5=compatibletest2;
    6=targetincompatiblepractice;
    7=incompatibletest1;
    8=incompatibletestinstructions;
    9=incompatibletest2;
    10=summary;
]
/onexptend = [values.completed = 1]
</expt>

<expt>
/ preinstructions = (iatintro)
/subjects = (2 of 2)
/groupassignment = groupnumber
/ blocks = [
    1=targetincompatiblepractice;
    2=attributepractice;
    3=incompatibletest1;
    4=incompatibletestinstructions;
    5=incompatibletest2;
    6=targetcompatiblepractice;
    7=compatibletest1;
    8=compatibletestinstructions;
    9=compatibletest2;
    10=summary;
]
/onexptend = [values.completed = 1]
</expt>

***********************************************************************
Test Monkey
***********************************************************************
<monkey>
/ latencydistribution = normal(500, 100)
/ percentcorrect = 90
</monkey>
**************************************************************************************************************
                                                End of File
**************************************************************************************************************

Please don't paste full scripts into a post's body. If you need to share lengthy code, please use the forum's ability to attach files.
By uinib - 4/15/2020

Dave - 4/15/2020
uinib - 4/15/2020
Hello, I am looking for a help. I have to make 3 questions with Yes/No answers. If statement is 2 answers or more are Yes. If it has to end the survery. I want to put this statement after <iaintro> but before big survery. Can somebody help me? As You can see I ve started creating mini survery  befor iaintro in EDITABLE INSTRUCTIONS: change instructions here but Im stuck there. 

this is code
<usermanual>
                        
                                    Implicit Attitude Test (IAT) - with pictures
SCRIPT INFO

Main Inquisit programming: Sean Draine (seandr@millisecond.com)
last updated: 02-12-2018 by K.Borchert (katjab@millisecond.com) for Millisecond Software LLC

Script Copyright © 02-12-2018 Millisecond Software


BACKGROUND INFO

The Implicit Association Task (Greenwald, McGhee, & Schwartz, 1998) is a widely-used cognitive-behavioral paradigm
that measures the strength of automatic (implicit) associations between concepts in people’s minds relying
on latency measures in a simple sorting task.

The strength of an association between concepts is measured by the standardized mean difference score of
the 'hypothesis-inconsistent' pairings and 'hypothesis-consistent' pairings (d-score) (Greenwald, Nosek, & Banaji, 2003).
In general, the higher the d-score the stronger is the association between the 'hypothesis-consistent' pairings
(decided by researchers). Negative d-scores suggest a stronger association between the 'hypothesis-inconsistent' pairings.

Inquisit calculates d-scores using the improved scoring algorithm as described in Greenwald et al (2003).
Error trials are handled by requiring respondents to correct their responses according to recommendation (p.214).

D-scores obtained with this script:
Positive d-scores: support a stronger association between 'Flowers-Good' and 'Insects-Bad' than for the opposite pairings
Negative d-scores: support a stronger association between 'Insects-Good' and 'Flowers-Bad' than for the opposite pairings

References:
Greenwald, A. G., McGhee, D. E., & Schwartz, J. K. L. (1998). Measuring individual differences in implicit cognition:
The Implicit Association Test. Journal of Personality and Social Psychology, 74, 1464-1480.

Greenwald, A. G., Nosek, B. A., & Banaji, M. R. (2003). Understanding and Using the Implicit Association Test:
I. An Improved Scoring Algorithm. Journal of Personality and Social Psychology, 85, 197-216.


                                             *Task*
Participants are asked to categorize attributes (e.g. "joyful"; "tragic") and and target items (e.g "daisy" vs. "wasp")
into predetermined categories via keystroke presses. The basic task is to press a left key (E) if an item (e.g. "joyful")
belongs to the category presented on the left (e.g. "Good") and to press the right key (I) if the word (e.g. "tragic")
belongs to the category ("Bad") presented on the right.
For practice, participants sort items into the target categories "Flowers vs. Insects" and the attribute categories "Good vs. Bad".
For the test, participants are asked to sort categories into the paired/combined categories (e.g.
"Flower OR Good" on the left vs. "Insect OR Bad" on the right). Pairings are reversed for a second test
(e.g. "Insects OR Good" on the left vs. "Flowers OR Bad" on the right). Block order is counterbalanced by groupnumber.    

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

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

build:                            Inquisit build
computer.platform:                the platform the script was run on
date, time, subject, group:        date and time script was run with the current subject/groupnumber
                                        Note: group1/group2 counterbalance the order in which the pairings are run
blockcode, blocknum:            the name and number of the current block
trialcode, trialnum:             the name and number of the currently recorded trial
                                    (Note: not all trials that are run might record data; by default data is collected unless /recorddata = false is set for a particular trial/block)
response:                        the final trial response (scancodes of the keys pressed)
                                        Note: script saves the final and -by design- correct response
correct:                        the accuracy of the initial response
                                        0 = initial response was incorrect and needed to be corrected
                                        1 = initial response is correct
latency:                        the latency of the final (correct) response in ms
stimulusnumber:                    the number of the current stimulus
stimulusitem:                    the currently presented item
expressions.da:                    d-score of the first short blocks
expressions.db:                    d-score of the second long blocks
expressions.d:                    overall d-score(non-weighted mean of the 2 d-scores)
/ percentcorrect:           the overall percent correct score of initial responses of test trials of D-score qualifying latencies

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

script.startdate:                date script was run
script.starttime:                time script was started
script.subjectid:                subject id number
script.groupid:                    group id number
script.elapsedtime:                time it took to run script (in ms)
computer.platform:                the platform the script was run on
/completed:                        0 = script was not completed (prematurely aborted); 1 = script was completed (all conditions run)
expressions.da:                    d-score of the first blocks
expressions.db:                    d-score of the second blocks
expressions.d:                    overall d-score
/ percentcorrect:           the overall percent correct score of initial responses of test trials of D-score qualifying latencies



EXPERIMENTAL SET-UP

Hypothesis-consistent pairings vs. hypothesis-inconsistent pairings; tested within-subjects
=> order is counterbalanced by groupnumber assignment

Block Sequence:
1. Target Category sorting training
2. Attribute sorting training
3. 1. Test Block of hypothesis-consistent* pairings with 20 trials (half the participant start with inconsistent pairings)
4. 2. Test Block of hypothesis-consistent pairings with 40 trials
5. Target Category sorting training with targets switching sides
6. 1. Test Block of hypothesis-inconsistent pairings with 20 trials
7. 2. Test Block of hypothesis-inconsistent pairings with 40 trials

In all Test Blocks:
* attributes and targets alternate
* attributes as well as targets are randomly selected without replacement

Trial Sequence:
Target -> until correct response -> ISI: 250ms (default)-> Target....STIMULI
Stimuli can be edited under section Editable Stimuli

INSTRUCTIONS
* start instruction page is provided as an html page. It automatically adapts to different images and category labels UNLESS
the number of attributes and/or targets have been changed. In this case, changes have to be
made to file "intro_iat.htm", so that the correct number of items are presented in the overview table.

Example: instead of 8 words for target A, only 5 should be presented:

in file "intro_iat.htm":
change:
            <td><%item.targetA.item(1)%>, <%item.targetA.item(2)%>, <%item.targetA.item(3)%>, <%item.targetA.item(4)%>,
                <%item.targetA.item(5)%>, <%item.targetA.item(6)%>, <%item.targetA.item(7)%>, <%item.targetA.item(8)%>
            </td>

To:
            <td><%item.targetA.item(1)%>, <%item.targetA.item(2)%>, <%item.targetA.item(3)%>, <%item.targetA.item(4)%>,
                <%item.targetA.item(5)%>
            </td>

* item.instructions under section 'Editable Instructions' contains the the trial instructions
The instructions adapt automatically if different attributes and targets are used.

EDITABLE CODE:
check below for (relatively) easily editable parameters, stimuli, instructions etc.
Keep in mind that you can use this script as a template and therefore always "mess" with the entire code to further customize your experiment.

The parameters you can change are:

/showsummaryfeedback:        set parameter showsummaryfeedback = true to display summary feedback to participants at the end (default)
                            set parameter showsummaryfeedback = false if no summary feedback should be presented to participants
/ISI:                        interstimulus interval (in ms) (default: 250ms)
</usermanual>


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

<parameters>
/showsummaryfeedback = true
/ISI = 250</parameters>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI: change editable stimuli here
**************************************************************************************************************
**************************************************************************************************************
This sample IAT can be easily adapted to different target categories
and attributes. To change the categories, you need only change the
stimulus items and labels immediately below this line.

***********************************************************************
<item attributeAlabel>
/1 = "Слова"
</item>

<item attributeA>
/1 = "кошмар"
/2 = "чужой"
/3 = "красивый"
/4 = "мой"
/5 = "далеко"
/6 = "классный"
/7 = "плохой"
/8 = "любовь"
</item>

<item attributeBlabel>
/1 = "Słowa"
</item>

<item attributeB>
/1 = "ładny"
/2 = "mój"
/3 = "obcy"
/4 = "bliski"
/5 = "zimny"
/6 = "złe"
/7 = "kochany"
/8 = "brzydki"
</item>

<item targetAlabel>
/1 = "Картинки"
</item>

<item targetA>
/1 = "Lenin.jpg"
/2 = "tretiak.jpeg"
/3 = "balet.jpg"
/4 = "kreml.jpg"
/5 = "kolej.jpg"
/6 = "bajka.jpg"
/7 = "dzien zwyciestwa.jpeg"
/8 = "mgu.jpg"
</item>

<item targetBlabel>
/1 = "Obrazki"
</item>

<item targetB>
/1 = "syrenka.jpg"
/2 = "stocznia.jpg"
/3 = "zubr.jpg"
/4 = "wawel.jpg"
/5 = "lewandowski.jpeg"
/6 = "jezus.jpg"
/7 = "piłsudski.jpg"
/8 = "stare miasto waw.jpg"
</item>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************

<values>
/ 1Pyt = 0
</values>
<textbox 1Pyt>
/caption "Posługuje się w obu językach na codzień:"
</textbox>
<surveypage 1ankieta>
/questions = [1=1Pyt]
/ showmousecursor = true

</surveypage>

<trial przechwyt1>
/ ontrialbegin = [values.1Pyt = textbox.1Pyt.response]

/response = noresponse
</trial>

<htmlpage iatintro>
/ file = "instrukcja_poczatek.htm"
</htmlpage>


<item instructions>
/ 1 = "Przyłóż lewy palec na klawiszu odpowiedzi 'E' dla elementów należących do kategorii '<%expressions.leftTarget%>'.
Połóż prawy palec na klawiszu odpowiedzi 'I' dla elementów należących do kategorii '<%expressions.rightTarget%>'.
~nPrzedmioty będą pojawiać się jeden po drugim na środku ekranu.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 2 = "Przyłóż lewy palec na klawiszu odpowiedzi 'E' dla elementów należących do kategorii '<%item.attributeAlabel.item(1)%>'.
Połóż prawy palec na klawiszu odpowiedzi 'I' dla elementów należących do kategorii '<%item.attributeBlabel.item(1)%>'.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 3 = "Naciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.leftTarget%>'.
Nacisnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.rightTarget%>'.
~nKażdy element należy do tylko jednej kategorii.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 4 = "To jest to samo zadanie co poprzednio.
~n~nNaciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.leftTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.rightTarget%>'.
~nKażdy element należy do tylko jednej kategorii.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 5 = "Uwaga! Etykiety zamieniono stronami.
~nNaciśnij lewy klawisz 'E' dla '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%expressions.leftTarget%>'.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 6 = "Naciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.leftTarget%>'.
~nJeśli popełnisz błąd pojawi się czerwony znak X - aby kontynuować naciśnij drugi klawisz odpowiedzi.
~nZwróć uwagę na, że powstały pary łączone.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."

/ 7 = "To jest to samo zadanie co poprzednio.
~nNaciśnij lewy klawisz 'E' dla '<%item.attributeAlabel.item(1)%>' and '<%expressions.rightTarget%>'.
Naciśnij prawy klawisz 'I' dla '<%item.attributeBlabel.item(1)%>' and '<%expressions.leftTarget%>'
~nKażdy element należy do tylko jednej kategorii.
~nWybieraj odpowiedzi tak szybko jak to możliwe, jednocześnie popełniając jak najmnije błędów."
</item>

Note: expressions used to assign the correct label to the left and right response keys
<expressions>
/leftTarget = if(mod(script.groupid, 2) != 0){
    item.targetAlabel.item(1);
} else {
    item.targetBlabel.item(1);
};
/rightTarget = if (mod(script.groupid, 2) != 0){
    item.targetBlabel.item(1);
} else {
    item.targetAlabel.item(1);
};
</expressions>

<text spacebar>
/ items = ("Naciśnij klawisz spacji, aby rozpocząć.")
/ position = (60%, 90%)
/ valign = bottom
</text>

<text errorReminder>
/ items = (" Jeśli popełnisz błąd pojawi się czerwony znak X; aby kontynuować naciśnij drugi klawisz odpowiedzi.")
/ position = (50%, 95%)
/ valign = bottom
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/ txcolor = white
/ erase = false
</text>

***********************************************************************
Performance summary
***********************************************************************

<trial summary>
/ stimulustimes = [0=summary]
/ validresponse = (" ")
/ recorddata = false
/ ontrialbegin = [values.magnitude = "little to no"]
/ ontrialbegin = [if( abs(expressions.d) > 0.15 ) values.magnitude = "a slight"]
/ ontrialbegin = [if( abs(expressions.d) > 0.35 ) values.magnitude = "a moderate"]
/ ontrialbegin = [if( abs(expressions.d) >= 0.65 ) values.magnitude = "a strong"]
/ ontrialbegin = [if (expressions.d >= 0.0) values.preferred = item.targetALabel.1]
/ ontrialbegin = [if (expressions.d < 0.0) values.preferred = item.targetBLabel.1]
/ ontrialbegin = [if (expressions.d < 0.0) values.notpreferred= item.targetALabel.1]
/ ontrialbegin = [if (expressions.d >= 0.0) values.notpreferred= item.targetBLabel.1]
</trial>

<text summary>
/ items = ("Dziękuję za badanie")
/ size = (60%, 60%)
/ hjustify = left
</text>

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


**************************************************************************************************************
**************************************************************************************************************
    DEFAULTS
**************************************************************************************************************
**************************************************************************************************************
script requires Inquisit 5.0.7.0 or higher

<defaults>
/ fontstyle = ("Arial", 3.5%)
/ screencolor = black
/ txbgcolor = black
/ txcolor = white
/ minimumversion = "5.0.7.0"
/ canvasaspectratio = (4, 3)
</defaults>

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

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

***********************
raw data file
***********************
<data>
/ columns = (build, computer.platform, date, time, group, subject, blockcode, blocknum, trialcode, trialnum, response, correct, latency,
stimulusnumber, stimulusitem, expressions.da, expressions.db, expressions.d, expressions.percentcorrect)
/ separatefiles = true
</data>

****************
summary data
****************

<summarydata>
/ columns = (script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed,
expressions.da, expressions.db, expressions.d, expressions.percentcorrect)
/ separatefiles = true
</summarydata>

**************************************************************************************************************
**************************************************************************************************************
    VALUES: automatically updated
**************************************************************************************************************
**************************************************************************************************************
            
/completed:                    0 = script was not completed; 1 = script was completed (all conditions run)

/ sum1a:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the first compatible block 1A
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum2a:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the first incompatible block 2A
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum1b:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the second compatible block 1B
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ sum2b:                    tracks the sum of the latencies to correct responses (latencies <= 10000ms) for the second incompatible block 2B
                                Note: by design, all final trial responses are correct (regardless of accuracy of initial response)
/ n1a:                        counts the number of trials in first compatible block 1A (except first one)
/ n2a:                        counts the number of trials in first incompatible block 2A (except first one)
/ n1b:                        counts the number of trials in second compatible block 1B
/ n2b:                        counts the number of trials in second incompatible block 2B
/ ss1a:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the first compatible block
/ ss2a                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the first incompatible block
/ ss1b:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the second compatible block
/ ss2b:                        tracks the sum of the squared latencies to correct responses (latencies <= 10000ms) in the second incompatible block
/ magnitude:                stores the magnitude of the implicit preference: "little to no", "a slight", "a moderate", "a strong"
/ preferred:                stores the preferred target category
/ notpreferred :            stores the non preferred target category
/ n_correct:                counts all initial correct responses of all trials that count towards D score

<values>
/ completed = 0
/ sum1a = 0
/ sum2a = 0
/ sum1b = 0
/ sum2b = 0
/ n1a = 0
/ n2a = 0
/ n1b = 0
/ n2b = 0
/ ss1a = 0
/ ss2a = 0
/ ss1b = 0
/ ss2b = 0
/ magnitude = "unknown"
/ preferred = "unknown"
/ notpreferred = "unknown"
/ n_correct = 0
/progresswidth = 0
/instructionIndex = 0</values>

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

* 1 is compatible, 2 is incompatible
* a is first block, b is second block

/ m1a:                    mean latencies of correct responses in first compatible block
/ m2a:                    mean latencies of correct responses in first incompatible block
/ m1b:                    mean latencies of correct responses in second compatible block
/ m2b:                    mean latencies of correct responses in second incompatible block
/ sd1a:                    standard deviation of latencies of correct responses in first compatible block
/ sd2a                    standard deviation of latencies of correct responses in first incompatible block
/ sd1b:                    standard deviation of latencies of correct responses in second compatible block
/ sd2b:                    standard deviation of latencies of correct responses in second incompatible block
/ sda                    standarddeviation of latencies in first block
/ sdb                     standarddeviation of latencies in second block
/ da:                    D-score for first blocks        
/ db:                    D-score for second blocks
/ d:                    overall D-score
/ percentcorrect:   calculates the overall percent correct score of initial responses of test trials of D-score qualifying latencies
/progress:                sets the length of the progress bar to %

<expressions>
/ m1a = values.sum1a / values.n1a
/ m2a = values.sum2a / values.n2a
/ m1b = values.sum1b / values.n1b
/ m2b = values.sum2b / values.n2b
/ sd1a = sqrt((values.ss1a - (values.n1a * (expressions.m1a * expressions.m1a))) / (values.n1a - 1))
/ sd2a = sqrt((values.ss2a - (values.n2a * (expressions.m2a * expressions.m2a))) / (values.n2a - 1))
/ sd1b = sqrt((values.ss1b - (values.n1b * (expressions.m1b * expressions.m1b))) / (values.n1b - 1))
/ sd2b = sqrt((values.ss2b - (values.n2b * (expressions.m2b * expressions.m2b))) / (values.n2b - 1))
/ sda = sqrt((((values.n1a - 1) * (expressions.sd1a * expressions.sd1a) + (values.n2a - 1) * (expressions.sd2a * expressions.sd2a)) + ((values.n1a + values.n2a) * ((expressions.m1a - expressions.m2a) * (expressions.m1a - expressions.m2a)) / 4) ) / (values.n1a + values.n2a - 1) )
/ sdb = sqrt((((values.n1b - 1) * (expressions.sd1b * expressions.sd1b) + (values.n2b - 1) * (expressions.sd2b * expressions.sd2b)) + ((values.n1b + values.n2b) * ((expressions.m1b - expressions.m2b) * (expressions.m1b - expressions.m2b)) / 4) ) / (values.n1b + values.n2b - 1) )
/ da = (m2a - m1a) / expressions.sda
/ db = (m2b - m1b) / expressions.sdb
/ d = (expressions.da + expressions.db) / 2
/ percentcorrect = (values.n_correct/ (values.n1a + values.n1b + values.n2a + values.n2b)) * 100
/progress = 1% * values.progresswidth
</expressions>

**************************************************************************************************************
**************************************************************************************************************
    INSTRUCTIONS
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ screencolor = black
</instruct>

<text instructions>
/ items = instructions
/ position = (10%, 25%)
/ halign = left
/ valign = top
/ hjustify = left
/ vjustify = center
/ size = (80%, 50%)
/ select = values.instructionIndex
</text>

<trial instructions>
/ ontrialbegin = [
    values.progresswidth += 10;
    values.instructionIndex += 1;
]
/ stimulustimes = [1=instructions, spacebar, progressbar, progressbar_fill]
/ correctresponse = (" ")
/ errormessage = false
/ recorddata = false
/ showmousecursor = true
</trial>


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

<shape progressbar>
/shape = rectangle
/ size = (70%, 2%)
/ color = gray
/ position = (15%, 95%)
/ halign = left
/ valign = top
</shape>

<shape progressbar_fill>
/shape = rectangle
/ size = (expressions.progress, 2%)
/ color = green
/ position = (15%, 95%)
/ halign = left
/ valign = top
</shape>

<text attributeA>
/ items = attributeA
/ fontstyle = ("Arial", 5%)
/ txcolor = green
</text>

<text attributeB>
/ items = attributeB
/ fontstyle = ("Arial", 5%)
/ txcolor = green
</text>

<picture targetB>
/ items = targetB
/ size = (55%, 55%)
</picture>

<picture targetA>
/ items = targetA
/ size = (55%, 55%)
</picture>

<text error>
/ position = (50%, 75%)
/ items = ("X")
/ color = red
/ fontstyle = ("Arial", 10%, true)
</text>

<text attributeAleft>
/ items = attributeAlabel
/ valign = top
/ halign = left
/ position = (5%, 5%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
</text>

<text attributeBright>
/ items = attributeBlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
</text>

<text targetBleft>
/ items = targetBlabel
/ valign = top
/ halign = left    
/ position = (5%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBright>
/ items = targetBlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBleftmixed>
/ items = targetBlabel
/ valign = top
/ halign = left
/ position = (5%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetBrightmixed>
/ items = targetBlabel
/ valign = top
/ halign = right
/ position = (95%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAleft>
/ items = targetAlabel
/ valign = top
/ halign = left
/ position = (5%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAright>
/ items = targetAlabel
/ valign = top
/ halign = right
/ position = (95%, 5%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetAleftmixed>
/ items = targetAlabel
/ valign = top
/ halign = left
/ position = (5%, 19%)
/ fontstyle = ("Arial", 5%)
</text>

<text targetArightmixed>
/ items = targetAlabel
/ valign = top
/ halign = right
/ position = (95%, 19%)
/ fontstyle = ("Arial", 5%)
</text><text orleft>
/ items = ("or")
/ valign = top
/ halign = left
/ position = (5%, 12%)
/ fontstyle = ("Arial", 5%)
</text>

<text orright>
/ items = ("or")
/ valign = top
/ halign = right
/ position = (95%, 12%)
/ fontstyle = ("Arial", 5%)
</text>


**************************************************************************************************************
**************************************************************************************************************
    TRIALS     
**************************************************************************************************************
**************************************************************************************************************

<trial attributeA>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = attributeA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial attributeB>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = attributeB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetBleft>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = targetB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetBright>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = targetB, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetAleft>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = targetA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

<trial targetAright>
/ validresponse = ("E", "I")
/ correctresponse = ("I")
/ stimulusframes = [1 = targetA, errorReminder]
/ posttrialpause = parameters.ISI
</trial>

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

<block attributepractice>
/ bgstim = (attributeAleft, attributeBright)
/ trials = [
        1=instructions;
        2-21 = random(attributeA, attributeB);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetcompatiblepractice>
/ bgstim = (targetAleft, targetBright)
/ trials = [
        1=instructions;
        2-21 = random(targetAleft, targetBright);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetincompatiblepractice>
/ bgstim = (targetAright, targetBleft)
/ trials = [
        1=instructions;
        2-21 = random(targetAright, targetBleft);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetcompatiblepracticeswitch>
/ bgstim = (targetAleft, targetBright)
/ trials = [
    1=instructions;
    2-41 = random(targetAleft, targetBright);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block targetincompatiblepracticeswitch>
/ bgstim = (targetAright, targetBleft)
/ trials = [
    1=instructions;
    2-41 = random(targetAright, targetBleft);
]
/ errormessage = true(error,200)
/ responsemode = correct
</block>

<block compatibletest1>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [1=instructions;
3,5,7,9,11,13,15,17,19,21= random(targetAleft, targetBright);
2,4,6,8,10,12,14,16,18,20 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.sum1a = values.sum1a + block.compatibletest1.latency;
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n1a += 1;
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.ss1a = values.ss1a + (block.compatibletest1.latency * block.compatibletest1.latency);
    if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n_correct += block.compatibletest1.correct;
]
</block>

<block compatibletest2>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40 = random(targetAleft, targetBright);
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.compatibletest2.latency <= 10000) values.sum1b = values.sum1b + block.compatibletest2.latency;
    if(block.compatibletest2.latency <= 10000) values.n1b += 1;
    if(block.compatibletest2.latency <= 10000) values.ss1b = values.ss1b + (block.compatibletest2.latency * block.compatibletest2.latency);
    if(block.compatibletest2.latency <= 10000) values.n_correct += block.compatibletest2.correct;
]
</block>

<block incompatibletest1>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [1=instructions;
3,5,7,9,11,13,15,17,19,21 = random(targetBleft, targetAright);
2,4,6,8,10,12,14,16,18,20 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1) values.sum2a = values.sum2a + block.incompatibletest1.latency;
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.n2a += 1;
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.ss2a = values.ss2a + (block.incompatibletest1.latency * block.incompatibletest1.latency);
    if(block.incompatibletest1.latency <= 10000 && block.incompatibletest1.currenttrialnumber != 1 ) values.n_correct += block.incompatibletest1.correct;
]
</block>

<block incompatibletest2>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40 = random(targetBleft, targetAright);
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [
    if(block.incompatibletest2.latency <= 10000) values.sum2b = values.sum2b + block.incompatibletest2.latency;
    if(block.incompatibletest2.latency <= 10000) values.n2b += 1;
    if(block.incompatibletest2.latency <= 10000) values.ss2b = values.ss2b + (block.incompatibletest2.latency * block.incompatibletest2.latency);
    if(block.incompatibletest2.latency <= 10000) values.n_correct += block.incompatibletest2.correct;
]
</block>

<block compatibletestinstructions>
/ bgstim = (targetAleftmixed, orleft, attributeAleft, targetBrightmixed, orright, attributeBright)
/ trials = [1=instructions]
/ recorddata = false
</block>

<block incompatibletestinstructions>
/ bgstim = (targetBleftmixed, orleft, attributeAleft, targetArightmixed, orright, attributeBright)
/ trials = [1=instructions]
/ recorddata = false
</block>

<block summary>
/skip = [parameters.showsummaryfeedback == false]
/ trials = [1=summary]
/ recorddata = false
</block>

**************************************************************************************************************
**************************************************************************************************************
    EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************
Groupassignment is done by groupnumber

<expt>
/ preinstructions = (iatintro)
/subjects = (1 of 2)
/groupassignment = groupnumber
/ blocks = [
    1=targetcompatiblepractice;
    2=attributepractice;
    3=compatibletest1;
    4=compatibletestinstructions;
    5=compatibletest2;
    6=targetincompatiblepractice;
    7=incompatibletest1;
    8=incompatibletestinstructions;
    9=incompatibletest2;
    10=summary;
]
/onexptend = [values.completed = 1]
</expt>

<expt>
/ preinstructions = (iatintro)
/subjects = (2 of 2)
/groupassignment = groupnumber
/ blocks = [
    1=targetincompatiblepractice;
    2=attributepractice;
    3=incompatibletest1;
    4=incompatibletestinstructions;
    5=incompatibletest2;
    6=targetcompatiblepractice;
    7=compatibletest1;
    8=compatibletestinstructions;
    9=compatibletest2;
    10=summary;
]
/onexptend = [values.completed = 1]
</expt>

***********************************************************************
Test Monkey
***********************************************************************
<monkey>
/ latencydistribution = normal(500, 100)
/ percentcorrect = 90
</monkey>
**************************************************************************************************************
                                                End of File
**************************************************************************************************************

Please don't paste full scripts into a post's body. If you need to share lengthy code, please use the forum's ability to attach files.

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?
By Dave - 4/15/2020

uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.
By uinib - 4/15/2020

Dave - 4/15/2020
uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.

By .txt is fine?
By Dave - 4/15/2020

uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.

By .txt is fine?

You can simply attach the .iqx file. But the .txt file will do for now. In the future, please also provide any and all files a given script requires to run (here: images, the HTML page).

As for the survey with the three yes/no questions, see the attached script. All changes are near the bottom.
By uinib - 4/15/2020

Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.

By .txt is fine?

You can simply attach the .iqx file. But the .txt file will do for now. In the future, please also provide any and all files a given script requires to run (here: images, the HTML page).

As for the survey with the three yes/no questions, see the attached script. All changes are near the bottom.

Okay I'd for sure. Now please tell me how to ask those 3 questions after iaintro because this is verification if the pollster can take part into my survey..
By Dave - 4/15/2020

uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.

By .txt is fine?

You can simply attach the .iqx file. But the .txt file will do for now. In the future, please also provide any and all files a given script requires to run (here: images, the HTML page).

As for the survey with the three yes/no questions, see the attached script. All changes are near the bottom.

Okay I'd for sure. Now please tell me how to ask those 3 questions after iaintro because this is verification if the pollster can take part into my survey..

I've already answered that. See the script I attached to my previous reply.
By uinib - 4/15/2020

Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.

By .txt is fine?

You can simply attach the .iqx file. But the .txt file will do for now. In the future, please also provide any and all files a given script requires to run (here: images, the HTML page).

As for the survey with the three yes/no questions, see the attached script. All changes are near the bottom.

Okay I'd for sure. Now please tell me how to ask those 3 questions after iaintro because this is verification if the pollster can take part into my survey..

I've already answered that. See the script I attached to my previous reply.

But I have tested this and there is no differece, so I have to put changes in different sections or something like that? Im really new into this program.
By Dave - 4/15/2020

uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.

By .txt is fine?

You can simply attach the .iqx file. But the .txt file will do for now. In the future, please also provide any and all files a given script requires to run (here: images, the HTML page).

As for the survey with the three yes/no questions, see the attached script. All changes are near the bottom.

Okay I'd for sure. Now please tell me how to ask those 3 questions after iaintro because this is verification if the pollster can take part into my survey..

I've already answered that. See the script I attached to my previous reply.

But I have tested this and there is no differece, so I have to put changes in different sections or something like that? Im really new into this program.

I don't know what you are testing, but it's not the script I attached. If you run that script, you will see the following page right after the intro:



If you answer two or more questions with yes, the script will terminate.
By uinib - 4/15/2020

Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.

By .txt is fine?

You can simply attach the .iqx file. But the .txt file will do for now. In the future, please also provide any and all files a given script requires to run (here: images, the HTML page).

As for the survey with the three yes/no questions, see the attached script. All changes are near the bottom.

Okay I'd for sure. Now please tell me how to ask those 3 questions after iaintro because this is verification if the pollster can take part into my survey..

I've already answered that. See the script I attached to my previous reply.

But I have tested this and there is no differece, so I have to put changes in different sections or something like that? Im really new into this program.

I don't know what you are testing, but it's not the script I attached. If you run that script, you will see the following page right after the intro:



If you answer two or more questions with yes, the script will terminate.

Oh u r right, I don't know why it didnt work for the first time. Thank You really much. Is there any way I can gift You money like 5$ or sth. Cuz You saved me!
By Dave - 4/15/2020

uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020
Dave - 4/15/2020
uinib - 4/15/2020

Sorry I am new, I was guessing which option is better. Still need help with this could You help me?

If you could please attach the script, I will be happy to help.

By .txt is fine?

You can simply attach the .iqx file. But the .txt file will do for now. In the future, please also provide any and all files a given script requires to run (here: images, the HTML page).

As for the survey with the three yes/no questions, see the attached script. All changes are near the bottom.

Okay I'd for sure. Now please tell me how to ask those 3 questions after iaintro because this is verification if the pollster can take part into my survey..

I've already answered that. See the script I attached to my previous reply.

But I have tested this and there is no differece, so I have to put changes in different sections or something like that? Im really new into this program.

I don't know what you are testing, but it's not the script I attached. If you run that script, you will see the following page right after the intro:



If you answer two or more questions with yes, the script will terminate.

Oh u r right, I don't know why it didnt work for the first time. Thank You really much. Is there any way I can gift You money like 5$ or sth. Cuz You saved me!

Glad to help & best of luck with your research project.!
By uinib - 4/21/2020

Hi Dave, 
It's me again, I have one more question is it possible to give a pop up message with survery abort? if yes, how Can I do it?

I need "Sorry, You can't take part in this survery"

thanks
By Dave - 4/21/2020

uinib - 4/21/2020
Hi Dave, 
It's me again, I have one more question is it possible to give a pop up message with survery abort? if yes, how Can I do it?

I need "Sorry, You can't take part in this survery"

thanks

You can't have a pop-up message; you can /branch to a <surveypage> that conveys the message before aborting.

<survey 3questions>
/ pages = [1=questionpage]
/ showpagenumbers = false
/ showquestionnumbers = false
/ showbackbutton = false
</survey>

<surveypage questionpage>
/ questions = [1=q1; 2=q2; 3=q3]
/ branch = [
    if ((radiobuttons.q1.response + radiobuttons.q2.response + radiobuttons.q3.response) >= 2) surveypage.noteligible;
]

</surveypage>

<surveypage noteligible>
/ ontrialend = [
    script.abort();
]

/ caption = "Sorry, you cannot take part in this survey. Press the NEXT button to exit."
</surveypage>

<radiobuttons q1>
/ caption = "Question 1"
/ options = ("Yes", "No")
/ optionvalues = ("1", "0")
</radiobuttons>

<radiobuttons q2>
/ caption = "Question 2"
/ options = ("Yes", "No")
/ optionvalues = ("1", "0")
</radiobuttons>

<radiobuttons q3>
/ caption = "Question 3"
/ options = ("Yes", "No")
/ optionvalues = ("1", "0")
</radiobuttons>