update,
This commit is contained in:
@@ -0,0 +1,248 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# So easy, *voilà*!\n",
|
||||
"\n",
|
||||
"In this example notebook, we demonstrate how Voilà can render Jupyter notebooks with interactions requiring a roundtrip to the kernel."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Jupyter Widgets"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "9d234bc95ca5460ea86e664a957764e3",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(FloatSlider(value=4.0, description='$x$'), FloatText(value=16.0, description='$x^2$', disabled=…"
|
||||
]
|
||||
},
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import ipywidgets as widgets\n",
|
||||
"\n",
|
||||
"slider = widgets.FloatSlider(description='$x$')\n",
|
||||
"text = widgets.FloatText(disabled=True, description='$x^2$')\n",
|
||||
"\n",
|
||||
"def compute(*ignore):\n",
|
||||
" text.value = str(slider.value ** 2)\n",
|
||||
"\n",
|
||||
"slider.observe(compute, 'value')\n",
|
||||
"\n",
|
||||
"slider.value = 4\n",
|
||||
"\n",
|
||||
"widgets.VBox([slider, text])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Basic outputs of code cells"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>sepal_length</th>\n",
|
||||
" <th>sepal_width</th>\n",
|
||||
" <th>petal_length</th>\n",
|
||||
" <th>petal_width</th>\n",
|
||||
" <th>species</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>5.1</td>\n",
|
||||
" <td>3.5</td>\n",
|
||||
" <td>1.4</td>\n",
|
||||
" <td>0.2</td>\n",
|
||||
" <td>setosa</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>4.9</td>\n",
|
||||
" <td>3.0</td>\n",
|
||||
" <td>1.4</td>\n",
|
||||
" <td>0.2</td>\n",
|
||||
" <td>setosa</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>4.7</td>\n",
|
||||
" <td>3.2</td>\n",
|
||||
" <td>1.3</td>\n",
|
||||
" <td>0.2</td>\n",
|
||||
" <td>setosa</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>4.6</td>\n",
|
||||
" <td>3.1</td>\n",
|
||||
" <td>1.5</td>\n",
|
||||
" <td>0.2</td>\n",
|
||||
" <td>setosa</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>5.0</td>\n",
|
||||
" <td>3.6</td>\n",
|
||||
" <td>1.4</td>\n",
|
||||
" <td>0.2</td>\n",
|
||||
" <td>setosa</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>145</th>\n",
|
||||
" <td>6.7</td>\n",
|
||||
" <td>3.0</td>\n",
|
||||
" <td>5.2</td>\n",
|
||||
" <td>2.3</td>\n",
|
||||
" <td>virginica</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>146</th>\n",
|
||||
" <td>6.3</td>\n",
|
||||
" <td>2.5</td>\n",
|
||||
" <td>5.0</td>\n",
|
||||
" <td>1.9</td>\n",
|
||||
" <td>virginica</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>147</th>\n",
|
||||
" <td>6.5</td>\n",
|
||||
" <td>3.0</td>\n",
|
||||
" <td>5.2</td>\n",
|
||||
" <td>2.0</td>\n",
|
||||
" <td>virginica</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>148</th>\n",
|
||||
" <td>6.2</td>\n",
|
||||
" <td>3.4</td>\n",
|
||||
" <td>5.4</td>\n",
|
||||
" <td>2.3</td>\n",
|
||||
" <td>virginica</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>149</th>\n",
|
||||
" <td>5.9</td>\n",
|
||||
" <td>3.0</td>\n",
|
||||
" <td>5.1</td>\n",
|
||||
" <td>1.8</td>\n",
|
||||
" <td>virginica</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>150 rows × 5 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" sepal_length sepal_width petal_length petal_width species\n",
|
||||
"0 5.1 3.5 1.4 0.2 setosa\n",
|
||||
"1 4.9 3.0 1.4 0.2 setosa\n",
|
||||
"2 4.7 3.2 1.3 0.2 setosa\n",
|
||||
"3 4.6 3.1 1.5 0.2 setosa\n",
|
||||
"4 5.0 3.6 1.4 0.2 setosa\n",
|
||||
".. ... ... ... ... ...\n",
|
||||
"145 6.7 3.0 5.2 2.3 virginica\n",
|
||||
"146 6.3 2.5 5.0 1.9 virginica\n",
|
||||
"147 6.5 3.0 5.2 2.0 virginica\n",
|
||||
"148 6.2 3.4 5.4 2.3 virginica\n",
|
||||
"149 5.9 3.0 5.1 1.8 virginica\n",
|
||||
"\n",
|
||||
"[150 rows x 5 columns]"
|
||||
]
|
||||
},
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')\n",
|
||||
"iris"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# So easy, *voilà*!\n",
|
||||
"\n",
|
||||
"In this example notebook, we demonstrate how Voilà can render custom Jupyter widgets such as [bqplot](https://github.com/bloomberg/bqplot). "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import warnings\n",
|
||||
"warnings.filterwarnings('ignore')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "f771faf1649e425480af29391b9a238e",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Figure(axes=[Axis(scale=LinearScale()), Axis(orientation='vertical', scale=LinearScale())], fig…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"from bqplot import pyplot as plt\n",
|
||||
"\n",
|
||||
"plt.figure(1, title='Line Chart')\n",
|
||||
"np.random.seed(0)\n",
|
||||
"n = 200\n",
|
||||
"x = np.linspace(0.0, 10.0, n)\n",
|
||||
"y = np.cumsum(np.random.randn(n))\n",
|
||||
"plt.plot(x, y)\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
@@ -0,0 +1,202 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"This demo uses Voilà to render a notebook to a custom HTML page using gridstack.js for the layout of each output. In the cell metadata you can change the default cell with and height (in grid units between 1 and 12) by specifying.\n",
|
||||
" * `grid_row`\n",
|
||||
" * `grid_columns`"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"n = 200\n",
|
||||
"\n",
|
||||
"x = np.linspace(0.0, 10.0, n)\n",
|
||||
"y = np.cumsum(np.random.randn(n)*10).astype(int)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import ipywidgets as widgets"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "fb68ca2d6f7f40c2adb9d01d134a4373",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Label(value='Selected: 0')"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"label_selected = widgets.Label(value=\"Selected: 0\")\n",
|
||||
"label_selected"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"grid_columns": 8,
|
||||
"grid_rows": 4
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "227e65a70eab4eb38b0b2f25d8237656",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Figure(axes=[Axis(orientation='vertical', scale=LinearScale()), Axis(scale=LinearScale(max=70.0, min=-131.0))]…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"from bqplot import pyplot as plt\n",
|
||||
"import bqplot\n",
|
||||
"\n",
|
||||
"fig = plt.figure( title='Histogram')\n",
|
||||
"np.random.seed(0)\n",
|
||||
"hist = plt.hist(y, bins=25)\n",
|
||||
"hist.scales['sample'].min = float(y.min())\n",
|
||||
"hist.scales['sample'].max = float(y.max())\n",
|
||||
"display(fig)\n",
|
||||
"fig.layout.width = 'auto'\n",
|
||||
"fig.layout.height = 'auto'\n",
|
||||
"fig.layout.min_height = '300px' # so it shows nicely in the notebook\n",
|
||||
"fig.layout.flex = '1'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"grid_columns": 12,
|
||||
"grid_rows": 6
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "5fee6ee9af0a4dc7a557f8d16a5b7150",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Figure(axes=[Axis(scale=LinearScale()), Axis(orientation='vertical', scale=LinearScale())], fig_margin={'top':…"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"from bqplot import pyplot as plt\n",
|
||||
"import bqplot\n",
|
||||
"\n",
|
||||
"fig = plt.figure( title='Line Chart')\n",
|
||||
"np.random.seed(0)\n",
|
||||
"n = 200\n",
|
||||
"p = plt.plot(x, y)\n",
|
||||
"fig"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fig.layout.width = 'auto'\n",
|
||||
"fig.layout.height = 'auto'\n",
|
||||
"fig.layout.min_height = '300px' # so it shows nicely in the notebook\n",
|
||||
"fig.layout.flex = '1'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"brushintsel = bqplot.interacts.BrushIntervalSelector(scale=p.scales['x'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def update_range(*args):\n",
|
||||
" label_selected.value = \"Selected range {}\".format(brushintsel.selected)\n",
|
||||
" mask = (x > brushintsel.selected[0]) & (x < brushintsel.selected[1])\n",
|
||||
" hist.sample = y[mask]\n",
|
||||
" \n",
|
||||
"brushintsel.observe(update_range, 'selected')\n",
|
||||
"fig.interaction = brushintsel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"celltoolbar": "Edit Metadata",
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Which multiplication table do you want to learn?\n",
|
||||
"\n",
|
||||
"In this example notebook we demonstrate how Voilà can render different Jupyter widgets using [GridspecLayout](https://ipywidgets.readthedocs.io/en/latest/examples/Layout%20Templates.html#Grid-layout)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"scrolled": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "19dcc46af51049c9a9e26568b76aa789",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"GridspecLayout(children=(Dropdown(index=1, layout=Layout(grid_area='widget001'), options=(1, 2, 3, 4, 5, 6, 7,…"
|
||||
]
|
||||
},
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from ipywidgets import GridspecLayout, Button, BoundedIntText, Valid, Layout, Dropdown\n",
|
||||
"\n",
|
||||
"def create_expanded_button(description, button_style):\n",
|
||||
" return Button(description=description, button_style=button_style, layout=Layout(height='auto', width='auto'))\n",
|
||||
" \n",
|
||||
"rows = 11\n",
|
||||
"columns = 6\n",
|
||||
"\n",
|
||||
"gs = GridspecLayout(rows, columns)\n",
|
||||
"\n",
|
||||
"def on_result_change(change):\n",
|
||||
" row = int(change[\"owner\"].layout.grid_row)\n",
|
||||
" gs[row, 5].value = gs[0, 0].value * row == change[\"new\"]\n",
|
||||
" \n",
|
||||
"def on_multipler_change(change):\n",
|
||||
" for i in range(1, rows):\n",
|
||||
" gs[i, 0].description = str(change[\"new\"])\n",
|
||||
" gs[i, 4].max = change[\"new\"] * 10\n",
|
||||
" gs[i, 4].value = 1\n",
|
||||
" gs[i, 4].step = change[\"new\"]\n",
|
||||
" gs[i, 5].value = False\n",
|
||||
"\n",
|
||||
"gs[0, 0] = Dropdown(\n",
|
||||
" options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n",
|
||||
" value=2,\n",
|
||||
")\n",
|
||||
"gs[0, 0].observe(on_multipler_change, names=\"value\")\n",
|
||||
"multiplier = gs[0, 0].value\n",
|
||||
"\n",
|
||||
"for i in range(1, rows):\n",
|
||||
" gs[i, 0] = create_expanded_button(str(multiplier), \"\")\n",
|
||||
" gs[i, 1] = create_expanded_button(\"*\", \"\")\n",
|
||||
" gs[i, 2] = create_expanded_button(str(i), \"info\")\n",
|
||||
" gs[i, 3] = create_expanded_button(\"=\", \"\")\n",
|
||||
"\n",
|
||||
" gs[i, 4] = BoundedIntText(\n",
|
||||
" min=0,\n",
|
||||
" max=multiplier * 10,\n",
|
||||
" layout=Layout(grid_row=str(i)),\n",
|
||||
" value=1,\n",
|
||||
" step=multiplier,\n",
|
||||
" disabled=False\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" gs[i, 5] = Valid(\n",
|
||||
" value=False,\n",
|
||||
" description='Valid!',\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" gs[i, 4].observe(on_result_change, names='value')\n",
|
||||
"\n",
|
||||
"gs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "b6bf609f",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"helloworld\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print('helloworld')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "9b24b4df",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "1cc7f2dc",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# So easy, *voilà*!\n",
|
||||
"\n",
|
||||
"In this example notebook, we demonstrate how Voilà can render notebooks making use of ipywidget's `@interact`."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "954b4c8acda94613bc8dde7e41ad5f9e",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"HBox(children=(VBox(children=(IntSlider(value=0), IntSlider(value=0))), Output()))"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from ipywidgets import HBox, VBox, IntSlider, interactive_output\n",
|
||||
"from IPython.display import display\n",
|
||||
"\n",
|
||||
"a = IntSlider()\n",
|
||||
"b = IntSlider()\n",
|
||||
"\n",
|
||||
"def f(a, b):\n",
|
||||
" print(\"{} * {} = {}\".format(a, b, a * b))\n",
|
||||
"\n",
|
||||
"out = interactive_output(f, { \"a\": a, \"b\": b })\n",
|
||||
"\n",
|
||||
"display(HBox([VBox([a, b]), out]))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
File diff suppressed because one or more lines are too long
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# So easy, *voilà*!\n",
|
||||
"\n",
|
||||
"In this example notebook, we demonstrate how Voilà can render custom Jupyter widgets such as [ipyvolume](https://github.com/maartenbreddels/ipyvolume). "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "AttributeError",
|
||||
"evalue": "module 'collections' has no attribute 'Mapping'",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
|
||||
"Cell \u001b[0;32mIn [2], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mipyvolume\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mipv\u001b[39;00m\n\u001b[1;32m 2\u001b[0m ipv\u001b[38;5;241m.\u001b[39mexamples\u001b[38;5;241m.\u001b[39mexample_ylm();\n",
|
||||
"File \u001b[0;32m~/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.10/site-packages/ipyvolume/__init__.py:4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m__future__\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m absolute_import\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_version\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m __version__\n\u001b[0;32m----> 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m styles\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mwidgets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtransferfunction\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n",
|
||||
"File \u001b[0;32m~/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.10/site-packages/ipyvolume/styles.py:56\u001b[0m\n\u001b[1;32m 47\u001b[0m light \u001b[38;5;241m=\u001b[39m create(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlight\u001b[39m\u001b[38;5;124m\"\u001b[39m, \\\n\u001b[1;32m 48\u001b[0m {\n\u001b[1;32m 49\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbackground-color\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mwhite\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 52\u001b[0m }\n\u001b[1;32m 53\u001b[0m })\n\u001b[1;32m 55\u001b[0m default \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m---> 56\u001b[0m \u001b[43mutils\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdict_deep_update\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdefault\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_defaults\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 57\u001b[0m utils\u001b[38;5;241m.\u001b[39mdict_deep_update(default, light)\n\u001b[1;32m 59\u001b[0m dark \u001b[38;5;241m=\u001b[39m create(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdark\u001b[39m\u001b[38;5;124m\"\u001b[39m, \\\n\u001b[1;32m 60\u001b[0m {\n\u001b[1;32m 61\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbackground-color\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m#000001\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;66;03m# for some reason we cannot set it to black!?!\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 70\u001b[0m }\n\u001b[1;32m 71\u001b[0m })\n",
|
||||
"File \u001b[0;32m~/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.10/site-packages/ipyvolume/utils.py:19\u001b[0m, in \u001b[0;36mdict_deep_update\u001b[0;34m(d, u)\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdict_deep_update\u001b[39m(d, u):\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, v \u001b[38;5;129;01min\u001b[39;00m u\u001b[38;5;241m.\u001b[39mitems():\n\u001b[0;32m---> 19\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(v, \u001b[43mcollections\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMapping\u001b[49m):\n\u001b[1;32m 20\u001b[0m r \u001b[38;5;241m=\u001b[39m dict_deep_update(d\u001b[38;5;241m.\u001b[39mget(k, {}), v)\n\u001b[1;32m 21\u001b[0m d[k] \u001b[38;5;241m=\u001b[39m r\n",
|
||||
"\u001b[0;31mAttributeError\u001b[0m: module 'collections' has no attribute 'Mapping'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import ipyvolume as ipv\n",
|
||||
"ipv.examples.example_ylm();"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
@@ -0,0 +1,289 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "913fbbd3",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# JSON"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "e23193bb",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "4c030553429b482b8a3a0d24347f745c",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Button(description='Output JSON', style=ButtonStyle())"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "31ece561ecab413f832f1d5033de4194",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Output()"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from ipywidgets import Button, Output\n",
|
||||
"from IPython import display\n",
|
||||
"\n",
|
||||
"button = Button(description='Output JSON')\n",
|
||||
"output = Output()\n",
|
||||
"obj = {\n",
|
||||
" \"abcde\": 1234,\n",
|
||||
" \"nested\": list(range(10))\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"@output.capture()\n",
|
||||
"def on_click(change):\n",
|
||||
" display.display(display.JSON(obj))\n",
|
||||
" \n",
|
||||
" \n",
|
||||
"button.on_click(on_click)\n",
|
||||
"display.display(button)\n",
|
||||
"output"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "690bd908",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/json": {
|
||||
"abcde": 1234,
|
||||
"nested": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
]
|
||||
},
|
||||
"text/plain": [
|
||||
"<IPython.core.display.JSON object>"
|
||||
]
|
||||
},
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"application/json": {
|
||||
"expanded": false,
|
||||
"root": "root"
|
||||
}
|
||||
},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"display.JSON(obj)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "97caeade",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Fasta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "27bbbb6c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "60c37cb6500547cf81751809d825af34",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Button(description='Output FASTA', style=ButtonStyle())"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "0cfaf056ab234c0c8c4ff914d8334efb",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Output()"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"fasta_button = Button(description='Output FASTA')\n",
|
||||
"fasta_output = Output()\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def Fasta(data=''):\n",
|
||||
" bundle = {}\n",
|
||||
" bundle['application/vnd.fasta.fasta'] = data\n",
|
||||
" bundle['text/plain'] = data\n",
|
||||
" display.display(bundle, raw=True)\n",
|
||||
" \n",
|
||||
" \n",
|
||||
"@fasta_output.capture()\n",
|
||||
"def on_click(change):\n",
|
||||
" Fasta(\"\"\">SEQUENCE_1\n",
|
||||
"MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG\n",
|
||||
"LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK\n",
|
||||
"IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL\n",
|
||||
"MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL\n",
|
||||
">SEQUENCE_2\n",
|
||||
"SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI\n",
|
||||
"ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH\"\"\")\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"fasta_button.on_click(on_click)\n",
|
||||
"display.display(fasta_button)\n",
|
||||
"fasta_output"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a441bd16",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# GeoJSON"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "31371b2f",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "093f167a6c8642ca9e9bc1cdda6e73d1",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Button(description='Output GeoJSON', style=ButtonStyle())"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "d78a22c950e34fd48c514bddad9c444b",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"Output()"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from IPython.display import GeoJSON\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"geojson_button = Button(description='Output GeoJSON')\n",
|
||||
"geojson_output = Output()\n",
|
||||
"\n",
|
||||
" \n",
|
||||
"@geojson_output.capture()\n",
|
||||
"def on_click(change):\n",
|
||||
" obj = GeoJSON({\n",
|
||||
" \"type\": \"Feature\",\n",
|
||||
" \"geometry\": {\n",
|
||||
" \"type\": \"Point\",\n",
|
||||
" \"coordinates\": [-118.4563712, 34.0163116]\n",
|
||||
" }\n",
|
||||
" })\n",
|
||||
" display.display(obj)\n",
|
||||
" \n",
|
||||
"\n",
|
||||
"geojson_button.on_click(on_click)\n",
|
||||
"display.display(geojson_button)\n",
|
||||
"geojson_output"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "9c0381b4",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "4099a46a",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "ebaa184b-765f-4261-9c5c-285bbde8fad5",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "dfda01818965434d8417413b6c2020d5",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(HBox(children=(Button(description='1', style=ButtonStyle()), Button(description='2', style=Butt…"
|
||||
]
|
||||
},
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import ipywidgets as widgets\n",
|
||||
"def generate(n):\n",
|
||||
" widget = []\n",
|
||||
" for i in range(n):\n",
|
||||
" inner = []\n",
|
||||
" for j in range(n):\n",
|
||||
" inner.append(widgets.Button(description=f'{i*n+j+1}'))\n",
|
||||
" widget.append(widgets.HBox(inner))\n",
|
||||
"\n",
|
||||
" return widgets.VBox(widget)\n",
|
||||
"generate(20)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "8b59589a-7c71-4b1a-896a-b1139cbcf70f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2020-08-18T12:06:29.243603Z",
|
||||
"start_time": "2020-08-18T12:06:29.240780Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import os\n",
|
||||
"from urllib.parse import parse_qs\n",
|
||||
"import IPython.display"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2020-08-18T12:06:29.250356Z",
|
||||
"start_time": "2020-08-18T12:06:29.246161Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"query_string = os.environ.get('QUERY_STRING', '')\n",
|
||||
"parameters = parse_qs(query_string)\n",
|
||||
"print(\"query string parameters:\", parameters)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2020-08-18T12:06:29.258506Z",
|
||||
"start_time": "2020-08-18T12:06:29.253815Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# parameters is a dict of lists\n",
|
||||
"username = parameters.get('username', ['Kim'])[0]\n",
|
||||
"print(f'Hi {username}')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2020-08-18T12:06:29.275717Z",
|
||||
"start_time": "2020-08-18T12:06:29.261315Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"server = os.environ.get('SERVER_NAME', 'localhost') \n",
|
||||
"url = \"http://\" + server\n",
|
||||
"\n",
|
||||
"port = os.environ.get('SERVER_PORT', '')\n",
|
||||
"if port:\n",
|
||||
" url += \":\" + port\n",
|
||||
"\n",
|
||||
"path = os.environ.get('SCRIPT_NAME', '')\n",
|
||||
"url += path\n",
|
||||
"\n",
|
||||
" \n",
|
||||
"IPython.display.HTML(data=f\"\"\"\n",
|
||||
"<a href=\"{url}?username=Riley\">Link to myself as user Riley</a>\n",
|
||||
"\"\"\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.7.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"hi\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print('hi')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "583e6dc5fecc4802a205e91b768f0261",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(FloatSlider(value=14.0, description='x'), FloatText(value=196.0, description='$x^2$', disabled=…"
|
||||
]
|
||||
},
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import ipywidgets as widgets\n",
|
||||
"slider = widgets.FloatSlider(description='x')\n",
|
||||
"text = widgets.FloatText(disabled=True, description='$x^2$')\n",
|
||||
"text.disabled\n",
|
||||
"def compute(*ignore):\n",
|
||||
" text.value = str(slider.value**2)\n",
|
||||
"slider.observe(compute, 'value')\n",
|
||||
"slider.value = 14\n",
|
||||
"widgets.VBox([slider, text])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"voila\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print('voila')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "subslide"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"3"
|
||||
]
|
||||
},
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"1+2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"celltoolbar": "Slideshow",
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
},
|
||||
"voila": {
|
||||
"template": "reveal"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Using Voilà with the C++ kernel and interactive widgets"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#include <iostream>\n",
|
||||
"#include <string>\n",
|
||||
"\n",
|
||||
"#include \"xwidgets/xoutput.hpp\"\n",
|
||||
"\n",
|
||||
"#include \"xleaflet/xmap.hpp\"\n",
|
||||
"#include \"xleaflet/xdraw_control.hpp\"\n",
|
||||
"#include \"xleaflet/xbasemaps.hpp\"\n",
|
||||
"\n",
|
||||
"namespace nl = nlohmann;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"// Create map widget\n",
|
||||
"auto water_color = xlf::basemap({\"OpenStreetMap\", \"France\"});\n",
|
||||
"\n",
|
||||
"auto map = xlf::map::initialize()\n",
|
||||
" .layers({water_color})\n",
|
||||
" .center({47, 363})\n",
|
||||
" .zoom(5)\n",
|
||||
" .finalize();\n",
|
||||
"\n",
|
||||
"map"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"// Create output widget to log draw events\n",
|
||||
"xw::output out;\n",
|
||||
"out"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"// Options for the draw control\n",
|
||||
"nl::json polyline_options = {\n",
|
||||
" {\"shapeOptions\", {\n",
|
||||
" {\"color\", \"#6bc2e5\"},\n",
|
||||
" {\"weight\", 8},\n",
|
||||
" {\"opacity\", 1.0}\n",
|
||||
" }}\n",
|
||||
"};\n",
|
||||
"\n",
|
||||
"nl::json polygon_options = {\n",
|
||||
" {\"shapeOptions\", {\n",
|
||||
" {\"fillColor\", \"#6be5c3\"},\n",
|
||||
" {\"color\", \"#6be5c3\"},\n",
|
||||
" {\"fillOpacity\", 1.0}\n",
|
||||
" }},\n",
|
||||
" {\"drawError\", {\n",
|
||||
" {\"color\", \"#dd253b\"},\n",
|
||||
" {\"message\", \"Oups!\"}\n",
|
||||
" }},\n",
|
||||
" {\"allowIntersection\", false}\n",
|
||||
"};\n",
|
||||
"\n",
|
||||
"nl::json circle_options = {\n",
|
||||
" {\"shapeOptions\", {\n",
|
||||
" {\"fillColor\", \"#efed69\"},\n",
|
||||
" {\"fillOpacity\", 1.0},\n",
|
||||
" {\"color\", \"#efed69\"}\n",
|
||||
" }}\n",
|
||||
"};\n",
|
||||
"\n",
|
||||
"nl::json rectangle_options = {\n",
|
||||
" {\"shapeOptions\", {\n",
|
||||
" {\"fillColor\", \"#fca45d\"},\n",
|
||||
" {\"fillOpacity\", 1.0},\n",
|
||||
" {\"color\", \"#fca45d\"}\n",
|
||||
" }}\n",
|
||||
"};"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"// Log last action\n",
|
||||
"void print_draw_event(std::string action, nl::json geo_json)\n",
|
||||
"{\n",
|
||||
" // Capturing the stdout with the output widget \n",
|
||||
" auto guard = out.guard();\n",
|
||||
" std::cout << action << \" a \" \n",
|
||||
" << geo_json[\"geometry\"][\"type\"]\n",
|
||||
" << std::endl;\n",
|
||||
"}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"// Add the draw control and event logger\n",
|
||||
"auto draw_control = xlf::draw_control::initialize()\n",
|
||||
" .polyline(polyline_options)\n",
|
||||
" .polygon(polygon_options)\n",
|
||||
" .circle(circle_options)\n",
|
||||
" .rectangle(rectangle_options)\n",
|
||||
" .finalize();\n",
|
||||
"\n",
|
||||
"draw_control.on_draw(print_draw_event);\n",
|
||||
"map.add_control(draw_control);"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "C++14",
|
||||
"language": "C++14",
|
||||
"name": "xcpp14"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": "text/x-c++src",
|
||||
"file_extension": ".cpp",
|
||||
"mimetype": "text/x-c++src",
|
||||
"name": "c++",
|
||||
"version": "14"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
Reference in New Issue
Block a user