From f1afdcf76c3b051a7e9fcbb6a992a863c29210aa Mon Sep 17 00:00:00 2001 From: Joris Vincent Date: Mon, 12 Dec 2022 09:07:57 +0100 Subject: [PATCH] Demo linear gratings, frames --- demo/illusions/grating_parameters.ipynb | 87 +++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/demo/illusions/grating_parameters.ipynb b/demo/illusions/grating_parameters.ipynb index 43c4bfff..10e7596b 100644 --- a/demo/illusions/grating_parameters.ipynb +++ b/demo/illusions/grating_parameters.ipynb @@ -90,6 +90,93 @@ "# Show\n", "display(ui, out)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from stimuli.components.grating import square_wave as linear\n", + "from stimuli.components.frame import frames\n", + "\n", + "# Define widgets\n", + "w_length = iw.IntSlider(value=8.0, min=1, max=10, description=\"heigh/width [deg]\")\n", + "w_ppd = iw.IntSlider(value=32, min=1, max=64, description=\"ppd\")\n", + "\n", + "w_frequency = iw.FloatSlider(value=2.0, min=0.1, max=3.0, description=\"frequency\")\n", + "w_phases = iw.IntSlider(value=4, min=0, max=10, description=\"N phases\")\n", + "w_phase_width = iw.FloatSlider(value=1.0, min=0., max=4.0, description=\"phase_width\")\n", + "w_use_which = iw.SelectMultiple(options=['frequency', 'n_phases', 'phase_width'], value=['n_phases'], description='use param(s):')\n", + "w_period = iw.ToggleButtons(options=[\"ignore\", \"full\", \"half\"], value=\"ignore\", button_style=\"\", description=\"ensure period\")\n", + "\n", + "# Layout\n", + "b_resolution = iw.HBox([w_length, w_ppd])\n", + "b_grating_params = iw.VBox([iw.HBox([w_use_which, iw.VBox([w_frequency, w_phases, w_phase_width])]),w_period])\n", + "ui = iw.VBox([b_resolution, b_grating_params])\n", + "\n", + "# Function for resolving\n", + "def show_gratings(\n", + " length=None,\n", + " visual_angle=None,\n", + " ppd=None,\n", + " frequency=None,\n", + " n_phases=None,\n", + " phase_width=None,\n", + " period=\"ignore\",\n", + " use_params=None,\n", + "):\n", + " stimuli = {\n", + " \"horizontal\": linear(\n", + " shape=(length, length),\n", + " visual_size=(visual_angle, visual_angle),\n", + " ppd=ppd,\n", + " frequency=frequency if \"frequency\" in use_params else None,\n", + " n_bars=n_phases if \"n_phases\" in use_params else None,\n", + " bar_width=phase_width if \"phase_width\" in use_params else None,\n", + " period=period,\n", + " orientation=\"horizontal\",\n", + " ),\n", + " \"vertical\": linear(\n", + " shape=(length, length),\n", + " visual_size=(visual_angle, visual_angle),\n", + " ppd=ppd,\n", + " frequency=frequency if \"frequency\" in use_params else None,\n", + " n_bars=n_phases if \"n_phases\" in use_params else None,\n", + " bar_width=phase_width if \"phase_width\" in use_params else None,\n", + " period=period,\n", + " orientation=\"vertical\",\n", + " ),\n", + " \"frames\": frames(\n", + " shape=(length, length),\n", + " visual_size=(visual_angle, visual_angle),\n", + " ppd=ppd,\n", + " frequency=frequency if \"frequency\" in use_params else None,\n", + " n_frames=n_phases if \"n_phases\" in use_params else None,\n", + " frame_width=phase_width if \"phase_width\" in use_params else None,\n", + " period=period,\n", + " )\n", + " }\n", + " plot_stimuli(stimuli)\n", + "\n", + "\n", + "# Set interactivity\n", + "out = iw.interactive_output(\n", + " show_gratings,\n", + " {\n", + " \"visual_angle\": w_length,\n", + " \"ppd\": w_ppd,\n", + " \"frequency\": w_frequency,\n", + " \"n_phases\": w_phases,\n", + " \"phase_width\": w_phase_width,\n", + " \"period\": w_period,\n", + " \"use_params\": w_use_which,\n", + " },\n", + ")\n", + "\n", + "# Show\n", + "display(ui, out)" + ] } ], "metadata": {