penn controller for (visual) masked priming?

PennController for IBEX Forums Support penn controller for (visual) masked priming?

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #3253
    roberto
    Guest

    Hello,

    I am about to run on-line visual masked priming experiments and I was wondering if PennController may be a good solution. Do you have any insight about whether that may be the case?

    Thanks!
    -roberto

    #3256
    Jeremy
    Keymaster

    Hi Roberto,

    I have not run masked priming myself, but I seem to remember hearing of people doing it with Ibex.

    As any javascript-based solution, Ibex, and therefore PennController as well, runs locally, on the client side, which means that quality of connection shouldn’t be an issue, as long as you make sure that all resources are preloaded before running trials.

    Then there’s the question of refresh rate. With online experiments, you really have no control over the participant’s monitor, but I doubt many people run under 60Hz nowadays, which still gives you a 16ms time window theoretically, it’s not bad.

    Then enters the question of performance, and the question of alignment between your script’s frame-rate and the monitor’s refreshing cycle. PennController’s Timer elements currently use JavaScript’s setTimeout function which is far from perfect and can be problematic for highly accurate measures. I wouldn’t rely on it if you need to compose with time windows under about 30ms (missing one refresh rate, you get 2 times 16ms = 32ms). Note that you can estimate how much time really elapsed if you call .settings.log() on your Timer and then look at the difference between the timestamps of the results lines corresponding to the Start and End events.

    A better solution might be to rely on JavaScript’s request​Animation​Frame function, which I plan on using instead of setTimeout for Timer elements in future releases of PennController. I could prioritize working on this feature if you think the current Timer element will give you too poor performances regarding your masked priming needs.

    In any case, it’s always a good idea to pilot this kind of things first. I would say, if you think you’d be fine with time windows between 40ms and 60ms, then maybe try to run a few participants and look at the actual data. The considerations above hold true of any javascript-based solution.

    Let me know if you have any questions.

    Best,
    Jeremy

    #3262
    robpetrosino
    Participant

    Hi Jeremy,

    many thanks for your response.

    PennController’s Timer elements currently use JavaScript’s setTimeout function which is far from perfect and can be problematic for highly accurate measures. I wouldn’t rely on it if you need to compose with time windows under about 30ms (missing one refresh rate, you get 2 times 16ms = 32ms). Note that you can estimate how much time really elapsed if you call .settings.log() on your Timer and then look at the difference between the timestamps of the results lines corresponding to the Start and End events.

    Yes, this is a general problem with on-line experiments and it becomes crucial when the results dramatically depend on it! However, I guess that, as long as the prime word is masked (i.e., between 40 and 60 ms), I could be happy.

    A better solution might be to rely on JavaScript’s request​Animation​Frame function, which I plan on using instead of setTimeout for Timer elements in future releases of PennController. I could prioritize working on this feature if you think the current Timer element will give you too poor performances regarding your masked priming needs.

    I must say, I do not know much about JavaScript, but if you think that requestAnimationFrame is a better and safer option, I’ll trust you!

    I’ll give it a try in the weekend and see how it looks like. I’ll keep you posted!

Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.