Howdy, Stranger!

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

Supported by

[open] Dynamic Stimulus

edited November 2014 in OpenSesame

In my experiment, I would like to create a scenario in which a stimulus moves from one point to another point on the screen after subjects’ command. I try to explain it better: on the screen, 4 horizontal positions are defined (A, B, C, D). A circle is in the position A. Immediately after subjects press a key, the circle has to jump at the position B; thus the same from the position B to C and to the position C to D; afterall the circle comes back at the position A in order to start again the path. I would like to repeat this sequence for five times and to collect the RTs from the first movement to the last one.
Is constructing this kind of scenario in OpenSesame possible? Has anyone already done something like that?

Thank you,

Comments

  • edited 6:18AM

    Hello Federica,

    You can build this experiment in different ways. I suggest following:

    1) Creating the sequence of the circle jumping in circles.

    • Add a loop element to your experiment, in which you include an inline_script and a logger - item.
    • In the variable assistant you define a variable that does the counting for you a goes from 0 to (number of circles x number of different positions on the screen) -1 , so in your case from 0 to 19
    • In the prepare_phaseof your inline_scriptyou define a list with all screen positions, at which the stimulus can appear in the order you want it to jump. Then you open a new canvas and draw your stimulus on it at the current position. For this you might want to use the "modulo"

    e.g. like so:

    # prepare phase
    from openexp.canvas import canvas
    list = [pos1, pos2,pos3,pos4]
    
    # the "%" is the modulo, it returns the rest of a division, e.g. 3%4 = 3
    # exp.Var is the variable the loop is running over
    current_pos = list[exp.Var %4] 
    
    my_canvas = canvas(exp)
    # this is just conceptual, use a canvas function that draws what you need
    my_canvas.drawStim(position = current_pos)
    
    # run_phase
    my_canvas.show()
    

    2) Getting the reaction time between first and last keypress

    The general idea of how you can do this, recording the time when first and last keypress occurred, subtract first from latter and log the result.


    from openexp.keyboard import keyboard # timeout defines for how long you want to wait for the response my_keyboard = keyboard(exp, timeout=10000) response, timestamp = my_keyboard.get_key() if exp.Var == 0: # first iteration exp.set('start_time', timestamp) elif exp.Var == 19: # last iteration exp.set('response_time', timestamp - exp.start_time)

    Most of the example code, I took from the documentation pages of opensesame, so if anything is unclear, you will find more information about the functions I used there.

    Let us know if you need more help,

    Eduard

    Buy Me A Coffee

Sign In or Register to comment.