Note
Go to the end to download the full example code.
ProgressBar demo#
This example shows how to display progress between trials using
expyfun.visual.ProgressBar
.
exp_name: name
date: 2024-11-19 15_32_20.321104
file: /home/circleci/project/examples/experiments/progress_bar.py
participant: foo
session: foo
import numpy as np
import expyfun.analyze as ea
from expyfun import ExperimentController, building_doc
from expyfun.visual import ProgressBar
n_trials = 6
max_wait = 0.1 if building_doc else np.inf
wait_dur = 0.1 if building_doc else 0.5
with ExperimentController(
"name",
version="dev",
window_size=[800, 600],
full_screen=False,
session="foo",
participant="foo",
) as ec:
# initialize the progress bar
pb = ProgressBar(ec, [0, -0.1, 1.5, 0.1], units="norm")
ec.screen_prompt(
"Press the number shown on the screen. Start by pressing" " 1.",
font_size=16,
live_keys=[1],
max_wait=max_wait,
)
for n in np.arange(n_trials) + 1:
# subject does some task
number = np.random.randint(1, 5)
ec.screen_text(str(number), wrap=False)
ec.flip()
ec.wait_one_press(live_keys=[number], max_wait=max_wait)
ec.flip()
ec.wait_secs(wait_dur)
# only show progress bar every other trial
if n % 2 == 0:
# calculate percent done and update the bar object
percent = int(n * 100 / n_trials)
pb.update_bar(percent)
# display the progress bar with some text
ec.screen_text(
f"You've completed {percent} %. Press any key to proceed." "",
[0, 0.1],
wrap=False,
font_size=16,
)
pb.draw()
if n == 4:
screenshot = ec.screenshot()
ec.flip()
# subject uses any key press to proceed
ec.wait_one_press(max_wait=max_wait)
ec.screen_text("This example is complete.")
ec.flip()
ec.wait_secs(1)
ea.plot_screen(screenshot)
Total running time of the script: (0 minutes 2.982 seconds)