Millisecond Forums

Issue with first image being recorded but not shown

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

By chohyuna - 9/23/2019

Hi everyone,

Our experiment reads through a list of filenames (ex. "tortilla.jpg") and presents the stimulus to the participant in randomized order. Unfortunately, when we look at the data, we see that the first object in the list is recorded as being shown, with latency and other variables recorded, when it is not actually presented to the participant. The actual item that was presented first is a randomized object from the possible list. 

Ex. if the list looked like
1/ "item1.jpg"
2/ "item2.jpg"
3/ "item3.jpg"
The experiment should be selecting the objects to present at random, however item1 is always being recorded as shown first (but when doing the task the participant does not actually see item1, they would first see a random item), and item1 is also shown later in the sequence. If item3 was presented first, with 3 random items being shown, the data might look like:
- item1.jpg --> latency = 873ms
- item3.jpg --> latency = 1068ms
- item1.jpg --> latency = 826ms

This presents problems, as a random stimulus is not being recorded as presented to the participant, which we need to use for the next portion of our experiment. It's also confusing that the RT for the first item's data is not equivalent to the time taken for the fixation cross, nor the next item's latency (and other data). An additional problem is that our last trial in the block is now being cut-off because this "invisible" first item is taking up a trial. 

Our code looks like: 
< item encoding>(insert list of item names)</item>
<picture encoding>/items= encoding/ position = (50%,40%)/size= (500px, 500px) / select = noreplace/ erase = false</picture><trial encoding>/ stimulustimes = [0= white_screen; 1000=encoding, natural, human; 3000=dummy]/ validresponse = ("j","k")/ trialduration = 3000/ beginresponsetime = 1000/ responseinterrupt = frames/ ontrialbegin = [ values.stimulus= picture.encoding.currentitem]</trial><block encoding>/ trials = [1-60,62-121,123-177=noreplace(encoding); 61,122=rest]</block>
By Dave - 9/23/2019

chohyuna - 9/23/2019
Hi everyone,

Our experiment reads through a list of filenames (ex. "tortilla.jpg") and presents the stimulus to the participant in randomized order. Unfortunately, when we look at the data, we see that the first object in the list is recorded as being shown, with latency and other variables recorded, when it is not actually presented to the participant. The actual item that was presented first is a randomized object from the possible list. 

Ex. if the list looked like
1/ "item1.jpg"
2/ "item2.jpg"
3/ "item3.jpg"
The experiment should be selecting the objects to present at random, however item1 is always being recorded as shown first (but when doing the task the participant does not actually see item1, they would first see a random item), and item1 is also shown later in the sequence. If item3 was presented first, with 3 random items being shown, the data might look like:
- item1.jpg --> latency = 873ms
- item3.jpg --> latency = 1068ms
- item1.jpg --> latency = 826ms

This presents problems, as a random stimulus is not being recorded as presented to the participant, which we need to use for the next portion of our experiment. It's also confusing that the RT for the first item's data is not equivalent to the time taken for the fixation cross, nor the next item's latency (and other data). An additional problem is that our last trial in the block is now being cut-off because this "invisible" first item is taking up a trial. 

Our code looks like: 
< item encoding>(insert list of item names)</item>
<picture encoding>/items= encoding/ position = (50%,40%)/size= (500px, 500px) / select = noreplace/ erase = false</picture><trial encoding>/ stimulustimes = [0= white_screen; 1000=encoding, natural, human; 3000=dummy]/ validresponse = ("j","k")/ trialduration = 3000/ beginresponsetime = 1000/ responseinterrupt = frames/ ontrialbegin = [ values.stimulus= picture.encoding.currentitem]</trial><block encoding>/ trials = [1-60,62-121,123-177=noreplace(encoding); 61,122=rest]</block>

Here's the issue with your code:

/ ontrialbegin = [ values.stimulus= picture.encoding.currentitem]

Ontrialbegin attributes happen *before* any stimulus selection has occurred. If you want to actually record which item *was* presented by the trial, you need to shift the above logic to /ontrialend.
By chohyuna - 9/24/2019

Dave - 9/23/2019
chohyuna - 9/23/2019
Hi everyone,

Our experiment reads through a list of filenames (ex. "tortilla.jpg") and presents the stimulus to the participant in randomized order. Unfortunately, when we look at the data, we see that the first object in the list is recorded as being shown, with latency and other variables recorded, when it is not actually presented to the participant. The actual item that was presented first is a randomized object from the possible list. 

Ex. if the list looked like
1/ "item1.jpg"
2/ "item2.jpg"
3/ "item3.jpg"
The experiment should be selecting the objects to present at random, however item1 is always being recorded as shown first (but when doing the task the participant does not actually see item1, they would first see a random item), and item1 is also shown later in the sequence. If item3 was presented first, with 3 random items being shown, the data might look like:
- item1.jpg --> latency = 873ms
- item3.jpg --> latency = 1068ms
- item1.jpg --> latency = 826ms

This presents problems, as a random stimulus is not being recorded as presented to the participant, which we need to use for the next portion of our experiment. It's also confusing that the RT for the first item's data is not equivalent to the time taken for the fixation cross, nor the next item's latency (and other data). An additional problem is that our last trial in the block is now being cut-off because this "invisible" first item is taking up a trial. 

Our code looks like: 
< item encoding>(insert list of item names)</item>
<picture encoding>/items= encoding/ position = (50%,40%)/size= (500px, 500px) / select = noreplace/ erase = false</picture><trial encoding>/ stimulustimes = [0= white_screen; 1000=encoding, natural, human; 3000=dummy]/ validresponse = ("j","k")/ trialduration = 3000/ beginresponsetime = 1000/ responseinterrupt = frames/ ontrialbegin = [ values.stimulus= picture.encoding.currentitem]</trial><block encoding>/ trials = [1-60,62-121,123-177=noreplace(encoding); 61,122=rest]</block>

Here's the issue with your code:

/ ontrialbegin = [ values.stimulus= picture.encoding.currentitem]

Ontrialbegin attributes happen *before* any stimulus selection has occurred. If you want to actually record which item *was* presented by the trial, you need to shift the above logic to /ontrialend.

That resolved the issue! Thank you!