ec.screen_prompt('Welcome to the experiment!\n\nFirst, we will ' 'perform a screen calibration.\n\nPress a button ' 'to continue.') el.calibrate() # by default this starts recording EyeLink data ec.screen_prompt('Excellent! Now, follow the red circle around the edge ' 'of the big white circle.\n\nPress a button to ' 'continue') # make some circles to be drawn radius = 7.5 # degrees targ_rad = 0.2 # degrees theta = np.linspace(np.pi / 2., 2.5 * np.pi, 200) x_pos, y_pos = radius * np.cos(theta), radius * np.sin(theta) big_circ = visual.Circle(ec, radius, (0, 0), units='deg', fill_color=None, line_color='white', line_width=3.0) targ_circ = visual.Circle(ec, targ_rad, (x_pos[0], y_pos[0]), units='deg', fill_color='red') fix_pos = (x_pos[0], y_pos[0]) # start out by waiting for a 1 sec fixation at the start big_circ.draw() targ_circ.draw() screenshot = ec.screenshot() ec.identify_trial(ec_id='Circle', ttl_id=[0], el_id=[0]) ec.start_stimulus() # automatically stamps to EL if not el.wait_for_fix(fix_pos, 1., max_wait=5., units='deg'):
def test_visuals(hide_window): """Test EC visual methods.""" with ExperimentController('test', **std_kwargs) as ec: pytest.raises(TypeError, visual.Circle, ec, n_edges=3.5) pytest.raises(ValueError, visual.Circle, ec, n_edges=3) circ = visual.Circle(ec) circ.draw() pytest.raises(ValueError, circ.set_radius, [1, 2, 3]) pytest.raises(ValueError, circ.set_pos, [1]) pytest.raises(ValueError, visual.Triangle, ec, [5, 6]) tri = visual.Triangle(ec, [[-1, 0, 1], [-1, 1, -1]], units='deg', line_width=1.0) tri.draw() rect = visual.Rectangle(ec, [0, 0, 1, 1], line_width=1.0) rect.draw() diamond = visual.Diamond(ec, [0, 0, 1, 1], line_width=1.0) diamond.draw() pytest.raises(TypeError, visual.ConcentricCircles, ec, colors=dict()) pytest.raises(TypeError, visual.ConcentricCircles, ec, colors=np.array([])) pytest.raises(ValueError, visual.ConcentricCircles, ec, radii=[[1]]) pytest.raises(ValueError, visual.ConcentricCircles, ec, radii=[1]) fix = visual.ConcentricCircles(ec, radii=[1, 2, 3], colors=['w', 'k', 'y']) fix.set_pos([0.5, 0.5]) fix.set_radius(0.1, 1) fix.set_radii([0.1, 0.2, 0.3]) fix.set_color('w', 1) fix.set_colors(['w', 'k', 'k']) fix.set_colors(('w', 'k', 'k')) pytest.raises(IndexError, fix.set_color, 'w', 3) pytest.raises(ValueError, fix.set_colors, ['w', 'k']) pytest.raises(ValueError, fix.set_colors, np.array(['w', 'k', 'k'])) pytest.raises(IndexError, fix.set_radius, 0.1, 3) pytest.raises(ValueError, fix.set_radii, [0.1, 0.2]) fix.draw() fix_2 = visual.FixationDot(ec) fix_2.draw() pytest.raises(ValueError, rect.set_pos, [0, 1, 2]) for shape in ((3, 3, 3), (3, 3, 4), (3, 3), (3, ), (3, ) * 4): data = np.ones(shape) if len(shape) not in (2, 3): pytest.raises(RuntimeError, visual.RawImage, ec, data) else: img = visual.RawImage(ec, data) print(img.bounds) # test bounds assert_equal(img.scale, 1) # test get_rect imgrect = visual.Rectangle(ec, img.get_rect()) assert_equal(imgrect._points['fill'][(0, 2, 0, 1), (0, 0, 1, 1)], img.bounds) img.draw() line = visual.Line(ec, [[0, 1], [1, 0]]) line.draw() pytest.raises(ValueError, line.set_line_width, 100) line.set_line_width(2) line.draw() pytest.raises(ValueError, line.set_coords, [0]) line.set_coords([0, 1]) ec.set_background_color('black') text = visual.Text(ec, 'Hello {color (255 0 0 255)}Everybody!', pos=[0, 0], color=[1, 1, 1], wrap=False) text.draw() text.set_color(None) text.draw() text = visual.Text(ec, 'Thank you, come again.', pos=[0, 0], color='white', attr=False) text.draw() text.set_color('red') text.draw() bar = visual.ProgressBar(ec, [0, 0, 1, .2]) bar = visual.ProgressBar(ec, [0, 0, 1, 1], units='pix') bar.update_bar(.5) bar.draw() pytest.raises(ValueError, visual.ProgressBar, ec, [0, 0, 1, .1], units='deg') pytest.raises(ValueError, visual.ProgressBar, ec, [0, 0, 1, .1], colors=['w']) pytest.raises(ValueError, bar.update_bar, 500)
full_screen=False, stim_db=75, noise_db=45, participant='s', session='0', output_dir=None, suppress_resamp=True, check_rms=None, version='9c4bcea') as ec: square = visual.Rectangle(ec, [0, 0, 10, 10], units='deg') ec.screen_text('expy_standard_setup_test.', wrap=False) ec.set_background_color(bg_color) fix = visual.FixationDot(ec, colors=[fix_color, bg_color]) circ = visual.Circle(ec, radius=1, units='deg', line_color=fix_color, fill_color=None) strs = ', '.join(token.capitalize() for token in p['tokens']) targ_text = visual.Text(ec, strs, pos=[0, v_off], units='deg', color=fix_color) # actual experiment ec.set_visible(False) bi = get_keyboard_input('Enter block number (%s): ' % 1, 1, int) - 1 session = int(ec.session) - 1 if ec.session != '' else 0 while 0 <= bi < len(p['block_trials']): # start of each block
def test_visuals(): """Test EC visual methods """ with ExperimentController('test', **std_kwargs) as ec: assert_raises(TypeError, visual.Circle, ec, n_edges=3.5) assert_raises(ValueError, visual.Circle, ec, n_edges=3) circ = visual.Circle(ec) circ.draw() assert_raises(ValueError, circ.set_radius, [1, 2, 3]) assert_raises(ValueError, circ.set_pos, [1]) assert_raises(ValueError, visual.Triangle, ec, [5, 6]) tri = visual.Triangle(ec, [[-1, 0, 1], [-1, 1, -1]], units='deg', line_width=1.0) tri.draw() rect = visual.Rectangle(ec, [0, 0, 1, 1], line_width=1.0) rect.draw() diamond = visual.Diamond(ec, [0, 0, 1, 1], line_width=1.0) diamond.draw() assert_raises(TypeError, visual.ConcentricCircles, ec, colors=dict()) assert_raises(TypeError, visual.ConcentricCircles, ec, colors=np.array([])) assert_raises(ValueError, visual.ConcentricCircles, ec, radii=[[1]]) assert_raises(ValueError, visual.ConcentricCircles, ec, radii=[1]) fix = visual.ConcentricCircles(ec, radii=[1, 2, 3], colors=['w', 'k', 'y']) fix.set_pos([0.5, 0.5]) fix.set_radius(0.1, 1) fix.set_radii([0.1, 0.2, 0.3]) fix.set_color('w', 1) fix.set_colors(['w', 'k', 'k']) fix.set_colors(('w', 'k', 'k')) assert_raises(IndexError, fix.set_color, 'w', 3) assert_raises(ValueError, fix.set_colors, ['w', 'k']) assert_raises(ValueError, fix.set_colors, np.array(['w', 'k', 'k'])) assert_raises(IndexError, fix.set_radius, 0.1, 3) assert_raises(ValueError, fix.set_radii, [0.1, 0.2]) fix.draw() fix_2 = visual.FixationDot(ec) fix_2.draw() assert_raises(ValueError, rect.set_pos, [0, 1, 2]) img = visual.RawImage(ec, np.ones((3, 3, 4))) print(img.bounds) # test bounds assert_equal(img.scale, 1) img.draw() line = visual.Line(ec, [[0, 1], [1, 0]]) line.draw() assert_raises(ValueError, line.set_line_width, 100) line.set_line_width(2) line.draw() assert_raises(ValueError, line.set_coords, [0]) line.set_coords([0, 1]) ec.set_background_color('black') text = visual.Text(ec, 'Hello {color (255 0 0 255)}Everybody!', pos=[0, 0], color=[1, 1, 1], wrap=False) text.draw() text.set_color(None) text.draw() text = visual.Text(ec, 'Thank you, come again.', pos=[0, 0], color='white', attr=False) text.draw() text.set_color('red') text.draw() # test video std_kwargs.update(dict(enable_video=True, window_size=(640, 480))) video_path = fetch_data_file('video/example-video.mp4') with ExperimentController('test', **std_kwargs) as ec: ec.load_video(video_path) ec.video.play() assert_raises(ValueError, ec.video.set_scale, 'foo') assert_raises(ValueError, ec.video.set_scale, -1) ec.video.set_scale('fill') ec.video.set_scale('fit') ec.video.set_scale(0.5) ec.video.set_pos(pos=(0.1, 0), units='norm') ec.wait_secs(0.2) ec.video.pause() ec.delete_video()
ec.screen_text('hello') # make an image with alpha the x-dimension (columns), RGB upward img_buffer = np.zeros((120, 100, 4)) img_buffer[:, :50, 3] = 1.0 img_buffer[:, 50:, 3] = 0.5 img_buffer[0] = 1 for ii in range(3): img_buffer[ii * 40:(ii + 1) * 40, :, ii] = 1.0 img = visual.RawImage(ec, img_buffer, scale=2.) # make a line, rectangle, diamond, and circle line = visual.Line(ec, [[-2, 2, 2, -2], [-2, 2, -2, -2]], units='deg', line_color='w', line_width=2.0) rect = visual.Rectangle(ec, [0, 0, 2, 2], units='deg', fill_color='y') diamond = visual.Diamond(ec, [0, 0, 4, 4], units='deg', fill_color=None, line_color='gray', line_width=2.0) circle = visual.Circle(ec, 1, units='deg', line_color='w', fill_color='k', line_width=2.0) # do the drawing, then flip for obj in [img, line, rect, diamond, circle]: obj.draw() screenshot = ec.screenshot() # must be called *before* the flip ec.flip() ec.wait_for_presses(0.5) plt.ion() ea.plot_screen(screenshot)
def test_visuals(): """Test EC visual methods.""" with ExperimentController('test', **std_kwargs) as ec: assert_raises(TypeError, visual.Circle, ec, n_edges=3.5) assert_raises(ValueError, visual.Circle, ec, n_edges=3) circ = visual.Circle(ec) circ.draw() assert_raises(ValueError, circ.set_radius, [1, 2, 3]) assert_raises(ValueError, circ.set_pos, [1]) assert_raises(ValueError, visual.Triangle, ec, [5, 6]) tri = visual.Triangle(ec, [[-1, 0, 1], [-1, 1, -1]], units='deg', line_width=1.0) tri.draw() rect = visual.Rectangle(ec, [0, 0, 1, 1], line_width=1.0) rect.draw() diamond = visual.Diamond(ec, [0, 0, 1, 1], line_width=1.0) diamond.draw() assert_raises(TypeError, visual.ConcentricCircles, ec, colors=dict()) assert_raises(TypeError, visual.ConcentricCircles, ec, colors=np.array([])) assert_raises(ValueError, visual.ConcentricCircles, ec, radii=[[1]]) assert_raises(ValueError, visual.ConcentricCircles, ec, radii=[1]) fix = visual.ConcentricCircles(ec, radii=[1, 2, 3], colors=['w', 'k', 'y']) fix.set_pos([0.5, 0.5]) fix.set_radius(0.1, 1) fix.set_radii([0.1, 0.2, 0.3]) fix.set_color('w', 1) fix.set_colors(['w', 'k', 'k']) fix.set_colors(('w', 'k', 'k')) assert_raises(IndexError, fix.set_color, 'w', 3) assert_raises(ValueError, fix.set_colors, ['w', 'k']) assert_raises(ValueError, fix.set_colors, np.array(['w', 'k', 'k'])) assert_raises(IndexError, fix.set_radius, 0.1, 3) assert_raises(ValueError, fix.set_radii, [0.1, 0.2]) fix.draw() fix_2 = visual.FixationDot(ec) fix_2.draw() assert_raises(ValueError, rect.set_pos, [0, 1, 2]) img = visual.RawImage(ec, np.ones((3, 3, 4))) print(img.bounds) # test bounds assert_equal(img.scale, 1) img.draw() line = visual.Line(ec, [[0, 1], [1, 0]]) line.draw() assert_raises(ValueError, line.set_line_width, 100) line.set_line_width(2) line.draw() assert_raises(ValueError, line.set_coords, [0]) line.set_coords([0, 1]) ec.set_background_color('black') text = visual.Text(ec, 'Hello {color (255 0 0 255)}Everybody!', pos=[0, 0], color=[1, 1, 1], wrap=False) text.draw() text.set_color(None) text.draw() text = visual.Text(ec, 'Thank you, come again.', pos=[0, 0], color='white', attr=False) text.draw() text.set_color('red') text.draw()