Hi Dave,
Thank you for your help with this. I have been attempting to address this from your comments as well as prior threads' comments, but my script doesn't seem to be loading properly as I have to do control B to get past the first (blank) page. If you are able to provide me with any feedback as to where I went wrong, that would be greatly appreciated. I've reduced the number of trials in my experiment's methods since previously posting and here is what I am trying to achieve now. I have a feeling it relates to
"
values.index" but I have had trouble following how to modify it correctly.
Thank you so very much in advance.
2 Parts of my experiment to be run sequentially: Part 1: 2 categories of ("untrained") images x 8 images x 2 formats (landscape/portrait - same for all participants, not randomizing who sees which format) x 6 repetitions = 192 trials
Part 2: 2 categories of ("trained") images x 12 images x 2 formats x 6 repetitions = 288 trials
There will be instructions telling participants to take a break every 96 trials.
Here's what I have modified in the AAT script template:<trial AAT_1untrained>
/ ontrialbegin = [
values.selectstimulus = list.category1.nextvalue;
values.targetcategory = 1;
values.targetformat = "l";
picture.targetstimulus.height = values.startheight_A;
values.starttime = script.elapsedtime;
values.endtime = 0;
values.completeRT = 0;
values.changedirection = 0;
values.finalresponse="";
]
/ stimulusframes = [1 = targetstimulus]
/ validresponse = (back, forward)
/ iscorrectresponse = [(values.expcondition == 1 && trial.AAT_1untrained.response == "forward") || (values.expcondition == 2 && trial.AAT_1untrained.response == "back")]
/ ontrialend = [
values.joystick_y = joystick.y;
values.joystick_change = abs(values.joystick_y);
values.trialcode = "AAT_1untrained";
values.RT = trial.AAT_1untrained.latency;
values.correct = trial.AAT_1untrained.correct;
values.stimulus = picture.targetstimulus.currentitem;
if (trial.AAT_1untrained.response == "forward")
values.initialresponse = "PUSH"
else
values.initialresponse = "PULL";
list.accuracy_overall.insertitem(trial.AAT_1untrained.correct,1);
if (trial.AAT_1untrained.correct) {
list.AAT_1untrainedcorrectlatencies.insertitem(trial.AAT_1untrained.latency, 1);
list.latencies_overall.insertitem(trial.AAT_1untrained.latency, 1);
}
]
/ branch = [
if (trial.AAT_1untrained.response == "forward")
trial.decrease
else
trial.increase;
]
/ recorddata = false
</trial>
<trial AAT_2untrained>
/ ontrialbegin = [
values.selectstimulus = list.category2.nextvalue;
values.targetcategory = 1;
values.targetformat = "p";
picture.targetstimulus.height = values.startheight_B;
values.starttime = script.elapsedtime;
values.endtime = 0;
values.completeRT = 0;
values.changedirection = 0;
values.finalresponse="";
]
/ stimulusframes = [1 = targetstimulus]
/ validresponse = (back, forward)
/ iscorrectresponse = [(values.expcondition == 1 && trial.AAT_2untrained.response == "back") || (values.expcondition == 2 && trial.AAT_2untrained.response == "forward")]
/ ontrialend = [
values.joystick_y = joystick.y;
values.joystick_change = abs(values.joystick_y);
values.trialcode = "AAT_2untrained";
values.RT = trial.AAT_2untrained.latency;
values.correct = trial.AAT_2untrained.correct;
values.stimulus = picture.targetstimulus.currentitem;
if (trial.AAT_2untrained.response == "forward")
values.initialresponse = "PUSH"
else
values.initialresponse = "PULL";
list.accuracy_overall.insertitem(trial.AAT_2untrained.correct,1);
if (trial.AAT_2untrained.correct) {
list.AAT_2untrainedcorrectlatencies.insertitem(trial.AAT_2untrained.latency, 1);
list.latencies_overall.insertitem(trial.AAT_2untrained.latency, 1);
}
]
/ branch = [
if (trial.AAT_2untrained.response == "forward")
trial.decrease
else
trial.increase
]
/ recorddata = false
</trial>
<trial AAT_1trained>
/ ontrialbegin = [
values.selectstimulus = list.category2.nextvalue;
values.targetcategory = 1;
values.targetformat = "p";
picture.targetstimulus.height = values.startheight_B;
values.starttime = script.elapsedtime;
values.endtime = 0;
values.completeRT = 0;
values.changedirection = 0;
values.finalresponse="";
]
/ stimulusframes = [1 = targetstimulus]
/ validresponse = (back, forward)
/ iscorrectresponse = [(values.expcondition == 1 && trial.AAT_1trained.response == "back") || (values.expcondition == 2 && trial.AAT_1trained.response == "forward")]
/ ontrialend = [
values.joystick_y = joystick.y;
values.joystick_change = abs(values.joystick_y);
values.trialcode = "AAT_1trained";
values.RT = trial.AAT_1trained.latency;
values.correct = trial.AAT_1trained.correct;
values.stimulus = picture.targetstimulus.currentitem;
if (trial.AAT_1trained.response == "forward")
values.initialresponse = "PUSH"
else
values.initialresponse = "PULL";
list.accuracy_overall.insertitem(trial.AAT_1trained.correct,1);
if (trial.AAT_1trained.correct) {
list.AAT_1trainedcorrectlatencies.insertitem(trial.AAT_1trained.latency, 1);
list.latencies_overall.insertitem(trial.AAT_1trained.latency, 1);
}
]
/ branch = [
if (trial.AAT_1trained.response == "forward")
trial.decrease
else
trial.increase
]
/ recorddata = false
</trial>
<trial AAT_2trained>
/ ontrialbegin = [
values.selectstimulus = list.category2.nextvalue;
values.targetcategory = 1;
values.targetformat = "p";
picture.targetstimulus.height = values.startheight_B;
values.starttime = script.elapsedtime;
values.endtime = 0;
values.completeRT = 0;
values.changedirection = 0;
values.finalresponse="";
]
/ stimulusframes = [1 = targetstimulus]
/ validresponse = (back, forward)
/ iscorrectresponse = [(values.expcondition == 1 && trial.AAT_2trained.response == "back") || (values.expcondition == 2 && trial.AAT_2trained.response == "forward")]
/ ontrialend = [
values.joystick_y = joystick.y;
values.joystick_change = abs(values.joystick_y);
values.trialcode = "AAT_2trained";
values.RT = trial.AAT_2trained.latency;
values.correct = trial.AAT_2trained.correct;
values.stimulus = picture.targetstimulus.currentitem;
if (trial.AAT_2trained.response == "forward")
values.initialresponse = "PUSH"
else
values.initialresponse = "PULL";
list.accuracy_overall.insertitem(trial.AAT_2trained.correct,1);
if (trial.AAT_2trained.correct) {
list.AAT_2trainedcorrectlatencies.insertitem(trial.AAT_2trained.latency, 1);
list.latencies_overall.insertitem(trial.AAT_2trained.latency, 1);
}
]
/ branch = [
if (trial.AAT_2trained.response == "forward")
trial.decrease
else
trial.increase
]
/ recorddata = false
</trial>
<trial AAT_3trained>
/ ontrialbegin = [
values.selectstimulus = list.category2.nextvalue;
values.targetcategory = 1;
values.targetformat = "p";
picture.targetstimulus.height = values.startheight_B;
values.starttime = script.elapsedtime;
values.endtime = 0;
values.completeRT = 0;
values.changedirection = 0;
values.finalresponse="";
]
/ stimulusframes = [1 = targetstimulus]
/ validresponse = (back, forward)
/ iscorrectresponse = [(values.expcondition == 1 && trial.AAT_3trained.response == "back") || (values.expcondition == 2 && trial.AAT_3trained.response == "forward")]
/ ontrialend = [
values.joystick_y = joystick.y;
values.joystick_change = abs(values.joystick_y);
values.trialcode = "AAT_3trained";
values.RT = trial.AAT_3trained.latency;
values.correct = trial.AAT_3trained.correct;
values.stimulus = picture.targetstimulus.currentitem;
if (trial.AAT_3trained.response == "forward")
values.initialresponse = "PUSH"
else
values.initialresponse = "PULL";
list.accuracy_overall.insertitem(trial.AAT_3trained.correct,1);
if (trial.AAT_3trained.correct) {
list.AAT_3trainedcorrectlatencies.insertitem(trial.AAT_3trained.latency, 1);
list.latencies_overall.insertitem(trial.AAT_3trained.latency, 1);
}
]
/ branch = [
if (trial.AAT_3trained.response == "forward")
trial.decrease
else
trial.increase
]
/ recorddata = false
</trial>
**************************************************************************************************************
**************************************************************************************************************
BLOCKS
**************************************************************************************************************
**************************************************************************************************************
NOTE:
block.practice_AAT presents 10 practice trials randomly (without replacement) selecting
from format A (landscape) (N=5) and format B (portrait) stimuli (N=5)
<block practice_AAT>
/ trials = [1-2 = instructions; 3-12 = noreplace(practicetrial_A, practicetrial_B)]
</block>
Note:
The trial sequence is generated by helper script 'AAT_SequenceGenerator.iqx'
!!!! The time to generate the appropriate sequence will differ between participants.
Two alternatives are:
1) use pregenerated sequences.
2) run the experiment with simple random sampling (easiest solution)
-> / trials = [1 = instructions; 2-81 = noreplace(AAT_1, AAT_2)]
<block assessment1_AAT>
/ onblockbegin = [values.index = 0]
/ trials = [1 = instructions; 2-97 = AAT_1untrained; 98 = instructions2; 99-194 = AAT_2untrained]
</block>
<block assessment2_AAT>
/ onblockbegin = [values.index = 0]
/ trials = [1 = instructions; 2-97 = AAT_1trained; 98 = instructions2; 99-194 = AAT_2trained; 195 = instructions2; 196-292 = AAT_3trained]
</block>
**************************************************************************************************************
**************************************************************************************************************
BREAKS
**************************************************************************************************************
**************************************************************************************************************
<text instructions2>
/ items = instructions2
/ select = sequence
/ position = (50%, 50%)
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 0)
/ txcolor = black
/ resetinterval = 3
/ size = (80%, 80%)
</text>
<item instructions2>
/ 1 = "PLEASE TAKE A FEW MOMENTS TO TAKE A BREAK DURING THE SESSION.
^^
Press press any key on the keyboard when you are ready to continue."
</item>
<trial instructions2>
/ stimulusframes = [1 = instructions2]
/ validresponse = ("anyresponse")
</trial>
**************************************************************************************************************
**************************************************************************************************************
EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************
NOTE:
<expt>
/ subjects = (1 of 1)
/ groupassignment = groupnumber
/ onexptbegin = [
values.expcondition = 1;
values.format1 = "PORTRAIT";
values.format2 = "LANDSCAPE";
values.startheight_A = parameters.Startheight_ratioA*values.Maxheight_px;
values.startheight_B = parameters.Startheight_ratioB* values.Maxheight_px;
]
/ blocks = [
1 = SequenceGenerator;
2 = practice_AAT;
3 = assessment1_AAT;
4 = assessment2_AAT
]
/ postinstructions = (End)
/ onexptend = [values.completed = 1]
</expt>
**********************************************************************************
Relevant parts I have changed in sequence generator:
<list stimcats>
/ items = (
1,1,1,1,1,1,
1,1,1,1,1,1,
2,2,2,2,2,2,
2,2,2,2,2,2,
3,3,3,3,3,3,3,
3,3,3,3,3,
4,4,4,4,4,4,4,4,
4,4,4,4,
5,5,5,5,5,5,5,5,
6,6,6,6,6,6,6,6,
7,7,7,7,7,7,7,7,
8,8,8,8,8,8,8,8)
/ replace = false
</list>
I have left all "values" at 0 even though I am wondering if they need to be increased from 80 to be right for 480 trials. Also wondering if the following is mandatory as I don't have a reason to have participants see this screen:
<text wait>
/items = ("Please wait; we'll be ready shortly")
/ fontstyle = ("Arial", 3.00%, false, false, false, false, 5, 0)
</text>