Inquisit 5 script convert Inquisit 4 on the Short Term Memory Bind Test


Author
Message
ezgi
ezgi
Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)
Group: Awaiting Activation
Posts: 8, Visits: 26
Hello Dave,

I'm having a problem with the short term memory bind test running on Inquisit 4. I tried to make some adjustments yet, I cannot use valid answer keys (E & I). Experiment is using all keyboard buttons as answer keys. Can you please help me with that? Also, another problem is this not all .jpg pictures are shown on the screen during the experiment. Only 2 pictures out of 4 are presented on the screen while a participant is supposed to give an answer.  I have tried to solve these problems however I could not. I'd appreciate if you'd help me. Thank you very much, best wishes.

Ezgi.



P.S.: the script is attached.
Attachments
Dave
Dave
Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)
Group: Administrators
Posts: 11K, Visits: 70K
ezgi - 11/13/2020
Hello Dave,

I'm having a problem with the short term memory bind test running on Inquisit 4. I tried to make some adjustments yet, I cannot use valid answer keys (E & I). Experiment is using all keyboard buttons as answer keys. Can you please help me with that? Also, another problem is this not all .jpg pictures are shown on the screen during the experiment. Only 2 pictures out of 4 are presented on the screen while a participant is supposed to give an answer.  I have tried to solve these problems however I could not. I'd appreciate if you'd help me. Thank you very much, best wishes.

Ezgi.



P.S.: the script is attached.

This is not vaiid Inquisit 4 syntax:

/ isvalidresponse = [(values.leftKey), (values.rightKey)]

As addressed many times before on here, the proper Inquisit 4 construct is

<trial example>
...
/ isvalidresponse = [trial.example.response == values.leftKey || trial.example.response == values.rightKey]
...
</trial>

ezgi
ezgi
Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)
Group: Awaiting Activation
Posts: 8, Visits: 26
Thank you for your quick reply Dave. While waiting for your answer I changed it as written on forum. But it is still not working. Where did I go wrong?
Attachments
Dave
Dave
Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)
Group: Administrators
Posts: 11K, Visits: 70K
ezgi - 11/13/2020
Thank you for your quick reply Dave. While waiting for your answer I changed it as written on forum. But it is still not working. Where did I go wrong?

<trial getReady>
/ stimulusframes = [1 = getReady]
/ trialduration = 3000
/ isvalidresponse = [(values.leftKey), (values.rightKey)]
/ beginresponsetime = 3000
/ errormessage = false
/ recorddata = false
/ inputdevice = keyboard
</trial>

is still as wrong as it was before.
ezgi
ezgi
Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)
Group: Awaiting Activation
Posts: 8, Visits: 26
Thank you Dave,  you are right. I fixed it but still the problem persists both with the response keys and missing pictures. I do not know where else I should change. Can you please help? I really appreciate it.
Thanks
Attachments
Dave
Dave
Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)
Group: Administrators
Posts: 11K, Visits: 70K
ezgi - 11/13/2020
Thank you Dave,  you are right. I fixed it but still the problem persists both with the response keys and missing pictures. I do not know where else I should change. Can you please help? I really appreciate it.
Thanks

<trial array2_binding_same>
...
/ isvalidresponse = [trial.array2_color_different.response == values.leftKey || trial.array2_color_different.response == values.rightKey]
/ iscorrectresponse = [trial.array2_color_different.response == values.sameKey]
...
</trial>

Please double-check your syntax first. In the above, you'e looking for responses to <trial array2_color_different> in <trial array2_binding_same>. That obviously cannot work.
ezgi
ezgi
Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)
Group: Awaiting Activation
Posts: 8, Visits: 26

It was careless of me, thanks Dave

Dave
Dave
Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)
Group: Administrators
Posts: 11K, Visits: 70K
ezgi - 11/13/2020

It was careless of me, thanks Dave

Regarding the other issue, you have stray statement separators in your /ontrialbegin logic throughout. Those will cause problems. E.g.

<trial array2_shape_different>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
    item.arrayStimuli.reset();
    list.changeItems.reset();
    list.changeItems.poolsize = values.arraySize;
    values.array = 2;
        
    values.change1 = list.changeItems.nextindex;
    values.change2 = list.changeItems.nextindex;
    expressions.changeShapes;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;; <--- HERE
    values.shape = values.shape1;
    values.index = 1;
    expressions.createArray;    

    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;; <--- HERE
    values.shape = values.shape2;
    values.index = 2;
    expressions.createArray;    

    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;; <--- HERE
    values.shape = values.shape3;
    values.index = 3;
    expressions.createArray;

    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;; <--- HERE
    values.shape = values.shape4;
    values.index = 4;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array2_shape_different.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array2_shape_different.insertstimulusframe(picture.shape4, 1);        
    };    

]


Fix those and it should work.
ezgi
ezgi
Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)Associate Member (55 reputation)
Group: Awaiting Activation
Posts: 8, Visits: 26
Thanks Dave, you helped a lot. Since then I have been trying to solve some problems. However I failed. I think while adapting the script I went wrong somewhere. The colors, shapes or bindings are not changing in the task. I see the same stimuli in every trial. Short term memory binding test is not working as it is supposed to be. Can you please help me? Thank you very much Dave!

Best regards


<values>
/arraySize = 4
/arrayPresentationTime = 1000
/blankPresentationTime = 900
/ITI = 1500
/picSize = 20%

/leftKey = 18
/rightKey = 23
/leftKey_label = "E"
/rightKey_label = "I"

/sameKey = values.leftKey
/sameKey_label = values.leftKey_label
/sameKey_location = "sol"
/differentKey = values.rightKey
/differentKey_label = values.rightKey_label
/differentKey_location = "sağ"
</values>
**************************************************************************************************************
**************************************************************************************************************
    EDITABLE STIMULI: change editable stimuli here
**************************************************************************************************************
**************************************************************************************************************

Note: These item lists store each shape in 8 different colors. The images can easily be exchanged for others.


<item Shape1>
/1 = "Shape1_black.jpg"
/2 = "Shape1_blue.jpg"
/3 = "Shape1_green.jpg"
/4 = "Shape1_pink.jpg"
/5 = "Shape1_purple.jpg"
/6 = "Shape1_red.jpg"
/7 = "Shape1_turquoise.jpg"
/8 = "Shape1_yellow.jpg"
</item>

<item Shape2>
/1 = "Shape2_black.jpg"
/2 = "Shape2_blue.jpg"
/3 = "Shape2_green.jpg"
/4 = "Shape2_pink.jpg"
/5 = "Shape2_purple.jpg"
/6 = "Shape2_red.jpg"
/7 = "Shape2_turquoise.jpg"
/8 = "Shape2_yellow.jpg"
</item>

<item Shape3>
/1 = "Shape3_black.jpg"
/2 = "Shape3_blue.jpg"
/3 = "Shape3_green.jpg"
/4 = "Shape3_pink.jpg"
/5 = "Shape3_purple.jpg"
/6 = "Shape3_red.jpg"
/7 = "Shape3_turquoise.jpg"
/8 = "Shape3_yellow.jpg"
</item>

<item Shape4>
/1 = "Shape4_black.jpg"
/2 = "Shape4_blue.jpg"
/3 = "Shape4_green.jpg"
/4 = "Shape4_pink.jpg"
/5 = "Shape4_purple.jpg"
/6 = "Shape4_red.jpg"
/7 = "Shape4_turquoise.jpg"
/8 = "Shape4_yellow.jpg"
</item>

<item Shape5>
/1 = "Shape5_black.jpg"
/2 = "Shape5_blue.jpg"
/3 = "Shape5_green.jpg"
/4 = "Shape5_pink.jpg"
/5 = "Shape5_purple.jpg"
/6 = "Shape5_red.jpg"
/7 = "Shape5_turquoise.jpg"
/8 = "Shape5_yellow.jpg"
</item>

<item Shape6>
/1 = "Shape6_black.jpg"
/2 = "Shape6_blue.jpg"
/3 = "Shape6_green.jpg"
/4 = "Shape6_pink.jpg"
/5 = "Shape6_purple.jpg"
/6 = "Shape6_red.jpg"
/7 = "Shape6_turquoise.jpg"
/8 = "Shape6_yellow.jpg"
</item>

<item Shape7>
/1 = "Shape7_black.jpg"
/2 = "Shape7_blue.jpg"
/3 = "Shape7_green.jpg"
/4 = "Shape7_pink.jpg"
/5 = "Shape7_purple.jpg"
/6 = "Shape7_red.jpg"
/7 = "Shape7_turquoise.jpg"
/8 = "Shape7_yellow.jpg"
</item>

<item Shape8>
/1 = "Shape8_black.jpg"
/2 = "Shape8_blue.jpg"
/3 = "Shape8_green.jpg"
/4 = "Shape8_pink.jpg"
/5 = "Shape8_purple.jpg"
/6 = "Shape8_red.jpg"
/7 = "Shape8_turquoise.jpg"
/8 = "Shape8_yellow.jpg"
</item>

**************************************************************************************************************
**************************************************************************************************************
    EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (black)
/windowsize = (1280px, 800px)
</instruct>

<htmlpage bindingIntro1>
/ file = "bindingintro1.htm"
</htmlpage>

<htmlpage bindingIntro2>
/ file = "bindingintro2.htm"
</htmlpage>

<htmlpage bindingIntro3>
/ file = "bindingintro3.htm"
</htmlpage>

<htmlpage shapeIntro1>
/ file = "shapeintro1.htm"
</htmlpage>

<htmlpage shapeIntro2>
/ file = "shapeintro2.htm"
</htmlpage>

<htmlpage shapeIntro3>
/ file = "shapeintro3.htm"
</htmlpage>

<htmlpage colorIntro1>
/ file = "colorintro1.htm"
</htmlpage>

<htmlpage colorIntro2>
/ file = "colorintro2.htm"
</htmlpage>

<htmlpage colorIntro3>
/ file = "colorintro3.htm"
</htmlpage>

<page End>  
        
^Testin sonuna geldiniz.
^^Teşekkürler!
</page>


<text same>
/ onprepare = [
    if (values.sameKey_location == "sol"){
        text.same.hposition = 25%;
    } else {
        text.same.hposition = 75%;
    };
]
/ vposition = 95%
/ items = ("aynı")
/ size = (25%, 8%)
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>

<text different>
/ onprepare = [
    if (values.differentKey_location == "sol"){
        text.different.hposition = 25%;
    } else {
        text.different.hposition = 75%;
    };
]
/ vposition = 95%
/ items = ("farklı")
/ size = (25%, 8%)
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>


<text attention>
/ items = ("DİKKAT!")
/ position = (50%, 30%)
/ size = (80%, 8%)
/ fontstyle = ("Arial", 10%, true, false, false, false, 5, 1)
</text>

<text attentionInstruct>
/ items = ("Yönerge şimdi değişecek.")
/ position = (50%, 50%)
/ size = (80%, 8%)
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>

<text continue>
/ items = ("<Devam etmek için boşluk tuşuna basın>")
/ position = (50%, 90%)
/ size = (50%, 8%)
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</text>

<trial attention>
/ stimulusframes = [1 = attention, attentionInstruct, continue]
/ isvalidresponse = [57]
/ recorddata = false
/ inputdevice = keyboard
</trial>



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

<text getReady>
/items = ("Hazırlanın:
~n<%expressions.buttoninstruct3%>")
/ fontstyle = ("Arial", 3.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
</text>



****************************************************************************************************
general instruction expressions: adjust the instruction text depending on device used to run script
****************************************************************************************************
<expressions>
/buttoninstruct1 = if (computer.platform) {" <%values.sameKey_location%> yanıt tuşuna";} else {"Klavyedeki <%values.sameKey_location%> '<%values.sameKey_label%>' tuşuna";}
/buttoninstruct2 = if (computer.platform) {" <%values.differentKey_location%> yanıt tuşuna";} else {"Klavyedeki <%values.differentKey_location%> '<%values.differentKey_label%>' tuşuna";}
/buttoninstruct3 = if (computer.platform) {"işaret parmaklarınızı sol ve sağ yanıt tuşlarına yerleştiriniz.";} else {"işaret parmaklarınızı '<%values.leftKey_label%>' ve '<%values.rightKey_label%>' tuşlarına yerleştiriniz.";}

</expressions>


**************************************************************************************************************
**************************************************************************************************************
    EDITABLE LISTS: change editable lists here
**************************************************************************************************************
**************************************************************************************************************



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


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

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "4.0.7.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = white
/ txcolor = (0, 0, 0)
</defaults>


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

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

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

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = [build, computer.platform, date, time, subject, group, blockcode, blocknum, trialcode, trialnum,
values.array, values.congruency, values.image1, values.image2, values.image3, values.image4, response, correct, latency,
values.shape1, values.color1, values.location1, values.location1x, values.location1y,
values.shape2, values.color2, values.location2, values.location2x, values.location2y,
values.shape3, values.color3, values.location3, values.location3x, values.location3y,
values.shape4, values.color4, values.location4, values.location4x, values.location4y,
values.change1, values.change2, values.countDiffs]
</data>

***********************
summary data file
***********************
<summarydata>
/columns = [script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed,
expressions.propCorrect_binding_same, expressions.meanRT_binding_same, expressions.SD_binding_same,
expressions.propCorrect_binding_different, expressions.meanRT_binding_different, expressions.SD_binding_different,
expressions.propCorrect_shape_same, expressions.meanRT_shape_same, expressions.SD_shape_same,
expressions.propCorrect_shape_different, expressions.meanRT_shape_different, expressions.SD_shape_different,
expressions.propCorrect_color_same, expressions.meanRT_color_same, expressions.SD_color_same,
expressions.propCorrect_color_different, expressions.meanRT_color_different, expressions.SD_color_different]
/ separatefiles = true
</summarydata>


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

/congruency:            'same' vs. 'different'
/array:                    1 (array1) vs. 2 (array2)
/shape1:                stores the shape number (1-8) for object #1
/color1:                stores the color (1-8) for object #1
/location1:                stores the location (1-9) for object #1
/location1x:            stores the x-coordinate for object #1
/location1y:            stores the y-coordinate for object #1
(same for objects 2-4)

/location:                stores the location of the current object
/shape:                    stores the shape of the current object
/color:                    stores the color of the current object

/change1:                helper variable: stores the object number of the first object that will change in different trials
/change2:                helper variable: stores the object number of the second object that will change in different trials

/index:                    stores the current object index
/helper:                helper variable to switch colors in binding trials
/image1-image4:            store the current image files used for object1-object4
/previmage1-previmage4:    helper variable that stores the images of display1 for the entire duration of the current trial sequence
/countDiffs:            counts the differences in the presented images (helper variable)

<values>
/completed = 0

/congruency = 0
/array = 0
/shape1 = 0
/color1 = 0
/location1 = 0
/location1x = 0
/location1y = 0
/shape2 = 0
/color2 = 0
/location2 = 0
/location2x = 0
/location2y = 0
/shape3 = 0
/color3 = 0
/location3 = 0
/location3x = 0
/location3y = 0
/shape4 = 0
/color4 = 0
/location4 = 0
/location4x = 0
/location4y = 0

/location = 0
/shape = 0
/color = 0

/change1 = 0
/change2 = 0

/index = 0
/helper = 0

/image1 = ""
/image2 = ""
/image3 = ""
/image4 = ""

/previmage1 = ""
/previmage2 = ""
/previmage3 = ""
/previmage4 = ""

/countDiffs = 0

</values>

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

/propCorrect_binding_same:        proportion correct responses of 'same' binding trials
/meanRT_binding_same:            mean latency (in ms) of correct responses in 'same' binding trials
/SD_binding_same:                Standard Deviation (in ms) of latencies to correct responses in 'same' binding trials
/propCorrect_binding_different:    proportion correct responses of 'different' binding trials
/meanRT_binding_different:        mean latency (in ms) of correct responses in 'different' binding trials
/SD_binding_different:            Standard Deviation (in ms) of latencies to correct responses in 'different' binding trials

/propCorrect_shape_same:        proportion correct responses of 'same' shape trials
/meanRT_shape_same:                mean latency (in ms) of correct responses in 'same' shape trials
/SD_shape_same:                    Standard Deviation (in ms) of latencies to correct responses in 'same' shape trials
/propCorrect_shape_different:    proportion correct responses of 'different' shape trials
/meanRT_shape_different:        mean latency (in ms) of correct responses in 'different' shape trials
/SD_shape_different:            Standard Deviation (in ms) of latencies to correct responses in 'different' shape trials

/propCorrect_color_same:        proportion correct responses of 'same' color trials
/meanRT_color_same:                mean latency (in ms) of correct responses in 'same' color trials
/SD_color_same:                    Standard Deviation (in ms) of latencies to correct responses in 'same' color trials
/propCorrect_color_different:    proportion correct responses of 'different' color trials
/meanRT_color_different:        mean latency (in ms) of correct responses in 'different' color trials
/SD_color_different:            Standard Deviation (in ms) of latencies to correct responses in 'different' color trials

<expressions>
/propCorrect_binding_same = expressions.propcorrect_binding_same
/meanRT_binding_same = expressions.meanrt_binding_same
/SD_binding_same = expressions.sd_binding_same
/propCorrect_binding_different = expressions.propcorrect_binding_different
/meanRT_binding_different = expressions.meanRT_binding_different
/SD_binding_different = expressions.sd_binding_different

/propCorrect_shape_same = expressions.propcorrect_shape_same
/meanRT_shape_same = expressions.meanrt_shape_same
/SD_shape_same = expressions.sd_shape_same
/propCorrect_shape_different = expressions.propcorrect_shape_different
/meanRT_shape_different = expressions.meanrt_shape_different
/SD_shape_different =expressions.sd_shape_different

/propCorrect_color_same = expressions.propcorrect_color_same
/meanRT_color_same = expressions.meanrt_color_same
/SD_color_same = expressions.sd_color_same
/propCorrect_color_different = expressions.propcorrect_color_different
/meanRT_color_different = expressions.meanrt_color_different
/SD_color_different = expressions.sd_color_different
</expressions>


/createArray:        function that fills item.arrayStimuli with the current trial shapes
/swapColors:        function that swaps the colors of 2 randomly selected trial shapes

<expressions>
/createArray = {

    if (values.shape == 1){
        if (values.color == 1){
            item.arrayStimuli.item = item.Shape1.item(1);
        } else if (values.color == 2){
            item.arrayStimuli.item = item.Shape1.item(2);        
        } else if (values.color == 3){
            item.arrayStimuli.item = item.Shape1.item(3);
        } else if (values.color == 4){
            item.arrayStimuli.item = item.Shape1.item(4);
        } else if (values.color == 5){
            item.arrayStimuli.item = item.Shape1.item(5);
        } else if (values.color == 6){
            item.arrayStimuli.item = item.Shape1.item(6);
        } else if (values.color == 7){
            item.arrayStimuli.item = item.Shape1.item(7);
        } else if (values.color == 8){
            item.arrayStimuli.item = item.Shape1.item(8);
        };    
    } else if (values.shape == 2){
        if (values.color == 1){
            item.arrayStimuli.item = item.Shape2.item(1);
        } else if (values.color == 2){
            item.arrayStimuli.item = item.Shape2.item(2);        
        } else if (values.color == 3){
            item.arrayStimuli.item = item.Shape2.item(3);
        } else if (values.color == 4){
            item.arrayStimuli.item = item.Shape2.item(4);
        } else if (values.color == 5){
            item.arrayStimuli.item = item.Shape2.item(5);
        } else if (values.color == 6){
            item.arrayStimuli.item = item.Shape2.item(6);
        } else if (values.color == 7){
            item.arrayStimuli.item = item.Shape2.item(7);
        } else if (values.color == 8){
            item.arrayStimuli.item = item.Shape2.item(8);
        };    
    } else if (values.shape == 3){
        if (values.color == 1){
            item.arrayStimuli.item = item.Shape3.item(1);
        } else if (values.color == 2){
            item.arrayStimuli.item = item.Shape3.item(2);        
        } else if (values.color == 3){
            item.arrayStimuli.item = item.Shape3.item(3);
        } else if (values.color == 4){
            item.arrayStimuli.item = item.Shape3.item(4);
        } else if (values.color == 5){
            item.arrayStimuli.item = item.Shape3.item(5);
        } else if (values.color == 6){
            item.arrayStimuli.item = item.Shape3.item(6);
        } else if (values.color == 7){
            item.arrayStimuli.item = item.Shape3.item(7);
        } else if (values.color == 8){
            item.arrayStimuli.item = item.Shape3.item(8);
        };
    } else if (values.shape == 4){
        if (values.color == 1){
            item.arrayStimuli.item = item.Shape4.item(1);
        } else if (values.color == 2){
            item.arrayStimuli.item = item.Shape4.item(2);        
        } else if (values.color == 3){
            item.arrayStimuli.item = item.Shape4.item(3);
        } else if (values.color == 4){
            item.arrayStimuli.item = item.Shape4.item(4);
        } else if (values.color == 5){
            item.arrayStimuli.item = item.Shape4.item(5);
        } else if (values.color == 6){
            item.arrayStimuli.item = item.Shape4.item(6);
        } else if (values.color == 7){
            item.arrayStimuli.item = item.Shape4.item(7);
        } else if (values.color == 8){
            item.arrayStimuli.item = item.Shape4.item(8);
        };    
    } else if (values.shape == 5){
        if (values.color == 1){
            item.arrayStimuli.item = item.Shape5.item(1);
        } else if (values.color == 2){
            item.arrayStimuli.item = item.Shape5.item(2);        
        } else if (values.color == 3){
            item.arrayStimuli.item = item.Shape5.item(3);
        } else if (values.color == 4){
            item.arrayStimuli.item = item.Shape5.item(4);
        } else if (values.color == 5){
            item.arrayStimuli.item = item.Shape5.item(5);
        } else if (values.color == 6){
            item.arrayStimuli.item = item.Shape5.item(6);
        } else if (values.color == 7){
            item.arrayStimuli.item = item.Shape5.item(7);
        } else if (values.color == 8){
            item.arrayStimuli.item = item.Shape5.item(8);
        };    
    } else if (values.shape == 6){
        if (values.color == 1){
            item.arrayStimuli.item = item.Shape6.item(1);
        } else if (values.color == 2){
            item.arrayStimuli.item = item.Shape6.item(2);        
        } else if (values.color == 3){
            item.arrayStimuli.item = item.Shape6.item(3);
        } else if (values.color == 4){
            item.arrayStimuli.item = item.Shape6.item(4);
        } else if (values.color == 5){
            item.arrayStimuli.item = item.Shape6.item(5);
        } else if (values.color == 6){
            item.arrayStimuli.item = item.Shape6.item(6);
        } else if (values.color == 7){
            item.arrayStimuli.item = item.Shape6.item(7);
        } else if (values.color == 8){
            item.arrayStimuli.item = item.Shape6.item(8);
        };    
    } else if (values.shape == 7){
        if (values.color == 1){
            item.arrayStimuli.item = item.Shape7.item(1);
        } else if (values.color == 2){
            item.arrayStimuli.item = item.Shape7.item(2);        
        } else if (values.color == 3){
            item.arrayStimuli.item = item.Shape7.item(3);
        } else if (values.color == 4){
            item.arrayStimuli.item = item.Shape7.item(4);
        } else if (values.color == 5){
            item.arrayStimuli.item = item.Shape7.item(5);
        } else if (values.color == 6){
            item.arrayStimuli.item = item.Shape7.item(6);
        } else if (values.color == 7){
            item.arrayStimuli.item = item.Shape7.item(7);
        } else if (values.color == 8){
            item.arrayStimuli.item = item.Shape7.item(8);
        };    
    } else if (values.shape == 8){
        if (values.color == 1){
            item.arrayStimuli.item = item.Shape8.item(1);
        } else if (values.color == 2){
            item.arrayStimuli.item = item.Shape8.item(2);        
        } else if (values.color == 3){
            item.arrayStimuli.item = item.Shape8.item(3);
        } else if (values.color == 4){
            item.arrayStimuli.item = item.Shape8.item(4);
        } else if (values.color == 5){
            item.arrayStimuli.item = item.Shape8.item(5);
        } else if (values.color == 6){
            item.arrayStimuli.item = item.Shape8.item(6);
        } else if (values.color == 7){
            item.arrayStimuli.item = item.Shape8.item(7);
        } else if (values.color == 8){
            item.arrayStimuli.item = item.Shape8.item(8);
        };    
    };            
}
/swapColors = {
    if ((values.change1 == 1 && values.change2 == 2) || (values.change2 == 1 && values.change1 == 2)){
        values.helper = values.color1;
        values.color1 = values.color2;
        values.color2 = values.helper;    
    } else if ((values.change1 == 1 && values.change2 == 3) || (values.change2 == 1 && values.change1 == 3)){
        values.helper = values.color1;
        values.color1 = values.color3;
        values.color3 = values.helper;    
    } else if ((values.change1 == 1 && values.change2 == 4) || (values.change2 == 1 && values.change1 == 4)){
        values.helper = values.color1;
        values.color1 = values.color4;
        values.color4 = values.helper;    
    } else if ((values.change1 == 2 && values.change2 == 3) || (values.change2 == 2 && values.change1 == 3)){
        values.helper = values.color2;
        values.color2 = values.color3;
        values.color3 = values.helper;    
    } else if ((values.change1 == 2 && values.change2 == 4) || (values.change2 == 2 && values.change1 == 4)){
        values.helper = values.color2;
        values.color2 = values.color4;
        values.color4 = values.helper;    
    } else if ((values.change1 == 3 && values.change2 == 4) || (values.change2 == 3 && values.change1 == 4)){
        values.helper = values.color3;
        values.color3 = values.color4;
        values.color4 = values.helper;    
    };
}
/changeShapes = {
    if ((values.change1 == 1 && values.change2 == 2) || (values.change2 == 1 && values.change1 == 2)){
        values.shape1 = list.shape.nextvalue;
        values.shape2 = list.shape.nextvalue;    
    } else if ((values.change1 == 1 && values.change2 == 3) || (values.change2 == 1 && values.change1 == 3)){
        values.shape1 = list.shape.nextvalue;
        values.shape3 = list.shape.nextvalue;
    } else if ((values.change1 == 1 && values.change2 == 4) || (values.change2 == 1 && values.change1 == 4)){
        values.shape1 = list.shape.nextvalue;
        values.shape4 = list.shape.nextvalue;
    } else if ((values.change1 == 2 && values.change2 == 3) || (values.change2 == 2 && values.change1 == 3)){
        values.shape2 = list.shape.nextvalue;
        values.shape3 = list.shape.nextvalue;
    } else if ((values.change1 == 2 && values.change2 == 4) || (values.change2 == 2 && values.change1 == 4)){
        values.shape2 = list.shape.nextvalue;
        values.shape4 = list.shape.nextvalue;
    } else if ((values.change1 == 3 && values.change2 == 4) || (values.change2 == 3 && values.change1 == 4)){
        values.shape3 = list.shape.nextvalue;
        values.shape4 = list.shape.nextvalue;
    };
}
/changeColors = {
    if ((values.change1 == 1 && values.change2 == 2) || (values.change2 == 1 && values.change1 == 2)){
        values.color1 = list.color.nextvalue;
        values.color2 = list.color.nextvalue;    
    } else if ((values.change1 == 1 && values.change2 == 3) || (values.change2 == 1 && values.change1 == 3)){
        values.color1 = list.color.nextvalue;
        values.color3 = list.color.nextvalue;    
    } else if ((values.change1 == 1 && values.change2 == 4) || (values.change2 == 1 && values.change1 == 4)){
        values.color1 = list.color.nextvalue;
        values.color4 = list.color.nextvalue;    
    } else if ((values.change1 == 2 && values.change2 == 3) || (values.change2 == 2 && values.change1 == 3)){
        values.color2 = list.color.nextvalue;
        values.color3 = list.color.nextvalue;    
    } else if ((values.change1 == 2 && values.change2 == 4) || (values.change2 == 2 && values.change1 == 4)){
        values.color2 = list.color.nextvalue;
        values.color4 = list.color.nextvalue;    
    } else if ((values.change1 == 3 && values.change2 == 4) || (values.change2 == 3 && values.change1 == 4)){
        values.color3 = list.color.nextvalue;
        values.color4 = list.color.nextvalue;    
    };
}




/countDiffs = {
    values.countDiffs = 0;
    
    if (values.image1 != values.previmage1){
        values.countDiffs += 1;
    };
    if (values.image2 != values.previmage2){
        values.countDiffs += 1;
    };        
    if (values.image3 != values.previmage3){
        values.countDiffs += 1;
    };        
    if (values.image4 != values.previmage4){
        values.countDiffs += 1;
    };        
}
</expressions>



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

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

This trial is used when participants are asked to place their fingers on specific response
buttons. On the touchscreen, this trial presents the (inactive) response buttons to the participants.
<trial getReady>
/ stimulusframes = [1 = getReady]
/ trialduration = 3000
/ isvalidresponse = [trial.getReady.response == values.leftKey || trial.getReady.response == values.rightKey]
/ beginresponsetime = 3000
/ errormessage = false
/ recorddata = false
/ inputdevice = keyboard


</trial>

<port getReadyeeg>
/ port = LPT1
/ subport = data
/ items = ("00000000")
</port>


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

Note: contains the item list for the current array (is assembled dynamically for each trial)
<item arrayStimuli>
</item>

<picture shape1>
/ items = shape1
/ select = 1
/ position = (values.location1x, values.location1y)
/ size = (values.picSize, values.picSize)

</picture>

<port shape1eeg>
/ port = LPT1
/ subport = data
/ items = ("00000001")
</port>

<picture shape2>
/ items = shape2
/ select = 2
/ position = (values.location2x, values.location2y)
/ size = (values.picSize, values.picSize)
</picture>

<port shape2eeeg>
/ port = LPT1
/ subport = data
/ items = ("00000011")
</port>

<picture shape3>
/ items = shape3
/ select = 3
/ position = (values.location3x, values.location3y)
/ size = (values.picSize, values.picSize)
</picture>

<port shape3eeeg>
/ port = LPT1
/ subport = data
/ items = ("00000111")
</port>

<picture shape4>
/ items = shape4
/ select = 4
/ position = (values.location4x, values.location4y)
/ size = (values.picSize, values.picSize)
</picture>

<port shape4eeeg>
/ port = LPT1
/ subport = data
/ items = ("00001111")
</port>



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

Note: list.color selects the colors for the array objects (1-8 => itemnumbers)
<list color>
/items = (1, 2, 3, 4, 5, 6, 7, 8)
/ replace = false
/ selectionrate = always
</list>

Note: list.shape selects the shapes for the array objects
<list shape>
/items = (1, 2, 3, 4, 5, 6, 7, 8)
/ replace = false
/ selectionrate = always
</list>

Note: list.location randomly assigns 1 of 9 possible screen locations to each array object
<list location>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9)
/ replace = false
/ selectionrate = always
/ resetinterval = 0
</list>

Note: list.xpositions assigns the corresponding horizontal screen position to selected object location
<list xpositions>
/items = (
25%, 50%, 75%,
25%, 50%, 75%,
25%, 50%, 75%)
/ selectionmode = values.location
/ selectionrate = always
</list>

Note: list.ypositions assigns the corresponding vertical screen position to selected object location
<list ypositions>
/items = (
25%, 25%, 25%,
50%, 50%, 50%,
75%, 75%, 75%)
/ selectionmode = values.location
/ selectionrate = always
</list>

Note: list is dynamically updated with values 1-4 (depends on values.arraySize)
It randomly selects the images that should be changed in changed trials
<list changeItems>
/ replace = false
/ selectionrate = always
</list>

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

Note: list stores 1 = correct; 0 = error for each same shape trial
<list accuracy_shape_same>
</list>

Note: list stores 1 = correct; 0 = error for each different shape trial
<list accuracy_shape_different>
</list>

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

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


Note: list stores 1 = correct; 0 = error for each same color trial
<list accuracy_color_same>
</list>

Note: list stores 1 = correct; 0 = error for each different color trial
<list accuracy_color_different>
</list>

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

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



Note: list stores 1 = correct; 0 = error for each same binding trial
<list accuracy_binding_same>
</list>

Note: list stores 1 = correct; 0 = error for each different binding trial
<list accuracy_binding_different>
</list>

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

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

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

********************************************
Shape Trials
********************************************

Note: trial.array1_shape_same
* resets necessary lists
* randomly selects a color and assigns it to all picture.shape1-picture.shape4
* randomly assigns shape form 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_shape_same

<trial array1_shape_same>
/ ontrialbegin = [
    list.shape.reset();
    list.color.reset();
    list.location.reset();
    item.arrayStimuli.reset();
    values.change1 = 0;
    values.change2 = 0;
    values.congruency = "aynı";
    values.array = 1;
    values.countDiffs = 0;
    
    values.color = list.color.nextvalue;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape1 = list.shape.nextvalue;
    values.color1 = values.color;
    values.shape = values.shape1;
    values.index = 1;
    expressions.createArray;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape2 = list.shape.nextvalue;
    values.color2 = values.color;
    values.shape = values.shape2;
    values.index = 2;
    expressions.createArray;
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape3 = list.shape.nextvalue;
    values.color3 = values.color;
    values.shape = values.shape3;
    values.index = 3;
    expressions.createArray;
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape4 = list.shape.nextvalue;
    values.color4 = values.color;
    values.shape = values.shape4;
    values.index = 4;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array1_shape_same.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array1_shape_same.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
    trial.array1_shape_same.resetstimulusframes();
    
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    values.previmage1 = values.image1;
    values.previmage2 = values.image2;
    values.previmage3 = values.image3;
    values.previmage4 = values.image4;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
    
]
/ branch = [
    trial.array2_shape_same;
]
/ inputdevice = keyboard
</trial>

Note: trial.array2_shape_same
* resets location list
* presents a blank screen for a predetermined amount of time
* assigns new locations to picture.shape1-picture.shape4
* presents the same stimuli as in the trial before
* waits for response
* evaluates response
<trial array2_shape_same>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
    values.array = 2;

    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;    
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;    
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;    
    
    if (values.arraySize > 2){
        trial.array2_shape_same.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array2_shape_same.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_shape_same.response == values.leftKey || trial.array2_shape_same.response == values.rightKey]
/ iscorrectresponse = [trial.array2_shape_same.response == values.sameKey]
/ ontrialend = [
    trial.array2_shape_same.resetstimulusframes();
    list.accuracy_shape_same.insertitem(trial.array2_shape_same.correct, 1);
    if (trial.array2_shape_same.correct){
        list.latencies_shape_same.insertitem(trial.array2_shape_same.latency, 1);
    };
    
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
    
    expressions.countDiffs;
    
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>

Note: trial.array1_shape_different
* resets necessary lists
* randomly assigns the color 'black' to picture.shape1-picture.shape4
* randomly assigns shape form 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_shape_different

<trial array1_shape_different>
/ ontrialbegin = [
    list.shape.reset();
    list.color.reset();
    list.location.reset();
    item.arrayStimuli.reset();
    values.change1 = 0;
    values.change2 = 0;
    values.congruency = "farklı";
    values.array = 1;
    values.countDiffs = 0;    
    
    values.color = list.color.nextvalue;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape1 = list.shape.nextvalue;
    values.shape = values.shape1;
    values.color1 = values.color;
    values.index = 1;
    expressions.createArray;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape2 = list.shape.nextvalue;
    values.shape = values.shape2;
    values.index = 2;
    values.color2 = values.color;
    expressions.createArray;
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape3 = list.shape.nextvalue;
    values.shape = values.shape3;
    values.index = 3;
    values.color3 = values.color;
    expressions.createArray;
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape4 = list.shape.nextvalue;
    values.shape = values.shape4;
    values.index = 4;
    values.color4 = values.color;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array1_shape_different.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array1_shape_different.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
    trial.array1_shape_different.resetstimulusframes();
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    values.previmage1 = values.image1;
    values.previmage2 = values.image2;
    values.previmage3 = values.image3;
    values.previmage4 = values.image4;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
    
]
/ branch = [
    trial.array2_shape_different;
]
/ inputdevice = keyboard
</trial>


Note: trial.array2_shape_different
* resets necessary lists
* randomly selects the shapes that get exchanged for new shapes (selection pool is updated to reflect the number of array objects)
* reassembles dynamic item list 'item.arrayStimuli' with the changed list of items
* presents the items stored in 'item.arrayStimuli' until response occurs
* evaluates accuracy of response
<trial array2_shape_different>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
    item.arrayStimuli.reset();
    list.changeItems.reset();
    list.changeItems.poolsize = values.arraySize;
    values.array = 2;
        
    values.change1 = list.changeItems.nextindex;
    values.change2 = list.changeItems.nextindex;
    expressions.changeShapes;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape = values.shape1;
    values.index = 1;
    expressions.createArray;    

    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape = values.shape2;
    values.index = 2;
    expressions.createArray;    

    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape = values.shape3;
    values.index = 3;
    expressions.createArray;

    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape = values.shape4;
    values.index = 4;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array2_shape_different.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array2_shape_different.insertstimulusframe(picture.shape4, 1);        
    };    

]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_shape_different.response == values.leftKey || trial.array2_shape_different.response == values.rightKey]
/ iscorrectresponse = [trial.array2_shape_different.response == values.differentKey]
/ ontrialend = [
    trial.array2_shape_different.resetstimulusframes();
    list.accuracy_shape_different.insertitem(trial.array2_shape_different.correct, 1);
    if (trial.array2_shape_different.correct){
        list.latencies_shape_different.insertitem(trial.array2_shape_different.latency, 1);
    };
    
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
    expressions.countDiffs;    
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>


********************************************
Color Trials
********************************************

Note: trial.array1_
* resets necessary lists
* randomly selects the same shape for picture.shape1-picture.shape4
* randomly assigns color 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_shape_same

<trial array1_color_same>
/ ontrialbegin = [
    list.shape.reset();
    list.color.reset();
    list.location.reset();
    item.arrayStimuli.reset();
    values.change1 = 0;
    values.change2 = 0;
    values.congruency = "aynı";    
    values.array = 1;
    values.countDiffs = 0;
    
    values.shape = list.shape.nextvalue;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape1 = values.shape;
    values.color1 = list.color.nextvalue;
    values.color = values.color1;
    values.index = 1;
    expressions.createArray;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape2 = values.shape;
    values.color2 = list.color.nextvalue;
    values.color = values.color2;
    values.index = 2;
    expressions.createArray;
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape3 = values.shape;
    values.color3 = list.color.nextvalue;
    values.color = values.color3;
    values.index = 3;
    expressions.createArray;
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape4 = values.shape;
    values.color4 = list.color.nextvalue;
    values.color = values.color4;
    values.index = 4;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array1_color_same.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array1_color_same.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
    trial.array1_color_same.resetstimulusframes();
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    values.previmage1 = values.image1;
    values.previmage2 = values.image2;
    values.previmage3 = values.image3;
    values.previmage4 = values.image4;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };    
]
/ branch = [
    trial.array2_color_same;
]
/ inputdevice = keyboard
</trial>

Note: trial.array2_color_same
* resets location list
* presents a blank screen for a predetermined amount of time
* assigns new locations to picture.shape1-picture.shape4
* presents the same stimuli as in the trial before
* waits for response
* evaluates response
<trial array2_color_same>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
    values.array = 2;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;    
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;    
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;    
    
    if (values.arraySize > 2){
        trial.array2_color_same.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array2_color_same.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_color_same.response == values.leftKey || trial.array2_color_same.response == values.rightKey]
/ iscorrectresponse = [trial.array2_color_same.response == values.sameKey]
/ ontrialend = [
    trial.array2_color_same.resetstimulusframes();
    list.accuracy_color_same.insertitem(trial.array2_color_same.correct, 1);
    if (trial.array2_color_same.correct){
        list.latencies_color_same.insertitem(trial.array2_color_same.latency, 1);
    };
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
    expressions.countDiffs;        
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>

Note: trial.array1_color_different
* resets necessary lists
* randomly assigns the same shape to picture.shape1-picture.shape4
* randomly assigns color 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_shape_different

<trial array1_color_different>
/ ontrialbegin = [
    list.shape.reset();
    list.color.reset();
    list.location.reset();
    item.arrayStimuli.reset();
    values.change1 = 0;
    values.change2 = 0;
    values.congruency = "farklı";    
    values.array = 1;
    values.countDiffs = 0;
    
    values.shape = list.shape.nextvalue;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape1 = values.shape;
    values.color1 = list.color.nextvalue;
    values.color = values.color1;
    values.index = 1;
    expressions.createArray;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape2 = values.shape;
    values.color2 = list.color.nextvalue;
    values.color = values.color2;
    values.index = 2;
    expressions.createArray;
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape3 = values.shape;
    values.color3 = list.color.nextvalue;
    values.color = values.color3;
    values.index = 3;
    expressions.createArray;
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape4 = values.shape;
    values.color4 = list.color.nextvalue;
    values.color = values.color4;
    values.index = 4;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array1_color_different.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array1_color_different.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
    trial.array1_color_different.resetstimulusframes();
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    values.previmage1 = values.image1;
    values.previmage2 = values.image2;
    values.previmage3 = values.image3;
    values.previmage4 = values.image4;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
        
]
/ branch = [
    trial.array2_color_different;
]
/ inputdevice = keyboard
</trial>


Note: trial.array2_color_different
* resets necessary lists
* randomly selects the colors that get exchanged for new colors (selection pool is updated to reflect the number of array objects)
* reassembles dynamic item list 'item.arrayStimuli' with the changed list of items
* presents the items stored in 'item.arrayStimuli' until response occurs
* evaluates accuracy of response
<trial array2_color_different>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
    values.array = 2;
    
    item.arrayStimuli.reset();
    list.changeItems.reset();
    list.changeItems.poolsize = values.arraySize;
        
    values.change1 = list.changeItems.nextindex;
    values.change2 = list.changeItems.nextindex;    
    expressions.changeColors;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape = values.shape1;
    values.color = values.color1;
    values.index = 1;
    expressions.createArray;    

    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape = values.shape2;
    values.color = values.color2;
    values.index = 2;
    expressions.createArray;    

    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape = values.shape3;
    values.color = values.color3;
    values.index = 3;
    expressions.createArray;

    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape = values.shape4;
    values.color = values.color4;
    values.index = 4;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array2_color_different.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array2_color_different.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_color_different.response == values.leftKey || trial.array2_color_different.response == values.rightKey]
/ iscorrectresponse = [trial.array2_color_different.response == values.differentKey]
/ ontrialend = [
    trial.array2_color_different.resetstimulusframes();
    list.accuracy_color_different.insertitem(trial.array2_color_different.correct, 1);
    if (trial.array2_color_different.correct){
        list.latencies_color_different.insertitem(trial.array2_color_different.latency, 1);
    };
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
    expressions.countDiffs;        
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>



********************************************
Binding Trials
********************************************

Note: trial.array1_binding_same
* resets necessary lists
* randomly assigns color1-8 to picture.shape1-picture.shape4
* randomly assigns shape form 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_binding_same

<trial array1_binding_same>
/ ontrialbegin = [
    list.color.reset();
    list.shape.reset();
    list.location.reset();
    item.arrayStimuli.reset();
    values.change1 = 0;
    values.change2 = 0;
    values.congruency = "aynı";
    values.array = 1;
    values.countDiffs = 0;

    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape1 = list.shape.nextvalue;
    values.color1 = list.color.nextvalue;
    values.shape = values.shape1;
    values.color = values.color1;
    values.index = 1;
    expressions.createArray;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape2 = list.shape.nextvalue;
    values.color2 = list.color.nextvalue;
    values.shape = values.shape2;
    values.color = values.color2;
    values.index = 2;
    expressions.createArray;
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape3 = list.shape.nextvalue;
    values.color3 = list.color.nextvalue;
    values.shape = values.shape3;
    values.color = values.color3;
    values.index = 3;
    expressions.createArray;
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape4 = list.shape.nextvalue;
    values.color4 = list.color.nextvalue;
    values.shape = values.shape4;
    values.color = values.color4;
    values.index = 4;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array1_binding_same.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array1_binding_same.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
    trial.array1_binding_same.resetstimulusframes();
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    values.previmage1 = values.image1;
    values.previmage2 = values.image2;
    values.previmage3 = values.image3;
    values.previmage4 = values.image4;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
        
]
/ branch = [
    trial.array2_binding_same;
]
/ inputdevice = keyboard
</trial>

Note: trial.array2_binding_same
* resets location list
* presents a blank screen for a predetermined amount of time
* assigns new locations to picture.shape1-picture.shape4
* presents the same stimuli as in the trial before
* waits for response
<trial array2_binding_same>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
    values.array = 2;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;    
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;    
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;    
    
    if (values.arraySize > 2){
        trial.array2_binding_same.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array2_binding_same.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_binding_same.response == values.leftKey || trial.array2_binding_same.response == values.rightKey]
/ iscorrectresponse = [trial.array2_binding_same.response == values.sameKey]
/ ontrialend = [
    trial.array2_binding_same.resetstimulusframes();
    list.accuracy_binding_same.insertitem(trial.array2_binding_same.correct, 1);
    if (trial.array2_binding_same.correct){
        list.latencies_binding_same.insertitem(trial.array2_binding_same.latency, 1);
    };
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
    expressions.countDiffs;        
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>


Note: trial.array1_binding_different
* resets necessary lists
* randomly assigns color1-8 to picture.shape1-picture.shape4
* randomly assigns shape form 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_binding_different
<trial array1_binding_different>
/ ontrialbegin = [
    list.color.reset();
    list.shape.reset();
    list.location.reset();
    item.arrayStimuli.reset();
    values.change1 = 0;
    values.change2 = 0;
    values.congruency = "farklı";    
    values.array = 1;
    values.countDiffs = 0;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape1 = list.shape.nextvalue;
    values.color1 = list.color.nextvalue;
    values.shape = values.shape1;
    values.color = values.color1;
    values.index = 1;
    expressions.createArray;
    
    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape2 = list.shape.nextvalue;
    values.color2 = list.color.nextvalue;
    values.shape = values.shape2;
    values.color = values.color2;
    values.index = 2;
    expressions.createArray;
    
    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape3 = list.shape.nextvalue;
    values.color3 = list.color.nextvalue;
    values.shape = values.shape3;
    values.color = values.color3;
    values.index = 3;
    expressions.createArray;
    
    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape4 = list.shape.nextvalue;
    values.color4 = list.color.nextvalue;
    values.shape = values.shape4;
    values.color = values.color4;
    values.index = 4;
    expressions.createArray;    
    
    if (values.arraySize > 2){
        trial.array1_binding_different.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array1_binding_different.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
    trial.array1_binding_different.resetstimulusframes();
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    values.previmage1 = values.image1;
    values.previmage2 = values.image2;
    values.previmage3 = values.image3;
    values.previmage4 = values.image4;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };        
        
]
/ branch = [
    trial.array2_binding_different;
]
/ inputdevice = keyboard
</trial>


Note: trial.array2_binding_different
* resets necessary lists
* randomly selects the shapes that swap colors and arranges the swap (selection pool is updated to reflect the number of array objects)
* reassembles dynamic item list 'item.arrayStimuli' with the changed list of items
* presents the items stored in 'item.arrayStimuli' until response occurs
* evaluates accuracy of response
<trial array2_binding_different>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
    item.arrayStimuli.reset();    
    list.changeItems.reset();
    list.changeItems.poolsize = values.arraySize;
    values.array = 2;
        
    values.change1 = list.changeItems.nextindex;
    values.change2 = list.changeItems.nextindex;
    expressions.swapColors;
    
    values.location1 = list.location.nextvalue;
    values.location = values.location1;
    values.location1x = list.xpositions.nextvalue;
    values.location1y = list.ypositions.nextvalue;
    values.shape = values.shape1;
    values.color = values.color1;
    values.index = 1;
    expressions.createArray;    

    values.location2 = list.location.nextvalue;
    values.location = values.location2;
    values.location2x = list.xpositions.nextvalue;
    values.location2y = list.ypositions.nextvalue;
    values.shape = values.shape2;
    values.color = values.color2;
    values.index = 2;
    expressions.createArray;    

    values.location3 = list.location.nextvalue;
    values.location = values.location3;
    values.location3x = list.xpositions.nextvalue;
    values.location3y = list.ypositions.nextvalue;
    values.shape = values.shape3;
    values.color = values.color3;
    values.index = 3;
    expressions.createArray;

    values.location4 = list.location.nextvalue;
    values.location = values.location4;
    values.location4x = list.xpositions.nextvalue;
    values.location4y = list.ypositions.nextvalue;
    values.shape = values.shape4;
    values.color = values.color4;
    values.index = 4;
    expressions.createArray;
    
    if (values.arraySize > 2){
        trial.array2_binding_different.insertstimulusframe(picture.shape3, 1);        
    };
    if (values.arraySize > 3){
        trial.array2_binding_different.insertstimulusframe(picture.shape4, 1);        
    };    
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_binding_different.response == values.leftKey || trial.array2_binding_different.response == values.rightKey]
/ iscorrectresponse = [trial.array2_binding_different.response == values.differentKey]
/ ontrialend = [
    trial.array2_binding_different.resetstimulusframes();
    list.accuracy_binding_different.insertitem(trial.array2_binding_different.correct, 1);
    if (trial.array2_binding_different.correct){
        list.latencies_binding_different.insertitem(trial.array2_binding_different.latency, 1);
    };
    
    values.image1 = picture.shape1.currentitem;
    values.image2 = picture.shape2.currentitem;
    values.image3 = picture.shape3.currentitem;
    values.image4 = picture.shape4.currentitem;
    
    if (values.arraySize < 3){
        values.image3="";
    };
    if (values.arraySize < 4){
        values.image4="";
    };    
    expressions.countDiffs;    
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>

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

<block binding>
/ preinstructions = (bindingIntro1, bindingIntro2, bindingIntro3)
/ trials = [1 = getReady; 2-49 = noreplace(array1_binding_same,array1_binding_different)]
</block>

<block color>
/ preinstructions = (colorIntro1, colorIntro2, colorIntro3)
/ trials = [1 = getReady; 2-49 = noreplace(array1_color_same, array1_color_different)]

</block>

<block shape>
/ preinstructions = (shapeIntro1, shapeIntro2, shapeIntro3)
/ trials = [1 = getReady; 2-49 = noreplace(array1_shape_same, array1_shape_different)]
</block>

<block instructionChange>
/ trials = [1 = attention]
</block>


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

<expt>
/ subjects = (1 of 6)
/ groupassignment = groupnumber
/ onexptend = [
    values.completed = 1;
]
/ blocks = [
    1 = binding;
    2 = instructionChange;
    3 = color;
    4 = instructionChange;
    5 = shape;
]
/ postinstructions = (End)
</expt>


<expt>
/ subjects = (2 of 6)
/ groupassignment = groupnumber
/ onexptend = [
    values.completed = 1;
]
/ blocks = [
    1 = binding;
    2 = instructionChange;
    3 = shape;
    4 = instructionChange;
    5 = color;
]
/ postinstructions = (End)
</expt>

<expt>
/ subjects = (3 of 6)
/ groupassignment = groupnumber
/ onexptend = [
    values.completed = 1;
]
/ blocks = [
    1 = color;
    2 = instructionChange;
    3 = binding;
    4 = instructionChange;
    5 = shape;
]
/ postinstructions = (End)
</expt>

<expt>
/ subjects = (4 of 6)
/ groupassignment = groupnumber
/ onexptend = [
    values.completed = 1;
]
/ blocks = [
    1 = color;
    2 = instructionChange;
    3 = shape;
    4 = instructionChange;
    5 = binding;
]
/ postinstructions = (End)
</expt>

<expt>
/ subjects = (5 of 6)
/ groupassignment = groupnumber
/ onexptend = [
    values.completed = 1;
]
/ blocks = [
    1 = shape;
    2 = instructionChange;
    3 = binding;
    4 = instructionChange;
    5 = color;
]
/ postinstructions = (End)
</expt>

<expt>
/ subjects = (6 of 6)
/ groupassignment = groupnumber
/ onexptend = [
    values.completed = 1;
]
/ blocks = [
    1 = shape;
    2 = instructionChange;
    3 = color;
    4 = instructionChange;
    5 = binding;
]
/ postinstructions = (End)
</expt>


Dave
Dave
Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)Supreme Being (937K reputation)
Group: Administrators
Posts: 11K, Visits: 70K
You see the same stimuli on every trial because that is what you have instructed the script to do.

<picture shape1>
/ items = shape1
/ select = 1
/ position = (values.location1x, values.location1y)
/ size = (values.picSize, values.picSize)
</picture>

<picture shape2>
/ items = shape2
/ select = 2
/ position = (values.location2x, values.location2y)
/ size = (values.picSize, values.picSize)
</picture>

<picture shape3>
/ items = shape3
/ select = 3
/ position = (values.location3x, values.location3y)
/ size = (values.picSize, values.picSize)
</picture>

<picture shape4>
/ items = shape4
/ select = 4
/ position = (values.location4x, values.location4y)
/ size = (values.picSize, values.picSize)
</picture>

That is just completely wrong, and I have no idea why you changed that from the original. If you want to display the dynamically created array stimuli, then those <picture> elements obviously ought to use <item arrayStimuli> as their items.

There are also still parts of the script where you use Inquisit 5 syntax constructs that do not exist under Inquisit 4. For example, there is no item() member function for <item> elements in Inqusit 4. This will be the last revision I offer here. Inquisit 4 has serious limitations compared to Inquisit 5 and 6, trying to get things to work under Inquisit 4 that were never intended to run under Inquisit 4 is error prone and sometimes downright impossible; even if the procedure can somehow be made to run, it'll typically be considerably crippled. You may want to consider upgrading.


<values>
/arraySize = 4
/arrayPresentationTime = 1000
/blankPresentationTime = 900
/ITI = 1500
/picSize = 20%

/leftKey = 18
/rightKey = 23
/leftKey_label = "E"
/rightKey_label = "I"

/sameKey = values.leftKey
/sameKey_label = values.leftKey_label
/sameKey_location = "sol"
/differentKey = values.rightKey
/differentKey_label = values.rightKey_label
/differentKey_location = "sağ"
</values>
**************************************************************************************************************
**************************************************************************************************************
  EDITABLE STIMULI: change editable stimuli here
**************************************************************************************************************
**************************************************************************************************************

Note: These item lists store each shape in 8 different colors. The images can easily be exchanged for others.


<item Shape1>
/1 = "Shape1_black.jpg"
/2 = "Shape1_blue.jpg"
/3 = "Shape1_green.jpg"
/4 = "Shape1_pink.jpg"
/5 = "Shape1_purple.jpg"
/6 = "Shape1_red.jpg"
/7 = "Shape1_turquoise.jpg"
/8 = "Shape1_yellow.jpg"
</item>

<item Shape2>
/1 = "Shape2_black.jpg"
/2 = "Shape2_blue.jpg"
/3 = "Shape2_green.jpg"
/4 = "Shape2_pink.jpg"
/5 = "Shape2_purple.jpg"
/6 = "Shape2_red.jpg"
/7 = "Shape2_turquoise.jpg"
/8 = "Shape2_yellow.jpg"
</item>

<item Shape3>
/1 = "Shape3_black.jpg"
/2 = "Shape3_blue.jpg"
/3 = "Shape3_green.jpg"
/4 = "Shape3_pink.jpg"
/5 = "Shape3_purple.jpg"
/6 = "Shape3_red.jpg"
/7 = "Shape3_turquoise.jpg"
/8 = "Shape3_yellow.jpg"
</item>

<item Shape4>
/1 = "Shape4_black.jpg"
/2 = "Shape4_blue.jpg"
/3 = "Shape4_green.jpg"
/4 = "Shape4_pink.jpg"
/5 = "Shape4_purple.jpg"
/6 = "Shape4_red.jpg"
/7 = "Shape4_turquoise.jpg"
/8 = "Shape4_yellow.jpg"
</item>

<item Shape5>
/1 = "Shape5_black.jpg"
/2 = "Shape5_blue.jpg"
/3 = "Shape5_green.jpg"
/4 = "Shape5_pink.jpg"
/5 = "Shape5_purple.jpg"
/6 = "Shape5_red.jpg"
/7 = "Shape5_turquoise.jpg"
/8 = "Shape5_yellow.jpg"
</item>

<item Shape6>
/1 = "Shape6_black.jpg"
/2 = "Shape6_blue.jpg"
/3 = "Shape6_green.jpg"
/4 = "Shape6_pink.jpg"
/5 = "Shape6_purple.jpg"
/6 = "Shape6_red.jpg"
/7 = "Shape6_turquoise.jpg"
/8 = "Shape6_yellow.jpg"
</item>

<item Shape7>
/1 = "Shape7_black.jpg"
/2 = "Shape7_blue.jpg"
/3 = "Shape7_green.jpg"
/4 = "Shape7_pink.jpg"
/5 = "Shape7_purple.jpg"
/6 = "Shape7_red.jpg"
/7 = "Shape7_turquoise.jpg"
/8 = "Shape7_yellow.jpg"
</item>

<item Shape8>
/1 = "Shape8_black.jpg"
/2 = "Shape8_blue.jpg"
/3 = "Shape8_green.jpg"
/4 = "Shape8_pink.jpg"
/5 = "Shape8_purple.jpg"
/6 = "Shape8_red.jpg"
/7 = "Shape8_turquoise.jpg"
/8 = "Shape8_yellow.jpg"
</item>

**************************************************************************************************************
**************************************************************************************************************
  EDITABLE INSTRUCTIONS: change instructions here
**************************************************************************************************************
**************************************************************************************************************
<instruct>
/ fontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (black)
/windowsize = (1280px, 800px)
</instruct>

<htmlpage bindingIntro1>
/ file = "bindingintro1.htm"
</htmlpage>

<htmlpage bindingIntro2>
/ file = "bindingintro2.htm"
</htmlpage>

<htmlpage bindingIntro3>
/ file = "bindingintro3.htm"
</htmlpage>

<htmlpage shapeIntro1>
/ file = "shapeintro1.htm"
</htmlpage>

<htmlpage shapeIntro2>
/ file = "shapeintro2.htm"
</htmlpage>

<htmlpage shapeIntro3>
/ file = "shapeintro3.htm"
</htmlpage>

<htmlpage colorIntro1>
/ file = "colorintro1.htm"
</htmlpage>

<htmlpage colorIntro2>
/ file = "colorintro2.htm"
</htmlpage>

<htmlpage colorIntro3>
/ file = "colorintro3.htm"
</htmlpage>

<page End>
  
^Testin sonuna geldiniz.
^^Teşekkürler!
</page>


<text same>
/ onprepare = [
  if (values.sameKey_location == "sol"){
   text.same.hposition = 25%;
  } else {
   text.same.hposition = 75%;
  };
]
/ vposition = 95%
/ items = ("aynı")
/ size = (25%, 8%)
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>

<text different>
/ onprepare = [
  if (values.differentKey_location == "sol"){
   text.different.hposition = 25%;
  } else {
   text.different.hposition = 75%;
  };
]
/ vposition = 95%
/ items = ("farklı")
/ size = (25%, 8%)
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>


<text attention>
/ items = ("DİKKAT!")
/ position = (50%, 30%)
/ size = (80%, 8%)
/ fontstyle = ("Arial", 10%, true, false, false, false, 5, 1)
</text>

<text attentionInstruct>
/ items = ("Yönerge şimdi değişecek.")
/ position = (50%, 50%)
/ size = (80%, 8%)
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>

<text continue>
/ items = ("<Devam etmek için boşluk tuşuna basın>")
/ position = (50%, 90%)
/ size = (50%, 8%)
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
</text>

<trial attention>
/ stimulusframes = [1 = attention, attentionInstruct, continue]
/ isvalidresponse = [57]
/ recorddata = false
/ inputdevice = keyboard
</trial>



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

<text getReady>
/items = ("Hazırlanın:
~n<%expressions.buttoninstruct3%>")
/ fontstyle = ("Arial", 3.00%, false, false, false, false, 5, 1)
/ size = (80%, 40%)
</text>



****************************************************************************************************
general instruction expressions: adjust the instruction text depending on device used to run script
****************************************************************************************************
<expressions>
/buttoninstruct1 = if (computer.platform) {" <%values.sameKey_location%> yanıt tuşuna";} else {"Klavyedeki <%values.sameKey_location%> '<%values.sameKey_label%>' tuşuna";}
/buttoninstruct2 = if (computer.platform) {" <%values.differentKey_location%> yanıt tuşuna";} else {"Klavyedeki <%values.differentKey_location%> '<%values.differentKey_label%>' tuşuna";}
/buttoninstruct3 = if (computer.platform) {"işaret parmaklarınızı sol ve sağ yanıt tuşlarına yerleştiriniz.";} else {"işaret parmaklarınızı '<%values.leftKey_label%>' ve '<%values.rightKey_label%>' tuşlarına yerleştiriniz.";}

</expressions>


**************************************************************************************************************
**************************************************************************************************************
  EDITABLE LISTS: change editable lists here
**************************************************************************************************************
**************************************************************************************************************



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


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

<defaults>
/canvasaspectratio = (4,3)
/minimumversion = "4.0.7.0"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/txbgcolor = white
/ txcolor = (0, 0, 0)
</defaults>


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

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

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

***********************
raw data file
***********************
<data>
/ separatefiles = true
/ columns = [build, computer.platform, date, time, subject, group, blockcode, blocknum, trialcode, trialnum,
values.array, values.congruency, values.image1, values.image2, values.image3, values.image4, response, correct, latency,
values.shape1, values.color1, values.location1, values.location1x, values.location1y,
values.shape2, values.color2, values.location2, values.location2x, values.location2y,
values.shape3, values.color3, values.location3, values.location3x, values.location3y,
values.shape4, values.color4, values.location4, values.location4x, values.location4y,
values.change1, values.change2, values.countDiffs]
</data>

***********************
summary data file
***********************
<summarydata>
/columns = [script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed,
expressions.propCorrect_binding_same, expressions.meanRT_binding_same, expressions.SD_binding_same,
expressions.propCorrect_binding_different, expressions.meanRT_binding_different, expressions.SD_binding_different,
expressions.propCorrect_shape_same, expressions.meanRT_shape_same, expressions.SD_shape_same,
expressions.propCorrect_shape_different, expressions.meanRT_shape_different, expressions.SD_shape_different,
expressions.propCorrect_color_same, expressions.meanRT_color_same, expressions.SD_color_same,
expressions.propCorrect_color_different, expressions.meanRT_color_different, expressions.SD_color_different]
/ separatefiles = true
</summarydata>


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

/congruency:    'same' vs. 'different'
/array:       1 (array1) vs. 2 (array2)
/shape1:      stores the shape number (1-8) for object #1
/color1:      stores the color (1-8) for object #1
/location1:      stores the location (1-9) for object #1
/location1x:    stores the x-coordinate for object #1
/location1y:    stores the y-coordinate for object #1
(same for objects 2-4)

/location:      stores the location of the current object
/shape:       stores the shape of the current object
/color:       stores the color of the current object

/change1:      helper variable: stores the object number of the first object that will change in different trials
/change2:      helper variable: stores the object number of the second object that will change in different trials

/index:       stores the current object index
/helper:      helper variable to switch colors in binding trials
/image1-image4:    store the current image files used for object1-object4
/previmage1-previmage4:  helper variable that stores the images of display1 for the entire duration of the current trial sequence
/countDiffs:    counts the differences in the presented images (helper variable)

<values>
/completed = 0

/congruency = 0
/array = 0
/shape1 = 0
/color1 = 0
/location1 = 0
/location1x = 0
/location1y = 0
/shape2 = 0
/color2 = 0
/location2 = 0
/location2x = 0
/location2y = 0
/shape3 = 0
/color3 = 0
/location3 = 0
/location3x = 0
/location3y = 0
/shape4 = 0
/color4 = 0
/location4 = 0
/location4x = 0
/location4y = 0

/location = 0
/shape = 0
/color = 0

/change1 = 0
/change2 = 0

/index = 0
/helper = 0

/image1 = ""
/image2 = ""
/image3 = ""
/image4 = ""

/previmage1 = ""
/previmage2 = ""
/previmage3 = ""
/previmage4 = ""

/countDiffs = 0

</values>

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

/propCorrect_binding_same:   proportion correct responses of 'same' binding trials
/meanRT_binding_same:    mean latency (in ms) of correct responses in 'same' binding trials
/SD_binding_same:      Standard Deviation (in ms) of latencies to correct responses in 'same' binding trials
/propCorrect_binding_different:  proportion correct responses of 'different' binding trials
/meanRT_binding_different:   mean latency (in ms) of correct responses in 'different' binding trials
/SD_binding_different:    Standard Deviation (in ms) of latencies to correct responses in 'different' binding trials

/propCorrect_shape_same:   proportion correct responses of 'same' shape trials
/meanRT_shape_same:      mean latency (in ms) of correct responses in 'same' shape trials
/SD_shape_same:       Standard Deviation (in ms) of latencies to correct responses in 'same' shape trials
/propCorrect_shape_different:  proportion correct responses of 'different' shape trials
/meanRT_shape_different:   mean latency (in ms) of correct responses in 'different' shape trials
/SD_shape_different:    Standard Deviation (in ms) of latencies to correct responses in 'different' shape trials

/propCorrect_color_same:   proportion correct responses of 'same' color trials
/meanRT_color_same:      mean latency (in ms) of correct responses in 'same' color trials
/SD_color_same:       Standard Deviation (in ms) of latencies to correct responses in 'same' color trials
/propCorrect_color_different:  proportion correct responses of 'different' color trials
/meanRT_color_different:   mean latency (in ms) of correct responses in 'different' color trials
/SD_color_different:    Standard Deviation (in ms) of latencies to correct responses in 'different' color trials

/propCorrect_binding_same = expressions.propcorrect_binding_same
<expressions>
/propCorrect_binding_same = ""
/meanRT_binding_same = ""
/SD_binding_same = ""
/propCorrect_binding_different = ""
/meanRT_binding_different = ""
/SD_binding_different = ""

/propCorrect_shape_same = ""
/meanRT_shape_same = ""
/SD_shape_same = ""
/propCorrect_shape_different = ""
/meanRT_shape_different = ""
/SD_shape_different = ""

/propCorrect_color_same = ""
/meanRT_color_same = ""
/SD_color_same = ""
/propCorrect_color_different = ""
/meanRT_color_different = ""
/SD_color_different = ""
</expressions>


/createArray:   function that fills item.arrayStimuli with the current trial shapes
/swapColors:   function that swaps the colors of 2 randomly selected trial shapes

<expressions>
/createArray = {

   if (values.shape == 1 && values.color == 1){
    item.arrayStimuli.item = item.Shape1.item.1;
   } else if (values.shape == 1 && values.color == 2){
    item.arrayStimuli.item = item.Shape1.item.2;  
   } else if (values.shape == 1 && values.color == 3){
    item.arrayStimuli.item = item.Shape1.item.3;
   } else if (values.shape == 1 && values.color == 4){
    item.arrayStimuli.item = item.Shape1.item.4;
   } else if (values.shape == 1 && values.color == 5){
    item.arrayStimuli.item = item.Shape1.item.5;
   } else if (values.shape == 1 && values.color == 6){
    item.arrayStimuli.item = item.Shape1.item.6;
   } else if (values.shape == 1 && values.color == 7){
    item.arrayStimuli.item = item.Shape1.item.7;
   } else if (values.shape == 1 && values.color == 8){
    item.arrayStimuli.item = item.Shape1.item.8;
   }; 
   if (values.shape == 2 && values.color == 1){
    item.arrayStimuli.item = item.Shape2.item.1;
   } else if (values.shape == 2 && values.color == 2){
    item.arrayStimuli.item = item.Shape2.item.2;  
   } else if (values.shape == 2 && values.color == 3){
    item.arrayStimuli.item = item.Shape2.item.3;
   } else if (values.shape == 2 && values.color == 4){
    item.arrayStimuli.item = item.Shape2.item.4;
   } else if (values.shape == 2 && values.color == 5){
    item.arrayStimuli.item = item.Shape2.item.5;
   } else if (values.shape == 2 && values.color == 6){
    item.arrayStimuli.item = item.Shape2.item.6;
   } else if (values.shape == 2 && values.color == 7){
    item.arrayStimuli.item = item.Shape2.item.7;
   } else if (values.shape == 2 && values.color == 8){
    item.arrayStimuli.item = item.Shape2.item.8;
   }; 
   if (values.shape == 3 && values.color == 1){
    item.arrayStimuli.item = item.Shape3.item.1;
   } else if (values.shape == 3 && values.color == 2){
    item.arrayStimuli.item = item.Shape3.item.2;  
   } else if (values.shape == 3 && values.color == 3){
    item.arrayStimuli.item = item.Shape3.item.3;
   } else if (values.shape == 3 && values.color == 4){
    item.arrayStimuli.item = item.Shape3.item.4;
   } else if (values.shape == 3 && values.color == 5){
    item.arrayStimuli.item = item.Shape3.item.5;
   } else if (values.shape == 3 && values.color == 6){
    item.arrayStimuli.item = item.Shape3.item.6;
   } else if (values.shape == 3 && values.color == 7){
    item.arrayStimuli.item = item.Shape3.item.7;
   } else if (values.shape == 3 && values.color == 8){
    item.arrayStimuli.item = item.Shape3.item.8;
   };
   if (values.shape == 4 && values.color == 1){
    item.arrayStimuli.item = item.Shape4.item.1;
   } else if (values.shape == 4 && values.color == 2){
    item.arrayStimuli.item = item.Shape4.item.2;  
   } else if (values.shape == 4 && values.color == 3){
    item.arrayStimuli.item = item.Shape4.item.3;
   } else if (values.shape == 4 && values.color == 4){
    item.arrayStimuli.item = item.Shape4.item.4;
   } else if (values.shape == 4 && values.color == 5){
    item.arrayStimuli.item = item.Shape4.item.5;
   } else if (values.shape == 4 && values.color == 6){
    item.arrayStimuli.item = item.Shape4.item.6;
   } else if (values.shape == 4 && values.color == 7){
    item.arrayStimuli.item = item.Shape4.item.7;
   } else if (values.shape == 4 && values.color == 8){
    item.arrayStimuli.item = item.Shape4.item.8;
   }; 
   if (values.shape == 5 && values.color == 1){
    item.arrayStimuli.item = item.Shape5.item.1;
   } else if (values.shape == 5 && values.color == 2){
    item.arrayStimuli.item = item.Shape5.item.2;  
   } else if (values.shape == 5 && values.color == 3){
    item.arrayStimuli.item = item.Shape5.item.3;
   } else if (values.shape == 5 && values.color == 4){
    item.arrayStimuli.item = item.Shape5.item.4;
   } else if (values.shape == 5 && values.color == 5){
    item.arrayStimuli.item = item.Shape5.item.5;
   } else if (values.shape == 5 && values.color == 6){
    item.arrayStimuli.item = item.Shape5.item.6;
   } else if (values.shape == 5 && values.color == 7){
    item.arrayStimuli.item = item.Shape5.item.7;
   } else if (values.shape == 5 && values.color == 8){
    item.arrayStimuli.item = item.Shape5.item.8;
   }; 
   if (values.shape == 6 && values.color == 1){
    item.arrayStimuli.item = item.Shape6.item.1;
   } else if (values.shape == 6 && values.color == 2){
    item.arrayStimuli.item = item.Shape6.item.2;  
   } else if (values.shape == 6 && values.color == 3){
    item.arrayStimuli.item = item.Shape6.item.3;
   } else if (values.shape == 6 && values.color == 4){
    item.arrayStimuli.item = item.Shape6.item.4;
   } else if (values.shape == 6 && values.color == 5){
    item.arrayStimuli.item = item.Shape6.item.5;
   } else if (values.shape == 6 && values.color == 6){
    item.arrayStimuli.item = item.Shape6.item.6;
   } else if (values.shape == 6 && values.color == 7){
    item.arrayStimuli.item = item.Shape6.item.7;
   } else if (values.shape == 6 && values.color == 8){
    item.arrayStimuli.item = item.Shape6.item.8;
   }; 
   if (values.shape == 7 && values.color == 1){
    item.arrayStimuli.item = item.Shape7.item.1;
   } else if (values.shape == 7 && values.color == 2){
    item.arrayStimuli.item = item.Shape7.item.2;  
   } else if (values.shape == 7 && values.color == 3){
    item.arrayStimuli.item = item.Shape7.item.3;
   } else if (values.shape == 7 && values.color == 4){
    item.arrayStimuli.item = item.Shape7.item.4;
   } else if (values.shape == 7 && values.color == 5){
    item.arrayStimuli.item = item.Shape7.item.5;
   } else if (values.shape == 7 && values.color == 6){
    item.arrayStimuli.item = item.Shape7.item.6;
   } else if (values.shape == 7 && values.color == 7){
    item.arrayStimuli.item = item.Shape7.item.7;
   } else if (values.shape == 7 && values.color == 8){
    item.arrayStimuli.item = item.Shape7.item.8;
   }; 
   if (values.shape == 8 && values.color == 1){
    item.arrayStimuli.item = item.Shape8.item.1;
   } else if (values.shape == 8 && values.color == 2){
    item.arrayStimuli.item = item.Shape8.item.2;  
   } else if (values.shape == 8 && values.color == 3){
    item.arrayStimuli.item = item.Shape8.item.3;
   } else if (values.shape == 8 && values.color == 4){
    item.arrayStimuli.item = item.Shape8.item.4;
   } else if (values.shape == 8 && values.color == 5){
    item.arrayStimuli.item = item.Shape8.item.5;
   } else if (values.shape == 8 && values.color == 6){
    item.arrayStimuli.item = item.Shape8.item.6;
   } else if (values.shape == 8 && values.color == 7){
    item.arrayStimuli.item = item.Shape8.item.7;
   } else if (values.shape == 8 && values.color == 8){
    item.arrayStimuli.item = item.Shape8.item.8;
   }; 
}
/swapColors = {
  if ((values.change1 == 1 && values.change2 == 2) || (values.change2 == 1 && values.change1 == 2)){
   values.helper = values.color1;
   values.color1 = values.color2;
   values.color2 = values.helper; 
  } else if ((values.change1 == 1 && values.change2 == 3) || (values.change2 == 1 && values.change1 == 3)){
   values.helper = values.color1;
   values.color1 = values.color3;
   values.color3 = values.helper; 
  } else if ((values.change1 == 1 && values.change2 == 4) || (values.change2 == 1 && values.change1 == 4)){
   values.helper = values.color1;
   values.color1 = values.color4;
   values.color4 = values.helper; 
  } else if ((values.change1 == 2 && values.change2 == 3) || (values.change2 == 2 && values.change1 == 3)){
   values.helper = values.color2;
   values.color2 = values.color3;
   values.color3 = values.helper; 
  } else if ((values.change1 == 2 && values.change2 == 4) || (values.change2 == 2 && values.change1 == 4)){
   values.helper = values.color2;
   values.color2 = values.color4;
   values.color4 = values.helper; 
  } else if ((values.change1 == 3 && values.change2 == 4) || (values.change2 == 3 && values.change1 == 4)){
   values.helper = values.color3;
   values.color3 = values.color4;
   values.color4 = values.helper; 
  };
}
/changeShapes = {
  if ((values.change1 == 1 && values.change2 == 2) || (values.change2 == 1 && values.change1 == 2)){
   values.shape1 = list.shape.nextvalue;
   values.shape2 = list.shape.nextvalue; 
  } else if ((values.change1 == 1 && values.change2 == 3) || (values.change2 == 1 && values.change1 == 3)){
   values.shape1 = list.shape.nextvalue;
   values.shape3 = list.shape.nextvalue;
  } else if ((values.change1 == 1 && values.change2 == 4) || (values.change2 == 1 && values.change1 == 4)){
   values.shape1 = list.shape.nextvalue;
   values.shape4 = list.shape.nextvalue;
  } else if ((values.change1 == 2 && values.change2 == 3) || (values.change2 == 2 && values.change1 == 3)){
   values.shape2 = list.shape.nextvalue;
   values.shape3 = list.shape.nextvalue;
  } else if ((values.change1 == 2 && values.change2 == 4) || (values.change2 == 2 && values.change1 == 4)){
   values.shape2 = list.shape.nextvalue;
   values.shape4 = list.shape.nextvalue;
  } else if ((values.change1 == 3 && values.change2 == 4) || (values.change2 == 3 && values.change1 == 4)){
   values.shape3 = list.shape.nextvalue;
   values.shape4 = list.shape.nextvalue;
  };
}
/changeColors = {
  if ((values.change1 == 1 && values.change2 == 2) || (values.change2 == 1 && values.change1 == 2)){
   values.color1 = list.color.nextvalue;
   values.color2 = list.color.nextvalue; 
  } else if ((values.change1 == 1 && values.change2 == 3) || (values.change2 == 1 && values.change1 == 3)){
   values.color1 = list.color.nextvalue;
   values.color3 = list.color.nextvalue; 
  } else if ((values.change1 == 1 && values.change2 == 4) || (values.change2 == 1 && values.change1 == 4)){
   values.color1 = list.color.nextvalue;
   values.color4 = list.color.nextvalue; 
  } else if ((values.change1 == 2 && values.change2 == 3) || (values.change2 == 2 && values.change1 == 3)){
   values.color2 = list.color.nextvalue;
   values.color3 = list.color.nextvalue; 
  } else if ((values.change1 == 2 && values.change2 == 4) || (values.change2 == 2 && values.change1 == 4)){
   values.color2 = list.color.nextvalue;
   values.color4 = list.color.nextvalue; 
  } else if ((values.change1 == 3 && values.change2 == 4) || (values.change2 == 3 && values.change1 == 4)){
   values.color3 = list.color.nextvalue;
   values.color4 = list.color.nextvalue; 
  };
}




/countDiffs = {
  values.countDiffs = 0;
 
  if (values.image1 != values.previmage1){
   values.countDiffs += 1;
  };
  if (values.image2 != values.previmage2){
   values.countDiffs += 1;
  };  
  if (values.image3 != values.previmage3){
   values.countDiffs += 1;
  };  
  if (values.image4 != values.previmage4){
   values.countDiffs += 1;
  };  
}
</expressions>



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

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

This trial is used when participants are asked to place their fingers on specific response
buttons. On the touchscreen, this trial presents the (inactive) response buttons to the participants.
<trial getReady>
/ stimulusframes = [1 = getReady]
/ trialduration = 3000
/ isvalidresponse = [trial.getReady.response == values.leftKey || trial.getReady.response == values.rightKey]
/ beginresponsetime = 3000
/ errormessage = false
/ recorddata = false
/ inputdevice = keyboard


</trial>

<port getReadyeeg>
/ port = LPT1
/ subport = data
/ items = ("00000000")
</port>


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

Note: contains the item list for the current array (is assembled dynamically for each trial)
<item arrayStimuli>
/1 = "Shape1_black.jpg"
/2 = "Shape1_black.jpg"
/3 = "Shape1_black.jpg"
/4 = "Shape1_black.jpg"
</item>

<values>
/ array1 = 1
/ array2 = 2
/ array3 = 3
/ array4 = 4
</values>

<picture shape1>
/ items = arraystimuli
/ select = values.array1
/ position = (values.location1x, values.location1y)
/ size = (values.picSize, values.picSize)
</picture>

<port shape1eeg>
/ port = LPT1
/ subport = data
/ items = ("00000001")
</port>

<picture shape2>
/ items = arraystimuli
/ select = values.array2
/ position = (values.location2x, values.location2y)
/ size = (values.picSize, values.picSize)
</picture>

<port shape2eeeg>
/ port = LPT1
/ subport = data
/ items = ("00000011")
</port>

<picture shape3>
/ items = arraystimuli
/ select = values.array3
/ position = (values.location3x, values.location3y)
/ size = (values.picSize, values.picSize)
</picture>

<port shape3eeeg>
/ port = LPT1
/ subport = data
/ items = ("00000111")
</port>

<picture shape4>
/ items = arraystimuli
/ select = values.array4
/ position = (values.location4x, values.location4y)
/ size = (values.picSize, values.picSize)
</picture>

<port shape4eeeg>
/ port = LPT1
/ subport = data
/ items = ("00001111")
</port>



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

Note: list.color selects the colors for the array objects (1-8 => itemnumbers)
<list color>
/items = (1, 2, 3, 4, 5, 6, 7, 8)
/ replace = false
/ selectionrate = always
</list>

Note: list.shape selects the shapes for the array objects
<list shape>
/items = (1, 2, 3, 4, 5, 6, 7, 8)
/ replace = false
/ selectionrate = always
</list>

Note: list.location randomly assigns 1 of 9 possible screen locations to each array object
<list location>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9)
/ replace = false
/ selectionrate = always
/ resetinterval = 0
</list>

Note: list.xpositions assigns the corresponding horizontal screen position to selected object location
<list xpositions>
/items = (
25%, 50%, 75%,
25%, 50%, 75%,
25%, 50%, 75%)
/ selectionmode = values.location
/ selectionrate = always
</list>

Note: list.ypositions assigns the corresponding vertical screen position to selected object location
<list ypositions>
/items = (
25%, 25%, 25%,
50%, 50%, 50%,
75%, 75%, 75%)
/ selectionmode = values.location
/ selectionrate = always
</list>

Note: list is dynamically updated with values 1-4 (depends on values.arraySize)
It randomly selects the images that should be changed in changed trials
<list changeItems>
/ replace = false
/ selectionrate = always
</list>

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

Note: list stores 1 = correct; 0 = error for each same shape trial
<list accuracy_shape_same>
</list>

Note: list stores 1 = correct; 0 = error for each different shape trial
<list accuracy_shape_different>
</list>

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

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


Note: list stores 1 = correct; 0 = error for each same color trial
<list accuracy_color_same>
</list>

Note: list stores 1 = correct; 0 = error for each different color trial
<list accuracy_color_different>
</list>

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

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



Note: list stores 1 = correct; 0 = error for each same binding trial
<list accuracy_binding_same>
</list>

Note: list stores 1 = correct; 0 = error for each different binding trial
<list accuracy_binding_different>
</list>

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

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

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

********************************************
Shape Trials
********************************************

Note: trial.array1_shape_same
* resets necessary lists
* randomly selects a color and assigns it to all picture.shape1-picture.shape4
* randomly assigns shape form 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_shape_same

<trial array1_shape_same>
/ ontrialbegin = [
  list.shape.reset();
  list.color.reset();
  list.location.reset();
  item.arrayStimuli.clearitems();
  values.change1 = 0;
  values.change2 = 0;
  values.congruency = "aynı";
  values.array = 1;
  values.countDiffs = 0;
 
  values.color = list.color.nextvalue;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape1 = list.shape.nextvalue;
  values.color1 = values.color;
  values.shape = values.shape1;
  values.index = 1;
  expressions.createArray;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape2 = list.shape.nextvalue;
  values.color2 = values.color;
  values.shape = values.shape2;
  values.index = 2;
  expressions.createArray;
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape3 = list.shape.nextvalue;
  values.color3 = values.color;
  values.shape = values.shape3;
  values.index = 3;
  expressions.createArray;
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape4 = list.shape.nextvalue;
  values.color4 = values.color;
  values.shape = values.shape4;
  values.index = 4;
  expressions.createArray;
 
  if (values.arraySize > 2){
   trial.array1_shape_same.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array1_shape_same.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
  trial.array1_shape_same.resetstimulusframes();
 
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  values.previmage1 = values.image1;
  values.previmage2 = values.image2;
  values.previmage3 = values.image3;
  values.previmage4 = values.image4;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
 
]
/ branch = [
  trial.array2_shape_same;
]
/ inputdevice = keyboard
</trial>

Note: trial.array2_shape_same
* resets location list
* presents a blank screen for a predetermined amount of time
* assigns new locations to picture.shape1-picture.shape4
* presents the same stimuli as in the trial before
* waits for response
* evaluates response
<trial array2_shape_same>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
  values.array = 2;

  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue; 
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue; 
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue; 
 
  if (values.arraySize > 2){
   trial.array2_shape_same.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array2_shape_same.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_shape_same.response == values.leftKey || trial.array2_shape_same.response == values.rightKey]
/ iscorrectresponse = [trial.array2_shape_same.response == values.sameKey]
/ ontrialend = [
  trial.array2_shape_same.resetstimulusframes();
  list.accuracy_shape_same.insertitem(trial.array2_shape_same.correct, 1);
  if (trial.array2_shape_same.correct){
   list.latencies_shape_same.insertitem(trial.array2_shape_same.latency, 1);
  };
 
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
 
  expressions.countDiffs;
 
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>

Note: trial.array1_shape_different
* resets necessary lists
* randomly assigns the color 'black' to picture.shape1-picture.shape4
* randomly assigns shape form 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_shape_different

<trial array1_shape_different>
/ ontrialbegin = [
  list.shape.reset();
  list.color.reset();
  list.location.reset();
  item.arrayStimuli.clearitems();
  values.change1 = 0;
  values.change2 = 0;
  values.congruency = "farklı";
  values.array = 1;
  values.countDiffs = 0; 
 
  values.color = list.color.nextvalue;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape1 = list.shape.nextvalue;
  values.shape = values.shape1;
  values.color1 = values.color;
  values.index = 1;
  expressions.createArray;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape2 = list.shape.nextvalue;
  values.shape = values.shape2;
  values.index = 2;
  values.color2 = values.color;
  expressions.createArray;
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape3 = list.shape.nextvalue;
  values.shape = values.shape3;
  values.index = 3;
  values.color3 = values.color;
  expressions.createArray;
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape4 = list.shape.nextvalue;
  values.shape = values.shape4;
  values.index = 4;
  values.color4 = values.color;
  expressions.createArray;
 
  if (values.arraySize > 2){
   trial.array1_shape_different.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array1_shape_different.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
  trial.array1_shape_different.resetstimulusframes();
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  values.previmage1 = values.image1;
  values.previmage2 = values.image2;
  values.previmage3 = values.image3;
  values.previmage4 = values.image4;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
 
]
/ branch = [
  trial.array2_shape_different;
]
/ inputdevice = keyboard
</trial>


Note: trial.array2_shape_different
* resets necessary lists
* randomly selects the shapes that get exchanged for new shapes (selection pool is updated to reflect the number of array objects)
* reassembles dynamic item list 'item.arrayStimuli' with the changed list of items
* presents the items stored in 'item.arrayStimuli' until response occurs
* evaluates accuracy of response
<trial array2_shape_different>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
  item.arrayStimuli.clearitems();
  list.changeItems.reset();
  list.changeItems.poolsize = values.arraySize;
  values.array = 2;
  
  values.change1 = list.changeItems.nextindex;
  values.change2 = list.changeItems.nextindex;
  expressions.changeShapes;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape = values.shape1;
  values.index = 1;
  expressions.createArray; 

  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape = values.shape2;
  values.index = 2;
  expressions.createArray; 

  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape = values.shape3;
  values.index = 3;
  expressions.createArray;

  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape = values.shape4;
  values.index = 4;
  expressions.createArray;
 
  if (values.arraySize > 2){
   trial.array2_shape_different.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array2_shape_different.insertstimulusframe(picture.shape4, 1);  
  }; 

]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_shape_different.response == values.leftKey || trial.array2_shape_different.response == values.rightKey]
/ iscorrectresponse = [trial.array2_shape_different.response == values.differentKey]
/ ontrialend = [
  trial.array2_shape_different.resetstimulusframes();
  list.accuracy_shape_different.insertitem(trial.array2_shape_different.correct, 1);
  if (trial.array2_shape_different.correct){
   list.latencies_shape_different.insertitem(trial.array2_shape_different.latency, 1);
  };
 
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
  expressions.countDiffs; 
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>


********************************************
Color Trials
********************************************

Note: trial.array1_
* resets necessary lists
* randomly selects the same shape for picture.shape1-picture.shape4
* randomly assigns color 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_shape_same

<trial array1_color_same>
/ ontrialbegin = [
  list.shape.reset();
  list.color.reset();
  list.location.reset();
  item.arrayStimuli.clearitems();
  values.change1 = 0;
  values.change2 = 0;
  values.congruency = "aynı"; 
  values.array = 1;
  values.countDiffs = 0;
 
  values.shape = list.shape.nextvalue;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape1 = values.shape;
  values.color1 = list.color.nextvalue;
  values.color = values.color1;
  values.index = 1;
  expressions.createArray;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape2 = values.shape;
  values.color2 = list.color.nextvalue;
  values.color = values.color2;
  values.index = 2;
  expressions.createArray;
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape3 = values.shape;
  values.color3 = list.color.nextvalue;
  values.color = values.color3;
  values.index = 3;
  expressions.createArray;
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape4 = values.shape;
  values.color4 = list.color.nextvalue;
  values.color = values.color4;
  values.index = 4;
  expressions.createArray;
 
  if (values.arraySize > 2){
   trial.array1_color_same.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array1_color_same.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
  trial.array1_color_same.resetstimulusframes();
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  values.previmage1 = values.image1;
  values.previmage2 = values.image2;
  values.previmage3 = values.image3;
  values.previmage4 = values.image4;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  }; 
]
/ branch = [
  trial.array2_color_same;
]
/ inputdevice = keyboard
</trial>

Note: trial.array2_color_same
* resets location list
* presents a blank screen for a predetermined amount of time
* assigns new locations to picture.shape1-picture.shape4
* presents the same stimuli as in the trial before
* waits for response
* evaluates response
<trial array2_color_same>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
  values.array = 2;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue; 
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue; 
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue; 
 
  if (values.arraySize > 2){
   trial.array2_color_same.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array2_color_same.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_color_same.response == values.leftKey || trial.array2_color_same.response == values.rightKey]
/ iscorrectresponse = [trial.array2_color_same.response == values.sameKey]
/ ontrialend = [
  trial.array2_color_same.resetstimulusframes();
  list.accuracy_color_same.insertitem(trial.array2_color_same.correct, 1);
  if (trial.array2_color_same.correct){
   list.latencies_color_same.insertitem(trial.array2_color_same.latency, 1);
  };
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
  expressions.countDiffs;  
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>

Note: trial.array1_color_different
* resets necessary lists
* randomly assigns the same shape to picture.shape1-picture.shape4
* randomly assigns color 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_shape_different

<trial array1_color_different>
/ ontrialbegin = [
  list.shape.reset();
  list.color.reset();
  list.location.reset();
  item.arrayStimuli.clearitems();
  values.change1 = 0;
  values.change2 = 0;
  values.congruency = "farklı"; 
  values.array = 1;
  values.countDiffs = 0;
 
  values.shape = list.shape.nextvalue;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape1 = values.shape;
  values.color1 = list.color.nextvalue;
  values.color = values.color1;
  values.index = 1;
  expressions.createArray;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape2 = values.shape;
  values.color2 = list.color.nextvalue;
  values.color = values.color2;
  values.index = 2;
  expressions.createArray;
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape3 = values.shape;
  values.color3 = list.color.nextvalue;
  values.color = values.color3;
  values.index = 3;
  expressions.createArray;
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape4 = values.shape;
  values.color4 = list.color.nextvalue;
  values.color = values.color4;
  values.index = 4;
  expressions.createArray;
 
  if (values.arraySize > 2){
   trial.array1_color_different.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array1_color_different.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
  trial.array1_color_different.resetstimulusframes();
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  values.previmage1 = values.image1;
  values.previmage2 = values.image2;
  values.previmage3 = values.image3;
  values.previmage4 = values.image4;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
  
]
/ branch = [
  trial.array2_color_different;
]
/ inputdevice = keyboard
</trial>


Note: trial.array2_color_different
* resets necessary lists
* randomly selects the colors that get exchanged for new colors (selection pool is updated to reflect the number of array objects)
* reassembles dynamic item list 'item.arrayStimuli' with the changed list of items
* presents the items stored in 'item.arrayStimuli' until response occurs
* evaluates accuracy of response
<trial array2_color_different>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
  values.array = 2;
 
  item.arrayStimuli.clearitems();
  list.changeItems.reset();
  list.changeItems.poolsize = values.arraySize;
  
  values.change1 = list.changeItems.nextindex;
  values.change2 = list.changeItems.nextindex; 
  expressions.changeColors;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape = values.shape1;
  values.color = values.color1;
  values.index = 1;
  expressions.createArray; 

  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape = values.shape2;
  values.color = values.color2;
  values.index = 2;
  expressions.createArray; 

  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape = values.shape3;
  values.color = values.color3;
  values.index = 3;
  expressions.createArray;

  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape = values.shape4;
  values.color = values.color4;
  values.index = 4;
  expressions.createArray;
 
  if (values.arraySize > 2){
   trial.array2_color_different.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array2_color_different.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_color_different.response == values.leftKey || trial.array2_color_different.response == values.rightKey]
/ iscorrectresponse = [trial.array2_color_different.response == values.differentKey]
/ ontrialend = [
  trial.array2_color_different.resetstimulusframes();
  list.accuracy_color_different.insertitem(trial.array2_color_different.correct, 1);
  if (trial.array2_color_different.correct){
   list.latencies_color_different.insertitem(trial.array2_color_different.latency, 1);
  };
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
  expressions.countDiffs;  
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>



********************************************
Binding Trials
********************************************

Note: trial.array1_binding_same
* resets necessary lists
* randomly assigns color1-8 to picture.shape1-picture.shape4
* randomly assigns shape form 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_binding_same

<trial array1_binding_same>
/ ontrialbegin = [
  list.color.reset();
  list.shape.reset();
  list.location.reset();
  item.arrayStimuli.clearitems();
  values.change1 = 0;
  values.change2 = 0;
  values.congruency = "aynı";
  values.array = 1;
  values.countDiffs = 0;

  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape1 = list.shape.nextvalue;
  values.color1 = list.color.nextvalue;
  values.shape = values.shape1;
  values.color = values.color1;
  values.index = 1;
  expressions.createArray;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape2 = list.shape.nextvalue;
  values.color2 = list.color.nextvalue;
  values.shape = values.shape2;
  values.color = values.color2;
  values.index = 2;
  expressions.createArray;
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape3 = list.shape.nextvalue;
  values.color3 = list.color.nextvalue;
  values.shape = values.shape3;
  values.color = values.color3;
  values.index = 3;
  expressions.createArray;
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape4 = list.shape.nextvalue;
  values.color4 = list.color.nextvalue;
  values.shape = values.shape4;
  values.color = values.color4;
  values.index = 4;
  expressions.createArray;
 
  if (values.arraySize > 2){
   trial.array1_binding_same.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array1_binding_same.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
  trial.array1_binding_same.resetstimulusframes();
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  values.previmage1 = values.image1;
  values.previmage2 = values.image2;
  values.previmage3 = values.image3;
  values.previmage4 = values.image4;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
  
]
/ branch = [
  trial.array2_binding_same;
]
/ inputdevice = keyboard
</trial>

Note: trial.array2_binding_same
* resets location list
* presents a blank screen for a predetermined amount of time
* assigns new locations to picture.shape1-picture.shape4
* presents the same stimuli as in the trial before
* waits for response
<trial array2_binding_same>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
  values.array = 2;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue; 
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue; 
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue; 
 
  if (values.arraySize > 2){
   trial.array2_binding_same.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array2_binding_same.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_binding_same.response == values.leftKey || trial.array2_binding_same.response == values.rightKey]
/ iscorrectresponse = [trial.array2_binding_same.response == values.sameKey]
/ ontrialend = [
  trial.array2_binding_same.resetstimulusframes();
  list.accuracy_binding_same.insertitem(trial.array2_binding_same.correct, 1);
  if (trial.array2_binding_same.correct){
   list.latencies_binding_same.insertitem(trial.array2_binding_same.latency, 1);
  };
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
  expressions.countDiffs;  
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>


Note: trial.array1_binding_different
* resets necessary lists
* randomly assigns color1-8 to picture.shape1-picture.shape4
* randomly assigns shape form 1 - 8 to picture.shape1-picture.shape4
* randomly assigns 1 of 9 screen locations to picture.shape1-picture.shape4
* assembles a dynamic item list item.arrayStimuli that stores the 4 selected images
* presents the items stored in item.arrayStimuli for a predetermined amount of time
* calls trial.array2_binding_different
<trial array1_binding_different>
/ ontrialbegin = [
  list.color.reset();
  list.shape.reset();
  list.location.reset();
  item.arrayStimuli.clearitems();
  values.change1 = 0;
  values.change2 = 0;
  values.congruency = "farklı"; 
  values.array = 1;
  values.countDiffs = 0;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape1 = list.shape.nextvalue;
  values.color1 = list.color.nextvalue;
  values.shape = values.shape1;
  values.color = values.color1;
  values.index = 1;
  expressions.createArray;
 
  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape2 = list.shape.nextvalue;
  values.color2 = list.color.nextvalue;
  values.shape = values.shape2;
  values.color = values.color2;
  values.index = 2;
  expressions.createArray;
 
  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape3 = list.shape.nextvalue;
  values.color3 = list.color.nextvalue;
  values.shape = values.shape3;
  values.color = values.color3;
  values.index = 3;
  expressions.createArray;
 
  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape4 = list.shape.nextvalue;
  values.color4 = list.color.nextvalue;
  values.shape = values.shape4;
  values.color = values.color4;
  values.index = 4;
  expressions.createArray; 
 
  if (values.arraySize > 2){
   trial.array1_binding_different.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array1_binding_different.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulustimes = [0 = shape1, shape2]
/ timeout = values.arrayPresentationTime
/ ontrialend = [
  trial.array1_binding_different.resetstimulusframes();
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  values.previmage1 = values.image1;
  values.previmage2 = values.image2;
  values.previmage3 = values.image3;
  values.previmage4 = values.image4;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  };  
  
]
/ branch = [
  trial.array2_binding_different;
]
/ inputdevice = keyboard
</trial>


Note: trial.array2_binding_different
* resets necessary lists
* randomly selects the shapes that swap colors and arranges the swap (selection pool is updated to reflect the number of array objects)
* reassembles dynamic item list 'item.arrayStimuli' with the changed list of items
* presents the items stored in 'item.arrayStimuli' until response occurs
* evaluates accuracy of response
<trial array2_binding_different>
/ pretrialpause = values.blankPresentationTime
/ ontrialbegin = [
  item.arrayStimuli.clearitems(); 
  list.changeItems.reset();
  list.changeItems.poolsize = values.arraySize;
  values.array = 2;
  
  values.change1 = list.changeItems.nextindex;
  values.change2 = list.changeItems.nextindex;
  expressions.swapColors;
 
  values.location1 = list.location.nextvalue;
  values.location = values.location1;
  values.location1x = list.xpositions.nextvalue;
  values.location1y = list.ypositions.nextvalue;
  values.shape = values.shape1;
  values.color = values.color1;
  values.index = 1;
  expressions.createArray; 

  values.location2 = list.location.nextvalue;
  values.location = values.location2;
  values.location2x = list.xpositions.nextvalue;
  values.location2y = list.ypositions.nextvalue;
  values.shape = values.shape2;
  values.color = values.color2;
  values.index = 2;
  expressions.createArray; 

  values.location3 = list.location.nextvalue;
  values.location = values.location3;
  values.location3x = list.xpositions.nextvalue;
  values.location3y = list.ypositions.nextvalue;
  values.shape = values.shape3;
  values.color = values.color3;
  values.index = 3;
  expressions.createArray;

  values.location4 = list.location.nextvalue;
  values.location = values.location4;
  values.location4x = list.xpositions.nextvalue;
  values.location4y = list.ypositions.nextvalue;
  values.shape = values.shape4;
  values.color = values.color4;
  values.index = 4;
  expressions.createArray;
 
  if (values.arraySize > 2){
   trial.array2_binding_different.insertstimulusframe(picture.shape3, 1);  
  };
  if (values.arraySize > 3){
   trial.array2_binding_different.insertstimulusframe(picture.shape4, 1);  
  }; 
]
/ stimulusframes = [1 = shape1, shape2, same, different]
/ isvalidresponse = [trial.array2_binding_different.response == values.leftKey || trial.array2_binding_different.response == values.rightKey]
/ iscorrectresponse = [trial.array2_binding_different.response == values.differentKey]
/ ontrialend = [
  trial.array2_binding_different.resetstimulusframes();
  list.accuracy_binding_different.insertitem(trial.array2_binding_different.correct, 1);
  if (trial.array2_binding_different.correct){
   list.latencies_binding_different.insertitem(trial.array2_binding_different.latency, 1);
  };
 
  values.image1 = picture.shape1.currentitem;
  values.image2 = picture.shape2.currentitem;
  values.image3 = picture.shape3.currentitem;
  values.image4 = picture.shape4.currentitem;
 
  if (values.arraySize < 3){
   values.image3="";
  };
  if (values.arraySize < 4){
   values.image4="";
  }; 
  expressions.countDiffs; 
]
/ posttrialpause = values.ITI
/ inputdevice = keyboard
</trial>

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

<block binding>
/ preinstructions = (bindingIntro1, bindingIntro2, bindingIntro3)
/ trials = [1 = getReady; 2-49 = noreplace(array1_binding_same,array1_binding_different)]
</block>

<block color>
/ preinstructions = (colorIntro1, colorIntro2, colorIntro3)
/ trials = [1 = getReady; 2-49 = noreplace(array1_color_same, array1_color_different)]

</block>

<block shape>
/ preinstructions = (shapeIntro1, shapeIntro2, shapeIntro3)
/ trials = [1 = getReady; 2-49 = noreplace(array1_shape_same, array1_shape_different)]
</block>

<block instructionChange>
/ trials = [1 = attention]
</block>


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

<expt>
/ subjects = (1 of 6)
/ groupassignment = groupnumber
/ onexptend = [
  values.completed = 1;
]
/ blocks = [
  1 = binding;
  2 = instructionChange;
  3 = color;
  4 = instructionChange;
  5 = shape;
]
/ postinstructions = (End)
</expt>


<expt>
/ subjects = (2 of 6)
/ groupassignment = groupnumber
/ onexptend = [
  values.completed = 1;
]
/ blocks = [
  1 = binding;
  2 = instructionChange;
  3 = shape;
  4 = instructionChange;
  5 = color;
]
/ postinstructions = (End)
</expt>

<expt>
/ subjects = (3 of 6)
/ groupassignment = groupnumber
/ onexptend = [
  values.completed = 1;
]
/ blocks = [
  1 = color;
  2 = instructionChange;
  3 = binding;
  4 = instructionChange;
  5 = shape;
]
/ postinstructions = (End)
</expt>

<expt>
/ subjects = (4 of 6)
/ groupassignment = groupnumber
/ onexptend = [
  values.completed = 1;
]
/ blocks = [
  1 = color;
  2 = instructionChange;
  3 = shape;
  4 = instructionChange;
  5 = binding;
]
/ postinstructions = (End)
</expt>

<expt>
/ subjects = (5 of 6)
/ groupassignment = groupnumber
/ onexptend = [
  values.completed = 1;
]
/ blocks = [
  1 = shape;
  2 = instructionChange;
  3 = binding;
  4 = instructionChange;
  5 = color;
]
/ postinstructions = (End)
</expt>

<expt>
/ subjects = (6 of 6)
/ groupassignment = groupnumber
/ onexptend = [
  values.completed = 1;
]
/ blocks = [
  1 = shape;
  2 = instructionChange;
  3 = color;
  4 = instructionChange;
  5 = binding;
]
/ postinstructions = (End)
</expt>




GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search