Group: Forum Members
Posts: 25,
Visits: 208
|
Hi,
I have a counterbalancing problem on my visual search task I am not sure how to fix.
My task has 12 different types of trials in a block (two different target letters each in 6 possible positions). The trials must be randomly selected (which they are). The unselected other 5 locations are filled by filler letters - picked from 5 lists. Two of the filler letters are actual letters and three are small O's. The filler letters are counterbalanced with each other so there are 48 combinations each - this is done by randomly selecting the first letter and then the other lists select from list.1.currentindex.
But I made a mistake as the filler letter identity and positions are not connected to the position of the target letter (the trial). I need the filler letters to be next to the target letter I.e if the target is in pos 1 then filler letter 1 will be in pos 2 and filler letter 2 will be in pos 3 (so they are both next to the target letter and not separated by small O filler letters). I also need the trial to be linked to the filler letter order.
So that on list s3filler1 below. Every 6th letter is presented on trial.set3X1 (also below) (so the 1st, 6th, 13th and so on) and this letter is always presented in position 2.
<list s3filler1> / items = (picture.H1, picture.Z1, picture.O1, picture.M1, picture.K1, picture.O1, picture.W1, picture.H1, picture.O1, picture.Z1, picture.K1, picture.O1, picture.M1, picture.W1, picture.O1, picture.H1, picture.Z1, picture.O1, picture.M1, picture.K1, picture.O1, picture.W1, picture.H1, picture.O1, picture.Z1, picture.K1, picture.O1, picture.M1, picture.W1, picture.O1, picture.H1, picture.Z1, picture.O1, picture.M1, picture.K1, picture.O1, picture.W1, picture.H1, picture.O1, picture.Z1, picture.K1, picture.O1, picture.M1, picture.W1, picture.O1, picture.Z1, picture.K1, picture.O1) / select = random </list>
<trial set3X1> / ontrialbegin = [ values.valid = 0; values.validcorrect = 0; values.trialcount += 1] / ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler1.nextvalue,500);] / ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler2.nextvalue,500);] / ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler3.nextvalue,500);] / ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler4.nextvalue,500);] / ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler5.nextvalue,500);] / ontrialbegin = [values.fillerhpos1 = expressions.hp2] / ontrialbegin = [values.fillerhpos2 = expressions.hp3] / ontrialbegin = [values.fillerhpos3 = expressions.hp4] / ontrialbegin = [values.fillerhpos4 = expressions.hp5] / ontrialbegin = [values.fillerhpos5 = expressions.hp6] / ontrialbegin = [values.fillervpos1 = expressions.vp2] / ontrialbegin = [values.fillervpos2 = expressions.vp3] / ontrialbegin = [values.fillervpos3 = expressions.vp4] / ontrialbegin = [values.fillervpos4 = expressions.vp5] / ontrialbegin = [values.fillervpos5 = expressions.vp6] / ontrialbegin = [trial.set3X1.insertstimulustime(list.distractorX1.nextvalue,500);] / ontrialbegin = [values.distractor = list.distractorX1.currentvalue;] / ontrialbegin = [ if (contains(list.distractorX1.currentvalue, ".X")) expressions.category = "congruent" else if (contains(list.distractorX1.currentvalue, ".N")) expressions.category = "incongruent"; ] / ontrialbegin = [ if (expressions.category== "congruent") values.count_congruent += 1; else if (expressions.category== "incongruent") values.count_incongruent += 1; ] / ontrialend = [trial.set3X1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1); 600=sequence (eraser1, eraser2, eraser3, eraser4, eraser5, eraser6, eraserleft, eraserright)] / validresponse = ("J", "I") / correctresponse = ("J") / response = timeout(2000) / beginresponsetime = 500 / ontrialend = [ if (trial.set3X1.latency >= parameters.minimum_latency) values.valid = 1; if (values.valid == 1) { if (trial.set3X1.correct) { values.validcorrect = 1; values.sumcorrect += 1; values.sumrt += trial.set3X1.latency if (expressions.category == "congruent") { values.sumcorrect_congruent += 1; values.sumrt_congruent += trial.set3X1.latency; list.latencies_congruent.insertitem(trial.set3X1.latency, 1); list.latencies.insertitem(trial.set3X1.latency, 1); } else { values.sumcorrect_incongruent += 1; values.sumrt_incongruent += trial.set3X1.latency; list.latencies_incongruent.insertitem(trial.set3X1.latency, 1); list.latencies.insertitem(trial.set3X1.latency, 1); } } } ; list.accuracy.insertitem(values.validcorrect, 1); values.testeracc = list.accuracy.currentindex if (expressions.category == "congruent") { list.accuracy_congruent.insertitem(values.validcorrect, 1); } else { list.accuracy_incongruent.insertitem(values.validcorrect, 1); }; ] </trial>
If there a way of using more lists to link these together?
I have attached the whole script too (with supporting files)
Thanks
|