Millisecond Forums

list selection

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

By luca7 - 12/1/2015

Dear Inquisit users,
I spent some time on this issue and I'm not sure how to proceed.
I'm working on a modified version of the self-paced reading task, but I think my question can be more easily illustrated with a simpler example (code below).

I have 3 lists of items (which correspond to 3 different experimental conditions) and I'd like the list to be selected based on a sequence that I determine a priori, then Inquisit select an item randomly (noreplace) from the list selected.
For example, I determine that in my experiment of 6 items I'd like the first item to be from list1, items 2 and 3 from list2, item 4 from list1, items 5 and 6 from list3. Given the selected list, Inquisit will pick randomly an item.

Conceptual description:

predetermined list sequential order: 1 2 2 1 3 3

IF predetermined = 1
    mylist = list1
elseif predetermined = 2
    mylist = list2
elseif predetermined = 3
    mylist = list3

<text mytext>  
/ items = mylist
/ select = noreplace
</text>

Below is an example of real Inquisit code, but it's not working.
Given that the real experiment is pretty complex (an item presentation is composed of a sequence of 10 trials) I'd prefer (perhaps I have) to have the list selection at the <text> level, not at a higher level (block or expt).

Thank you for any suggestion you may have.
Luca


--- Example Begin ----------------------------------------

<expt>
/ blocks = [1=myblock1]
</expt>

<block myblock1>
/ trials = [1=t1sent]
</block>

--- trial ------------------------------------------------

<trial t1sent>  
/ stimulustimes = [0=sent]
/ timeout = 1000
/ branch = [trial.t2quest]
</trial>

<trial t2quest>
/ stimulustimes = [0=quest]
/ validresponse = (57)
/ branch = [if (trial.t2quest.count < 6) trial.t1sent]
</trial>


--- text -------------------------------------------

<list selectlist>
/ items = (1 2 2 1 3 3)
</list>

* how do I do this?
Assign sentlist1/2/3 to sentlist depending on selectlist
Assign questlist1/2/3 to questlist depending on selectlist

<text sent>  
/ items = sentlist
/ select = noreplace
</text>

<text quest>  
/ items = questlist
/ select = text.sent.currentindex
</text>


--- items -------------------------------------------

* sentences lists *
<item sentlist1>
/ 1 = "sent 1 (list 1)"
/ 2 = "sent 2 (list 1)"
</item>

<item sentlist2>
/ 1 = "sent 1 (list 2)"
/ 2 = "sent 2 (list 2)"
</item>

<item sentlist3>
/ 1 = "sent 1 (list 3)"
/ 2 = "sent 2 (list 3)"
</item>


* questions lists *
<item questlist1>
/ 1 = "quest 1 (list 1)"
/ 2 = "quest 2 (list 1)"
</item>

<item questlist2>
/ 1 = "quest 1 (list 2)"
/ 2 = "quest 2 (list 2)"
</item>

<item questlist3>
/ 1 = "quest 1 (list 3)"
/ 2 = "quest 2 (list 3)"
</item>


--- End -------------------------------------------

By Dave - 12/1/2015

Don't use multiple <item> elements for your various "lists". Only use one, sample the respective *item number* from <list> element according to the "main" list selected:

--- Example Begin ----------------------------------------
<values>
/ selectedlist = 0
/ myitem = 1
</values>

<expt>
/ blocks = [1=myblock1]
</expt>

<block myblock1>
/ trials = [1=t1sent]
</block>

--- trial ------------------------------------------------

<trial t1sent> 
/ ontrialbegin = [values.selectedlist=list.selectlist.nextvalue; ]
/ ontrialbegin = [if (values.selectedlist==1) {values.myitem=list.list1itemnumbers.nextvalue; }
    else if (values.selectedlist==2) {values.myitem=list.list2itemnumbers.nextvalue; }
    else if (values.selectedlist==3) {values.myitem=list.list3itemnumbers.nextvalue; }; ]
/ stimulustimes = [0=sent]
/ timeout = 1000
/ branch = [trial.t2quest]
</trial>

<trial t2quest>
/ stimulustimes = [0=quest]
/ validresponse = (57)
/ branch = [if (trial.t2quest.count < 6) trial.t1sent]
</trial>


--- text -------------------------------------------

<list selectlist>
/ items = (1,2,2,1,3,3)
/ selectionmode = sequence
</list>

<list list1itemnumbers>
/ items = (1,2)
</list>

<list list2itemnumbers>
/ items = (3,4)
</list>

<list list3itemnumbers>
/ items = (5,6)
</list>

<text sent> 
/ items = sentlist
/ select = values.myitem
</text>

<text quest> 
/ items = questlist
/ select = values.myitem
</text>


--- items -------------------------------------------

* sentences lists *
<item sentlist>
/ 1 = "sent 1 (list 1)"
/ 2 = "sent 2 (list 1)"

/ 3 = "sent 1 (list 2)"
/ 4 = "sent 2 (list 2)"

/ 5 = "sent 1 (list 3)"
/ 6 = "sent 2 (list 3)"
</item>


* questions lists *
<item questlist>
/ 1 = "quest 1 (list 1)"
/ 2 = "quest 2 (list 1)"

/ 3 = "quest 1 (list 2)"
/ 4 = "quest 2 (list 2)"

/ 5 = "quest 1 (list 3)"
/ 6 = "quest 2 (list 3)"
</item>


--- End -------------------------------------------

By luca7 - 12/1/2015

Hi Dave, thank you so much, it’s perfect. I really appreciate your help.

- Luca