{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(glue)=\n",
    "\n",
    "# Inserting variables into pages with `glue`\n",
    "\n",
    "You often wish to run analyses in one notebook and insert them into your\n",
    "documents text elsewhere. For example, if you'd like to include a figure,\n",
    "or if you want to cite a statistic that you have run.\n",
    "\n",
    "The **`glue` submodule** allows you to add a key to variables in a notebook,\n",
    "then display those variables in your book by referencing the key.\n",
    "\n",
    "This page describes how to add keys to variables in notebooks, and how to insert them\n",
    "into your book's content in a variety of ways.[^download]\n",
    "\n",
    "[^download]: This notebook can be downloaded as\n",
    "            **{jupyter-download:notebook}`glue`** and {download}`glue.md`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(glue/gluing)=\n",
    "\n",
    "## Gluing variables in your notebook\n",
    "\n",
    "You can use `myst_nb.glue()` to assign value of a variable to\n",
    "a key of your choice. `glue` will store all of the information that is normally used to **display**\n",
    "that variable (ie, whatever happens when you display the variable by putting it at the end of a cell).\n",
    "Choose a key that you will remember, as you will use it later.\n",
    "\n",
    "The following code glues a variable inside the notebook:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'my variable!'"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "my_variable"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from myst_nb import glue\n",
    "a = \"my variable!\"\n",
    "glue(\"my_variable\", a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can then insert it into your text like so: {glue:}`my_variable`.\n",
    "\n",
    "That was accomplished with the following code: `` {glue:}`my_variable` ``.\n",
    "\n",
    "### Gluing numbers, plots, and tables\n",
    "\n",
    "You can glue anything in your notebook and display it later with `{glue:}`. Here\n",
    "we'll show how to glue and paste **numbers and images**. We'll simulate some\n",
    "data and run a simple bootstrap on it. We'll hide most of this process below,\n",
    "to focus on the glueing part."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "# Simulate some data and bootstrap the mean of the data\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "n_points = 10000\n",
    "n_boots = 1000\n",
    "mean, sd = (3, .2)\n",
    "data = sd*np.random.randn(n_points) + mean\n",
    "bootstrap_indices = np.random.randint(0, n_points, n_points*n_boots).reshape((n_boots, n_points))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the cell below, `data` contains our data, and `bootstrap_indices` is a collection of sample indices in each bootstrap. Below we'll calculate a few statistics of interest, and\n",
    "**`glue()`** them into the notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.9990427432587223"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "boot_mean"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "2.986979521700597"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "boot_clo"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "3.0112657569302232"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "boot_chi"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Calculate the mean of a bunch of random samples\n",
    "means = data[bootstrap_indices].mean(0)\n",
    "# Calcualte the 95% confidence interval for the mean\n",
    "clo, chi = np.percentile(means, [2.5, 97.5])\n",
    "\n",
    "# Store the values in our notebook\n",
    "glue(\"boot_mean\", means.mean())\n",
    "glue(\"boot_clo\", clo)\n",
    "glue(\"boot_chi\", chi)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By default, `glue` will display the value of the variable you are gluing. This\n",
    "is useful for sanity-checking its value at glue-time. If you'd like to **prevent display**,\n",
    "use the `display=False` option. Note that below, we also *overwrite* the value of\n",
    "`boot_chi` (but using the same value):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0112657569302232"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "application/papermill.record/",
       "name": "boot_chi_notdisplayed"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "glue(\"boot_chi_notdisplayed\", chi, display=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can also glue visualizations, such as matplotlib figures (here we use `display=False` to ensure that the figure isn't plotted twice):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "filenames": {
       "image/png": "/home/docs/checkouts/readthedocs.org/user_builds/myst-nb/checkouts/v0.9.1/docs/_build/jupyter_execute/use/glue_10_0.png"
      },
      "scrapbook": {
       "mime_prefix": "application/papermill.record/",
       "name": "boot_fig"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "filenames": {
       "image/png": "/home/docs/checkouts/readthedocs.org/user_builds/myst-nb/checkouts/v0.9.1/docs/_build/jupyter_execute/use/glue_10_1.png"
      },
      "scrapbook": {
       "mime_prefix": "application/papermill.record/",
       "name": "sorted_means_fig"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "filenames": {
       "image/png": "/home/docs/checkouts/readthedocs.org/user_builds/myst-nb/checkouts/v0.9.1/docs/_build/jupyter_execute/use/glue_10_2.png"
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "filenames": {
       "image/png": "/home/docs/checkouts/readthedocs.org/user_builds/myst-nb/checkouts/v0.9.1/docs/_build/jupyter_execute/use/glue_10_3.png"
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualize the historgram with the intervals\n",
    "fig, ax = plt.subplots()\n",
    "ax.hist(means)\n",
    "for ln in [clo, chi]:\n",
    "    ax.axvline(ln, ls='--', c='r')\n",
    "ax.set_title(\"Bootstrap distribution and 95% CI\")\n",
    "\n",
    "# And a wider figure to show a timeseries\n",
    "fig2, ax = plt.subplots(figsize=(6, 2))\n",
    "ax.plot(np.sort(means), lw=3, c='r')\n",
    "ax.set_axis_off()\n",
    "\n",
    "glue(\"boot_fig\", fig, display=False)\n",
    "glue(\"sorted_means_fig\", fig2, display=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The same can be done for DataFrames (or other table-like objects) as well."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "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>first</th>\n",
       "      <th>second</th>\n",
       "      <th>third</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.213601</td>\n",
       "      <td>2.767726</td>\n",
       "      <td>3.303152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.798879</td>\n",
       "      <td>2.866612</td>\n",
       "      <td>3.221414</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.054587</td>\n",
       "      <td>2.874253</td>\n",
       "      <td>2.544720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.900155</td>\n",
       "      <td>2.997231</td>\n",
       "      <td>3.202019</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.092361</td>\n",
       "      <td>3.169622</td>\n",
       "      <td>2.959979</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      first    second     third\n",
       "0  3.213601  2.767726  3.303152\n",
       "1  2.798879  2.866612  3.221414\n",
       "2  3.054587  2.874253  2.544720\n",
       "3  2.900155  2.997231  3.202019\n",
       "4  3.092361  3.169622  2.959979"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "df_tbl"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "bootstrap_subsets = data[bootstrap_indices][:3, :5].T\n",
    "df = pd.DataFrame(bootstrap_subsets, columns=[\"first\", \"second\", \"third\"])\n",
    "glue(\"df_tbl\", df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```{tip}\n",
    "Since we are going to paste this figure into our document at a later point,\n",
    "you may wish to remove the output here, using the `remove-output` tag\n",
    "(see {ref}`use/removing`).\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(glue/pasting)=\n",
    "\n",
    "## Pasting glued variables into your page\n",
    "\n",
    "Once you have glued variables into a notebook, you can then **paste**\n",
    "those variables into your text in your book anywhere you like (even on other pages).\n",
    "These variables can be pasted using one of the roles or directives in the `glue:` *family*."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The `glue` role/directive\n",
    "\n",
    "The simplest role and directive are `glue:any`,\n",
    "which paste the glued output inline or as a block respectively,\n",
    "with no additional formatting.\n",
    "Simply add this:\n",
    "\n",
    "````\n",
    "```{glue:} your-key\n",
    "```\n",
    "````\n",
    "\n",
    "For example, we'll paste the plot we generated above with the following text:\n",
    "\n",
    "````md\n",
    "```{glue:} boot_fig\n",
    "```\n",
    "````\n",
    "\n",
    "Here's how it looks:\n",
    "\n",
    "```{glue:} boot_fig\n",
    "```\n",
    "\n",
    "Or we can paste inline objects like so:\n",
    "\n",
    "\n",
    "```md\n",
    "Inline text; {glue:}`boot_mean`, and figure; {glue:}`boot_fig`.\n",
    "```\n",
    "\n",
    "Inline text; {glue:}`boot_mean`, and figure; {glue:}`boot_fig`.\n",
    "\n",
    "```{tip}\n",
    "We recommend using wider, shorter figures when plotting in-line, with a ratio\n",
    "around 6x2. For example, here's is an in-line figure of sorted means\n",
    "from our bootstrap: {glue:}`sorted_means_fig`.\n",
    "It can be used to make a visual point that isn't too complex! For more\n",
    "ideas, check out [how sparklines are used](https://en.wikipedia.org/wiki/Sparkline).\n",
    "```\n",
    "\n",
    "Next we'll cover some more specific pasting functionality, which gives you more\n",
    "control over how the outputs look in your pages."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Controling the pasted outputs\n",
    "\n",
    "You can control the pasted outputs by using a sub-command of `{glue:}`. These are called like so:\n",
    "`` {glue:subcommand}`key` ``. These subcommands allow you to control more of the look, feel, and\n",
    "content of the pasted output.\n",
    "\n",
    "```{tip}\n",
    "When you use `{glue:}` you are actually using a short-hand for `{glue:any}`. This is a\n",
    "generic command that doesn't make many assumptions about what you are gluing.\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The `glue:text` role\n",
    "\n",
    "The `glue:text` role, is specific to text outputs.\n",
    "For example, the following text:\n",
    "\n",
    "```\n",
    "The mean of the bootstrapped distribution was {glue:text}`boot_mean` (95% confidence interval {glue:text}`boot_clo`/{glue:text}`boot_chi`).\n",
    "```\n",
    "\n",
    "Is rendered as:\n",
    "The mean of the bootstrapped distribution was {glue:text}`boot_mean` (95% confidence interval {glue:text}`boot_clo`/{glue:text}`boot_chi`)\n",
    "\n",
    "```{note}\n",
    "`glue:text` only works with glued variables that contain a `text/plain` output.\n",
    "```\n",
    "\n",
    "With `glue:text` we can **add formatting to the output**.\n",
    "This is particularly useful if you are displaying numbers and\n",
    "want to round the results. To add formatting, use this pattern:\n",
    "\n",
    "* `` {glue:text}`mykey:formatstring` ``\n",
    "\n",
    "For example, the following: ``My rounded mean: {glue:text}`boot_mean:.2f` `` will be rendered like this: My rounded mean: {glue:text}`boot_mean:.2f` (95% CI: {glue:text}`boot_clo:.2f`/{glue:text}`boot_chi:.2f`)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The `glue:figure` directive\n",
    "\n",
    "With `glue:figure` you can apply more formatting to figure like objects,\n",
    "such as giving them a caption and referencable label:\n",
    "\n",
    "````md\n",
    "```{glue:figure} boot_fig\n",
    ":figwidth: 300px\n",
    ":name: \"fig-boot\"\n",
    "\n",
    "This is a **caption**, with an embedded `{glue:text}` element: {glue:text}`boot_mean:.2f`!\n",
    "```\n",
    "````\n",
    "\n",
    "```{glue:figure} boot_fig\n",
    ":figwidth: 300px\n",
    ":name: \"fig-boot\"\n",
    "\n",
    "This is a **caption**, with an embedded `{glue:text}` element: {glue:text}`boot_mean:.2f`!\n",
    "```\n",
    "\n",
    "```md\n",
    "Here is a {ref}`reference to the figure <fig-boot>`\n",
    "```\n",
    "\n",
    "Here is a {ref}`reference to the figure <fig-boot>`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's a table:\n",
    "\n",
    "````md\n",
    "```{glue:figure} df_tbl\n",
    ":figwidth: 300px\n",
    ":name: \"tbl:df\"\n",
    "\n",
    "A caption for a pandas table.\n",
    "```\n",
    "\n",
    "````\n",
    "```{glue:figure} df_tbl\n",
    ":figwidth: 300px\n",
    ":name: \"tbl:df\"\n",
    "\n",
    "A caption for a pandas table.\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The `glue:math` directive\n",
    "\n",
    "The `glue:math` directive, is specific to latex math outputs\n",
    "(glued variables that contain a `text/latex` mimetype),\n",
    "and works similarly to the [sphinx math directive](https://www.sphinx-doc.org/en/1.8/usage/restructuredtext/directives.html#math).\n",
    "For example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(\\sqrt{5} i\\right)^{\\alpha} \\left(\\frac{1}{2} - \\frac{2 \\sqrt{5} i}{5}\\right) + \\left(- \\sqrt{5} i\\right)^{\\alpha} \\left(\\frac{1}{2} + \\frac{2 \\sqrt{5} i}{5}\\right)$"
      ],
      "text/plain": [
       "(sqrt(5)*I)**\\alpha*(1/2 - 2*sqrt(5)*I/5) + (-sqrt(5)*I)**\\alpha*(1/2 + 2*sqrt(5)*I/5)"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "sym_eq"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import sympy as sym\n",
    "f = sym.Function('f')\n",
    "y = sym.Function('y')\n",
    "n = sym.symbols(r'\\alpha')\n",
    "f = y(n)-2*y(n-1/sym.pi)-5*y(n-2)\n",
    "glue(\"sym_eq\", sym.rsolve(f,y(n),[1,4]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "````md\n",
    "Insert the equation here:\n",
    "\n",
    "```{glue:math} sym_eq\n",
    ":label: eq-sym\n",
    "```\n",
    "\n",
    "Which we reference as Equation {eq}`eq-sym`\n",
    "````\n",
    "\n",
    "Insert the equation here:\n",
    "\n",
    "```{glue:math} sym_eq\n",
    ":label: eq-sym\n",
    "```\n",
    "\n",
    "Which we reference as Equation {eq}`eq-sym`.\n",
    "\n",
    "```{note}\n",
    "`glue:math` only works with glued variables that contain a `text/latex` output.\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Advanced glue usecases\n",
    "\n",
    "Here are a few more specific and advanced uses of the `glue` submodule.\n",
    "\n",
    "### Pasting from pages you don't include in the documentation\n",
    "\n",
    "Sometimes you'd like to use variables from notebooks that are not meant to be\n",
    "shown to users. In this case, you should bundle the notebook with the rest of your\n",
    "content pages, but include `orphan:` in the metadata of the notebook.\n",
    "\n",
    "For example, the following text: `` {glue:}`orphaned_var` was created in {ref}`orphaned-nb` ``.\n",
    "Results in: {glue:}`orphaned_var` was created in {ref}`orphaned-nb`\n",
    "\n",
    "### Pasting into tables\n",
    "\n",
    "In addition to pasting blocks of outputs, or in-line with text, you can also paste directly\n",
    "into tables. This allows you to compose complex collections of structured data using outputs\n",
    "that were generated in other notebooks. For example the following table:\n",
    "\n",
    "````md\n",
    "| name                            |       plot                  | mean                      | ci                                                |\n",
    "|:-------------------------------:|:---------------------------:|---------------------------|---------------------------------------------------|\n",
    "| histogram and raw text          | {glue:}`boot_fig`             | {glue:}`boot_mean`          | {glue:}`boot_clo`-{glue:}`boot_chi`                   |\n",
    "| sorted means and formatted text | {glue:}`sorted_means_fig`     | {glue:text}`boot_mean:.3f` | {glue:text}`boot_clo:.3f`-{glue:text}`boot_chi:.3f` |\n",
    "````\n",
    "\n",
    "Results in:\n",
    "\n",
    "| name                            |       plot                  | mean                      | ci                                                |\n",
    "|:-------------------------------:|:---------------------------:|---------------------------|---------------------------------------------------|\n",
    "| histogram and raw text          | {glue:}`boot_fig`             | {glue:}`boot_mean`          | {glue:}`boot_clo`-{glue:}`boot_chi`                   |\n",
    "| sorted means and formatted text | {glue:}`sorted_means_fig`     | {glue:text}`boot_mean:.3f` | {glue:text}`boot_clo:.3f`-{glue:text}`boot_chi:.3f` |"
   ]
  }
 ],
 "metadata": {
  "jupytext": {
   "text_representation": {
    "extension": ".md",
    "format_name": "myst",
    "format_version": "0.8",
    "jupytext_version": "1.4.1"
   }
  },
  "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"
  },
  "source_map": [
   12,
   31,
   44,
   48,
   63,
   76,
   81,
   91,
   98,
   100,
   104,
   119,
   123,
   127,
   135,
   145,
   191,
   204,
   230,
   259,
   279,
   288,
   295,
   319
  ]
 },
 "nbformat": 4,
 "nbformat_minor": 4
}