EPT with backward mask

16 views
Skip to first unread message

Benedek Kurdi

unread,
Oct 25, 2022, 3:46:04 PM10/25/22
to Minno.js

Hi all,
I'm trying to implement a version of the evaluative priming task that has a backward noise mask until a response is entered. At the same time, I would like to have a warning show up to respond more quickly if a response isn't entered within 1,000 ms of the target stimulus being shown.
Do I understand correctly that a backward mask is not part of the EPT extension and therefore I would have to modify the extension myself? I'm assuming I would have to add a new stimulus for the mask somewhere and then modify the structure of the trial.
Right now the trial is set up in such a way that if the participant runs out of time the warning gets triggered:
       {type:'setInput',input:{handle:'targetOut',on:'timeout', duration:piCurrent.deadlineDuration}}
In addition, I would also like to have the prime be shown for a particular duration and then be replaced by the target. Not exactly sure how to go about this while keeping the warning message as part of the trial.
Any pointers would be really appreciated.
Thanks so much!
—Benedek

Yoav Bar-Anan

unread,
Oct 26, 2022, 5:28:18 AM10/26/22
to Minno.js
Hi Benedek, 

Yes, you will need to modify the current extension
Probably, it would require adding another stimulus that is shown after the target. Something like this:
{
conditions: [{type:'inputEquals',value:'primeOut'}], // on time out
actions: [
{type:'hideStim',handle:'primeStim'}, // hide the first stimulus
{type:'showStim',handle:'targetStim'}, // and show the second one
{type:'resetTimer'},
//Set the possible key inputs.
{type:'setInput',input:{handle:targetCats.leftAttTargets.name, on: 'keypressed', key:'e'}},
{type:'setInput',input:{handle:targetCats.rightAttTargets.name, on: 'keypressed', key:'i'}},
{type:'setInput',input:{handle:'responseOut',on:'timeout', duration:piCurrent.deadlineDuration}}
{type:'setInput',input:{handle:'targetOut',on:'timeout', duration:piCurrent.targetDuration}}
]
},
{
conditions: [{type:'inputEquals',value:'tagretOut'}], // show the prime stimulus
actions: [
{type:'hideStim',handle:'targetStim'},// display the first stimulus
{type:'showStim',handle:'maskStim'}
]
},
{
conditions: [
{type:'inputEquals',value:'responseOut'},
{type:'globalEquals',property:'deadlineDuration', value:0, negate:true} //if deadline duration is 0, then there is no deadline.
], // on time out
actions: [
{type:'showStim',handle:'deadline'}, // did not respond on time
{type:'setTrialAttr', setter:{score:2}}, //2 is for timeout
{type:'log'}, // here we call the log action.
{type:'removeInput', handle:'All'},
{type:'trigger', handle:'goBlank', duration:piCurrent.deadlineMsgDuration}
]
},
By default, the prime is indeed shown for a certain duration and is then replaced by the target stimulus, so this is already supported. You will probably need to add a targetDuration argument (used in the code above).

Yoav

--
You received this message because you are subscribed to the Google Groups "Minno.js" group.
To unsubscribe from this group and stop receiving emails from it, send an email to minnojs+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/minnojs/CAPGF78GwxJP%3DyPi1Y6m3BC2sy66mgdhM84C5Hp2F-7z1L_Wckg%40mail.gmail.com.

Yoav Bar-Anan

unread,
Oct 26, 2022, 7:30:02 AM10/26/22
to Benedek Kurdi, Minno.js
By default, the prime is shown for a certain duration and is then replaced by the target stimulus, so this is already supported. You will probably need to add a targetDuration argument (used in the code above).

Yoav

On Tue, Oct 25, 2022 at 10:46 PM Benedek Kurdi <kurdib...@gmail.com> wrote:
--

Benedek Kurdi

unread,
Oct 26, 2022, 9:40:56 AM10/26/22
to Minno.js

Hi Yoav,
Thanks so much for the help.
I made the changes and the code is running (which I guess is a good sign), but the mask still isn't getting displayed.
The study is this one in case that's helpful. The EPT file is ept.js and the extension is ep5.js.
Thanks so much again!
—Benedek

Yoav Bar-Anan

unread,
Oct 26, 2022, 9:56:46 AM10/26/22
to Benedek Kurdi, Minno.js
Hi Benedek, 

Are you sure the link is to the relevant study? I don't see an ept.js there.

By the way, I forgot to add to my previous email, only to make sure you know: In JavaScript platforms like Minno, I believe that masking would not be sufficient for subliminal presentation of stimuli. JavaScript is not reliable enough to promise you that the stimuli would always appear for the duration you request them to appear. This is true especially if you want to present a stimulus for a short duration. In some participants, in some trials, the stimulus would appear for a longer duration. Still, if you only want to manipulate the likelihood that participants consciously detect the prime within a particular trial, then probably manipulating the duration of the prime would be relevant for such a manipulation.

Yoav

Benedek Kurdi

unread,
Oct 26, 2022, 10:31:31 AM10/26/22
to Minno.js

That was totally the wrong link, sorry. The right one is this.
I'll talk to my collaborator about the awareness issue; I'm simply using the parameters that she's been using in past work. (I don't think the goal is to make stimulus presentation subliminal, I think it's just to make the response conditions even more suboptimal.)
Thanks again!
—Benedek

Yoav Bar-Anan

unread,
Oct 27, 2022, 11:02:10 AM10/27/22
to Benedek Kurdi, Minno.js
Hi Benedek, 

The code I suggested had a typo: tagretOut instead of targetOut in the following line:
        conditions: [{type:'inputEquals',value:'targetOut'}], // show the prime stimulus

I hope that would fix the task.

By the way, I found this problem by changing Minno's Console debug printing state to "All" on the left side of the panel:
image.png

In the screenshot you can see that when the event was "targetOut" the conditions in all the interaction returned false. When I tried to understand why the condition in the 'targetOut' interaction was false, I realized it was not named correctly. 

Yoav

Benedek Kurdi

unread,
Oct 27, 2022, 11:56:18 AM10/27/22
to Yoav Bar-Anan, Minno.js

Awesome, thanks! It's working now.
—Benedek

Yoav Bar-Anan

unread,
Jan 12, 2023, 2:18:19 AM1/12/23
to Minno.js
A follow-up to this thread. It is now possible to use the evaluative-priming extension at https://cdn.jsdelivr.net/gh/baranan/minno-tasks@0.*/ep/ep6.js
That extension has two updates:
- You can use a backward mask by using the following arguments:
			//The task can show a mask at the end of the target, if the target duration is larger than 0 and useMask is true.
			useMask : false, 
			maskStimulus : {
				css : {color:'black', 'font-size':'2.5em'}, 
				media : {word:'BBBBBBBB'}
			}, 
- You can request the extension to try showing all the possible prime-target stimuli combinations. As explained in the code of the extension:
			//If separateStimulusSelection is 'complete', it means that for each prime-target combination, the program will exhaust all the prime-target stimulus combinations 
			//before repeating a stimulus-stimulus combination again. 
			//If separateStimulusSelection is 'partial', it means that the program will select the prime and target stimuli randomly without repetition for each prime-target combination until exhaustion
			//If separateStimulusSelection is 'none' it means that the program will select the stimuli randomly without repetition for the whole task.
			//
			//For example, if a prime category has the items A, B, and C = random selection without repetition (i.e., 'none') will not select the same stimulus twice until the other stimuli of the same prime or target category are selected. 
			//If this parameter is set to 'partial', after selecting the prime stimulus A with a target of the category 'positive', 'A' will not be selected again in trials with 'positive' targets, 
			//until B and C are also selected. However, 'A' might appear as prime for other target because their selection is separate. 
			//If this parameter is set to 'none', then 'A' will not be selected in any trial, until 'B' and 'C' are also selected.
			//If this parameter is set to 'complete', then 'partial' would apply, but, the selection would also make sure that no stimulus-stimulus 
			//combination will repeat within the same prime-target category combination, until all the other combinations have been selected.

			separateStimulusSelection : 'partial', 
	

After some testing in the upcoming weeks, I will add that information to our main documentation page for the available extensions. 

Yoav
Reply all
Reply to author
Forward
0 new messages