Counterbalancing 3 stimuli between blocks and participants


Author
Message
Athanasia
Athanasia
Associate Member (261 reputation)Associate Member (261 reputation)Associate Member (261 reputation)Associate Member (261 reputation)Associate Member (261 reputation)Associate Member (261 reputation)Associate Member (261 reputation)Associate Member (261 reputation)Associate Member (261 reputation)
Group: Forum Members
Posts: 19, Visits: 58
I have three odors that will be presented at the beginning of each of the three blocks of my experiment (one in the beginning of each block). They are marked as serial ports (port.fearodor, port.disgustodor and port.neutralodor) and I need them not to be erased till the end of the block.
I also need to counterbalance the presentation of these three odors between the blocks in all different combinations, so 6 different sequences between the participants.
I thought to assign different group ID (1 to 6) to each participant in the beginning of the experiment and then create 6 different lists with each one of these sequences of the presented odors.
However, I have trouble to make it work properly and I’m not sure this is the right way. This is what I have done so far:

<port fearodor>
/ items = ("00000001")
</ port >

<port disgustodor>
/ items = ("00000010")
</ port >

<port neutralodor>
/ items = ("00000100")
</ port >
….
<list odortports1>
/ items = (port.fearodor, port.disgustodor, port.neutralodor)
/ selectionrate = always
</list>

<list odortports 2>
/ items = (port.disgustodor, port.neutralodor, port.fearodor)
/ selectionrate = always
</list>

<list odortports 3>
/ items = (port.neutralodor, port.fearodor, port.disgustodor)
/ selectionrate = always
</list>

<list odortports 4>
/ items = (port.fearodor, port.neutralodor, port.disgustodor)
/ selectionrate = always
</list>

<list odortports5>
/ items = (port.disgustodor, port.fearodor, port.neutralodor)
/ selectionrate = always
</list>

<list odortports6>
/ items = (port.neutralodor,port.disgustodor,port.fearodor)
/ selectionrate = always
</list>

<trial odor>
/ ontrialbegin = [
    if (mod(script.groupid, 6)==1) trial.odor.insertstimulustime(list.odorports1.nextvalue, 0)
    else if (mod(script.groupid, 6)==2) trial.odor.insertstimulustime(list. odorports2.nextvalue, 0)
    else if (mod(script.groupid, 6)==3) trial.odor.insertstimulustime(list. odorports3.nextvalue, 0)
    else if (mod(script.groupid, 6)==4) trial.odor.insertstimulustime(list. odorports4.nextvalue, 0)
    else if (mod(script.groupid, 6)==5) trial.odor.insertstimulustime(list. odorports5.nextvalue, 0)
    else if (mod(script.groupid, 6)==6) trial.odor.insertstimulustime(list. odorports6.nextvalue, 0)
]
/ stimulustimes = [0=empty]
/ trialduration = 10 ## the minimum
</trial>

<block MorphTask>
/ trials = [1= odor; 2=…]
</block>

<expt complete>
/blocks = […; 3-5 = MorphTask; 6 =…]

</expt>

Could you please help?

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Threaded View
Threaded View
Athanasia - 4 Years Ago
Dave - 4 Years Ago
Athanasia - 4 Years Ago
Dave - 4 Years Ago
                     Also, else if (mod(script.groupid, 6) ==6 )...
Dave - 4 Years Ago
                         thank you so much, I was trying to figure out why groupid 6 did not...
Athanasia - 4 Years Ago
                             First, you'll need to reset trial.odor's stimulusframes before you add...
Dave - 4 Years Ago
                                 again thank you for your help! Everything works as desired now!
Athanasia - 4 Years Ago

Reading This Topic

Explore
Messages
Mentions
Search