diff --git a/demo/skewed_nback.py b/demo/skewed_nback.py index f8ce3be..1395b7c 100644 --- a/demo/skewed_nback.py +++ b/demo/skewed_nback.py @@ -1,20 +1,42 @@ import expyriment +from expyriment import design, control, stimuli, misc from skewed_random import SequenceGenerator -stimuli_list = SequenceGenerator().generate() +nback_sequence = SequenceGenerator().generate() -exp = expyriment.control.initialize() -exp.data_variable_names = ["stimulus", "pressed_key", "rt"] +exp = design.Experiment("Skewed N-Back Task") +control.initialize(exp) +exp.data_variable_names = ["block", "stimulus", "pressed_key", "rt"] + + +fixation = stimuli.FixCross() +fixation.preload() + +# left and right arrow keys for responses +response_keys = [misc.constants.K_LEFT, misc.constants.K_RIGHT] expyriment.control.start(exp) -for stimulus in stimuli_list: - target = expyriment.stimuli.TextLine(text=str(stimulus), text_size=200) - exp.clock.wait(500 - expyriment.stimuli.FixCross().present() - target.preload()) - target.present() - pressed_key, rt = exp.keyboard.wait([expyriment.misc.constants.K_LEFT, expyriment.misc.constants.K_RIGHT]) - exp.data.add([stimulus, pressed_key, rt]) - exp.clock.wait(1000 - expyriment.stimuli.BlankScreen().present() - target.unload()) +# initialize three blocks +for b in range(0, 2): + block = design.Block() + block.set_factor("block", b) + for item in nback_sequence: + trial = design.Trial() + trial.set_factor("stimulus", item) + stim = stimuli.TextLine(item, text_size=200) + stim.preload() + trial.add_stimulus(stim) + block.add_trial(trial, random_position=False) + exp.add_block(block) + +for block in exp.blocks: + for trial in block.trials: + exp.clock.wait(1000 - fixation.present()) + trial.stimuli[0].present() + pressed_key, rt = exp.keyboard.wait([expyriment.misc.constants.K_LEFT, expyriment.misc.constants.K_RIGHT]) + exp.data.add([block.get_factor("block"), trial.get_factor("stimulus"), pressed_key, rt]) + exp.clock.wait(1000 - expyriment.stimuli.BlankScreen().present() - trial.stimuli[0].unload()) expyriment.control.end("Goodbye!", goodbye_delay=1000)