Jittered Intervals Problem


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
Hi!
I am building a face morph experiment, where participants see a fixation cross for 1800ms, then an image of a fearful or disgusted face for 250ms and then a question mark for 2500ms, when they have to press keys “a” or “l” corresponding to the words FEAR or DISGUST on the left or the right side of the screen correspondingly.
However, I have one problem related to inter-trial intervals. Before trials we want to have eight different jittered intervals from 750 to 2850ms that are drawn randomly (one interval before each trial). / noreplace attribute seems to work, but the problem is that I can’t control the time of trial duration by giving in each trial 2500ms to participants to respond. I also tried “/timeout” attribute, which according to millisecond.com remarks “For trials, the timeout duration begins as soon as Inquisit begins waiting for a response” (by default, this is at the end of the stimulus presentation sequence, but in my case is 1800ms, when the image is presented). However, in practice it seems to count from the beginning of the trial, including pretrial pause, like “/trial duration” attribute. As a result, in trials with long inter-trial interval, the participants have almost no time to respond!
Also sometimes the question mark appears ON the image (a problem that has been solved by adding a square shape on the image at the same time with the question mark, but seems not to work in some cases!) other times it doesn’t appear at all or is presented at the same time with the picture!

<trial Disgust_Fear_100>
/ stimulustimes = [0 = Fixation; 1800 = Disgust_Fear_100; 2050 = Square; 2050 = Answer;]
/ pretrialpause = noreplace(750,1050,1350,1650,1950,2250,2550,2850)
/ beginresponsetime = 1800
/ validresponse = ("a", "l")
/ responseinterrupt = immediate

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
Athanasia - 10/26/2020
Hi!
I am building a face morph experiment, where participants see a fixation cross for 1800ms, then an image of a fearful or disgusted face for 250ms and then a question mark for 2500ms, when they have to press keys “a” or “l” corresponding to the words FEAR or DISGUST on the left or the right side of the screen correspondingly.
However, I have one problem related to inter-trial intervals. Before trials we want to have eight different jittered intervals from 750 to 2850ms that are drawn randomly (one interval before each trial). / noreplace attribute seems to work, but the problem is that I can’t control the time of trial duration by giving in each trial 2500ms to participants to respond. I also tried “/timeout” attribute, which according to millisecond.com remarks “For trials, the timeout duration begins as soon as Inquisit begins waiting for a response” (by default, this is at the end of the stimulus presentation sequence, but in my case is 1800ms, when the image is presented). However, in practice it seems to count from the beginning of the trial, including pretrial pause, like “/trial duration” attribute. As a result, in trials with long inter-trial interval, the participants have almost no time to respond!
Also sometimes the question mark appears ON the image (a problem that has been solved by adding a square shape on the image at the same time with the question mark, but seems not to work in some cases!) other times it doesn’t appear at all or is presented at the same time with the picture!

<trial Disgust_Fear_100>
/ stimulustimes = [0 = Fixation; 1800 = Disgust_Fear_100; 2050 = Square; 2050 = Answer;]
/ pretrialpause = noreplace(750,1050,1350,1650,1950,2250,2550,2850)
/ beginresponsetime = 1800
/ validresponse = ("a", "l")
/ responseinterrupt = immediate

/timeout = 2500 and
/ response = timeout(2500)

are two different things. The former includes pretrialpause etc.. the latter does not -- it will give you what you want.

> Also sometimes the question mark appears ON the image (a problem that has been solved by adding a square shape on the image at the same time with the question mark,
> but seems not to work in some cases!) other times it doesn’t appear at all or is presented at the same time with the picture!

Reset the trial's stimulus presentation sequence at the start of each trial.

<trial Disgust_Fear_100>
/ ontrialbegin = [
    trial.Disgust_Fear_100.clearstimulusframes();
]
/ stimulustimes = [0 = Fixation; 1800 = Disgust_Fear_100; 2050 = Square; 2050 = Answer;]
/ pretrialpause = noreplace(750,1050,1350,1650,1950,2250,2550,2850)
/ beginresponsetime = 1800
/ response = timeout(2500)
/ validresponse = ("a", "l")
/ responseinterrupt = immediate
...
</trial>



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
Hi Dave!
Thank you for your quick response! It works fine now!
It would be also very helpful to have your opinion for another issue. We also want to record fear responses. When a block of trials has the word FEAR on the left and the word DISGUST on the right and a fearful image appears, then the correct answer is pressing the key 30 (a), otherwise (if it’s DISGUST on the left and FEAR on the right) the correct response is key 38 (l). I included “/iscorrectresponse” attribute in each trial (see below)
<trial Disgust_Fear_71>

/ iscorrectresponse = [block.Disgust_L_Fear_R.response == 38; block.Disgust_R_Fear_L.response == 30;]
</trial>

(image Disgust_Fear_71 means that the face on a scale from 0 to 100, where 0 = disgust and 100 = fear, this face is 71% fear and 29% disgust, so the correct response is FEAR)

The thing is that responses are logged correctly for block Disgust_R_Fear_L, BUT NOT for block Disgust_L_Fear_R and I can’t figure out what is wrong, because it’s the same attribute working for half of the expressions. I'm not sure if a trial can read what block it is in though. Any help on that?

Thank you again


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
Athanasia - 10/27/2020
Hi Dave!
Thank you for your quick response! It works fine now!
It would be also very helpful to have your opinion for another issue. We also want to record fear responses. When a block of trials has the word FEAR on the left and the word DISGUST on the right and a fearful image appears, then the correct answer is pressing the key 30 (a), otherwise (if it’s DISGUST on the left and FEAR on the right) the correct response is key 38 (l). I included “/iscorrectresponse” attribute in each trial (see below)
<trial Disgust_Fear_71>

/ iscorrectresponse = [block.Disgust_L_Fear_R.response == 38; block.Disgust_R_Fear_L.response == 30;]
</trial>

(image Disgust_Fear_71 means that the face on a scale from 0 to 100, where 0 = disgust and 100 = fear, this face is 71% fear and 29% disgust, so the correct response is FEAR)

The thing is that responses are logged correctly for block Disgust_R_Fear_L, BUT NOT for block Disgust_L_Fear_R and I can’t figure out what is wrong, because it’s the same attribute working for half of the expressions. I'm not sure if a trial can read what block it is in though. Any help on that?

Thank you again


When a block is over, its (final) response doesn't go away. So one of the statements will *always* be true, and depending on the block order (which you did not provide) one will always be false.

What you'll want to do is something like this:

<values>
/ correctkey = 57
</values>

<block Disgust_R_Fear_L>
/ onblockbegin = [values.correctkey = 30]
....
</block>

<block Disgust_L_Fear_R>
/ onblockbegin = [values.correctkey = 38]
....
</block>

with

<trial Disgust_Fear_71>

/ iscorrectresponse = [trial.Disgust_Fear_71.response == values.correctkey]
</trial>

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search