Dynamic Index based selection from a list


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
Hello Dave!

According to a value (PSE number), which will be defined in the beginning of each experiment, I want to present only 6 out of 100 images, creating a unique set of 6 trials for each participant. The steps should be -15, -9, -3, +3, +9, and +15 from the PSE number. For example, if PSE is number 50, then the stimuli (pictures) presented to this participant will be Disgust_Fear_35/41/47/53/59/65.

Each picture Disgust_Fear_xx has two items (“a_Disgust_Fear_xx.bmp”, “b_Disgust_Fear_xx.bmp”). When picture Disgust_Fear_xx is presented as stimulus on a trial, the choice between a_Disgust_Fear_xx.bmp and b_Disgust_Fear_xx.bmp should be random.

I have tried to put all the picture elements in a list and select based on index, similar to what is proposed here  https://www.millisecond.com/forums/Topic13785.aspx

These are the relevant code parts:

<values>
/ primerPSE = 50
/ selectedImageNumber = 0
</values>

<picture Disgust_Fear_1>
/ items = ("28_Disgust_Fear_1.BMP","33_Disgust_Fear_1.BMP")
/ size = (100%,100%)
/ position = (50,50)
/ select = noreplace
</picture>

<picture Disgust_Fear_99>
/ items = ("28_Disgust_Fear_99.BMP","33_Disgust_Fear_99.BMP")
/ size = (100%,100%)
/ position = (50,50)
/ select = noreplace
</picture>

<list allPictures>
/items = ( picture.Disgust_Fear_1, picture.Disgust_Fear_2, picture.Disgust_Fear_3,… picture.Disgust_Fear_98, picture.Disgust_Fear_99)
</list>

<picture pic>
/ items = allPictures **
/ select = values.selectedImageNumber
</picture>

<trial minus15>
/ ontrialbegin = [
    trial.minus15.resetstimulusframes();
    values.selectedImageNumber = values.primerPSE - 15;
    ]
/ stimulustimes = [0 = Fixation; 1800 = pic; 2050 = Square; 2050 = Answer;]
/ pretrialpause = noreplace(750,1050,1350,1650,1950,2250,2550,2850)
/ beginresponsetime = 1800
/ response = timeout(2750)
/ validresponse = ("a", "l")
/ responseinterrupt = immediate
</trial>

The problem (denoted with ** above) is that I can’t put a list, or a picture element, as item of the picture pic.
I also tried to replace the list with an item element which will include the picture elements as items:

<item allPictures>
/ 1 = picture.Disgust_Fear_1

/ 99 = picture.Disgust_Fear_99
</item>

But I understand that this is also invalid syntax.

My very first approach was
/ stimulustimes = [0 = Fixation; 1800 = list.allPictures.item(values.selectedImageNumber); 2050 = Square; 2050 = Answer;],
but again, stimulustimes attribute does not work like that.

Another idea based on this topic https://www.millisecond.com/forums/Topic18863.aspx , is to create an item element with 200 items and then two lists of 100 like this:

<item allPictures>
/ 1 = "28_Disgust_Fear_1.BMP"                
...        
/ 99 = "28_Disgust_Fear_99.BMP"            
/ 100 = "33_Disgust_Fear_1.BMP"            
...
/ 198 = "33_Disgust_Fear_99.BMP"            
</item>        
    
<list PicSelectorallPictures_1>
/ items = (1,2,...,98,99)
/ select = values.selectedImageNumber
</list>

<list PicSelectorPictures_2>
/ items = (100,101,...197,198)
/ select = values.selectedImageNumber
</list>

<picture pic>
/ items = allPictures
/ select = noreplace(list.PicSelectorallPictures_1.item(values.selectedImageNumber),
       list.PicSelectorPictures_2.item(values.selectedImageNumber))
</picture>

<trial minus15>
/ ontrialbegin = [trial.minus15.resetstimulusframes();
    values.selectedImageNumber = values.primerPSE - 15;]
/ stimulustimes = [0 = Fixation; 1800 = pic; 2050 = Square; 2050 = Answer;]
/ pretrialpause = noreplace(750,1050,1350,1650,1950,2250,2550,2850)
/ beginresponsetime = 1800
/ response = timeout(2750)
/ validresponse = ("a", "l")
/ responseinterrupt = immediate
</trial>

but again, while the script is working, I don't have the picture I want.

Any other suggestions?

Thanks in advance for your help
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Threaded View
Threaded View
Athanasia - 5 Years Ago
Dave - 5 Years Ago
Dave - 5 Years Ago
Athanasia - 5 Years Ago
                     <list AllPorts > / items = (port.FearAA, port.FearGAGG,...
Dave - 5 Years Ago
                         Thank you so much, for one more time! It works exactly as I want!
Athanasia - 5 Years Ago

Reading This Topic
1 active, 1 guest, 0 members, 0 anonymous
No members currently viewing this topic!

Explore
Messages
Mentions
Search