Howdy, Stranger!

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

Supported by

[open] controlling iterations of learning loop

edited March 2014 in OpenSesame

My psycholinguistic experiment will teach participants words in a new language and test their memory/knowledge of these items. I've defined the learning phase as a loop and sequence with pictures (sketchpad) and sounds (sampler) and there is no response required from the participants. Following the learning phase, participants complete a criterion test where a picture (sketchpad) is displayed and a sound (sampler) heard. Participants use the keyboard to indicate whether the picture/sound pair match. If they achieve less than 90% accuracy, they are to return to the beginning of the learning phase and repeat the entire experiment over again.

My problem is that I haven't been able to figure out how to go back to the beginning and start over! The learning phase works, the criterion test works, feedback on [acc] indicates whether they are finished or need to do it again, I just don't know how to say "start again" in OpenSesame.

Thanks,
Rhonda

Comments

  • edited 2:57PM

    Hi Rhonda,

    There's not really a start-again option, but there are a few ways to emulate this behavior.

    One option is to put the part of the experiment of the experiment that you want to repeat inside a loop and set the repeat value of this loop really high (say, 10000). Then, under 'Show advanced options', you can use a break-if statement to break the loop as soon as the participant reaches the desired criterion. For example, a statement like [acc] >= 90. See also:

    Another option, which offers a bit more flexibility, is to use an inline_script to restart the to-be-repeated part of the experiment programmatically until some criterion is met. Something like:

    item_to_repeat = 'block_sequence' # Specify the to-be-repeated item
    while self.get('acc') < 90:
        exp.items[item_to_repeat].prepare()
        exp.items[item_to_repeat].run()
    

    Cheers!
    Sebastiaan

Sign In or Register to comment.