Setitem from list on each trial


Author
Message
Lizzy
Lizzy
Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)
Group: Forum Members
Posts: 25, Visits: 104
Thanks Dave for that solution. Works like a charm!
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
I cannot tell you where exactly you are going wrong without the actual image files. However, this is not a good way to go about this anyway for performance reasons alone. You should instead set up an <item> element that contains all images

<item allpics>
/ 1 = "HF1.bmp"
...
/ 33 = "AF1.bmp"
...
/ 65 = "HM1.bmp"
...
/ 97 = "AM1.bmp"
...
</item>

reference that <item> element in your <picture> elements

<picture VSPicLeft>
/position = (40%,50%)
/items = allitems
/ select = values.leftpic
</picture>

<picture VSPicRight>
/position = (60%,50%)
/ items = allitems
/select= values.rightpic
</picture>

with

<values>
/ leftpic = 1
/ rightpic = 1
...
</values>

and then merely draw the proper *item numbers* from your various <list>s and store them in the above <values>:

* FH item numbers are 1 to 32*
<list VSListFH>
/ items = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32)
...
</list>

*FA item numbers are 33 to 64*
<list VSListFA>
/ items = (33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64)
...
</list>
...

with


<trial VS_FHFA>
/ontrialbegin = [values.leftpic = list.VSListFH.nextvalue ]
/ontrialbegin = [values.rightpic = list.VSListFA.nextvalue ]

/stimulustimes = [1 = Fix; 500 = VSPicleft, VSPicRight]
/inputdevice = keyboard
/validresponse = ("m","x")
/correctresponse = ("x")
/errormessage = true(Incorrect, 1000)
</trial>
Lizzy
Lizzy
Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)Esteemed Member (2.3K reputation)
Group: Forum Members
Posts: 25, Visits: 104
I'm trying to program a task where on each trial, two stimuli are presented, drawn from two of four possible lists (32 male angry faces, 32 male happy,32 female angry, 32 female happy). I need to ensure that across 64 trials, each item in each list is presented exactly once, and that all 16 combination pairs (FH left - FH right, FH left - FA right, FH left - MA right, FH left - MH right, FA left - FH right, FA left - FA right, FA left - MA right, FA left - MH right, ....) are each presented 4 times.

I'm creating 16 different trials for these 16 combination pairs, and within these trials, want to choose the lists that I draw from to select the pictures.
The problem occurs when I try to set the item in my picture element. I want to overwrite whatever is in there with a new list item that I draw from the appropriate list on each trial, but that doesn't seem to be working.

Here's the relevant script:
<list VSListFH>
/ items = ("HF1.bmp", "HF2.bmp", "HF3.bmp", "HF4.bmp", "HF5.bmp", "HF6.bmp", "HF7.bmp", "HF8.bmp", "HF9.bmp", "HF10.bmp", "HF11.bmp", "HF12.bmp", "HF13.bmp", "HF14.bmp", "HF15.bmp", "HF16.bmp", "HF17.bmp", "HF18.bmp", "HF19.bmp", "HF20.bmp", "HF21.bmp", "HF22.bmp", "HF23.bmp", "HF24.bmp", "HF25.bmp", "HF26.bmp", "HF27.bmp", "HF28.bmp", "HF29.bmp", "HF30.bmp", "HF31.bmp", "HF32.bmp")
/ replace = false
/ selectionrate = always
</list>

<list VSListFA>
/ items = ("AF1.bmp", "AF2.bmp", "AF3.bmp", "AF4.bmp", "AF5.bmp", "AF6.bmp", "AF7.bmp", "AF8.bmp", "AF9.bmp", "AF10.bmp", "AF11.bmp", "AF12.bmp", "AF13.bmp", "AF14.bmp", "AF15.bmp", "AF16.bmp",
"AF17.bmp", "AF18.bmp", "AF19.bmp", "AF20.bmp", "AF21.bmp", "AF22.bmp", "AF23.bmp", "AF24.bmp", "AF25.bmp", "AF26.bmp", "AF27.bmp", "AF28.bmp", "AF29.bmp", "AF30.bmp", "AF31.bmp", "AF32.bmp")
/ replace = false
/ selectionrate = always
</list>

<list VSListMH>
/ items = ("HM1.bmp", "HM2.bmp", "HM3.bmp", "HM4.bmp", "HM5.bmp", "HM6.bmp", "HM7.bmp", "HM8.bmp", "HM9.bmp", "HM10.bmp", "HM11.bmp", "HM12.bmp", "HM13.bmp", "HM14.bmp", "HM15.bmp", "HM16.bmp", "HM17.bmp", "HM18.bmp", "HM19.bmp", "HM20.bmp", "HM21.bmp", "HM22.bmp", "HM23.bmp", "HM24.bmp", "HM25.bmp", "HM26.bmp", "HM27.bmp", "HM28.bmp", "HM29.bmp", "HM30.bmp", "HM31.bmp", "HM32.bmp")
/ replace = false
/ selectionrate = always
</list>

<list VSListMA>
/ items = ("AM1.bmp", "AM2.bmp", "AM3.bmp", "AM4.bmp", "AM5.bmp", "AM6.bmp", "AM7.bmp", "AM8.bmp", "AM9.bmp", "AM10.bmp", "AM11.bmp", "AM12.bmp", "AM13.bmp", "AM14.bmp", "AM15.bmp", "AM16.bmp",
"AM17.bmp", "AM18.bmp", "AM19.bmp", "AM20.bmp", "AM21.bmp", "AM22.bmp", "AM23.bmp", "AM24.bmp", "AM25.bmp", "AM26.bmp", "AM27.bmp", "AM28.bmp", "AM29.bmp", "AM30.bmp", "AM31.bmp", "AM32.bmp")
/ replace = false
/ selectionrate = always
</list>

<picture VSPicLeft>
/position = (40%,50%)
/items = ("Template.bmp")
</picture>

<picture VSPicRight>
/position = (60%,50%)
/items = ("Template.bmp")
</picture>

<trial VS_FHFA>
/ontrialbegin = [picture.VSPicLeft.setitem(list.VSListFH.nextvalue, 1)]
/ontrialbegin = [picture.VSPicRight.setitem(list.VSListFA.nextvalue, 1)]
/stimulustimes = [1 = Fix; 500 = VSPicleft, VSPicRight]
/inputdevice = keyboard
/validresponse = ("m","x")
/correctresponse = ("x")
/errormessage = true(Incorrect, 1000)
</trial>

<trial VS_FHMA>
/ontrialbegin = [picture.VSPicLeft.setitem(list.VSListFH.nextvalue, 1)]
/ontrialbegin = [picture.VSPicRight.setitem(list.VSListMA.nextvalue, 1)]
/stimulustimes = [1 = Fix; 500 = VSPicleft, VSPicRight]
/inputdevice = keyboard
/validresponse = ("m","x")
/correctresponse = ("x")
/errormessage = true(Incorrect, 1000)
</trial>

(and a bunch more trials)


From the debug Window I can see there is a list item selected in 'nextvalue', but it is not being set to the picture. When I try to run the script I get the error: "picture.VSPicLeft: Unable to initialize <picture VSPicLeft> item number 1. Verify the item exists and is correctly defined."

Any idea where I'm going wrong?
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search