{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "CV4GS - Jupyter Notebook tutorial" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "In this tutorial, we will cover:\n", "\n", "* Basic Jupyter notebook aspects: cell types, kernel, workflow, shortcuts\n", "* Markdown syntax\n", "* Magic commands to expand notebook functionalities\n", "* Widgets\n", "* Miscelaneous: converting notebooks, tunneling through SSH" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# What is a Jupyter Notebook?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- a notebook is made up of **cells**. There are 3 main types of cells: \n", " - `Code cells` \n", " ⇒ supports \"Julia\", \"Python\", or \"R\" languages (=**Ju**lia, **Pyt**hon, **R** ) \n", " ⇒ press esc+`y` to turn cell into code cell\n", " - `Markdown cells` \n", " ⇒ uses the \"Markdown\" language to write text, add images, equations, etc. \n", " ⇒ press esc+`m` to turn cell into markdown cell\n", " - `Raw cells` (rarely used) \n", " ⇒ plain text \n", " ⇒ press esc+`r` to turn cell into raw cell\n", "- the notebook **kernel** is a \"computational engine\" that executes the code contained in a Notebook. Here we set a \"Python 3\" to excecute python code. (Kernels for many other languages exist)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Code cell" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The cell below is a `Code cell` (default type) with Python code. \n", "\n", "Press `shift + return` to execute it. The result will get rendered beneath the cell. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n" ] } ], "source": [ "x = 1\n", "y = 2\n", "print(x+y)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Variables are shared between cells. Try executing the cell below:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n" ] } ], "source": [ "print(y + 2)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "
Note: Jupyter notebooks are expected to be run from top to bottom, so executing cells out of order can result in errors as variables may need undefined.
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Figures will be plotted in the cell:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "x = [1,2,3,4,5]\n", "y = [6,7,8,9,10]\n", "plt.plot(x, y)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Markdown cell" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[`Markdown`](https://en.wikipedia.org/wiki/Markdown) is a lightweight markup language* for creating formatted text. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "> \"A markup language is a system for annotating a document in a way that is syntactically distinguishable from the text, meaning when the document is processed for display, the markup language is not shown, and is only used to format the text.\" ([wikipedia](https://en.wikipedia.org/wiki/Markup_language))
\n", "Examples: HTML, LaTeX, RTF, etc.\n", "\n", "Key design goal of `Markdown` language is readability, ommiting obvious tags and formatting instructions like those used by HTML, RTF, etc. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "
Important: Press \"M\" key to convert cell into \"Markdown cell\"
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Jupyter keyboard shortcuts" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* `Esc` & `Enter`: switch to command or edit mode\n", "* `m` => switch cell to markdown type\n", "* `y` => switch cell to code type\n", "
\n", "\n", "* `Shift-Enter`: execute cell, jump to cell below (or create a new one if last cell is selected)\n", "* `Ctrl-Enter`: execute cell, insert new cell below\n", "
\n", "\n", "* `b` => add below the current one (Note you have to be in `esc` mode.)\n", "* `a` => add above the current one (Note you have to be in `esc` mode.)\n", "* `d+d` => delete cell (Note you have to be in `esc` mode.)\n", "* `o` => hide/show cell output\n", "* `ctrl+shift+minus`: split cell\n", "\n", "* `shift+tab`: open documentation of a function\n", "* `f`: find text in cell/notebook (Note you have to be in `esc` mode.)\n", "* `alt+c`: comment code (if 'comment-uncomment' jupyter extension is enabled)\n", "* `ctrl+\\`: comment code (american keyboard layout)\n", "* `ctrl+}`: comment code (latin american keyboard layout)\n", "\n", "
\n", "\n", "* `0+0` => restart notebook kernel the current one (Note you have to be in `esc` mode.)\n", "* `ctrl+s` => save notebook" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Markdown syntax\n", "The human-readable syntax allows to format text in many ways: make headings, emphasize text (bolding, italicizing, ...), creating numered/bulleted lists, add links, format mathematical symbols, make tables, etc.\n", "\n", "Syntax reference: [link](https://www.markdownguide.org/basic-syntax/)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## line break" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ " First line with two spaces after (or
character). \n", " And the second line" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First line with two spaces after. \n", "And the second line" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## headers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Header 1\n", "## Header 2\n", "### Header 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "HTML syntax to simulate title (no numbering):" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "This is a title" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:\n", "
\n", "This is a title" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## lists" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### ordered lists" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "1. First item\n", "2. Second item\n", "3. Third item" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. First item\n", "2. Second item\n", "3. Third item" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### unordered lists" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "- first bullet point\n", "- second bullet point\n", "- third bullet point\n", " - sub point\n", " - sub point" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- first bullet point\n", "- second bullet point\n", "- third bullet point\n", " - sub point\n", " - sub point" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### task list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "- [x] first task\n", "- [ ] second task" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [x] first task\n", "- [ ] second task" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### definition list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "
\n", "
First item
\n", "
This is the definition of the first term.
\n", "
Second item
\n", "
This is one definition of the second term.
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
First item
\n", "
This is the definition of the first term.
\n", "
Second item
\n", "
This is one definition of the second term.
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## text emphasis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### bold" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "**This is bold text** \n", "__This is bold text__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output: \n", "
\n", "**This is bold text** \n", "__This is bold text__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### italic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "*This is italicized text* \n", "_This is italicized text_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output: \n", "
\n", "*This is italicized text* \n", "_This is italicized text_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### strikethrouh" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "~This is text with strikethrough~" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output: \n", "
\n", "~This is text with strikethrough~" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### underline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "HTML syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "This text is underlined" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This text is underlined" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### highlight" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "This `word` is highlighted, so is this one." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This `word` is highlighted, so is this one." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### HTML interpretation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "

\n", " This is a text styled with HTML syntax.\n", "

\n", "\n", "This too." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", " This is a text styled with HTML syntax.\n", "

\n", "\n", "This too." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## blockquotes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "> This text is in a blockquote.\n", ">> This is a nested bloquote\n", ">>> and then some more" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> This text is in a blockquote.\n", ">> This is a nested bloquote\n", ">>> and then some more" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## colored boxes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "
Tip: Use this as top display tips.
\n", "\n", "
Example: Use this to display examples, display warning messages.
\n", "\n", "
Success: Use this to display a successful action.
\n", "\n", "
Danger: Use this to display a dangerous action.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Tip: Use this as top display tips.
\n", "\n", "
Example: Use this to display examples, display warning messages.
\n", "\n", "
Success: Use this to display a successful action.
\n", "\n", "
Danger: Use this to display a dangerous action.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## code syntax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax: \n", "Note: can use various syntax: _javascript_, _shell_, etc." ] }, { "cell_type": "raw", "metadata": {}, "source": [ "```python\n", "import numpy as np\n", "s = \"Python syntax highlighting\"\n", "print(s)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output: " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```python\n", "import numpy as np\n", "s = \"Python syntax highlighting\"\n", "print(s)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## special characters and symbols\n", "Decimal code or hex reference number can be used to introduce special characters and symbols." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: [UTF-8 Arrows](https://www.w3schools.com/charsets/ref_utf_arrows.asp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Rightwards double arrow (using UTF-8 code): ⇒ \n", "- Rightwards white arrow (using DEC code): ⇨\n", "- Tab = 4 spaces (using UTF-8 code): insert tab   in text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: [General Punctuation](https://www.w3schools.com/charsets/ref_utf_punctuation.asp)\n", "- Dash using UTF-8 code: –\n", "- Hyphen using DEC code: ‐" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: [Emoji Unicode](https://www.w3schools.com/charsets/ref_emoji.asp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Green checkbox (using DEC code): ❎" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## links" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### hyperlinks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "[link](https://en.wikipedia.org/wiki/Markdown) with Markdown syntax\n", "\n", "customed link with HTML syntax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[link](https://en.wikipedia.org/wiki/Markdown) with Markdown syntax\n", "\n", "customed link with HTML syntax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### internal links" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax: \n", "Note: replace any spaces and special characters with a hyphen (-)" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "[What is a Jupyter Notebook?](#What-is-a-Jupyter-Notebook?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[What is a Jupyter Notebook?](#What-is-a-Jupyter-Notebook?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### navigation menu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "HTML syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## horizontal lines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## insert images" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax: \n", "Note: paths to image can be local (stored on computer) or remote (url)" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "![my image](https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Markdown-mark.svg/175px-Markdown-mark.svg.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![my image](https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Markdown-mark.svg/175px-Markdown-mark.svg.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:\n", "\n", "Note: by default the text the cells justify to the right \n", "> Use :-: for centered \n", "> Use — for right centered \n", "> Use :- for left centered" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "|Header|Header|Header|\n", "|------|------|------|\n", "|A |B |C |\n", "|X |Y |Z |\n", "\n", "|Header|Header|Header|\n", "|:-:|:-:|:-:|\n", "|A |B |C |\n", "|X |Y |Z |" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "|Header|Header|Header|\n", "|------|------|------|\n", "|A |B |C |\n", "|X |Y |Z |\n", "\n", "|Header|Header|Header|\n", "|:-:|:-:|:-:|\n", "|A |B |C |\n", "|X |Y |Z |" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## backslash escape\n", "The backslash character prevents Markdown from interpreting the following character as an instruction; it is instead interpreted as a character." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "\\# Not a header" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\# Not a header" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## LaTeX equations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### inline equations:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "The mass-energy equivalence is stated by the equation: $E=mc^2$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mass-energy equivalence is stated by the equation: $E=mc^2$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### math mode equation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Markdown syntax:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "$$\\oint_C {E \\cdot d\\ell = - \\frac{d}{{dt}}} \\int_S {B_n dA}$$\n", "\n", "\\begin{align*}\n", " f(x) &= x^2\\\\\n", " g(x) &= \\int^a_b \\frac{1}{3}x^3\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rendered output:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\oint_C {E \\cdot d\\ell = - \\frac{d}{{dt}}} \\int_S {B_n dA}$$\n", "\n", "\\begin{align*}\n", " f(x) &= x^2\\\\\n", " g(x) &= \\frac{1}{x}\\\\\n", " F(x) &= \\int^a_b \\frac{1}{3}x^3\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# IPython Magic commands" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Magic commands are special commands which add special functionalities to the jupyter notebook interface. \n", "Below is a selection of some useful commands." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## lsmagic\n", " List currently available magic functions." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "application/json": { "cell": { "!": "OSMagics", "HTML": "Other", "SVG": "Other", "bash": "Other", "capture": "ExecutionMagics", "debug": "ExecutionMagics", "file": "Other", "html": "DisplayMagics", "javascript": "DisplayMagics", "js": "DisplayMagics", "latex": "DisplayMagics", "markdown": "DisplayMagics", "perl": "Other", "prun": "ExecutionMagics", "pypy": "Other", "python": "Other", "python2": "Other", "python3": "Other", "ruby": "Other", "script": "ScriptMagics", "sh": "Other", "svg": "DisplayMagics", "sx": "OSMagics", "system": "OSMagics", "time": "ExecutionMagics", "timeit": "ExecutionMagics", "writefile": "OSMagics" }, "line": { "alias": "OSMagics", "alias_magic": "BasicMagics", "autoawait": "AsyncMagics", "autocall": "AutoMagics", "automagic": "AutoMagics", "autosave": "KernelMagics", "bookmark": "OSMagics", "cat": "Other", "cd": "OSMagics", "clear": "KernelMagics", "colors": "BasicMagics", "conda": "PackagingMagics", "config": "ConfigMagics", "connect_info": "KernelMagics", "cp": "Other", "debug": "ExecutionMagics", "dhist": "OSMagics", "dirs": "OSMagics", "doctest_mode": "BasicMagics", "ed": "Other", "edit": "KernelMagics", "env": "OSMagics", "gui": "BasicMagics", "hist": "Other", "history": "HistoryMagics", "killbgscripts": "ScriptMagics", "ldir": "Other", "less": "KernelMagics", "lf": "Other", "lk": "Other", "ll": "Other", "load": "CodeMagics", "load_ext": "ExtensionMagics", "loadpy": "CodeMagics", "logoff": "LoggingMagics", "logon": "LoggingMagics", "logstart": "LoggingMagics", "logstate": "LoggingMagics", "logstop": "LoggingMagics", "ls": "Other", "lsmagic": "BasicMagics", "lx": "Other", "macro": "ExecutionMagics", "magic": "BasicMagics", "man": "KernelMagics", "matplotlib": "PylabMagics", "mkdir": "Other", "more": "KernelMagics", "mv": "Other", "notebook": "BasicMagics", "page": "BasicMagics", "pastebin": "CodeMagics", "pdb": "ExecutionMagics", "pdef": "NamespaceMagics", "pdoc": "NamespaceMagics", "pfile": "NamespaceMagics", "pinfo": "NamespaceMagics", "pinfo2": "NamespaceMagics", "pip": "PackagingMagics", "popd": "OSMagics", "pprint": "BasicMagics", "precision": "BasicMagics", "prun": "ExecutionMagics", "psearch": "NamespaceMagics", "psource": "NamespaceMagics", "pushd": "OSMagics", "pwd": "OSMagics", "pycat": "OSMagics", "pylab": "PylabMagics", "qtconsole": "KernelMagics", "quickref": "BasicMagics", "recall": "HistoryMagics", "rehashx": "OSMagics", "reload_ext": "ExtensionMagics", "rep": "Other", "rerun": "HistoryMagics", "reset": "NamespaceMagics", "reset_selective": "NamespaceMagics", "rm": "Other", "rmdir": "Other", "run": "ExecutionMagics", "save": "CodeMagics", "sc": "OSMagics", "set_env": "OSMagics", "store": "StoreMagics", "sx": "OSMagics", "system": "OSMagics", "tb": "ExecutionMagics", "time": "ExecutionMagics", "timeit": "ExecutionMagics", "unalias": "OSMagics", "unload_ext": "ExtensionMagics", "who": "NamespaceMagics", "who_ls": "NamespaceMagics", "whos": "NamespaceMagics", "xdel": "NamespaceMagics", "xmode": "BasicMagics" } }, "text/plain": [ "Available line magics:\n", "%alias %alias_magic %autoawait %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %conda %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %pip %popd %pprint %precision %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n", "\n", "Available cell magics:\n", "%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n", "\n", "Automagic is ON, % prefix IS NOT needed for line magics." ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%lsmagic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## run file\n", " Execute a python script." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%run " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## load file\n", " Insert code from an external file into cell." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%load " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## writefile\n", " Export the contents of a cell/Show the contents of an external script" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing pythoncode.py\n" ] } ], "source": [ "%%writefile pythoncode.py \n", "\n", "import numpy\n", "a = 1\n", "b = 2\n", "\n", "def add(x,y)\n", " return x+y\n", "\n", "c = add(a, b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## time\n", " Time the execution of the code. " ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 0 ns, sys: 0 ns, total: 0 ns\n", "Wall time: 8.11 µs\n" ] } ], "source": [ "%time\n", "\n", "import random\n", "for i in range(0, 1000000):\n", " random.random()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## matplotlib display\n", " Select how to display matlpotlib graphs." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List the available backends:** \n", "Note: not all will work, it depends on your installation" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Available matplotlib backends: ['tk', 'gtk', 'gtk3', 'wx', 'qt4', 'qt5', 'qt', 'osx', 'nbagg', 'notebook', 'agg', 'svg', 'pdf', 'ps', 'inline', 'ipympl', 'widget']\n" ] } ], "source": [ "%matplotlib --list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Plot static figure embedded in notebook (default setting):**" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "x = [1,2,3,4,5]\n", "y = [6,7,8,9,10]\n", "plt.plot(x, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Plot interactive figure:**" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib notebook" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from matplotlib import pyplot as plt\n", "x = [1,2,3,4,5]\n", "y = [6,7,8,9,10]\n", "plt.plot(x, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## autoreload modules\n", " Reload modules before executing user code.\n", " \n", " %autoreload 0 => Disable automatic reloading.\n", " %autoreload 1 => Reload all modules imported every time before executing the Python code typed.\n", " %autoreload 2 => Reload all modules every time before executing the Python code typed\n", " %aimport => List modules which are to be automatically imported or not to be imported." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from foo import some_function" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Run function\n", "some_function()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Open foo.py in an editor and change some_function to return 43" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Run function after edit => will reflect the changes and return 43\n", "some_function()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## cython\n", "Note: the following example requires to have the [cython](http://cython.readthedocs.io) package installed\n", "* Cython is Python with C data types.\n", "* Almost any Python code is also valid Cython\n", "* Cython will compile Python to C (and then to machine code)\n", "* Easily mix C and Python code\n", "* Easy writing of wrappers for C code\n", "* use cdefs and C types to type your code (only allowed at top level indentation)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "# --- Python implementation of primes():\n", "\n", "def primes():\n", " result = []\n", " p = [0] * 1000\n", " kmax = 1000\n", " k = 0\n", " n = 2\n", " while k < kmax:\n", " i = 0\n", " while i < k and n % p[i] != 0:\n", " i = i + 1\n", " if i == k:\n", " p[k] = n\n", " k = k + 1\n", " result.append(n)\n", " n = n + 1\n", " return result" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "58.4 ms ± 1.13 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "%timeit primes()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# --- Cython implementation of primes():" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "%load_ext Cython" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "%%cython\n", "\n", "def primes():\n", " cdef int n, k, i #<--- defines integer variables\n", " cdef int p[1000] #<--- defines integer array\n", " result = []\n", "\n", " cdef int kmax = 1000 #<---\n", " k = 0\n", " n = 2\n", " while k < kmax:\n", " i = 0\n", " while i < k and n % p[i] != 0:\n", " i = i + 1\n", " if i == k:\n", " p[k] = n\n", " k = k + 1\n", " result.append(n)\n", " n = n + 1\n", " return result" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.16 ms ± 3.85 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" ] } ], "source": [ "%timeit primes()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Excecute system command" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: list files in working directory" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!ls -la " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: test python version, and cython package version" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!python --version" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!conda list | grep cython" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: install additional package" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!conda install \n", "!pip install " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Run code from a different kernel\n", "IPython can run various Kernel in a cell: `bash`, `HTML`, `ruby`, `perl`, `python2`, `python3`, etc." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: run bash code" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i = 1\n", "i = 2\n", "i = 3\n", "i = 4\n", "i = 5\n" ] } ], "source": [ "%%bash\n", "for i in {1..5}\n", "do echo \"i = $i\"\n", "done" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "%%python2\n", "for i in xrange(5):\n", " print i" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "%%python3\n", "for i in range(5):\n", " print(i)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Widgets\n", "See: https://github.com/jupyter-widgets/tutorial" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import ipywidgets as widgets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## slider" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bfcf43b9b9504f0b8d4aa52ec611b247", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatSlider(value=7.5, description='Input:', max=10.0, min=5.0)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "slider = widgets.FloatSlider(\n", " value=7.5,\n", " min=5.0,\n", " max=10.0,\n", " step=0.1,\n", " description='Input:',\n", ")\n", "\n", "slider" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7.5\n" ] } ], "source": [ "print(slider.value)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## link widgets\n", "EX: set slider, and display value in a text box." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3489c51316364487b0acc4d0cf361397", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(FloatSlider(value=8.3, description='Input:', max=10.0, min=5.0), FloatText(value=8.3, descripti…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create text box to hold slider value\n", "text = widgets.FloatText(description='Value')\n", "\n", "# Link slider value and text box value\n", "widgets.link((slider, 'value'), (text, 'value'))\n", "\n", "# Put them in a vertical box\n", "widgets.VBox([slider, text])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## widget interaction with function" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "def f(x):\n", " print(x * x)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f4e19f0d5bd64381bae2e639dee0167a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(IntSlider(value=50, description='x'), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "widgets.interact(f, x=(0, 100));" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8ab996cb2b0549d6bf6daf91880b5b0a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(FloatSlider(value=7.5, description='Input:', max=10.0, min=5.0), HTML(value='56.25', descriptio…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "slider = widgets.FloatSlider(\n", " value=7.5,\n", " min=5.0,\n", " max=10.0,\n", " step=0.1,\n", " description='Input:',\n", ")\n", "\n", "# Create non-editable text area to display square of value\n", "square_display = widgets.HTML(description=\"Square: \", value='{}'.format(slider.value**2))\n", "\n", "# Create function to update square_display's value when slider changes\n", "def update_square_display(change):\n", " square_display.value = '{}'.format(change.new**2)\n", " \n", "slider.observe(update_square_display, names='value')\n", "\n", "# Put them in a vertical box\n", "widgets.VBox([slider, square_display])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## other Jupyter widget frameworks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " - [bqplot](https://github.com/bqplot/bqplot/blob/master/examples/Index.ipynb) - 2d plotting library in which everything displayed is a widget\n", " - [ipympl](https://github.com/matplotlib/ipympl) - widget backend for [matplotlib](https://matplotlib.org/3.2.2/contents.html) graphics\n", " - [pythreejs](https://pythreejs.readthedocs.io/en/stable/index.html) - low-level 3d graphics library\n", " - [ipyvolume](https://ipyvolume.readthedocs.io/en/latest/) - 3d plotting and volume rendering\n", " - [ipyleaflet](https://ipyleaflet.readthedocs.io/en/latest/)_ - interactive maps\n", " - [ipywebrtc](https://github.com/maartenbreddels/ipywebrtc) - video streaming\n", " - [ipysheet](https://ipysheet.readthedocs.io/en/latest/) - interactive spreadsheets\n", " - [ipytree](https://github.com/QuantStack/ipytree) - tree for viewing hierarchical material\n", " - [ipycanvas](https://ipycanvas.readthedocs.io/en/latest/?badge=latest) - interactive drawing in a notebook\n", " - [ipyevents](https://github.com/mwcraig/ipyevents/blob/master/doc/Widget%20DOM%20Events.ipynb) - capture mouse/keyboard events on a widget\n", " - ..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Installation example (from terminal using Anaconda's package manager):\n", "```console\n", "$ conda install -c conda-forge bqplot\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: binary star simulation dashboard using `ipywidgets`, `pythreejs`, and `bqplot`: https://github.com/JuanCab/AstroInteractives" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Convert notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notebooks can be converted to a number of formats, using the command from terminal: `jupter nbconvert --to `" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## example conversion to slides" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. In notebook: \n", " => View > Cell toolbar > Slideshow\n", "2. Select which cells should become slide, using the dropdown menu on the top right of each cell\n", "3. Create slideshow from notebook running following command in terminal: \n", "```console\n", "$ jupyter nbconvert --to slides mynotebook.ipynb\n", "```\n", "=> a distinc file called \"mynotebook.slides.html\" will be generated in the same directory\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Tunneling through SSH" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Log into remote computer through SSH\n", "```console\n", "$ ssh user@ip\n", "``` \n", "2. In remote computer launch Jupyter with the --no-browser option:\n", "```console\n", "$ jupyter notebook --no-browser --port=8889\n", "```\n", "3. Open a second SSH connection with the remote computer, using the tunneling port specified above:\n", "```console\n", "$ ssh -L localhost:8888:localhost:8889 user@ip\n", "```\n", "4. Open a webrowser from your local computer and open Jupyter \n", " http://localhost:8888/tree/" ] } ], "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.8.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "234.6px" }, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 4 }