Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

Random dot motion paradigm with flicker - timing benchmarks

Hi,

I want to use random dot motion - like design for one of my next experiments. More specifically, I want to use four "clouds", each made of 75 moving stimuli . The stimuli will be simple objects of different shapes (for a similar design see here). Additionally, the presentation of these moving clouds will flicker with each at a different frequency .

My question is whether OpenSesame can handle this kind of design while still ensuring proper stimulus timing. Particularly of the correct timing of the flicker is vital for the task. Has anyone done any benchmarking using similar tasks? Does anyone have recommendations concerning the best way to optimize the script so as to minimize timing problems?

I intend to program the clouds using PsychoPy's ElementArray function with a custom shape textmask and running OpenSesame on the PsychoPy backend. In a loop I am going to update the position of each stimulus of each cloud frame by frame. Flickering would be induced by blanking frames depending on the flicker frequency.

Comments

  • Hi,

    No testing done on my end, but if you take advantage of the prepare-run strategy, I would expect the timing to work. You probably would have to prepare all the canvases in advance and then show them in succession at the rate you intend. Preparation would take quite a bit of time I suppose, but if ITI is not critical for your design, this shouldn't matter.
    Why don't you make a small script to check the limits of what you can do. Something along the lines of this:

    # assuming all stimuli behave the same. If you want flicker subsets, it becomes a little more complex obviously
    # I haven't tested it myself. But I'm a very sure, you will have a great time doing it :)
    import random
    w = 20
    h = 10
    canvasses = []
    for i in range(100):
         canvasses.append(canvas()) 
    trials = []
    for cv in canvasses(100):
        for i in range(100):
            x = random.randint(-var.width,var.width)
            y = random.randint(-var.height,var.width)
            col = random.choice(['red','blue'])
            cv.rect(x,y,w,h,,color = col,Fill = True)
        trial.append(cv)
    
    # and in the run phase
    for cv in trial:
        cv.show()
        clock.sleep(100)
    

    Good luck,

    Eduard

Sign In or Register to comment.