{ "cells": [ { "cell_type": "raw", "metadata": {}, "source": [ "%This notebook demonstrates the use of the workpackage template, replace with your own.\n", "\n", "\\documentclass[english]{workpackage}[1996/06/02]\n", "\n", "% input the common preamble content (required by the ipnb2latex converter)\n", "\\input{header.tex}\n", "\n", "% the following three lines are required to support the tikz examples\n", "\\usepackage{tikz}\n", "\\usepackage{sansmath}\n", "\\usetikzlibrary{shadings,intersections}\n", "\n", "% then follows the rest of the preamble to be placed before the begin document\n", "% this preamble content is special to the documentclass you defined above.\n", "\\WPproject{Computational Radiometry} % project name\n", "\\WPequipment{} % equipment name\n", "\\WPsubject{01-IPythonHintsAndTips} % main heading \n", "\\WPconclusions{} \n", "\\WPclassification{} \n", "\\WPdocauthor{CJ Willers}\n", "\\WPcurrentpackdate{\\today}\n", "\\WPcurrentpacknumber{} % work package number\n", "\\WPdocnumber{} % this doc number hosts all the work packages\n", "\\WPprevpackdate{} % work package which this one supersedes\n", "\\WPprevpacknumber{} % work package which this one supersedes\n", "\\WPsuperpackdate{} % work package which comes after this one\n", "\\WPsuperpacknumber{} % work package which comes after this one\n", "\\WPdocontractdetails{false}\n", "\\WPcontractname{} % contract name \n", "\\WPorderno{} % contract order number\n", "\\WPmilestonenumber{} % contract milestone number\n", "\\WPmilestonetitle{} % contract milestone title\n", "\\WPcontractline{} % contract milestone line number \n", "\\WPdocECPnumber{} % ecp\\ecr number\n", "\\WPdistribution{}\n", "\n", "% bibfile added in this notebook\n", "%\\addbibresource{.\\analyseRio.bib} \n", "\n", "% this is entered just before the end{document}\n", "\\newcommand{\\atendofdoc}{\n", "\\bibliographystyle{IEEEtran}\n", "\\bibliography{01-IPythonHintsAndTips}\n", "}\n", "\n", "%and finally the document begin.\n", "\\begin{document}\n", "\\WPlayout\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "This notebook forms part of a series on [computational optical radiometry](https://github.com/NelisW/ComputationalRadiometry#computational-optical-radiometry-with-pyradi). The notebooks can be downloaded from [Github](https://github.com/NelisW/ComputationalRadiometry#computational-optical-radiometry-with-pyradi). These notebooks are constantly revised and updated, please revisit from time to time. \n", "\n", "This notebook was written several Ipython/Jupyter generations ago, some information may be no longer applicable.\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "# 1 Jupyter / IPython notebook hints and tips " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The date of this document and module versions used in this document are given at the end of the file. \n", "Feedback is appreciated: neliswillers at gmail dot com. \n", "\n", " This notebook is relatively old, not recently updated. However, most of the info should still be relevant. " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "# Jupyter and IPython" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ ":\n", "\n", "\"IPython is a growing project, with increasingly language-agnostic components. IPython 3.x will be the last monolithic release of IPython, containing the notebook server, qtconsole, etc. The language-agnostic parts of the project: the notebook format, message protocol, qtconsole, notebook web application, etc. will move to new projects under the name [Jupyter](https://jupyter.org/). IPython itself will return to being focused on interactive Python, part of which will be providing a Python kernel for Jupyter. IPython 3.0 contains some indications of the project transition, including the logo in the notebook web UI being that of Jupyter.\"\n", "\n", "In this document, all references to IPython refer to the IPython kernel, running on top of Jupyter.\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Overview" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "This notebook provides a brief summary of how to start up and use the IPython notebook.\n", "Introductions are given to magic commands, help functionality, using IPython for scientific work, cell memory, markdown, citations, embedding media files, and a few lesser used functions.\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "from IPython.display import display\n", "from IPython.display import Image\n", "from IPython.display import HTML" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Lorena Barba's [tutorial](https://github.com/barbagroup/jupyter-tutorial), see [this notebook](http://nbviewer.jupyter.org/github/barbagroup/jupyter-tutorial/blob/master/3--Jupyter%20like%20a%20pro.ipynb) for more detail on the Jupyter notebook." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Why use the IPython notebook?\n", "\n", "

The IPython notebook is an effective means to capture technical story lines or flow-of-thought;
being initially conceived as a lab book for science and technology investigations. \n", "It is now also used for slides and as lecturing medium.\n", "

\n", "\n", "The IPython notebook can never replace formal documentation, at least in its present form. The notebook should also not be used as a primary software development environment. The notebook lives alongside other forms of documentation and coding. Having said that, there is a definite place for the IPython notebook in several environments such as engineering research and development, teaching, and scientific research and experimentation (which it was initially developed for). \n", "\n", "The IPython notebook is a very effective means to capture your work as you progress through an investigation comprising research, coding, and record keeping. It is also an excellent way to develop slides or teaching material where one wants to combine code, text and results in a story-line. It is used widely in Python conferences and lectures. The notebook is also a convenient means to do homework assignments.\n", "\n", " - why use notebooks? \n", " - gallery of notebooks \n", " - a gallery of notebooks " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Getting started in IPython\n", "\n", "If you installed the Anaconda Python distribution (), it already has IPython, no need to download it.\n", "\n", "If you are not using Anaconda, follow the steps outlined on these sites: \n", "`http://ipython.org/` - start here, download the latest version from here.
\n", " - short and concise, up and running quickly.
\n", " \n", "For a good overview of the history and key user guide tips, see \n", "1. .\n", "2. " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Diffing and Merging Notebooks\n", "\n", "https://nbdime.readthedocs.io/en/latest/\n", "\n", "nbdime provides 'content-aware' diffing and merging of Jupyter notebooks. It understands the structure of notebook documents. Therefore, it can make intelligent decisions when diffing and merging notebooks." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Working in a Command Window\n", "\n", "IPython must be started from a command window (in Windows) or a terminal console in Linux. If you use Linux, you already know how to do this. If you are using Windows, and you don't know learn here: \n", " \n", " \n", "\n", "IPython 2.x allows you to open notebooks only from the present directory (getcwd) and in nested subdirectories. So, open the command window somewhere where your notebooks can be reached from. \n", "\n", "This link will help you to create a context menu in Explorer to start a command window in a given directory: \n", " \n", " \n", "Scroll to the bottom of the pages. Alternatively just download this file and double click on it: \n", " \n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Starting IPython" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Command line" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "IPython files are [json](http://www.json.org/)-format files, with the file extension `.ipynb`.\n", "\n", "After you installed IPython you must start the server in a command window. The current version of IPython expects the notebook files to be in the same directory where it was started up (or below). So if you want to work in `c:\\myfiles` then change to that directory and start IPython in the required directory.\n", "\n", "Open a command window (DOS box), and create a directory where you want to work with the notebooks. Type the following commands in the command window (pressing Enter after each line): \n", "`cd \\` \n", "`mkdir myfiles` [only do this the first time] \n", "`cd c:\\myfiles` \n", "The command window should now display `c:\\myfiles>`. Then type the following command (followed by Enter): \n", "`ipython notebook ` \n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Serving IPython pages" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "After a while IPython opens your web browser and display the IPython portal page.\n", "\n", "Side note on browsers: Microsoft Internet Explorer does not run IPython very nicely. Consider using Firefox or Chrome." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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+Kv97iq5W493aEFqe306X7/G8pu211x+4/z19Q1/PzccT3P+1fQN86fvd/J4me51ru9zcxsDj3Hge7ja55aU29i6vsY6q/mXxxqni4iI5IuSO13aSceOIUpuRkruobai26fgBqNLblVo3/OLV9ae652h30eNqS6w7/j1MCYflyyfXzz+9VAGkudrBajtubYL+qSkrC1fTWsWgjj/ah1bMur4m9tuybbjHViQ1qcfrm9ZwrYs39xebdmW5df2r7G+bce3bX+2bX/T8a/tT7IP29a5ts/NbQw8xqHvYdv60mxdX5VyPe8o7vj5UJqT/46JiIhkjpI7j7SXDh1jlNyMlNy6l770pauCe/HixerZ7W5nyR3+fdyY6gI8pHYRflg+DstDOv+GQtF6QV9/rv79w2raqhCkd8rS7XZn7PFvvivY2L9Nxzu25K622Zy+Yf3N5eP2qsIVH6+/ds3Xd9P+bNj+tuPZuv0N61vtzyLNY+x7THGf4vzbtrlp+tj3cNv0jeuLifvVNk1ERCRflNzp0k46dgxRcjNScteFojuk4Aa3r+SO+z5uzLJ0LpIWj47nDy/qY+LFfUjbBX3juVqpaBaCZHptvV2ZdvyHJSmmud2O451QkA5/W3HjLl66Py0f3V69L9Vyh4+X8x2UpfBwnfX5m/sTMuT9XF++e/sbjn/LubbtmA7PkbDMXL9due97mMzTtr5F6q95c33r8228KywiIpIhSu480l46dIxRcjNScucxpOTKvmZz4ZH9Syy5h58kEBERyR8ld7q0k44dQ5TcjJTceSi5sj1KrsTEu8H1u8AiIiK5o+TOI+2lQ8cYJTejXCU3vkd9kpuSK8cjSq4sknwk3V1cERE56ii508X+MmUMUXIzylFyjxslV0REREREyZ1L2kuHjjFKbkZK7jyUXBERERE57lFyp0s76dgxRMnNSMmdh5IrIiIiIsc9Su480l46dIxRcjNScueh5IqIiIjIcY+SO13aSceOIUpuRttK7kc+8pGywEl3bt682fr6iYiIiIgclyi580h76dAxRsnNaFvJFRERERGR3YiSO13aSceOIUpuRkquiIiIiMh+RMmdR9pLh44xSm5GSq6IiIiIyH5EyZ0u7aRjxxAlNyMlV0RERERkP6LkziPtpUPHGCU3o3Cii4iIiIjIfoRp0k46dgxRcjNyogMAwH5w7T+P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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image(filename='images/portalpage.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "\n", "IPython works by starting a web server on your PC and then serving pages from this server. This web server has an IP address of `127.0.0.1` (localhost), on port `8888`, i.e., browser address `127.0.0.1:8888` or `localhost:8888`. You can at any time open a new browser tab and enter this address and the server portal page should appear. This is sometimes convenient when you close all IPython tabs in the browser, but the server is still running." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image(filename='images/ipaddress.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "You can see all the IPython options by typing `ipython --help`." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Starting more than one IPython notebook server\n", "\n", "From the manual: \"You can start more than one notebook server at the same time, if you want to work on notebooks in different directories. By default the first notebook server starts on port 8888, and later notebook servers search for ports near that one. You can also manually specify the port with the --port option.\"\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## IPython notebook security" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The IPython notebook server acts as a generic file server for files inside the same tree as your notebooks. Access is not granted _outside_ the notebook folder so you have strict control over what files are visible. It is recommended that you do not run the notebook server with a notebook directory at a high level in your file system (e.g. your home directory).\n", "\n", "When you run the notebook in a password-protected manner, local file access is restricted to authenticated users unless read-only views are active.\n", "\n", "**More information is required here**" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Live Connection to the Internet\n", "\n", "IPython uses MathJax to render LaTeX, as in $y=ax^2+bx+c$. The default mode is to access MathJax online, live, as you are working. This means that you must be working on a PC connected to the Internet in order to render LaTeX. This is only required when LaTeX rendering is requested, otherwise you don't need Internet access. Once the LaTeX is rendered it is embedded as an image in the document and you do not need to be connected to MathJax to view the previously rendered image. \n", "\n", "One catch is that if you live behind a server that requires you to authenticate before logging in to the Internet, this means that you must authenticate your Internet access prior to starting the ipython server." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## IPython and your Firewall\n", "\n", "If IPython does not work, it may be because your antivirus software or firewall prevents it from working. The firewall might not be set up to grant execution rights to the default IPython notebook server operating 127.0.0.1:8888. In this case the cells will simply not execute, with no warning. You don't receive any output in from the cells." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Using `localhost` to bypass the firewall\n", "\n", "This approach does not require any changes to your firewall. Some firewalls are set up to grant `localhost` execution rights. In this case the server can be started with the command \n", "`ipython notebook --ip=localhost` \n", "\n", "\n", "Once started, the pages are served from \n", "`http://localhost:8888/` \n", "and not from ` http://127.0.0.1:8888/`.\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Setting up the Sophos firewall" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Here is a description of how to fix this for Sophos - it may be necessary to do this after each reboot. Other firewalls will have similar functionality.\n", "\n", "Sophos blocks the browser to not allows execution of code as is required by ipython. To enable the browser ipython functionality change the authorisation on your local loopback IP address 127.0.0.1.\n", "\n", "*For this to work, you must have Administrator rights, or at least belong to the Admin group (call your ICT sysadmin if you don't have these rights.* Start by opening the Sophos application from the system tray by right-clicking on the S-shield icon and selecting the" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image(filename='images/sophos01.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Once in the Sophos control panel, select the following menu option \n", "`.`\n", "The following window should appear:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image(filename='images/sophos02.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "If the 127.0.0.1 loopback IP address does not appear in the list, add it as shown above.\n", "\n", "Now close any ipython notebooks that you have, also the page at 127.0.0.1:8888. Close the command window and re-open a new one. Open a new tab and enter the local address 127.0.0.1:8888. This should display the notebooks in the current directory and once opened, they should work." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Starting a new notebook\n", "\n", "To create a new page click on the `New Notebook` button on the IPython notebook portal.\n", "\n", "You can also make a copy of an existing notebook by selecting the appropriate menu option under the `File` menu." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image(filename='images/ipython-newnotebook.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Notebook cells" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The notebook comprises a 'behind-the-scene' kernel that does all the processing and a 'front-man' rendering in the browser window. It is important to understand that the web page browser does very little work, it only renders the information under instruction from the kernel. The kernel contains all the code, text and data.\n", "\n", "The notebook consists of a number of cells which can contain code, text or other information. Each cell is 'executed' or 'run' by clicking on the cell and pressing the Shift-Enter key combination. Cells can also be run in sequence from the Cell menu entry. Running a cell does at least two things: (1) the cell changes/updates its data in the kernel and (2) the updated data is rendered in the browser window.\n", "\n", "Writing the notebook becomes the process of creating cells and adding text or code to the cell.\n", "\n", "Once created the cells must be executed. The cell execution must be in the order entered in the notebook (from start to end). You can do this manually or use the menu entry to run all cells consecutively.\n", "\n", "It is possible and often done that cells are moved up or down, changing their location in the sequence. When the cell sequence is changed you must keep track by executing the cells in their new locations.\n", "If the execution in strict sequence is not followed it can lead to all sorts of difficulties, see Notebooks Remember" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Saving and closing the Notebook" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The notebook is saved in its json format by saving from the IPython menu. Click on the save button (leftmost button with the mouse-over message 'Save and Checkpoint') or select the `File Save and Checkpoint` menu option.\n", "\n", "The IPython notebook file is saved and closed by selecting the `File Close and Halt` menu option.\n", "\n", "Never use a Python `exit()` function in your notebook, because the notebook will interpret this as an exit to its own process, closing down the server." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Converting the notebook to other formats\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### IPython versions and notebook versions" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "IPython version 2.x writes files in notebook format nbformat 3. \n", "IPython version 3.x writes files in notebook format nbformat 4. \n", " \n", " IPython 3 can read nbformat 3 files, converting on opening. When saved the file will be in nbformat 4.\n", " \n", " To convert a file from nbformat 4 to nbformat 3, use the following command line command:\n", " \n", " ipython nbconvert --to notebook --nbformat 3 MyNotebook.ipynb \n", "\n", "\n", " \n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### IPython built-in conversion\n", "\n", "Starting from IPython 2, the notebook can be converted to a Python file (code with embedded comments), an HTML file or a ReST file. On the _File_ menu, use _Download as_.\n", "\n", "The notebook can also be saved to an HTML file by saving from your browser's menu. This saved HTML file is, however, not fully self-contained (images and JavaScript files are in a directory). So this is *not* the ideal way to save the file. " ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "HTML('')" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Command-line conversion" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "On the command line IPython has a `convert` subcommand to convert from the IPython format to other formats. In the command window, where the file is located type: \n", "`ipython nbconvert filename.ipynb` \n", "This will create a fully self-contained HTML file that you can print or mail as a single file. The only problem is that HTML does not print very well, especially with large figures.\n", "\n", "The notebook can be converted to LaTeX and then compiled to a PDF format with the following command: \n", "`ipython nbconvert --to latex --post filename.ipynb` \n", "\n", "The LaTeX document style can be specified as follows: \n", "`ipython nbconvert --to latex filename.ipynb --template=article` \n", "once the tex document is ready run pdflatex: \n", "`pdflatex filename.tex` \n", "\n", " \n", " - blogging with Nikola \n", " - slides \n", " - a couple of links \n", " - using the nbconvert API \n", "\n", "Tips to use IPython for publication ready work: http://blog.juliusschulz.de/blog/ultimate-ipython-notebook" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### LaTeX docs with template control" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The standard LaTeX converter does not provide good control over the style of the resultant document. If you require better control of the document style look at my [ipnb2tex script](https://github.com/NelisW/ipynb2tex). The script support floating figures and tables and citations.\n", "See this [PDF](https://github.com/NelisW/ipynb2tex/blob/master/test2LaTeX-wp.pdf?raw=true) for an example of the output from this converter. Using this converter you can fully control the LaTeX template to achieve the document format you require. The converter is not yet tested with the latest notebook file format version (20240108). \n", "\n", "[Making publication ready Python Notebooks](http://blog.juliusschulz.de/blog/ultimate-ipython-notebook) provides very useful information on preparing notebooks such that it can be used for final publications.\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### High-quality graphics in LaTeX" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "By default the Matplotlib backend for IPython generates png files. The quality of these files are not all that good for publication. LaTeX traditionally uses Encapsulated PostScript (eps) files for publications, or PDF files in PDFLaTeX. It is possible to instruct the backend to render in Scalable Vector Graphics (svg) format by using:\n", "`%config InlineBackend.figure_format = 'svg'` \n", "The svg file is, however, not rendereable in LaTeX and must be converted to PDF for use in PDFLaTeX. In order to do the conversion you must have [Inkscape](http://www.inkscape.org/en/) on your PC (and on Windows the path to the inkscape executable must be on your PATH). The nbconvert process will convert the svg files created by Matplotlib/IPython to PDF files using Inkscape on your PC.\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Notebook viewer on the internet" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "There is a website [nbviewer.ipython.org/](http://nbviewer.ipython.org/) that will convert a notebook from ipynb format to html and display it in your browser. Just browse over to and enter the URL of the notebook you want to view.\n", "\n", "A particularly useful feature of is that you can add the GitHub username of someone and then can view all the notebooks by that user.\n", "\n", "The `nbviewer` site keeps a cache of the most recently calculated version of your notebook. To force an updated calculation add this to the end of the URL:\n", "`?flush_cache=true`.\n", "\n", "Alternatively, you can build a composite URL such as follows to view a notebook." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Keyboard Shortcuts" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Jupyter stores a list of keyboard shortcuts under the menu at the top: `Help > Keyboard Shortcuts`.\n", "Another way to access keyboard shortcuts, and a handy way to learn them is to use the command palette: `Ctrl + Shift + C` or `Ctrl + Shift + P` , but note that this key press combination may be hardwired in the browser..\n", "\n", "http://ipython.readthedocs.io/en/stable/config/shortcuts/index.html" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "[Josh Devlin](https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/) provides the following summary of useful keyboard shortcuts (but study the full set as described above):\n", "\n", "- `Esc` will take you into command mode where you can navigate around your notebook with arrow keys.\n", "- While in command mode:\n", " - `A` to insert a new cell above the current cell, \n", " - `B` to insert a new cell below.\n", " - `M` to change the current cell to Markdown, \n", " - `Y` to change it back to code\n", " - `D + D` (press the key twice) to delete the current cell\n", "- `Enter` will take you from command mode back into edit mode for the given cell.\n", "- `Shift + Tab` will show you the Docstring (documentation) for the the object you have just typed in a code cell - you can keep pressing this short cut to cycle through a few modes of documentation. This operation requires `install pyreadline`.\n", "- `Ctrl + Shift + -` will split the current cell into two from where your cursor is.\n", "- `Esc + F` Find and replace on your code but not the outputs.\n", "- `Esc + O` Toggle cell output.\n", "- Select Multiple Cells:\n", " - `Shift + J or Shift + Down` selects the next sell in a downwards direction.\n", " - `Shift + K or Shift + Up`select sells in an upwards direction.\n", " - Once cells are selected, you can then delete / copy / cut / paste / run them as a batch. This is helpful when you need to move parts of a notebook.\n", " - You can also use `Shift + M` to merge multiple cells.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Pretty Print all cell outputs\n", "\n", "Normally only the last output in the cell will be printed. For everything else, you have to manually add print(), which is fine but not super convenient. You can change that by adding this at the top of the notebook:\n", "\n", " from IPython.core.interactiveshell import InteractiveShell\n", " InteractiveShell.ast_node_interactivity = \"all\"\n", "\n", "Any time you want to go back to the original setting, just run\n", "\n", " from IPython.core.interactiveshell import InteractiveShell\n", " InteractiveShell.ast_node_interactivity = \"last_expr\"\n", "\n", "Just be aware that you have to run the setting change in a separate cell for it to take effect for the next cell run." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Magics and System Commands\n", "\n", "IPython has a set of predefined 'magic functions' that you can call with a command line style syntax. There are two kinds of magics, line-oriented and cell-oriented. Line magics are prefixed with the % character and work much like OS command-line calls: they get as an argument the rest of the line, where arguments are passed without parentheses or quotes. Cell magics are prefixed with a double %%, and they are functions that get as an argument not only the rest of the line, but also the lines below it in a separate argument.\n", "\n", " \n", "\n", "\n", "System commands (as you would normally type in a command window) can be executed by pre-pending with an exclamation mark." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Volume in drive K has no label.\n", " Volume Serial Number is D861-697A\n", "\n", " Directory of K:\\WorkN\\ComputationalRadiometry\n", "\n", "2021/08/23 18:46 56ÿ931 00-Installing-Python-pyradi.ipynb\n", "2021/08/23 20:21 709ÿ792 01-IPythonHintsAndTips.ipynb\n", "2021/08/23 20:17 865ÿ609 02-PythonWhirlwindCheatSheet.ipynb\n", "2021/08/23 16:06 699ÿ014 03-Introduction-to-Radiometry.ipynb\n", "2021/08/23 16:13 1ÿ736ÿ911 04-IntroductionToComputationalRadiometryWithPyradi.ipynb\n", "2019/10/08 06:23 1ÿ615ÿ272 05a-PlottingWithPyradi-GeneralAndCartesian.ipynb\n", "2021/03/15 21:17 4ÿ022ÿ544 05b-PlottingWithPyradi-Polar-and-3D.ipynb\n", "2021/06/01 17:45 91ÿ205 06-Diverse-pyradi-utilities.ipynb\n", "2021/06/04 12:08 1ÿ943ÿ496 07-Optical-Sources.ipynb\n", "2021/07/18 17:46 801ÿ635 08-ModtranFileProcessing.ipynb\n", "2021/05/10 10:45 297ÿ868 09a-DetectorModelling.ipynb\n", "2021/06/02 14:03 197ÿ015 09b-StaringArrayDetectors.ipynb\n", "2021/06/02 14:03 3ÿ502ÿ386 09c-StaringArrayDetectors-Visual-low-light.ipynb\n", "2021/06/02 14:26 3ÿ689ÿ616 09d-StaringArrayDetectors-Infrared-sensor.ipynb\n", "2018/04/04 10:15 1ÿ726ÿ703 10-ImageUtilities.ipynb\n", "2018/05/28 18:54 860ÿ315 11-InfraredMeasurementAndAnalysis.ipynb\n", "2020/11/11 16:23 282ÿ034 12a-FlameSensorAnalysis.ipynb\n", "2016/12/13 13:55 4ÿ400ÿ310 12b-AlbedoDerivation.ipynb\n", "2016/12/13 13:55 9ÿ543ÿ136 12c-AtmosphericEffectColourCoords.ipynb\n", "2016/12/13 13:55 341ÿ897 12d-SpectralTemperatureEstimation.ipynb\n", "2016/12/13 13:55 1ÿ147ÿ431 12e-Cloth-Targets.ipynb\n", "2017/02/16 09:28 2ÿ600ÿ608 12f-FOV-optimisation.ipynb\n", "2018/03/24 23:02 553ÿ401 12g-Plume-texture-Copy1.ipynb\n", "2018/04/04 10:17 223ÿ302 12g-Plume-texture.ipynb\n", "2020/11/01 10:58 2ÿ033ÿ002 12h-MWIR-Well-fill.ipynb\n", "2017/04/11 13:56 1ÿ124 12i-Pixel-crosstalk-MTF-impact-MWIR-performance.ipynb\n", "2020/11/02 15:46 413ÿ143 12j-laser-systems-performance.ipynb\n", "2016/12/13 13:55 2ÿ085 99-Pyradi-slides.ipynb\n", "2017/01/13 12:27 30ÿ544 PlayStats.ipynb\n", " 29 File(s) 44ÿ388ÿ329 bytes\n", " 0 Dir(s) 1ÿ310ÿ544ÿ900ÿ096 bytes free\n" ] } ], "source": [ "import os\n", "# test to see if this is Linux or Windows\n", "if os.path == '/':\n", " !ls *.ipynb\n", "else:\n", " !dir *.ipynb" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "There are 'magics' to support a number of other languages in the IPython notebook. From the [IPython notebook website](http://ipython.org/):\n", "\n", "\"We ship the official IPython kernel, but kernels for other languages such as Julia and Haskell are actively developed and used. Additionally, the IPython kernel supports multi-language integration, letting you for example mix Python code with Cython, R, Octave, and scripting in Bash, Perl or Ruby.\"\n", "\n", " \n", " \n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Magics for general use\n", "\n", "Thanks to [Josh Devlin](https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/) for some of the examples shown here." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "List all the magics currently available" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "application/json": { "cell": { "!": "OSMagics", "HTML": "Other", "SVG": "Other", "bash": "Other", "capture": "ExecutionMagics", "cmd": "Other", "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", "cd": "OSMagics", "clear": "KernelMagics", "cls": "KernelMagics", "colors": "BasicMagics", "conda": "PackagingMagics", "config": "ConfigMagics", "connect_info": "KernelMagics", "copy": "Other", "ddir": "Other", "debug": "ExecutionMagics", "dhist": "OSMagics", "dirs": "OSMagics", "doctest_mode": "BasicMagics", "echo": "Other", "ed": "Other", "edit": "KernelMagics", "env": "OSMagics", "gui": "BasicMagics", "hist": "Other", "history": "HistoryMagics", "killbgscripts": "ScriptMagics", "ldir": "Other", "less": "KernelMagics", "load": "CodeMagics", "load_ext": "ExtensionMagics", "loadpy": "CodeMagics", "logoff": "LoggingMagics", "logon": "LoggingMagics", "logstart": "LoggingMagics", "logstate": "LoggingMagics", "logstop": "LoggingMagics", "ls": "Other", "lsmagic": "BasicMagics", "macro": "ExecutionMagics", "magic": "BasicMagics", "matplotlib": "PylabMagics", "mkdir": "Other", "more": "KernelMagics", "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", "ren": "Other", "rep": "Other", "rerun": "HistoryMagics", "reset": "NamespaceMagics", "reset_selective": "NamespaceMagics", "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 %cd %clear %cls %colors %conda %config %connect_info %copy %ddir %debug %dhist %dirs %doctest_mode %echo %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %macro %magic %matplotlib %mkdir %more %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 %ren %rep %rerun %reset %reset_selective %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 %%cmd %%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": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%lsmagic" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "To learn more about a magic execute ? followed by the magic as in \n", "\n", " ?%pastebin\n", " \n", "it will open a new panel where the docstring is displayed." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "?%timeit" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "BTW, you can also display the docstring of any python function by \n", "\n", " import numpy as np\n", " ?np.asarray" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Remove variables from the IPython notebook by using the `%reset` and `%reset_selective varname` magics. `%reset` removes all variables (i.e., cleans out the whole lot), whereas with `%reset_selective varname` you can specificy which variables must be cleared. [Note](https://ipython.org/ipython-doc/3/interactive/magics.html#magic-reset_selective) that `varname` is a regular expression, but such that if a single letter is given all variables starting with that letter will be erased. So to ensure that only a single variable is removed, anchor both ends as shown below with `^` (beginning of line) and `$` (end of line)." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "['HTML',\n", " 'Image',\n", " 'a',\n", " 'b1m',\n", " 'b2m',\n", " 'b2s',\n", " 'b3m',\n", " 'b4m',\n", " 'c',\n", " 'display',\n", " 'fi',\n", " 'one',\n", " 'os',\n", " 'three',\n", " 'two']" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#remove only variable b\n", "a=1; b=2; c=3; b1m=4; b2m=5; b3m=6; b4m=7; b2s=8\n", "%reset_selective -f ^b$ \n", "%who_ls" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "['HTML', 'Image', 'a', 'c', 'display', 'fi', 'one', 'os', 'three', 'two']" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#remove all variables starting with the letter b\n", "a=1; b=2; c=3; b1m=4; b2m=5; b3m=6; b4m=7; b2s=8\n", "%reset_selective -f b \n", "%who_ls" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The `%who` command without any arguments will list all variables that exist in the global scope. Passing a parameter like str will list only variables of that type." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one\t three\t two\t \n" ] } ], "source": [ "one = \"for the money\"\n", "two = \"for the show\"\n", "three = \"to get ready now go cat go\" \n", "%who str" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Use the `%%writefile` magic to write contents to a file. The file can be read in normal Python or it can be read and popped up in a window by `%pycat`." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting test.txt\n" ] } ], "source": [ "%%writefile test.txt\n", "This is a test file!\n", "It can contain anything I want...\n", "\n", "\n", "more..." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is a test file!\n", " It can contain anything I want...\n", " \n", " \n", " more...\n", "\n" ] } ], "source": [ "#open the file and read its contents\n", "with open('test.txt', 'r') as fi:\n", " print('{}'.format(' '.join(fi.readlines())))" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "%pycat test.txt" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The %edit magic is supposed to start up an editor from within IPython - I never got that to work under windows. \n", " \n", " \n", " \n", " \n", "\n", "This works ok if you have a fast editor: \n", " \n", "Just replace gvim with your editor's exe and make sure it is on the path.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "You can manage environment variables of your notebook without restarting the jupyter server process, `%env` is the most convenient way. Running `%env` without any arguments lists all environment variables.\n" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "env: OMP_NUM_THREADS=4\n" ] } ], "source": [ "# The line below sets the environment variable OMP_NUM_THREADS\n", "%env OMP_NUM_THREADS=4" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The`%run` magic runs a scipt along the stated path and prints the results to the cell output. Useful to run external scripts not coded in the notebook itself. Just be sure to copy the script with the notebook. The next cell writes a script to the current directory and then the following cell executes it." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting helloipython.py\n" ] } ], "source": [ "%%file helloipython.py\n", "print('Hello IPython!')" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello IPython!\n" ] } ], "source": [ "%run helloipython.py" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "`%run` can also run Jupyter/IPython notebooks and insert the output of the notebook into the current result cell." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0.005 -2.5758293 ]\n", " [ 0.01 -2.32634787]\n", " [ 0.05 -1.64485363]\n", " [ 0.1 -1.28155157]\n", " [ 0.2 -0.84162123]\n", " [ 0.3 -0.52440051]\n", " [ 0.4 -0.2533471 ]\n", " [ 0.5 -0. ]\n", " [ 0.6 0.2533471 ]\n", " [ 0.7 0.52440051]\n", " [ 0.8 0.84162123]\n", " [ 0.9 1.28155157]\n", " [ 0.95 1.64485363]\n", " [ 0.97 1.88079361]\n", " [ 0.99 2.32634787]\n", " [ 0.9987 3.01145376]]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Stored 'table' (ndarray)\n" ] } ], "source": [ "%run ./PlayStats.ipynb" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The %store command lets you pass variables between two different notebooks.\n", "In the PlayStats.ipynb the `table` variable is stored as follows:\n", "\n", " # store the variable in the server for another notebook to read it\n", " %store table\n", "\n", "If the other notebook has been executed in the present Jupyter session, the data can be retrieved in this notebook by \n", "\n", " %store -r table\n", " print(table)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The %timeit magic can time the execution of a an expression.\n", "It can be one line or multiline statement. In a one liner we can pass through multiple ones separated by semicolon. \n", "" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "129 ns ± 1.61 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)\n" ] } ], "source": [ "%timeit range(100)" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "`% pastebin 'file.py'` to upload code to pastebin and get the url returned." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "`% bash` to run cell with bash in a subprocess. " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "`%mprun & %memit`: See how much memory a script uses (line-by-line, or averaged over a bunch of runs)" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "`%prun statement_name` will give you an ordered table showing you the number of times each internal function was called within the statement, the time each call took as well as the cumulative time of all runs of the function." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "`%% HTML`: to render the cell as HTML. So you can even embed an image or other media in your notebook" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ " %%HTML\n", " " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "`%%latex` to render cell contents as LaTeX, see [here](http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%205%20-%20Rich%20Display%20System.ipynb#LaTeX)" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "$$\n", "\\begin{aligned}\n", "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n", "\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n", "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/latex": [ "\\begin{eqnarray}\n", "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n", "\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n", "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \n", "\\end{eqnarray}" ], "text/plain": [ "" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Latex\n", "Latex(r\"\"\"\\begin{eqnarray}\n", "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n", "\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n", "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \n", "\\end{eqnarray}\"\"\")" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Magics for using IPython for numeric and scientific work" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Early tutorials advised that you start the IPython kernel with the `--pylab=inline` option to load a bunch of packages and see Matplotlib graphs in the browser. As from IPython 2.0, the server advises you not to use this option, because it pre-loads a number of modules and packages that may not be required and may even interfere with your intended work.\n", "\n", "**Don't use `%pylab` either:**\n", "Then there is the `%pylab` magic command, which essentially does the same as the `--pylab=inline` option. The full command is [`%pylab [--no-import-all] [gui]`](http://ipython.org/ipython-doc/stable/api/generated/IPython.core.magics.pylab.html). \n", "When using this magic, IPython loads numpy and matplotlib. The following libraries are imported in this magic: \n", "\n", " import numpy\n", " import matplotlib\n", " from matplotlib import pylab, mlab, pyplot\n", " np = numpy\n", " plt = pyplot\n", "\n", " from IPython.display import display\n", " from IPython.core.pylabtools import figsize, getfigs\n", "\n", " from pylab import *\n", " from numpy import *\n", "\n", "Clearly the last two imports could potentially cause namespace conflicts with other modules. This is because `import *` is [not good practice](https://stackoverflow.com/questions/2386714/why-is-import-bad). If you use the form `%pylab -–no-import-all` the last two * imports will not be executed.\n", "So the `%pylab` magic command could be something like `%pylab -–no-import-all inline` to get inline plots in the notebook.\n", "\n", "But this method still clutters the IPython interactive namespace with global pylab names, potentially causing problems.\n", "\n", "**Use `%matplotlib` instead:**\n", "Do use the `%matplotlib [gtk|gtk3|inline|osx|qt|qt4|tk|wx]` magic to define the Matplotlib plotting backend without importing anything into the IPython interactive namespace. For the full discussion [see here](https://carreau.github.io/posts/10-No-PyLab-Thanks/). So the preferred method to get Matplotlib graphics inline in the notebook is to use the magic command \n", " `%matplotlib inline` \n", "After using this magic, you still have to import numpy manually. " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Note that the file format to which Matplotlib renders a graphic can be set by the following magic (svg, png or high resolution png): \n", "\n", "`%config InlineBackend.figure_format = 'svg'` \n", "`%config InlineBackend.figure_format = 'png'` \n", "`%config InlineBackend.figure_format = 'retina'` \n", " \n", " \n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Results display in Results Cell\n", "\n", "Normally IPython will display the _last_ unassigned result from the cell in the result cell. You can modify the `ast_note_interactivity` kernel option to make jupyter do this for all unassigned variables.\n", "\n", "If you want to set this behaviour for all instances of Jupyter (Notebook and Console), simply create a file `~/.ipython/profile_default/ipython_config.py` with the lines below.\n", "\n", " c = get_config()\n", " # Run all nodes interactively\n", " c.InteractiveShell.ast_node_interactivity = \"all\"\n", "\n", "https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "from IPython.core.interactiveshell import InteractiveShell\n", "InteractiveShell.ast_node_interactivity = \"all\"" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "7" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "5\n", "a = 6\n", "7" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Writing functions in other languages\n", "This example is taken from [Josh Devlin](https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/), thanks Josh!" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "You can write functions in cython or fortran and use those directly from python code. First you’ll need to install:\n", " pip install cython fortran-magic \n", "Then\n", "\n", " %load_ext Cython\n", " \n", " %%cython\n", " def myltiply_by_2(float x):\n", " return 2.0 * x\n", " \n", "Then in some further-down cell:\n", " myltiply_by_2(23.)\n", "\n", "Or \n", "\n", " %load_ext fortranmagic\n", "\n", " %%fortran\n", " subroutine compute_fortran(x, y, z)\n", " real, intent(in) :: x(:), y(:)\n", " real, intent(out) :: z(size(x, 1))\n", "\n", " z = sin(x + y)\n", "\n", " end subroutine compute_fortran\n", " \n", "Then in some further-down cell:\n", "\n", " compute_fortran([1, 2, 3], [4, 5, 6])\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## IPython notebook extensions" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### contrib nbextensions" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The following repository contains a collection of extensions that add functionality to the Jupyter notebook. There are several extensions, best visit the repo for more information.\n", "\n", "https://github.com/ipython-contrib/jupyter_contrib_nbextensions \n", "https://github.com/ipython-contrib/IPython-notebook-extensions \n", "https://github.com/ipython/ipython/wiki/Extensions-Index \n", "\n", "The following commands will install the extensions, as well as a menu based configurator that will help you browse and enable the extensions from the main Jupyter notebook screen.\n", "\n", "Method 1 \n", "\n", "https://github.com/Jupyter-contrib/jupyter_nbextensions_configurator\n", "\n", "\n", "Method 2\n", "The install instructions are taken from [Josh Devlin](https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/). There is a risk that the following installation may not succeed on your Jupyter installation, depending on software version status. \n", " pip install --upgrade https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master\n", " pip install --upgrade jupyter_nbextensions_configurator\n", " jupyter contrib nbextension install --user\n", " jupyter nbextensions_configurator enable --user" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can install Nbextensions any time from your command line like this\n", "\n", " conda install -c conda-forge jupyter_contrib_nbextensions\n", " conda install -c conda-forge jupyter_nbextensions_configurator\n", " jupyter contrib nbextension install --user\n", " \n", "Once they’re installed, you’ll see an Nbextensions tab. Explore away! " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### General notes" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The IPython architecture supports the installation of extension packages to add new functionality to notebooks. \n", "\n", "\n", "\n", "On Windows, when using Anaconda, the notebook extensions are installed here: \n", "\n", " C:\\Anaconda\\share\\jupyter\\nbextensions\n", " \n", "On raw Python installations the notebook extensions appear to be installed here: \n", "\n", " C:\\Users\\YourUserName\\.ipython\\nbextensions\n", " C:\\Users\\YourUserName\\.ipython\\profile_default\\static\\custom" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### ICalico spell checker" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The ICalico spell checker (thanks Doug Blank!) checks spelling and underlines words that appear incorrect. The spell checker is implemented in JavaScript and works on markdown cells in edit mode. It points out spelling errors but do not offer corrections at current. The word list is US English, so it is not very friendly towards UK English. The dictionary can be changed, see below.\n", "\n", "To use the spell checker open a markdown cell for editing and click on the 'tickmark' button on the toolbar. The tickmark button will only be present if you installed and activated the spell checker, and then restarted the jupyter server.\n", "\n", "The instructions are somewhat confusing because of different versions of the Jupyter notebook and different versions (and repository locations) of the extension.\n", "\n", "To install and activate the extension follow the YouTube video below, or the instructions at and modified [here](http://stackoverflow.com/questions/32046241/how-to-add-automatically-extension-to-jupiter-ipython-notebook). The installation requires at least the first two steps: \n", "\n", "1. Download the extension (do this once only) - I am not sure which to use for the different combinations of Jupyter and repos: \n", " - Let Jupyter download it for you:\n", " \n", " !jupyter nbextension install https://github.com/Calysto/notebook-extensions/archive/master.zip\n", " \n", " or \n", " \n", " !jupyter nbextension install https://github.com/Calysto/notebook-extensions\n", " \n", "\n", " - Download manually:\n", " Clone the repo at `https://github.com/Calysto/notebook-extensions` into the local directory `C:\\ProgramData\\jupyter\\nbextensions\\notebook-extensions-master`. Note that you need to clone to a different directory name than is the repo name.\n", " Make a copy of the files shown below, to one level lower than where you cloned, in `C:\\ProgramData\\jupyter\\nbextensions`\n", " \n", " ![calysto-spell.png](images/calysto-spell.png)\n", " \n", " \n", "2. Activate it by executing the following: \n", " !jupyter nbextension enable calico-document-tools\n", " \n", "3. To activate the spell checker for Jupyer 4.x notebooks, edit the file \n", "`C:\\Users\\YourUserName\\.jupyter\\nbconfig\\notebook.json` in your Jupyter profile and conform that the following load_extensions commands are present (add in the appropriate place if necessary): \n", " {\n", " \"load_extensions\": {\"calico-spell-check\":true,\n", " \"calico-document-tools\": true,\n", " \"calico-cell-tools\":true\n", " }\n", " }\n", "\n", "The ICalico spell checker discussion takes place here: \n", " \n" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/jpeg": "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\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "# a talk about the ICalico spell checker extension\n", "YouTubeVideo('Km3AtRynWFQ')" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### UK English spell checker\n", "\n", " I have not yet had the time to figure out how to do this for Jupyter 4\n", "\n", "\n", "[Marco Pinto](http://marcoagpinto.cidadevirtual.pt/proofingtoolgui.html) maintains a UK English hunspell-style list [here](https://github.com/marcoagpinto/aoo-mozilla-en-dict/tree/master/en_GB%20%28Marco%20Pinto%29). To implement the UK dictionary in an Anaconda Jupyter installation on Windows:\n", "\n", "1. Download the two files `en-GB.aff` and `en-GB.dic` into the (new) folder `C:\\Anaconda\\share\\jupyter\\nbextensions\\typo\\dictionaries\\en_GB\\`. \n", "\n", "2. Rename the two files to use underscore instead of dash/hyphen (look at the en_US equivalent). Change `en-GB.aff` to `en_GB.aff` and change `en-GB.dic` to `en_GB.dic`.\n", "\n", "3. Edit the file `C:\\Anaconda\\share\\jupyter\\nbextensions\\calico-spell-check.js` to replace `var lang = \"en_US\";` with `var lang = \"en_GB\";`.\n", "\n", "It should be a simple matter to find the equivalent directories in Linux.\n", "\n", "So now at least we have a UK dictionary, the remaining work is to add new words. Marco Pinto's GUI-based tool at is exceptionally suitable tool for this purpose. Doug Blank also pointed out: \"Also, one can add words to the `calico-spell-check extension` by making a JSON object in a file named `words.json` and putting it next to `calico-spell-check.js`.\"" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Multicursor editor support\n", "\n", "Jupyter supports mutiple cursors, similar to Sublime Text. Simply click and drag your mouse while holding down `Alt`." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Optimising with IPython" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Local files" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "If you have local files in your Notebook directory, you can refer to these files in Markdown cells via relative URLs that are prefixed with files/ as in:\n", "\n", "files/[subdirectory/]filename" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Help" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Introspection help is available by typing the object's name followed by a question mark, then execute the cell.\n", "It will print details about the object, including docstrings, function call argument) and class constructor details.\n", "Double click on the divider to close the help console." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA24AAAE4CAIAAACsezfzAAAAB3RJTUUH3gQVBzk0XNi5GAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAARnQU1BAACxjwv8YQUAAEmJSURBVHja7d1vbBvnnej7UeI6VRM73Y3dUMm1LWavGwddlS7sLVOcGqXhYnPt7nK3BXmcBiadV3sRQMW2gAynOCC6B8RBY5hAi1MBxt03J6YMxymJ7S3P1rpZtAgPVKBhkG6s6AR1YKwVy0hCJ45aKwmYJm58n2f+cUjODDkjSsM/3w9ahxzOPPPMMyPOj7/nmZmRPXv2VCqVDz74QFFVq9WXX345Go2Oj48rAAAAGDgrKyteF1leXv7tb38r4sZQKKRN2bhx45e//OXbgt4WAAAA9CtCSQAAAEhHjx51+XRkZKR1IqEkAAAA9DjSazRJKAkAADDsrBGkezTZRA8lbTOWAAAAGHitsaNLNNkUNG5o+oCYEgAAYKicPn3a0/zWoPE2hfARAAAAvtDBDQAAgPbaXMFtfkxY2a9eeGpE89QLLZ9Vzz3q/KGvEgEAABqu4NaihqCrBAAAgP5Q7+AmKwkAAAAXIwZzSsNYSYJIAAAAtGUGjc1jJYkmh019EKX06Lmq28zm2Ek5n/mGsZQAAAwrspLDTIaRY99+1jLl2W+PtQsnzfm+8v36++9/paPFAABA3+roCm6uvBkEIrBr1hgxqqrnvqtP/OFvbklvPXNYvnv229/tJCo8/Mxb6lK/+aH2/tlvP01qEgCAIUNWcmi98LQZSD75sPoi9OiPjWCybVR4+JkfPxpSXz38pBFMfv/HJCYBABgu9afdkJUcLtXXL2gvDo+PmxND47u1Fxdedw8KD/99LGS+GR8/rL149vXXg94sAACwppou4iYrOYj0DmsrvfO67vXX9R5vOezRZIx/bBcU7h6vR5L1ABQAAAyZhvtKkpJEh9plLQEAwFDYYL4iMTmkfvibW/pYSb/MvnIAADBkmp92Q2JyWDwcMy6WKdcvsen4mdvP/r/lelrS7Cv/YWx1MSkAAOhprf3YNmMlCSWHQz2W/IoeOFbP/VgbKnn4mcfbxYT1Owa98JQxwJJIEgCAYaOHkrdu3SKCHDYPP2lci6Pfh1K/92T9Pj/ODh8+bFyuYwaSv1llPzkAAOg79aykGU0SUw6N0KPnmi7tlvcdP9c2kBT+/sfWJeViBJIAAAwf/bIbBkoOgoefvHXrSYfPZNT46DkvH7Qr0X1JAAAwDBoenMj9gAAAANA5/Wk3Wvh469Yt818AAADAXXNWUmGsJAAAAFrYdl/Xx0pqyUjiSLhwHTsJAACGghk3Kk1ZyaYXAAAAgIvbVl8EAAAAhlNDKMnl2wAAAGjLjBgb7ivJtdsAAABDYnZ2tpPZDh486PLpBusbspIAAADDY8uWLe4zXL9+3XxtXsFtTT7ajJUkmgQAAIATa6zIZTcAAADwiVASAAAA3piJSUJJAAAAeKZFk4SSAAAA8IlQEgAAAD4RSgIAAMCnDasvAkH54x//+MYbb9RqtY8//jjougAAMLA+9alPjY6O3n///XfccUfQdQlY630lCSX7lYgjL1269Gd/9mdbtmzZuHFj0NUBAGBgffTRRzdu3HjttdcefPBBoskmdHD3qzfeeEPEkffccw9xJAAAa0qcardu3SrOueLkG3Rdeg6hZL96//3377777qBrAQDAsNi0aVOtVgu6Fj3B+qhtQsl+9cknn2zYwPgEAADWycaNG7k4oRWhJAAAAHwilAQAAIBP9JACAAAMqevXr3c+s3WIpIlQEgAAYBgdPHjQx1JN95WkgxsAAAA+EUoOqGvP/eS5a9eeO/W95651v/CFswdPnJD/O7sQ9HZ2bZN+Irfo7CvrvuJfnJIt+RPnhhQ7sY/b+dpz3ztx6hdrcAw66PJ+lI3v5Tj3Oj8A9ClrTzcd3D5Vz/147Ns3FOXuZ9767qMhfeILT/3Xr3xfUX74d7ee3G03c+NH1X99dOy3zyrK4Wf+73NmEV1y7cJl5b5Hri0oXz9wr/ucr5w9cfyqfHHo0PH//Oapxy+siNe7dj/+o0ecF5x4bHZCnjWfUj63fi3eTQs/OfXmd554xLpJ3zmuKKfe/OK6V+UbTxxXTp3dNuE4w72PPDHb/e1dL/c+8qPja1f6+uzHzZMHmnaPCFjPn1dfib+a70y0nR8ABsQtVdPEIcpKijhvZMTyv6curLJAEQLeulWPI0W8+BXl7279Zsfh8ca4sPqv3/32Z39z6we3bv3gN8rPn3rBmB76m3O3fvDWM2tym/GXLt/9tYmF/3X17m1tIknli48dn9y8efJxeUYUUcuJbfLs6BZHGq69q3x9d/vZetG1Ny/ffV9HE9ejMs/9UrlnbUPYoDZtra39frz27oqy+YFvNBzmMo5UDh2fPX589tC2879+rt38ADDghigr+fCTP7j1pAz4vqs82vUsoBB69LsyUH+hJUJ9/bryzP/1sF6Hvys/+q/Kub9Zu8289pyeWVROyGTj+RNnTxx/zDVSWbisPPAd4+R39ca2r03oBX3v6QsX9cnbWgqRcerX7m1Y6a5t25SrV7VF7LI1zcyEaL38hbMHz1/dtXnzxZUVh/XabKzNetVy9Lef0zdETbW+beSTLhw8If9bz7++/a5yj6J/unn3rCXXtfp6Opajrfdu5XsnTjS1m2Xmxvo475f6rhfbtXnb17/12DfuXXDcXrVvfXrFWHjbodnHHHeYXrI6j14xy/z25Zj1tFbetd2McsQPm69eflpU26VVFzzvxzbHs6NdD+xunDDxneNGQ01MHDq/8Ir4PeY2PwAMmlu3blmv4x6iUNLeC0+PfOWKcvjuw8/eeFa+3/GbW48/3NU1VF//Q8P7Z6+/cE5pswq979tPZWR/6H1nv/fmgSeVf/npfU+0jeeUhYXzK1fPnzAiYHH2Vaf+5OnLX3/8+I+0qENEAKees0ZXMvezbeI7lpWeeFdEGDcm9UXEmf7sKxNuZ2sZN9x9aFY7K5vlTzz2tOxkv/vE8Se+qEYwTz13zSVF6rjeicdOLJy6euAJNT/0yI8OvXtwYUIt514RB3zt7In/NdEc6V5788bFC1cfOHR8dkKGcT9ZeESboSv1dCxHW+9VpbXdvvjYcb1fe0HsTTM6cdwvMsK7sXv2+CP6bCcW1IT0hOP2Pnfqlw88PqvVWa7CbayCaOenlVM/vU8WIStmmd+xHNm1/Uhj5RXndpOh4eXdajky5juv7DbKtDfhcT+2O54diI39kcvHjX8F7ecHgD5nRpBaN7f2duhDyYcfv/UbEU3+4e/f+sG5kJqzPFftbs4yFPs/lbH/74VHZVB47tGff18EiGu8TeJs+sB9915bUDrJj4iZ6xlEcYpdkJ2D15779XllRXn6xLQ53+Z7Gpa6cFm5p6H0qzesmZ6Jr2379dVryhcdgoGG+ENRszu/flP/6F0RV9VjULEh7vV3Wu+99yj/48K1b2hhynnlxPEJ6yJfa4mwX7os4zmja3LzA5/rZj1dylHX+4SxXpt20/amUY7Dfrn23P9QDs0+YW6VJXPmsL337n5Aefrpgxc2y7VPPPajdj85xPaah9MrC1cfmLi3k3Ksc7q0m9gu5dBxfdl7H3ly9+WfttvvHvdjm+PZBzU7K7Y6iBGoABAc7YIb64jJoQ8lNT+MadFjaPyzz5ar55Sudn+H/ubHz/x4bOS/yteH9zxzuIN7gcphlH9zzse6jI5d5YLa7ff0KaUeptizhggyrJyYUPTz/XGXBeVASesFPeqAv8Z8jNswzebFFxbO361ldxr6zUVY0CYadl6vDHH+5YKiPPLKWTmy7YvWRe6eaEkdNfXy64V0q54u5VjXK4u9YX2rFX731x6pl2O7X1oj+4YmstleI2soU4AiwNo82eY4adjeqzf0EK1tOS3Rnn27WQ/CTtrTx350P569knGkYuSYAWD4WDu4h+iymwDJYZTqZTe3zv0fr+/e3d0O9AYTj80+vnvX5t3y323iVPdEu9Nnw6U58hSuhgj33qNcfrs+07XnTjXerablgp633724ctm858svTokT7YRL77Yo/5cXjLll+Kuc0AfYvXl5s3kNysLllXaXDbms995Hvq5c/sWCTNdZ+0DVqOtz5vz6zZIartUQ4Yheh27V07EcObrggtG26vUcX23KctUr47Jf7r3PevGWvCGOeRMo2+2t3yVKBoKHDintWLdXxHDG9rYrp6HyLu3W0D7y50H7K1e87kfX49kz2cv/GHEkAEhkJdfVC0/9XIn9oP18qxgrKS87eODAtQv/8sBEu64340KE83Lc2H36lQpPn912/LEvPvJV5cSJg+eNOUVsqhZmvcDi/IkTinGZyCsLVw/t3v1LowNxV5uBbnLs3dfl/RS1dw3Xsoj/Hjx73+xj+pUT588uuJyz3de79wHl8fOXm7ogjQ5ZfX45UE9f74WDZ5XZA28abaLMPvFIt+ppW452/cqhbdvOn9cvIbG5Vmlh4fIDByzl2O8X8RPi6782y1evwTfKsdle9ULji1f1idr8bUK3e+97YOX8wRP1S8qOq9vrVE7jcXJB3zTFsd0a20deu6O043E/OrSbH/oVP51cWAYAw2Bkz549L730kvn+rbfeEm8nJibGx8eDrluX6Td9NGm3eNQuu9Hexi7UXz/ZpoOt9Urw5vIP77mlXaltrkKxv+WkzRXlHYSSFy5c2LVrV+v0V87Ky022/cq86GQ9/OLU2W1PdHpJ7LqtV73z5bc6ubFRzxKb0NG1U4NEXqlzoK/3GoABdvHixd27B+FGDSsrK14XWV5eXlhY2Lt379jYmDlRvB2irKR2M6CWqY9bRo7ubrnv5qrLb15FZ3yPlZRdb/LaWEX7d33YDFjsgfVee+6pyw/86Im+jkgWfnqho2unBskvfn3j69/q670GAMNliELJrnv22//Ps99ueNqNN/Wn3QS9Jath9vaeuLCuXX7O67XekVHtS+2znJ719pDtu54Hg3m5mNZbPQybDACDYog6uAeMUwc3AABYI3Rwt3ZwcwU3AAAAfCKUBAAAgE+EkgAAAPCJy24GUPW5VPhCUX+zrVx7LBp0jaAo1wqpp9PK7sWZR7r6LCUAAAJFVnLgXCscu6DkH6/Vjqv/6804spIbVaUK1Y6mw6/K2dHRs5UulpdTd08ns1YLqVFDzl8V/B8PHuoJAFgNQsmB8/aVohLZ3uO3U4lO1Wq1xXyi0+neFVKO0YuIMgIIVe9NzhyvBZOSvLHUva0Ve6ic7WjOypl0pFzTTfn7ReN8PLjsX6d6etrv7coHAOgIJQdJJXdidPR8RlEyMfFC/O+Ueua8Vkhpb89Wqs+l5IsTqYL+xONq4ZT6kTnzQk59m8udVadob08NVJJQRBkzyfUM6SyNbCYIndrZ2Fm5BTWh2LCzFJv9pbjsX3k8xK4qyko63LTIemz00nxiR0+lxNd9vwPAUCCUHCTRqeO12qGsomTLWu/2E+qZU82HlbcpytVY+EJEfLS4W0n/qqKGGuH03WWtK7x8twg4cpWJqcXdCRGMKhOLeSUd/vWOxePl7Er6zEKbdRtdkbIzM5WqZ3/qnZyr6W209pU2lmOzXnVSupiJ1ZeoNs3dmp2yqac2syjUrpPWMr9crWvtQ8kn1BbeZpnm1M5vi52lptMWcnMT6k48FEk/bYaGLfvLbf/K40FO35xftB4Pq2v/hlZw2C+y5cLpYjHdvIxlb5m7QCtDm0X/3D0h6LJ/nerpvN+9HT8AgBaEkkNFhJiypzH0yIwcQ7kwlxFTjMGU0cdEBJOZ00PG7D7tGTF3b+8k+BAn35hidGaWlaJxzY84sZfii9rkxXjJdzRZOGYWo5ZjhAn261V7RfOJrNm7Ws9FOXSY2tdT6yMtKtoni/n5aUv0Y85fjpib62ePOLVzRtk3pX00cSS/uShDQ7f9Zbd/u6aSC9c3V4nFMu32i2xm0cqJfEv39j5zp8RLYW32UHLG3CNywbb9547717GeTvvd8/EDAGhBKDlMtu1rG1/Mv+kjAVOZm8/XwwV5JlZPvtVCKVI2T8MiYihHSn7yO6KcYjEd1lNE4XRRRFAVl/X6KN+lntlJ7ZPQ9kjxyhVjnsmIUaFYJisW9rM7XCXu2WG8DG2/23G2hv3Vwf71QzbzSaN5olNmROa4X1zMmam+9CoCcG/1dF2gC8cPAAw3QskhNrEvq2Rixui9ytlYRsRNvXmrGjO/tbqrOLpHzVyZ+a+1uFL48hl9iORCLnZVyU5EV72/5DjL1HNd7av1tF+qhVQ9B9jpxTsAgB5HKDlAtMsvrJfdaGGHekmHvPziaqzx4o/o1PFy1pgYu6p2jy7k1HtSZmKnzsgU3NVY6rkl8d/MeevFH02i+yJpy3gyOdZM9l2GkvF6n7CiJoHifrI+ohwlbTd8zmG9unn9umV1/Jzb6Dvv9SykPA6fa9kFudk27Rz56hHlX9SddX4+/3hN7ey2219u+1dto8fkEEz1sptwWsmf9PFTQTbzGbPEyhkjn+i4X5yZF+JUC9OZhk/0vSXDzUxnZbXsX6d6um5YF44fABhuI3v27HnppZfM92+99ZZ4OzExMT4+HnTd4ObChQu7du0KuhZ14nxrnrqzZSM9JU7D4foZ3Zguh6g1xgvaJ07TWxZJ5GtGn7L9ehuWSOQXtY5L5/Jt62nOLt7vm6u/nopaV9q02m6o5E7ElEM1faxkL7C2XDabzWQy+i6w3y/NDW2z4xOJRLFYND6pt38in4+k0xn1A8X5eLDdv0713O5SjpfjBwCUixcv7t69O+hadMHKyorXRZaXlxcWFvbu3Ts2NmZOFG8JJftVr4WS6J7eCyUBACpCydZQkg5uoJfIUQoyG5Y533RHSQAAehHP4AZ6ibxJZHIm6FoAANAhspIAAADwiVASAAAAPhFKAgAAwCdCSQAAAPhEKAkAAACfCCUHlXx0x2hnD/RTH+eh8/lUD3Vt6gq9PpfPQz29+NTcFz79P7X//cPG690uHQAAaAglB1V0qtOnHFfOpCPlVT7cWn0k9WI+0fpJIeUendrUU0SXnYekduXf/tt/uL323z7+21c//NtXP75Pue03RJMAAKwN7is59KpL84kdU0HXwkpEl6t7DuGf9vzzn8zXOw5tePO/KL9XlC1BbxcAAIOHrORgsfRVNyTrrH3Ylt5k2bscTheL6eZljA5ra5+1VoY2i/65e8JRnSldzMRainKsp3NHuaVGuVRK/dyl/LpP/e6/jCj/SfmzoPcMAAADiVBykFRy4VJ8UeupLisx+fw9TeGYOb22GC+Z4Zvsl17MJxL5lu7tfWaXd7wU1mYPJWfMLmy5YNv+c7XXO5/ImkXNJEPu9XTqKBdBY0wxiikrxaJ7+Zrbf/sPn/6fX7j9D//pk6/880ekJAEAWAuEkgOkMjefP2lEU9EpMyKrFkrFYjqsp+7C6aKSmWt3dc2cmepLF9ernq4L1MNcGUE2Bo32/rT5AeWO//bx3xJHAgCwZhgrORwSeRF9dTpztZBSc4Ba7FbJjc4FXX1/dj754c6g6wAAwGAjKzlAovsi6TNmurFyxsgnhpJxJe3tLj+JHXoOsFqYzjR8Mr9U1aanYpnOytKX0MZHymo41dN1wyzjIOUYScvmtJSvub7x37gTEAAAa4xQcpBEp8qK2TEdU7LZYlq7yCY5Y/nAcuWN/WU3oeRkxJgSLikJJRMzPtkngtKwNj2ezxof6JfEqCWFm66lkWWF9aLii1o3tVM9HcuJTskhm/UlyvXubrvyVVs++utXP6R3GwCANTWyZ8+el156yXz/1ltvibcTExPj4+NB1w1uLly4sGvXrqBrAQDAELl48eLu3buDrkUXrKyseF1keXl5YWFh7969Y2Nj5kTxlqwkAAAAfCKUBAAAgE+EkgAAAPCJmwEBAAAMtaNHj7ZOPH36dCfLkpUEAAAYaq1RY4dxpEIoCQAAAGvs2HkcqRBK9q+RkZE//elPQdcCAIBh8fHHH2/YMMgjA7UI0lMcqRBK9q9NmzYtLy8HXQsAAIbFH/7wh8985jNB12JteY0jFULJ/nX//feLUPLdd98VP5KCrgsAAINMnGrfeecdcdoVJ9+g69JzBjlPO9juuOOOXbt2vfHGG1euXLl582bQ1QEAYGBt2LDhM5/5jDjtipNv0HXpOYSSfUwc0A888EDQtQAAAMOLDm4AAAD4RCgJAAAAnwglAQAA4JPjWMmVlZWg6wYAAIDu27x5s9dFnG5BSFYSAAAAPnXzCu7Z2dmgNwcAgKFw8ODBoKsASF2+GdCWLVuC3iIAAAbc9evXg64CoKODGwAAAD75CSVLpVLQ1QYAAIC9o0ePrtu6PIeSxJEAAAA9bt2iSW+hJHEkAABAX1ifaNJDKEkcCQAA0EfWIZr0EErG4/EgGwMAAABenD59eq1X4a2Dm2gSAACgL6xDHKn4uOyGaBIAAKDHrU8cqfi7GRDRJAAAQM9atzhS4RblAAAA8K3LD07kUU4AAADDo5uhJI+WBwAAGCp0cAMAAMAnx6zk0tJS0HUDAABAT7jrrrtsp7t1cN9///1BVxsAAAABe+ONN5w+ooMbAAAAPhFKAgAAwCe3Du4PP/ww6OoBAACgd7mFkiMjI0FXDwAAAL2LDm4AAAD45JaV5NE1AAAAcOEYSv7lX/5l0HUDAABA962srHhdZHl52XY6HdwAAADwiVASAAAAPhFKAgAAwKcNqy8CAAAAPeIv/uIvzNf/8R//sdarIysJAAAwOET4+PLLL7vP8/Of//xLX/rSa6+9Jl6Lf8VrMcXf6gglAQAA+ttfGBT16mwRGrpHk//0T/8k/n300UdFBCn+Naf4QCgJAADQ9/5DZcaRmzdvdpn53Llz2gszgtSmlEolr+sllAQAABgQ1jjSZaDkgw8+aE1DitdiihZHeo0mCSUBAAAGhAgf3fORmtdee60plPznf/5n862naJJQEgAAYKBYL+K2pY2PVCwd3KdOnbLO0Hk0yc2AAAAA+l7b8NHqn1Tnzp178MEHd+3aJSJL8TYej/tYL6EkAABAf/N6/8i/U2mvRTTZ9uZBLujgBgAAgE+EkgAAAPBpADu4b9269c4777z//vsffPBB0HUBAAAD6M4777zrrru2bt06MjISdF0CNmihpIgjL126tHnz5s997nMbNgza1gEAgF5w8+bNGzduvPbaaw8++OCQR5ODFmxdv35dxJGf/exng64IAAAYWBs2bLjnnntuv/12EXhs3bo16Or4NDs728lsBw8edGuKoLeiy959993t27cHXQsAADD47rrrrrfffrt/Q0lhy5Yt7jOIWNl9hkG77Objjz++7bZB2ygAANCDNmzYwIUZRF0AAADwiVASAAAAPhFKAgAAwCf9sptbt24FXRMAAAD0meYruG+pgq5VN71TSD2bLjZOS3xhcWZ/KOiaAQAA9Dm9g3vAwscmm/KLk7Xagaxyf7kmXnwhEXSF+kchlasEXQcAANCzBn+s5NbkzNFkQwZy/4yakqwWTo+OTo+mnq/Kie8UUtPibarwfEqdWMjJt5YZJH2RUW3OxvVUfian534X9PZ2TbWQGh1NFzOxUZ0eVKrTR0dThWrDO/W/4j85Y3Z9BstM+uSgNwwAAHRNvYN7sBOTNkLJo+Urp5eOaD3dIuL8QikSmkk+pCQVZfTVdORArfaQooaP4dzvalPi9fPHStsXa9r8MvRMKZMzyaA3Yw3bZ6aWjKdy22emok3Ty1eUpSNafC7e5UuR7TPJqNpu6XSkXKtF1XZLhXPba3LZwrFSfLE2o84vo8qUUhvgdgMAYJjIrKR1fORwBZTRqe2lM3oesZJbih95yPjk/vKU/jqUPJSfv1iRQdBSsfhqWM9KyvGXxSuWHGT0m7XaZG3qIS/r71fRqXjpTMVot1L8iBlrZstG3BlKnszPz6ntVioW02E9KRlW241OcwAABsMQZyVV+yeV04XqQ8nQ89PKl2fMfvDEZ3e0zBravjmRP0o6TZWcVFKFajQZKkwrk5Z222HXbpFEfoZ2AwBgEDVfdjN0AaWWmGxMSSpK8dVj9SF9/7sU2SVTbdFdkfTp+gDAJgM3VlI3v6RtcSVnjpbU2k0mJhtTkqLd0pZ2mytF9qntti+STjm2GwAA6GM2WcnBiyYt9wManVayBxq7ofdPKtMx5UDNemlO4v5IaXo0rb3ZlF/cr754aKpWTY1Op83ZmosaPMnJyGhYa4hsudYwaDI5qYzGlHJju2UjpVGj3RL5xRn1RXSqtpQyJ9sUBQAA+lTDLcpHRkYGL45U1EtqJpMzLjNsyh9pigg/e2Tmm1M2i+yfqe23L0mOlQx6Q9eACANrU04fJvJHmiLCHUdmanbtJi/hcdsDAACgLzV0cFv/HQa/y6nX0MQy76XDPzP6bp9Pjb6qXV7DbWscVLQb/sQyxXTY7PMupEbT2uU1tBsAAEOjoYN7ULOSTh6aqj3UknFzzjtCZ5upJO8IAMAQarhF+VDFkQAAAFil5vtKKgSUAAAA6Ex9rCQRJAAAADxpuIJbIaYEAABAx+pjJQc7iHw+pT/wcDqX+9nqLjH+XW709FrecFu/rlz93894wmAz9fLx1e1B+RxwVdON052md30Dgrthu4fW06/TV+V8HYeraE+benap3bpw/AAArBo6uE1B16rL3imkluKLk/IZ2bUDSuYNy0fPpzw/n+ahqdrRZMjjQh2rFl6cz2tVFf/7Zs/cyFsNC+oRRSHlL7pYveiOxGqLCCVnarXaYj7R4XQfXNonOlWbWbvjpw2x8nK2kxmrhen5fM3g74byLu3Z7vixqaendnMuv/X4kcElT2MCAN+a7ys5eHFkExEITmrPg64WTo+OvlrM/KolBailME8XqiIGnbY8DtF425CV1Cb+LJczUonW2FR7mqL4X+r5Qq5pwVYyHxlOv1dM60VZcif1rKqlfJt6qhs1nUrpT3Gs5Byq5CWAVqPIcCmuRxTq23QxE2tKWek5KP2kbL5T/yv+Y+a4LGdtM23lNVEU2d40oWIpvpCqr8KyglXEvs71tFmvU/u4Zula66nNnMvlbOtfnz8ltGs6S/0bSnHYLrlRYXmT0OaPLIlKcxP0elbqn7cJy5zbx6meLu3mqf0djh95b6t4KUw8CQD+DEVWcmtyZnsp3ByfhZJHa7UvJLIHWlKA+2dqk+Xse+nws6W4/KisXKzo5Yi3hxuzLGKimPJGRtHKOZyff9E4Iz2fkg8WlCUsxpfSmU35Rfd0pgxzF/ObEkZWUgt51ZDRzKqKyvzK2ASbel5JHhUlFItyvWJO+UBIWaWLfsMoPYpcrNWMymi5pnwiW25KWYnp5Wwif1LbRPFOzjOTFHPnE8V0WtHnXxRnbf3kXjimlmxM7jCa3B5REjt2WKeIeCJmKV5/RqZa+foKykrMb7emUz3t1+vUPs5ZOtt6ipnFnJmMvoLF/Py0JXoz5y9HisU21a/kwvXZlVgs0267ZGwl1p0wspLmrlf2mRtl7kWtnvUF2yY9HdvHsZ5O7ea1/Z2OH0W9K6p6ZNL3DQCe6TcDUgb9UTcy6tJCvXipw8fYiMhPD+aiU207mu8v6w/j3irOVJpqYUnJf9MIsw757jYV5UTK9Rg0OnUgUnrekj6xqWfCWG92X8sjwuUDHic7eHS4lgrSo8gO+xWjU/HSGT1qreRK8fpjFbNl44QeSp7Mz89V5ApK2tNxVGERCBSvdBLxtnR0Vubm87V68TN6hUX5kfKMpd3KkZKftJNjPR3W66N853qa7RYyjyu5rsmIUaFYRsbrbuXLap40io9OmRGZj/bfsTRtpPrS7QJYz5zq6bqAj/Z37CgP6fHkWg+WBYABMxRZSautycn7i1e8jo/swnotoUBf0FJB8VLY02k1OaloybPCtDJZP2G3poHU4ChRH423iiF5a90QPVhPmf5bbbbV83ZZs4bdGVHaa8TPJ3UgR4CDWQGg/zSHkkHXZy1UfjaaqqfxqksrDbm6+ar2kRxW6PkSHDeh5Halnj58fjrjv5z5aUsasnJxPr7f/5nO21hJEU86DCObXzLarWE0mpaYbExJKkoxfawe7syVIvvkZ9F9kXQ30j9N5RgVCiXj9T5hRU1ixX1FCE71dFive/u08l5P62BQqWHknzZ60LpHRDXPmG8rZ8x8osf2ry7NJ4yKVQvHGtOS+taKWCzW4XHe0j6O9exwv/htf33rjAHB7ileAECL5gcnDmhAWXw1bFy2Ei5ttwQ5+ycj+kdyWKHW7asGW7HMe+lw4+U4+jU0z6aLxkcyIHunkBJT3oips4l4VF1Qu7xm/8n4krHeJaV9FkdeRmO97MY4A1rLmR6NKZNJxame1cJprQRt2UxMq4lePV9sh5HVu1jlaLWGbFZyUonFrClJIZGNlMwrNswoMzqlxamrvTKmsZx6hZInrcXX2y1ndOka/bvWi0ZapzvW02m9Du3jWL5tPWWGTL14JFfRRgVmxFJG5FTvmJblt0mSRqfKSqw+ezZbTGu70mm71KjKctmNMSjyZNzYieFSJJvQ6yY+2RdXtAqJWCyfNerpuL0O7eNUzw73S9v2d6KW3zQgGADQsZE9e/ZUKpX3339/ZGREvK9WqxcuXPjyl788Pj4edN38WFhY2LlzZ9C1sCEizvPKyTW8i1DvqORSS0esXYSFVEo5SZ8hAGAAXbp0aWJiIuhaeLaysiL+nZ2d3bJli/uc169fP3jwoHixvLwsoqy9e/eOjY2Zn4q3NrcoH8SsZGDMm/g8W4oPfBypp4/U/JmZgCqkRvV0EtfGAgAwcOoPTtSyksSR3bV/prZ/JuhKrBd5MchU88TkTC05NC0AAMCwuW31RQAAAGA4NXRwB10ZAAAA9BO9g1vr3QYAAAA61/AM7tbXQMcqucF8Sshab9egthsAYCgMxVhJ8zLq+v8sdzD8XW70dOOZ/J1CSpvtNGd4D6JH8kppbq1aTHuQo887T7ZQCxttekSeObHxI8ftqhoL2EaCTRGienm77Yxdazen+rjXs1uIiAFgONncDGjwOrv3z9S+kMgeqOmP4Z5czG+yfPrQVK3pNj1bkzPyad2D+Gi4NaU+G/pMV4K9Qqo5aAwlZ7r1sD4R9BhPACxHLPctko+8rtk8GNBpu7RnSzrVqulZz+KtU/W71W5O9XGvpyet+8VpewEAQ8ImKznAHdzvFFIy0RhKHlWff+E5+1gtnDbzms13SfT2QMJ+od8qUs1oNT6vr+UBfVL0SL7hIYCKnuoTC+eak316rkx/a77TXqnPebF7Bs6SmTpsmGxJKOrT9SxmLtdajCXoERWuB1jJmfpjUeZKEcsDe2y2y4VbFvCKbT7UsXyn9m/dXj+qlmIaj2eb9TrvF5ft9bRfGuZPCW43IvV8XAEA1sZQdHCrMr9Sn3loneQ1+/j8sdL2RT21eThemh7085N8XJ+i5+kW46W2D0VW7BJsyZlaPlFMpy0FaXnAUHKmnE3kT2oBm3iXT2TLM0kthyZfGwlC62PvMmk9n7hoib1EtGBkGWu1shJT94uWxcxk9PUu2sdqlTOluM1j9aoF/Tnhztvl2ghOWcBiOmbU1GwH5/Kd2t92e30oHKsXI8o34y379TrvF6ft9bpfRNhnzl+OFN0PN8/HFQBgbQxPKCk7uFfVZ10tLBXrz/KWUWnxiiUHGf2mDDG1p3gPhsrcfN6MF9RwoanDtinM06fbJtiy5XpBJ/Pzc8ZDlOMlI36q5Mxnc7uQQYEWImyP6JNk2Feu1yw6VY6UzPWb663Pb5IJK/PB3I2fzDVFkorXxGTb+je0g335Du3vur0eiHKK9Wd5h9XjueKyXh/le9wvofqTs0djmY7iv24dVwAA34YnlJS2Jmf8P70wtH1zIj9pDrgctMCxa+wSbIkdO+xnTk4qWvxUmFYm13GknQwjwzIFNmUXZdhEkt0Z0ejYDl0q3wsRxCXytQZTQYdc2u+TzrOtPXdcAcAQGq5QcnWiuyJp51GVgzdWMrovkraMfpPD5yzj2mzHSuoLtiTYiulj9bCgIVDTEkg2qaP5pardaluFkvGGtVXm5uPuwYMoUoSRjsm2lt5t5+3yytIO1cKxdNNqmsp3aH/v2+ugqXyn6U07YA33S+NgXEWJbLe8sT3efBxXAIAuG4pQ8vnU6KtFOVZyejT1vOXc9jOjq/q9dHi6Hgg6TZfXem8vhS03FRqkwNFGdKoWLxk9oOrwuQ7TVi0JtkQ2UjKvv2g6uycnlVisOXVU7+o0VlstpMLqRR8ympCj+TLFdFgLPZInLdU0+qwd568WpjMyCHG6bqU65xBJNm+XfmmKWIvRT6yVZD9dTE0XLe0gc6LNzdnUbk7tb7u9XuvTUr7T9Ib93rpfXMr3tl+keoe7LL/90eb5uAIAdN3Inj17KpXKe++9p72/du3ayy+//PDDD4+PjwddNz8WFhZ27twZdC0gI4Zjykkt71dIpYyXdiq51NKRfrmPjHW7+rH8QTJIxxWA/nXp0qWJiYmga+HZysqK+Hd2dnbLli3uc16/fv3gwYPixfLysoiy9u7dOzY2Zn4q3g5FVhLrL5ScMeLIUT1d1TL0TU9nqXmpbt17fN22q0/LHxgDdlwBQP/aEHQFMOCSM7XkjP1H8iKLqaDrh/7EcQUAPYKsJAAAAHwilAQAAIBPhJIAAADwiVASAAAAPg3BZTfVwulw+r36++yB3nhKze9yoy/uWPT/9B0AAICgDUFWMpQ8Ws4q2bL+tMOy8qs1uLX48ynPZT40VSOOBAAAfW0IQskm0anD+fkXjQe0PZ+yf3TN73LG9FTh+VT9GTn1+VOp09oN7aqF06Pm03Tk/35WaZj5dKH6TiFlXYXxdtT6GEZt4s9yObv66A/gkU/rKeQaFxy8BzYCAIC+MXyhpKJs3R5578oVRQ31luKL9Wylca9jEUf+StGzmIfjpVeL+oIi2jPnPxAp6p3moeTRWu0LiewBrZxa7ZvG49v2z4his++lw8+W4toqLqpR5tbkjCw5n2ioVXJGTHkjo2jlNMa78il1soTF+FI6sylPtzgAAOgJQzBW0km1sBQp12Oy6NSBudTz1eT+UOXifH5yRo8HZdiXVIzXk5tHw9Np7Z2IHZOdrKce+UWnvtlu5vvL+jhOEe8qS0Y9lfxRrTqh5KF86XzDEtFv1mpBNyUAABhSelZyxBB0fdbDO0vzm3bs8LWojNtas5jrSYaYAAAAvWEIO7grv05HvpwMKaHk9vnp5+uDFSsX5+P7ZfYwuiuSbhqMqA1/tA6alCLbLW/mq9pHlVyXRy6Keiql+mDN6UzT5jBWEgAABGUIOrirhdMxGX6ZMdj95ZrWibz/ZPx0eHRaqU/XXjw0VaumRo2ObDndGP5YfDVcfFWfnD1Qi5or2T8ZmQ6PvqpP1zqpRZAXe0O+yGhFGeWY02WB6kdykS2F1LPpopjyMzGbkpuWdc6cVmTnuLWemxINIywBAAACNLJnz55KpfL+++9r76vV6oULF6LR6Pj4eNB182NhYWHnzp1B12INvVNInVdOctkNAAC94NKlSxMTE0HXwrOVlRXx7+zs7JYtW9znvH79+sGDB8WL5eVlEWXt3bt3bGzM/FS8HYKs5EB4PjWqX0ieyE/OEEcCAICeQCjZH/bP1PbPBF0JAACARkN42Q0AAAC6g1ASAAAAPhFKAgAAwCd9rOSQ3JwcAAAAXTRsWclKbnR0tLOn1Kiz6nIVPyurFlLa4qlC1eOiNvUUk7yX46iQsi2sX9pnTeqz5qqy1YOuhK01P948VaWT9WoHj98dzXEOAF0zbKFkdKpWznYyY7UwPZ+vGaainSzTLJScEcsu5m1uKl5IuZ8FbOopJs10fDvJNuVXcunIpF1h/dI+a1IfP+v1uMGTkfSarUDGGH6DlTU+3jxWpXW9reWLg8f2yPG9vfY4zgGgneZQcjB7us20QNPveMt0a4pCnpPD6WIx3fyRJSFgnrOt2RHt8zanc3WBdDETa62SQz1dshr1GqUKeqLRpXxDYTqT3Re1WUGPt48DT/Xx126WhqhP1iaKhY12Uj+qmpMV6zttkeiR/Pz0GiUmRXhUi5fCHuLJ9TrerKxNVS9QbR/79bqXv2RuQgexEcf5eh3nAIbKMGQlK7lwKb6o/YwvK7GY+RDrwjFzem0xXqqf76fUHELC+PU/kzSW2Fc28gHinK1911qzI3LBtskONUeRT2TLzakFx3o6ZTXEeSKmlM36p4vu5deXu1K0RpL90j6OPNXHR7uJs2S9IUQLGe0gFyhni+mwaD/to7mKWk45m8if1DJr4p0s06xSaHukWFq7fmNZpUU9nmw377odb401PKnOa8ykpgdlazmu17X8TFrfhEUZors3K8d5m/V28zgHMEyGIJSszM0b33fy29j8vq8WSuIHflj/DS5+7SvFK23yAjuWpo3f7Pr38jrU03UB8zygniA665CsLs33Y/v4YF8fj+0m2iFSrs8RnSpHGmLBRH5RP6lHp/RSo1Px0hkz7VaKH7EECdEdieKVK53U3joozpoocppuCOnxZJvE2Lodb01Cyfi8DEVkGksGK6LYuO/ngGaNPSNC9A6qz3HuXEiXj3MAQ2QIQkkn4uSTqI866iAvYM1q1FYxTqtP9H37BFmf5KSiJckK08qkz0BJJqHs2t9pel21kNISSL5ivTW3PTK/VK1cUfIyWKkszUe2B1kbjvNV6MZxDqDvDUEoGd0XSZ8x0wyVM+bvdvmBh8sUqkvzCSN9Ui0ca0xHiHOjNj1V7zdzpy+h5pjUrJJjPd02zFJ/syCH8k1NCZx+aR+vHOvjsd1kFs3ad9pZFk1L2NikaipXiokdO3xsT4dbLZN9Mo5s29W4bsebXUFXzohW3CdelKZLkX2dJLNWfTxwnK/rcQ5gmOzZs+fmzZs3DK+99tq5c+cWFxdv9adXXnml1so6bimblW+MPETjb3h9/FDzD3tjWJHlF38im03UP6l/kMjnteIX7UZL1ccnWT60nWitp1s51qpaCnIo37KUw8y93T4OPNfHa7s1pnqMD5rr31xR+XlL5a1j3bpMq4/atJ6WWPvjrZlsT62eYjGzwt6OB3OfyPfGp202nuPcfb1dPM6BYSICj6BjHz+0qE+EfL9sR8yjzSyCw1Kp9Oabb1rLEWHkiPh/pVL54IMPtK+JarX68ssvR6PR8fFxpQ8tLCzs3Lkz6Fr0vEpudG6f/1uJoBOVXGrpSFMXMw2PQWN3nAND5dKlSxMTE0HXwrOVlRXx7+zs7JYtW9znvH79+sGDB8WL5eVlEWXt3bt3bGzM/FS8HYIObrSKTrW/4BV+6dfFxDLFdLjppjPT83niSAwGx+McwJDZEHQFEIzkzEzQVRhY8rqYKbsPQrQ6BofjcQ5gyJCVRD+w3kTa5T44AABgfZGVRD+Qt8VLktEDAKDXkJUEAACAT4SSAAAA8IlQEgAAAD4RSgIAAMAnQkkAAAD4pIeSI6qgKwMAAIB+QlYSAAAAPhFKAgAAwKeGUHLEEHStAAAA0AfISgIAAMAnQkkAAAD4RCgJAAAAn2QoyfhIAAAA+FDPShJNAgAAwBOu4AYAAIBPjJUEAACAT4SSAAAA8GnwQ8lqITXaLFWo6tNzle6urZJTi+94Vp2/apibJrenO1VfVX2CJerflXbonFP7r2K/eDh+VtkOa3P8o7904XgDgMEPJYVEfrFWq5WzSrYs/lvLJ+TEUHJmUXvVTdEpuZ4OVAvT8/maYSrqZ2ViE8SytltRSHkMErpRHz/r7R7R9DPJ0Hqu0an9XfZLBxvR2fHjsR1a90t3j/8A9/ua6tZ29Wr7dOF4A4DBDyXFKbPpzNowYclMWlq+662ZzE5+slvmbzhjOJQjUwHhdLGYbv7Ikhg0E0vW7JH2eZuck7pAupiJdZxi9FSf5k9ShUJK/dB1vZaGqE/WJoqFjXZSP6qakxXru06av7Vl6utNCe13pc12ubaDN07HldPxY8faVPWqqaXZt4P78WB7/NvtL8fj0Pvx5tSe9sdDwwJir+Ss8zTXR5uaSuW0xfXljHLs2l8vJ5drrn6Hx3Pb48r734Xzftc3v6nlnNvNoXy74839e8b+78Lr9ySAATX4oaS7TLoUlynL2mJ+ftr46iwc0yfK6fFSu2/JSi5szl9WYrGM8YFTOdEpNWeVMLKAM0ljiX1lIy8YL4W1r3Vr9kgu2DaJoObE8olsueMUo6f6qBs8GlPK5nali23WK0449YYQLWS0g1ygnC2mw6L9tI/mKmo55Wwif1IL98U7WWa9Sk5bbJMFFGe6+o6JFIvtDgb77XJuB68cjgfH48dW8qTaxkbjqmkl2VqO7eB6PNgf/3b7y/E49H68ObWn/fEg62PsFrlXMon8ovgtaF8fbarY1WWtLeV/xabp5di1v7ZEJmOswWwH5+3ydlx5/7uw3+8zopBiOm05QI2Wc2432/LtjzeX7xmnvwuP35MABtawh5IySNFClu0RfVK1UCqKr2X9x3ZYfHEWr7gFD5W5eSPukV/C5vex13KEHUvTxo/8dNvAZx3Y10dusHk+VE+Urh3Loh0i5foc0alypGTNmsnhB1qkGJ3SS41OxUtnzLRbKX7EX397KDkZMXZALNMmHnXbrq7sF6fjwen4cd6quBoayYyQPHmL5eO+O/btj3/X/dUFru3ZfDyI+ih5fbeEZCDdvvyEMX92X/3Icf17zJaNNZjt4LYHPB1XDny1s1lPtSn0ENmx3WzL93q8Of1d+Ph+AzCghj2UtCFOJon6qEH/Qwc9l2PNFvgbadddQdYnOaloyaHCtDLpfwSkTK90mPVZ83bo1nGlKNsj80vVyhUlL4ODytJ8ZLvf9gnEqtqzk1DPcckutX+XjisfEjt2rNeq2upmewLob4SSraL7ImkPQ+Lk7GfMn+OVM2aexWM51aX5hJFeqhaONaZrROygTU+16f9sXkId5eSrS9axPk3b1bSClvXKLNq0ddhVR1k0LTG5ipSkIvN2jc3fJuRy2C7X/eKFw/HgePy4FXTljGjFfeJFaboU2ddJC3V8PLjuL+fjsOPyvbanqI9ST9cVphvW6+XvwuPfo/N2eTyuHMrx83dRTB+rh61z7nveqXzX482uPZ3+3v21J4BBtGfPnj/96U/vGS5duvTTn/50cXHxVn965ZVXai0aMx/ZcuNE+d4YGKRd610zrvJuWsSRdfxiNptVC3IppzkRYxRvqWcim03Y1FWUm88a9WwdNWmpZ/3DdpX3UZ/GRRpWYLte2x3QUv/misrP21fepR287UTn7XJoB6f1uu0X+yo5Hz/2ZIXM2xKYx6y348Ht+LffX07HoefjrcP2tFuvkhDyi471+e//vb5VZb2G2lzWuzdY1+D+PWC7XT6OKy9/Fy4Hp95cjZXsqN0apjsdb8771+nv3U9TAANHBB5Bxz5+3FCdO3ful+2IebSZRXBYKpXefPNNazkijBwR/3/xxRdFW4j34sugWq2+/PLLf/VXfzU+Pq70oYWFhZ07dwZdC3RDJZdaOrLO9/dBj6sWUseUk8N5VBRSqWHddKCnXbp0aWJiIuhaeLaysiL+nZ2d3bJli/uc169fP3jwoHixvLwsoqy9e/eOjY2Zn4q39Q5unr6NHqHfeSSWKab9Xy6NQWLedSZcig9nMCVaIK1d5sKF0gB6zIam90STCJy8qGEq6EqglyRnasmZoCtBCwCAHS67AQAAgE+EkgAAAPCJUBIAAAA+EUoCAADAJ0LJPlA1rl9dzxsCayvtqQuo1RqteRtUcuvazmjS7+3f7/VvFcj3D4A+ooeS3Amol6nPvV3vRxeKlfbAwxsbiGZYhxpFp2rrf7uZQqqngvYg6x9I+3dxe23r39f7N5DvHwB9pCErOWIIulbdpt+osKMf1no2LmcuYjkHmD/PR+t3d9MnGXPpq3K+95tZF1kTyxuf9azUl6svYldPJ23qv2QW1aYd3NqtG/ulddvra7HdXn2iXrD5rpNiWytTX0FKaF+IUztYKmpMVxdIFzOxzhpOT80Wcq0tZ25wtWmnOh8P9tvlaf96rL/X9vdzXHlm+TtUG7bxoLE5rmy31/74cWmf1vK1KalUTptRr1f3N7n1OPTczt7/vgAMqiHp4N5nPtErXmpz12stG5fJKMbz5eoPsi0cK8XNZ7bFS9r3ZvJkPpEt16b0p+FGp2rlbCJ/MulUvphBlJ/IL8rUhTq3fN7YTNJfPc0yrQ9Ds62nE/f6Z9J6UW3bwaXdurJfWmhPaZP1tt9eUSFtS0L6O7mdM0mXEp2yL+I0aa6gHCm6PzTa7fhJjdYrWlZiZj3lA+jqD52bcn2ktpqaLabTStncYKPlZEHlbDEdDpfi2irmKm7Hg9N2edu/Huvvtf19HVfeFFIxo/R4KZ3R/zZdjiuH7bU/fpzntylf21qxK8rqEaLWS2zyXFdjSdvj0HM7e//7AjCohiOU3LE0bfzWThc7WiJb1r/wQ9sj+qRqoaQ9bUIVFgUVr8hv+FAyrn7Vy5/l8ku5Mjcfd++gCyUnI+kz2tmhMD2fP2KcW7zX04ZTPZ1r41J/eXIIddYOTu3W1f2iKHLVaqhknJFd6hOdipfOmOnWUvyIvyBH3V/6CmKZjs6X9sdPpFzv+oxOlSMl30GRWb6o3MnGUEM+N1mrYXRKzuTcPvbb1cX92z1ruF6xvUreKF3+sKpP9/R35GO9TuUnjPpk9/kNy13X63wcemvnLv19Aeh3wxBKVnJhy69/3yN+xJdrIt/4DHf9a3d7ZH6pWrmi5OWXcmVpPrK9XVnRI9rpv5JLRyaNb/U1r6cTb/X3Xn5390s2m204qbvWJzmpaMmVwrQy6X8Enkz7NmcTg5TYsaPjed3ax267urZ/+1I9hFrrdhiIdu7S3xeA/jYEoWR1aT5hpNmqhWP+033RfZG07ZA+8cGVM3Pz8X3iRWm6FOkglRBSv4MbUpK+6iliQG3+VCzTtp4uG+al/p7Lt+dzvyR2HJmScU99LJdrfbTEyepSJoVUY/HtfyrYkdlfa59hU/Za35PqsL22Xf3F9LF6ODvXZo85to/Ddvnbvw71r+TWanxjt4j9otTTcoXpDv+OPO0v2/m79HfkY3vdjkOPHP++en/HA+iaIQglQ8mT8ZLRjVSKZBOZmNs3nIjKwuog+ZyaNRyNZYrpsPaNH52SQ/pG64xiduyYz4hILCTPDkWls4xR9Ei8ZElJutRTH3svamX0h+nrDe2LK9qUcCmez7avpxO7+nttB5f5u7JfFLULXgs4K3PifC+vY+hke0XQHot1kjJxbGetV10XU8quySOXdpAbXK+mrJOlkkZXsxwe1zY7lchGSmZBxllcrb+6uqZWcG4f++3ysX+d6q/uqUS+ozDevv09H1feWfdLSalnx12OK7vtdTl+7NvHpnxta4tpfdFMTNvStn8avrfXPA6d29ltuxQPf18ABtbInj17XnzxxQ8//FB7X61W//3f/33v3r3j4+NB182PhYWFnTt3Bl0L9JJKLrV0pPfvL9O5QiqlnOyPDdKu8OiPuqpERHWsXxq3Rwzc3xfg1aVLlyYmJoKuhWcrKyvi39nZ2S1btrjPef369YMHD4oXy8vLIsoSIeLY2Jj5qXg7BFlJDCs9naLmVwamp01NzarpoeCHbLYjryzJ9kW+yrw5TrgUJyrq0ED+fQHwYUPQFQDWiryoZCroSnRbcqaWnAm6Eh2S98EJug6d6adW7RkD+fcFwAeykgAGhfWm3w3S37Cf3ifZtEHdLgADgawkgEERckkv5oOuHNsFYDCRlQQAAIBPeig5mI/eBgAAwFpqyEqOGIKuVXfpFxpKni96VZftbCnLanyOVDIHRHm/bZ5NPcWkAG6ADGer2L9B6aHjqsP1ao28+qGC3SoncHwPAFhrw9DBrT4dbjGfSOS9P/VYLFvOdjJjVT65ZpVPQJMDohweIVhIuZ/UbOopJnV+W5N25aMLXPavk6D3Sw8dV7brbS1fNLKPh452q5we1GG7AYBvwxBKStW5UmQyKR8MONdBLGm5XrLhG9d6HaUlVSNTN9ozKpo+asiHVq1laMVqn7fJGagLqM+haKmSQz1dsl/1GqUK+nPzXMp3ZlOOytJAajFaVVIp/Slq+mLyI+2DQiHX0kL27WYWLqYYG2jU1GG/NNQnJbTLLndQjr4NohIu+9Gh/t647pfmdu50b3VWnyCOq6Zdqheo7gX79bqXv2TZY6toZ/tynI+TNlvXdBy27hfnvxcf6/Xcbq3lu9fH698XgAE1LKGk/pxiNZZsN28lFy7FF7X0YlmJ1R9uXThmTq8txkvmt7lMe6pZT/2zGfOBePvKRp4yXtLv4mvNdsgF2yY91VxWPpEtN6c8HevplP2Sj0NTymb99adeO5bv0kB25RiPNqmZNRLto21tsShnl3WU/13Mz89V5J38xAfptKWg+n2ObdpNUW/+J5qrmA6L7dZWMVdx2y/iPFhvoEix7UO+ncqxbJfazmJHzyRd96N9/b1x3i827dyGp/oEc1wlT6rzWh7eWM4m8ieTjut1LT+T1jdBHGzT7tGz93KcjhMnzsdhy35x/nvxsV6v7WZTvmt9vP59ARhUwxFKVnJpNZJUY8l0m1NpZW5enMH0HqHolPlNLB/dUX9mcVicMItX2j3bemna+NGe7voXrVM9XRcwzxvqCcXfcz0cyhHtEynXS4xO1YcTJPL67Nl9TeFEtlwv6KRxinJvt0R+UQ/Wo1NyYef9Eqo/+Xg0lsmW6yG+HadyxHQlb2yX2KoOxjus6X53aeeu1Ceo4yqUjKv7Xya6ZJAkio37fu5M1mih0PaI34Z2KMf794Djcei0X2z/Xnx8/3jiUr7D36+3vy8Ag2soQsnKXEYx+nNi4uWcr29gcTJJ1EdDdpBnsWZ3vI2QGxqJHTtaJ3psN7f9og6T7TB71+H+3bGjbWjVY/u91+rjaHtkfqlauaKoY5orS/OR7UHXyI7n7wHF4Tjs4nHeU9sFYOjUbwYUdE3Wjpo1sTCTX/Zk4vKMOUPljJkvkB94GPpWXZpPGGmVauFYYzpInDO16al6/6E7fQl1fJWaV3Wsp9uGNQ1ItCRoW8r3Wo7MKln7EjvJKhXTx+qnH30Qgmu7dVCfOusgTqlNaOJQjtgupZ72a2pnm/3ouf7uWvaL13b2Wp/AjitZ0JUzYmv2yXEo06XIvk4iJQ/ld6kcj98DTsdh947zLm1vl7ZLV8l1OJAXQP+rZyUH805Acth4LCMviNG+9eQXnDrk3OU7MzolfmEbHU8xJZsVi6s/uMVv8HjJ6AGyfFHKLjnrZTfGoMiT8ZLRXVSKZBNirfon++KK1jEULsXzcvCfWht9TLtaUrhpeHu9K0kOV9KyBU71dCynsf71ghzKV5wbyL4cucH15okpk0nZ/lrLaFXIxLR2N5oikY2UzAVK8SNRt3ZTt0vuzHDT5QJO+0WGqtZqtkuyOJVj3S7Zzsb89vvRvf4O+9eJ7X6xaWcXzsehx+N/zY8rZceO+YyIJEMyqikqRsba29+FdsTp2yhHcWaMvy9v7exSjvPx5sTuOLTdL7Nufy8e1+v1+8Su/DZ/v97+vgD0puvttC1hZM+ePS+++OJHH32kva9Wq7/97W/FxPHx8aC3zo+FhYWdO3cGXQt0pJBKKSf9jdcMUCWXWppiWBgAQHXp0qWJiYmga+HZysqK10WWl5dFlLV3796xsTFzong7FGMl0YMKqVE9XdI/Q6zMvGgf1RkAgDW1IegKYEglZ2rJmaAr4ZG8ymAq6EoAANBLZFZy0MZHAgAAYF3QwQ0AAACfCCUBAADgU/2+koNxJ6CNGzd+8sknQdcCAAAMvps3b955551B1yJgzVnJfg8o//zP//z3v/990LUAAACD78aNG5s2bQq6FgEbtA7uLVu2vP/++3/4wx/ED4Wg6wIAAAaTCDPeffddEXKIwCPougRs0G4GNDIy8vnPf/769etvv/32Bx98EHR1AADAALrzzjs3bdokQo6+7svtikELJRU1mtyqCroiAAAAA27QOrgBAACwbgglAQAA4JPewU1PPwAAALxqHitJTAkAADBUjh492jrx9OnTnSxLBzcAAMBQa40abePIW6qmibeNj483TSUxCQAAMFSssaN7PtKMG2/evCmCxg1NgeMdd9wxNjYmXrz++utBbxQAAADWyY9+9CPtxfLysu0M991336c//WnrFBlKCtorLcYcHR0V87355ptvvfWWYgk8bbl/6s7fsqtZo+9i12il67Yu89eCtXDrTwjzdevEpo+046TpI6cSnKqBweZ0DJvTW2ew9phYP9Vety1Q6dIfjr9DtGcP7PWsWCCNEHjLd70CgW8ROuf7O2ftIgrt+HHqZ+7k6Go789jY2P333y8CRXNFYs477rhj5J577rl8+fKdd96pTb158+ZHH31Uq9X++Mc/etpmlzn9fdT1dfkr0HeZ61ngarQGi01vrdOdjrNO5mldIwZS0+Ft+1b7QdIaKVqnNAWXTpGo+1tPej+UpIZBbVcv1wH9ax2SR53kd5rmdMouidk+/elPizjyU5/6lJaFFFPee++98fHxDSKcvHjx4p49e7S5xce33357U/aykw1eZXjnqUE7nLlnw8o1rb+Lpp8sLmlFl3+dMpdOkahTNTDwnIK81nixNbJ0jyNd8pHrH0quZsH1WdGghpKBbOB6rpqvyh63+nN0j/RDtgadtmGlbYfSwsKCiBhv37p1a7Va/eu//msRU1qDjNagoXf+ZjqcuWe/dkcs1npdLmt3/8niEiaahTR1drtkJZ1eY4DZ/vBQWn6WOB08Hf5EWbvDqQe/QHqwSj1SQ6JJrL9gT+UutWr7kXsHo/W1+5fte++9973vfe/3v//97aFQ6LXXXvvkk0++9KUvbdy40Tb55KlNPX20msbqtf3XdWu6gdYGNCNC8yOXpRSHg6+TrKT7Wwwk28O48yy44hp6tq6ii98MPRu39X721Pe6+mLT1rMOvbBdWDvrdpY3pzi9tk0wuSSGRNAo4sinnnrq3/7t3+66666Rhx56SEx6//33v/rVr/7jP/7j5z//+c9u2qTcdtutjz5SNm7sqVF9Qy7YQRWeSgNWjy8fQMNXa+/r0+8rH4fWbbfdJoLI+fl5EUeKfzdt2iSmyFBS+/hD1be+9a0rV66I+UR8efPmzaA3EwAAAMETUePGjRvD4fAvfvGLUZU2/f8HIjQX6Wkf1ygAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from collections import defaultdict\n", "# defaultdict?\n", "display(Image(filename='images/introspection.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "You can also access the built in Python help system, by typing help(objectname), and then execute the cell. " ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# help(defaultdict)\n", "display(Image(filename='images/python-help.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Tab-completion help is also available, just press TAB after the period" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# defaultdict.\n", "display(Image(filename='images/tabcompletion.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "You can also obtain the docstring by prepending a function with a question mark and then executing.\n", "\n", " ?str.replace()" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The IPython *Help* menu item has links to IPython and the scientific packages" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image(filename='images/ipythonhelp.png'))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ " " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Notebooks remember, but not the way you might think " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "\n", "\n", "The notebook visible in the browser is not really the notebook, it is only a rendering of the notebook. The actual notebook and its data resides in the IPython kernel. The browser is connected to the kernel via a zmq channel, for the purpose of rendering and input. You can close all the browser windows, but the code and data still resides in the kernel process. As long as the kernel is running you can open a new browser window at 127.0.0.1:8888 and the notebook will be displayed.\n", "\n", "The results (including graphs and images) from previous runs are recorded in the notebook, so when it is rendered the previously stored results are shown. The previous results are overwritten only if the cell is executed again.\n", "\n", "Most important, the results from a previous cell execution remains in the kernel, even if the cell is removed or moved up in the notebook. It happens from time to time that you execute a cell in a given location, creating some data in the kernel. The next cell uses this information in a calculation. So far, so good. Now you decide to re-organise the notebook and move the 'next cell' to a position earlier in the notebook, even before the cell that created the information in the first place. The newly moved cell still works in its new location, because the information is still in memory. At the end of work, you save and close the notebook and exit the kernel.\n", "\n", "Tomorrow you start a new kernel and load the notebook. To ensure that all is fresh and well, you decide to execute all cells in the notebook. But now the moved cell does not work, because its input information is not yet created - it is only created a few cells into the future. Yet it did work yesterday (because of results still remained in memory after moving the cell). But today it fails because there is no memory of something that is yet to come.\n", "\n", "It is important to understand that the concept of the non-existence of data prior to cell execution does not apply if you move cells around in the notebook. All results are remembered and accessible by cells _linearly before_ the cell that created the information.\n", "\n", "Similarly, remember that a cell changes information for prosperity, also for subsequent runs of the same cell. For example, suppose we assign a value to a variable in the next cell and in the cell thereafter increment the value. If the first cell is executed once and the second cell is executed repeatedly, the value will increase much more than it would be if the program was executed from start to finish with each cell executed once only." ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "#run this cell once\n", "a = 5" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6\n" ] } ], "source": [ "#run this cell several times\n", "a = a + 1\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "A similar error occurs in Pandas if the first cell creates a dataframe, and the second cell adds a new column to the dataframe. If the second cell is executed a number of times, many columns will be added, which was not the intention with the code _if executed linearly from start to end_.\n", "\n", "Therefore be careful with cells that modifies its own input data - such data is not static and changes with each invocation of the cell." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Reloading imports\n", "\n", "Python's import facility loads a file only once, if the `import` is encountered again for the same module, the import is ignored. If you are actively developing the the module to be imported the module contents changes all the time and these changes must be imported to see their effect.\n", "In this case you want to force another import execution. This can be done with the `%load_ext autoreload` magic command. If the extension is already loaded, Ipython may complain, so I use `%reload_ext autoreload`, which attempts to load or reload, as appropriate.\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "%reload_ext autoreload\n", "%autoreload 2\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Clearing the IPython memory\n", "\n", "If for some reason you need to clear out all memory in your notebook this can be done by selecting the `Kernel Restart` menu option. This will clear the kernel memory, including the memory of all open notebooks. So use this avenue with care. After restarting the kernel, all notebooks must be re-run from start to build the information again.\n", "\n", "You can use the Cell | All Output | Clear menu option to *remove all output* from a notebook. It will be much smaller, but also empty of any output or embedded media. To see the full notebook with all calculation results, you would have to run all cells again." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Markdown (MD) language syntax\n", "\n", "Markdown is a simplified syntax for simple text layout. It allows you to embed simple formatting commands in a regular text file. In an ASCII text editor you will see the markup but not formatted. You can see the formatted version in a local or online markdown editor.\n", "\n", "1. https://en.wikipedia.org/wiki/Markdown \n", "2. https://daringfireball.net/projects/markdown/\n", "3. https://help.github.com/articles/markdown-basics/\n", "\n", "You can write markdown in any text editor or in a dedicated markdown editor:\n", "\n", "1. https://notepad-plus-plus.org/\n", "3. http://www.sitepoint.com/best-markdown-editors-windows/\n", "4. http://www.sublimetext.com/ (paid software)\n", "5. http://markdownpad.com/ (paid software)\n", "\n", "IPython uses the markdown syntax for text in its non-code cells. When IPython creates a new cell it is a code cell by default, you must remember to change it to a markdown cell on the menu.\n", "\n", "You can also edit markdown online here:\n", "\n", "1. https://github.com/benweet/stackedit\n", "2. http://dillinger.io/\n", "3. http://markdownlivepreview.com/\n", "\n", "\n", "One confusing matter is the fact there are different variants of markdown. For more details on the syntax see \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "You can also use embedded raw HTML into a markdown page, but you need to type a lot more than in pure markdown.\n", "\n", "IPython uses the Pandoc converter to convert between different markup languages, so my guess is that it is prudent to work with the Pandoc variant of MD syntax (which is close to the original). The other major MD variant is the github MD syntax - which is somewhat different.\n", "\n", "To force a newline you must end the current line with two spaces.\n", "\n", "If your markdown does not want to work right, first try to leave a blank line before the offending text." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Markdown Cells" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Type this to get the output shown below:\n", "\n", " Markdown basics: lists, markup and code\n", " \n", " * list item \n", " * list item\n", " * nested list item\n", " \n", " \n", " * *italics*\n", " * **bold**\n", " * `fixed_font`\n", "\n", " You can embed code meant for illustration instead of execution in Python - use four spaces before:\n", " \n", " def hello_ipython():\n", " print \"Hello IPython!\"\n", " \n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Markdown basics: lists, markup and code\n", "\n", "* list item \n", "* list item\n", " * nested list item\n", "\n", "\n", "* *italics*\n", "* **bold**\n", "* `fixed_font` \n", "\n", "You can embed code meant for illustration instead of execution in Python - use four spaces before:\n", "\n", " def hello_ipython():\n", " print \"Hello IPython!\"\n", " \n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "A key and important point is that IPython markdown can take embedded HTML of any form.
Therefore in applications where the markdown syntax it too weak, use HTML. Be aware however that not all of the HTML constructs can be converted to some of the conversion output formats (e.g., embedding video in a LaTeX document).\n", "\n", "Type this to get the output shown below:\n", "\n", " Markdown cells can also contain HTML\n", " \n", "

Markdown basics: lists, markup and code

\n", " \n", "
    \n", "
  • list item
  • \n", "
  • list item

    \n", " \n", "
      \n", "
    • nested list item
    • \n", "
  • \n", "
  • italics

  • \n", "
  • bold
  • \n", " \n", "
  • fixed_font
  • \n", "
\n", " \n", "

Code examples:

\n", " \n", "
def hello_ipython():\n",
    "        print \"Hello IPython!\"\n",
    "    
" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Markdown cells can also contain HTML\n", "\n", "

Markdown basics: lists, markup and code

\n", "\n", "
    \n", "
  • list item
  • \n", "
  • list item

    \n", "\n", "
      \n", "
    • nested list item
    • \n", "
  • \n", "
  • italics

  • \n", "
  • bold
  • \n", "\n", "
  • fixed_font
  • \n", "
\n", "\n", "

Code examples:

\n", "\n", "
def hello_ipython():\n",
    "    print \"Hello IPython!\"\n",
    "
" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Type this to get the output shown below:\n", "\n", " Using math mode (anything delimited before and after by single or double `$` symbols is interpreted as LaTeX math:\n", "\n", " $$ D_{KL}(P||Q) = \\sum\\limits_{i}ln (\\frac{P(i)}{Q(i)}) P(i)$$" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Using math mode (anything delimited before and after by single or double `$` symbols is interpreted as LaTeX math:\n", "\n", "$$ D_{KL}(P||Q) = \\sum\\limits_{i}ln (\\frac{P(i)}{Q(i)}) P(i)$$\n", "\n", "$$e^{i\\pi} + 1 = 0 \n", "$$" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Github markdown can also be used" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The Notebook webapp support Github flavored markdown meaning that you can use triple backticks for code blocks\n", "\n", " ```python\n", " print \"Hello World\"\n", " ```\n", "\n", " ```javascript\n", " console.log(\"Hello World\")\n", " ```\n", "gives" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "```python\n", "print \"Hello World\"\n", "```\n", "\n", "```javascript\n", "console.log(\"Hello World\")\n", "```" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "And a table like this :\n", "\n", " | This | is |\n", " |------|------|\n", " | a | table| \n", " \n", "gives\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "| This | is |\n", "|------|------|\n", "| a | table| \n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Citations and links" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Markdown syntax does not have any means to provide citations as often required in formal documentation.\n", " \n", "Markdown hyperlinks to external websites: [pyradi](https://code.google.com/p/pyradi/ \"on Google Code\") Python package. You can provide the display text, the ling address and amouse-over attribute.\n", "\n", "HTML anchors can be used to create links to other locations in the same file. Put an anchor definition in the place you want to link to, using this format: ``. It seems the best place to put this anchor is in a dedicated markdown cell immediatelty in front of where you want to link to, it does not work in a cell with other text.\n", "From elsewhere in the file link to this anchor by using the following format \n", "`my anchor`\n", "\n", "It is also possible to attach anchors to headers as explained in \n", "\n", " - LaTeX citations in the notebook. \n", "\n", "The LaTeX docs with template control script provides full citation support when creating PDF documents." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Cross linking and table of contents" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "IPython does not yet support the automatic creation of a table of contents, but it can be added manually by placing an HTML anchor immediately before the section heading and then linking to the anchor. Note that in IPYthon the browser's 'back arrow' won't navigate back to the previous location in the page.\n", "\n", " # Table of Contents\n", "\n", " - [Overview](#Overview)\n", " - [Learning Python and hints and tips](#LearningPythonandhintsandtips)\n", " - [Introducing Python for scientific work](#IntroducingPythonforscientificwork)\n", "\n", " \n", " ##Overview\n", "\n", " This notebook provides a brief summary ....\n", "\n", " \n", " ##Learning Python, and hints and tips\n", "\n", " There are many free ....\n", "\n", " \n", " ##Introducing Python for scientific work\n", "\n", " A very good introduction to Python for scientific work ...." ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "\n", "Table of Contents\n", "\n", "- [Overview](#Overview)\n", "- [Learning Python and hints and tips](#LearningPythonandhintsandtips)\n", "- [Introducing Python for scientific work](#IntroducingPythonforscientificwork)\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## IPython's rich display system" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "IPython notebook can use all of the modern browsers' capabilities. This is called the rich display system, see [here.](http://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Part%205%20-%20Rich%20Display%20System.ipynb)" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Plotting" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "__Plotting packages and options__\n", "\n", "[Scientific Plotting in Python](http://www.pycon.se/2014/assets/slides/Plotly-Pycon-Sweden.pdf) \n", "[Interactive Plotting in IPython Notebook (Part 1/2): Bokeh](https://pyscience.wordpress.com/2014/09/01/interactive-plotting-in-ipython-notebook-part-12-bokeh/) \n", "[Interactive Plotting in IPython Notebook (Part 2/2): Plotly](https://pyscience.wordpress.com/2014/09/02/interactive-plotting-in-ipython-notebook-part-22-plotly-2/) \n", "[Overview of Python Visualization Tools ](http://pbpython.com/visualization-tools-1.html) \n", " \n", "\n", "__matplotlib__\n", "[matplotlib](http://matplotlib.org/)\n", "[Gallery](http://matplotlib.org/gallery.html)\n", "[Examples](http://matplotlib.org/examples/index.html)\n", "[docs](http://matplotlib.org/contents.html#)\n", "\n", "__bokeh__\n", "[Welcome to bokeh](http://bokeh.pydata.org/en/latest/)\n", "[Gallery](http://bokeh.pydata.org/en/latest/docs/gallery.html)\n", "[Quickstart](http://bokeh.pydata.org/en/latest/docs/quickstart.html)\n", "[Tutorials](http://nbviewer.ipython.org/github/bokeh/bokeh-notebooks/blob/master/index.ipynb#Tutorial)\n", "[User Guide](http://bokeh.pydata.org/en/latest/docs/user_guide.html)\n", "\n", "__plotly__\n", "[What is Plotly.js](https://plot.ly/javascript/)\n", "[Plotly.js Open-Source Announcement](https://plot.ly/javascript/open-source-announcement/)\n", "[Getting Started: Plotly for Python](https://plot.ly/python/getting-started/)\n", "[Plotly Offline](https://plot.ly/python/offline/)\n", "[User Guide](https://plot.ly/python/user-guide/)\n", "[Plotly's Python API User Guide](https://plotly.com/python-api-reference/\n", "[Example 3-D plot](https://plot.ly/~chriddyp/1780.embed)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Matplotlib in IPython notebook\n", "\n", "IPython can inline `matplotlib plots`. \n", "\n", " - animations \n", " - interactivity \n", " - multi-colour lines " ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'time (s)')" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'voltage (mV)')" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'About as simple as it gets, folks')" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import pylab as pl\n", "import numpy as np\n", "\n", "t = np.arange(0.0, 2.0, 0.01)\n", "s = np.sin(2*np.pi*t)\n", "pl.plot(t, s)\n", "pl.xlabel('time (s)')\n", "pl.ylabel('voltage (mV)')\n", "pl.title('About as simple as it gets, folks')\n", "pl.grid(True)\n", "# savefig(\"test.png\")\n", "# show()" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "By just importing seaborn, the Matplotlib graphs is given a different style. If seaborn is not installed do `conda install seaborn`." ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 0, 'time (s)')" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0, 0.5, 'voltage (mV)')" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'About as simple as it gets, folks')" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "\n", "t = np.arange(0.0, 2.0, 0.01)\n", "s = np.sin(2*np.pi*t)\n", "pl.plot(t, s)\n", "pl.xlabel('time (s)')\n", "pl.ylabel('voltage (mV)')\n", "pl.title('About as simple as it gets, folks')\n", "pl.grid(True)\n", "# savefig(\"test.png\")\n", "# show()" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Matplotlib in qt window\n", "\n", "Use the ipython magic command pylab to control the graphing backend, switch between inline and qt as required.
\n", " " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Seaborn distribution plotting\n", "The [seaborn](https://github.com/mwaskom/seaborn) package provides special means to plot distributions\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Including images into the notebook" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "There are (at least) two ways to include images in the notebook. \n", "\n", " display(Image(filename='images/portalpage.png'))\n", " HTML('')\n", " \n", "The first form includes the image in its natural size, but the size can be adjusted by width and height function parameters. The second form injects HTML code and, likewise, allows you to set the image size." ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "HTML('')" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "image/png": { "height": 250, "width": 250 } }, "output_type": "display_data" } ], "source": [ "display(Image(filename='images/ipythonhelp.png', width=250, height=250))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "Images can also be included as markdown by using the following format \n", "`!['replacement test'](images/ipythonhelp.png)`\n", "\n", "!['replacement test'](images/ipythonhelp.png)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Images can also be included as markdown by using the following format \n", "``\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Embedded vs non-embedded images" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "As of IPython 0.13, images are embedded by default for compatibility with QtConsole, and the ability to still be displayed offline.\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# by default Image data are embedded\n", "picUrl = 'https://raw.githubusercontent.com/NelisW/pyradi/master/pyradi/doc/_images/pyradi.png'\n", "Embed = Image(picUrl)\n", "display(Embed)\n", "\n", "# if kwarg `url` is given, the embedding is assumed to be false\n", "# SoftLinked = Image(url=picUrl)\n", "\n", "# In each case, embed can be specified explicitly with the `embed` kwarg\n", "# ForceEmbed = Image(url=picUrl, embed=True)" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Embedding other media" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "SVG graphic." ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/svg+xml": [ "\n", " \n", " \n", " \n", " \n", " \n", " image/svg+xml\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " D\n", " \n", " \n", " W\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " R\n", " dw\n", " dd\n", " \n", " \n", " θ\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " H\n", " \n", " \n", " Reference point\n", " \n", "" ], "text/plain": [ "" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import SVG\n", "SVG(filename='images/solidangleflatplate.svg')" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Embed a video from YouTube." ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "from IPython.display import YouTubeVideo\n", "# a talk about IPython at Sage Days at U. Washington, Seattle.\n", "# Video credit: William Stein.\n", "if False:\n", " YouTubeVideo('1j_HxD4iLn8')" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Embed an external web page." ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "if False:\n", " HTML('')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Embed a video from local file system\n", "\n", "The following shell shows a recording of the Mayavi display. The file is locally saved in the notebook. It seems that the format must be webm format, the other formats (avi, mp4) did not work." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# display a locally saved video file.\n", "# it seems that only webm format works here\n", "import io\n", "import base64\n", "from IPython.core.display import HTML\n", "\n", "filename = './images/interpolationSphere.webm'\n", "\n", "# video = io.open(filename, 'r+b').read()\n", "# encoded = base64.b64encode(video)\n", "# HTML(data=''''''.format(encoded.decode('ascii')))\n", "\n", "HTML(\"\"\"\n", "
\n", "
\"\"\".format(filename))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Interactive widgets" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "IPython includes an architecture for interactive widgets that tie together Python code running in the kernel and JavaScript/HTML/CSS running in the browser. These widgets enable users to explore their code and data interactively. For details see \n", "\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "The following examples are taken from \n", " \n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The widget ecosystem changes frequently, the following code may not work...." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "['Accordion',\n", " 'AppLayout',\n", " 'Audio',\n", " 'BoundedFloatText',\n", " 'BoundedIntText',\n", " 'Box',\n", " 'Button',\n", " 'ButtonStyle',\n", " 'CallbackDispatcher',\n", " 'Checkbox',\n", " 'Color',\n", " 'ColorPicker',\n", " 'ColorsInput',\n", " 'Combobox',\n", " 'Controller',\n", " 'CoreWidget',\n", " 'DOMWidget',\n", " 'DatePicker',\n", " 'Datetime',\n", " 'DatetimePicker',\n", " 'Dropdown',\n", " 'FileUpload',\n", " 'FloatLogSlider',\n", " 'FloatProgress',\n", " 'FloatRangeSlider',\n", " 'FloatSlider',\n", " 'FloatText',\n", " 'FloatsInput',\n", " 'GridBox',\n", " 'GridspecLayout',\n", " 'HBox',\n", " 'HTML',\n", " 'HTMLMath',\n", " 'Image',\n", " 'IntProgress',\n", " 'IntRangeSlider',\n", " 'IntSlider',\n", " 'IntText',\n", " 'IntsInput',\n", " 'Label',\n", " 'Layout',\n", " 'NaiveDatetimePicker',\n", " 'NumberFormat',\n", " 'Output',\n", " 'Password',\n", " 'Play',\n", " 'RadioButtons',\n", " 'Select',\n", " 'SelectMultiple',\n", " 'SelectionRangeSlider',\n", " 'SelectionSlider',\n", " 'SliderStyle',\n", " 'Stack',\n", " 'Style',\n", " 'Tab',\n", " 'TagsInput',\n", " 'Text',\n", " 'Textarea',\n", " 'TimePicker',\n", " 'ToggleButton',\n", " 'ToggleButtons',\n", " 'ToggleButtonsStyle',\n", " 'TwoByTwoLayout',\n", " 'TypedTuple',\n", " 'VBox',\n", " 'Valid',\n", " 'ValueWidget',\n", " 'Video',\n", " 'Widget']" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# import IPython.html.widgets as widgets\n", "from IPython.display import display\n", "import ipywidgets\n", "from ipywidgets import widgets \n", "\n", "[n for n in dir(ipywidgets) if n[0] == n[0].upper() and not n[0] == '_']\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "32e8140c336c4af7bc3ff05fd0040578", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatSlider(value=7.5, description='Test:', max=10.0, min=5.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b5745a53893e4bf59203d1f52573f824", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Checkbox(value=True, description='Check me')" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d9a837bcd0a6439dbc3bb5ae0d7aca0a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Dropdown(description='Number:', index=1, options=('test 1', 'option 2', 'selection 3'), value='option 2')" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fdb4dcfc2aad495fa156159281738f32", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Dropdown(description='Focal length:', index=1, options=OrderedDict([('0.3', '0.3'), ('0.4', '0.4'), ('0.5', '0…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xx = widgets.FloatSlider(\n", " value=7.5,\n", " min=5.0,\n", " max=10.0,\n", " step=0.1,\n", " description='Test:',\n", ")\n", "\n", "y = ipywidgets.Checkbox(\n", " description='Check me',\n", " value=True,\n", ")\n", "\n", "w = ipywidgets.Dropdown(\n", " options = [ 'test 1', 'option 2', 'selection 3',],\n", " value='option 2',\n", " description='Number:',\n", ")\n", "\n", "#use ordered dic to get required sorting sequence\n", "from collections import OrderedDict\n", "foclens = [ 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5]\n", "m = ipywidgets.Dropdown(\n", " options = OrderedDict([(str(x), str(x)) for x in foclens]) ,\n", " value='0.4',\n", " description='Focal length:',\n", ")\n", "\n", "\n", "\n", "from IPython.display import display\n", "\n", "display(xx)\n", "display(y)\n", "display(w)\n", "display(m)\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "22e35f231d5e47419fbf84d40cf9d632", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(Select(description='country', options=('USA', 'Russia'), value='USA'), Output()), _dom_c…" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9be7e6e2305144e8aa19d86d828d9dfc", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(Select(description='city', options=('CHI', 'NYC'), value='CHI'), Output()), _dom_classes…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# http://stackoverflow.com/questions/28529157/dynamically-changing-dropdowns-in-ipython-notebook-widgets-and-spyre\n", "# from IPython.html import widgets\n", "from IPython.display import display\n", "\n", "geo={'USA':['CHI','NYC'],'Russia':['MOW','LED']}\n", "\n", "def print_city(city):\n", " print(city)\n", "\n", "def select_city(country):\n", " cityW.options = geo[country]\n", "\n", "\n", "scW = ipywidgets.Select(options=geo.keys())\n", "init = scW.value\n", "cityW = ipywidgets.Select(options=geo[init])\n", "j = ipywidgets.interactive(print_city, city=cityW)\n", "i = ipywidgets.interactive(select_city, country=scW)\n", "display(i)\n", "display(j)" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The following two cells illustrate how a slider is used in the `widgets.interactive` function to test the value of the slider and then do something with the value. The example below shows how to pass 'fixed' or non-widget parameters to the function. Any number of such widgets may be passed, but they must all be named.\n", "\n", "For more examples see the links shown above. An example of interactive image segmentation is shown in notebook '10-ImageUtilities' in this series." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "def doSomething(scale, thx):\n", " print('scale={} thx={} product={}'.format(scale, thx, scale * thx))\n", " return (scale, thx)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3e79e2e0daba41c29306f05065f05762", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=128.0, description='thx', max=255.0, step=1.0), Output()), _dom_classe…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scale = 5.0\n", "v = ipywidgets.interactive(doSomething, scale=ipywidgets.fixed(scale), \n", " thx=ipywidgets.FloatSlider(value=128, min=0.0, max=255.0, step=1))\n", "display(v)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2f962ee103b74348b85b337d23564c8a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Text(value='', description='First Name:'), Text(value='', description='Last Name:'), Checkbox(v…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "form = widgets.VBox()\n", "first = widgets.Text(description=\"First Name:\")\n", "last = widgets.Text(description=\"Last Name:\")\n", "\n", "students = widgets.VBox(visible=True, children=[\n", " widgets.Checkbox(description=\"Student1:\", value=False),\n", " widgets.Checkbox(description=\"Student2:\", value=False),\n", " ])\n", "\n", "student = widgets.Checkbox(description=\"Student:\", value=False)\n", "\n", "school_info = widgets.VBox(visible=False, children=[\n", " widgets.Text(description=\"School:\"),\n", " widgets.IntText(description=\"Grade:\", min=0, max=12)\n", " ])\n", "\n", "pet = widgets.Text(description=\"Pet's Name:\")\n", "\n", "form.children = [first, last, student, students, school_info, pet]\n", "\n", "display(form)\n", "\n", "def on_student_toggle(name, value):\n", " if value:\n", " school_info.visible = True\n", " else:\n", " school_info.visible = False\n", " \n", "student.observe (on_student_toggle, 'value')\n", "students.children[0].observe(on_student_toggle, 'value')\n", "students.children[1].observe(on_student_toggle, 'value')\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "835395c09813420fa2cd930b811f4eed", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Text(value='', description='First Name:'), Text(value='', description='Last Name:'), Checkbox(v…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "form = widgets.VBox()\n", "first = widgets.Text(description=\"First Name:\")\n", "last = widgets.Text(description=\"Last Name:\")\n", "\n", "student = widgets.Checkbox(description=\"Student:\", value=False)\n", "\n", "school_info = widgets.VBox(visible=False, children=[\n", " widgets.Text(description=\"School:\"),\n", " widgets.IntText(description=\"Grade:\", min=0, max=12)\n", " ])\n", "\n", "pet = widgets.Text(description=\"Pet's Name:\")\n", "form.children = [first, last, student, school_info, pet]\n", "display(form)\n", "\n", "def on_student_toggle(name, value):\n", " if value:\n", " school_info.visible = True\n", " else:\n", " school_info.visible = False\n", "student.observe(on_student_toggle, 'value')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e92da3e7e7004b4983160894fa7f3763", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Box(children=(FloatSlider(value=0.0), Text(value='hi')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\nwillers\\AppData\\Local\\Temp\\ipykernel_47532\\2542408873.py:16: DeprecationWarning: on_submit is deprecated. Instead, set the .continuous_update attribute to False and observe the value changing with: mywidget.observe(callback, 'value').\n", " string.on_submit(on_string_change,'value')\n" ] } ], "source": [ "from IPython.display import display\n", "\n", "float_range = widgets.FloatSlider()\n", "string = widgets.Text(value='hi')\n", "container = widgets.Box(children=[float_range, string])\n", "\n", "container.border_color = 'red'\n", "container.border_style = 'dotted'\n", "container.border_width = 3\n", "display(container) # Displays the `container` and all of it's children.\n", "\n", "def on_string_change(name, value):\n", " print(value)\n", "\n", "# string.on_trait_change(on_string_change,'value')\n", "string.on_submit(on_string_change,'value')\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The following is an example by Ketcheson, Ahmadia and Granger taken from \n", " \n", "It demonstrates aliasing during sampling of a signal. To see the effects of aliasing:\n", "\n", "1. Run the next cell, then set the `grid_points` slider to `13`.\n", "2. Move the `frequency` slider to values above `10`.\n", "3. As the frequency increases, the measured signal (blue) has a lower frequency than the real one (red)." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7e1c6a5304b6465dabe3494a3f1273f6", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=4.0, description='frequency', max=22.0, min=1.0, step=0.5), IntSlider(…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Import matplotlib (plotting) and numpy (numerical arrays).\n", "# This enables their use in the Notebook.\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# Import IPython's interact function which is used below to\n", "# build the interactive widgets\n", "from ipywidgets import interact#, interactive, fixed, interact_manual\n", "# import ipywidgets as widgets\n", "\n", "\n", "def plot_sine(frequency=4.0, grid_points=12, plot_original=True):\n", " \"\"\"\n", " Plot discrete samples of a sine wave on the interval ``[0, 1]``.\n", " \"\"\"\n", " x = np.linspace(0, 1, grid_points + 2)\n", " y = np.sin(2 * frequency * np.pi * x)\n", "\n", " xf = np.linspace(0, 1, 1000)\n", " yf = np.sin(2 * frequency * np.pi * xf)\n", "\n", " fig, ax = plt.subplots(figsize=(8, 6))\n", " ax.set_xlabel('x')\n", " ax.set_ylabel('signal')\n", " ax.set_title('Aliasing in discretely sampled periodic signal')\n", "\n", " if plot_original:\n", " ax.plot(xf, yf, color='red', linestyle='solid', linewidth=2)\n", "\n", " ax.plot(x, y, marker='o', linewidth=2)\n", "\n", "# The interact function automatically builds a user interface for exploring the\n", "# plot_sine function.\n", "interact(plot_sine, frequency=(1.0, 22.0, 0.5), grid_points=(10, 60, 1), plot_original=True);" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "An example at shows how to use interactive widgets when segmenting an image." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://stackoverflow.com/questions/47102564/how-to-set-interact-arguments-programmatically \n" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "19e046edc8ee4e1283bb9bdcf66f8170", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=0.0, continuous_update=False, description='s0', max=2.0, min=-2.0), Fl…" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "n_weights = 10\n", "weight_sliders = [widgets.FloatSlider(value=0,min=-2,max=2,step=0.1,description=f's{i}',\n", " disabled=False,continuous_update=False,orientation='horizontal',\n", " readout=True,readout_format='.2f') for i in range(n_weights)]\n", "\n", "def PlotSuper(**kwargs):\n", " def f(x):\n", " y=0\n", " for i,weight in enumerate(kwargs.values()):\n", " if i==0:\n", " y+=weight\n", " else:\n", " y+=weight*np.sin(x*i)\n", " return y\n", " vf = np.vectorize(f)\n", " xx= np.arange(0,6,0.1)\n", " plt.plot(xx,vf(xx))\n", " plt.gca().set_ylim(-5,5)\n", " \n", "kwargs = {f's{i}':slider for i,slider in enumerate(weight_sliders)}\n", "interact(PlotSuper,**kwargs)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://github.com/jupyter-widgets/ipywidgets/blob/master/docs/source/examples/Widget%20Styling.ipynb \n", "shows how to style the widgets using css." ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3be72706080c4f79854212e340eeb0ff", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Button(description='(50% width, 80px height) button', layout=Layout(height='80px', width='50%'), style=ButtonS…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import Button, Layout\n", "\n", "b = Button(description='(50% width, 80px height) button',\n", " layout=Layout(width='50%', height='80px'))\n", "b\n", "\n" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3716113a623843718d42e52e87e23bd9", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Button(description='Another button with the same layout', layout=Layout(height='80px', width='50%'), style=But…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "c = Button(description='Another button with the same layout', layout=b.layout)\n", "\n", "c" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0655b228c7844a1da2db659664eb8da3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(VBox(children=(Button(description='correct', style=ButtonStyle()), Button(description='horse', …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import Button, HBox, VBox\n", "\n", "words = ['correct', 'horse', 'battery', 'staple']\n", "items = [Button(description=w) for w in words]\n", "left_box = VBox([items[0], items[1]])\n", "right_box = VBox([items[2], items[3]])\n", "HBox([left_box, right_box])" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c1e4021b829b45b4b191a930b4151401", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntSlider(value=0, description='\\\\(\\\\int_0^t f\\\\)')" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import IntSlider, Label\n", "IntSlider(description=r'\\(\\int_0^t f\\)')" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cb8cf06b9a1649299bd1eea77e2a7714", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Box(children=(Button(button_style='danger', description='correct', layout=Layout(width='auto'), style=ButtonSt…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import Layout, Button, Box\n", "\n", "items_layout = Layout( width='auto') # override the default width of the button to 'auto' to let the button grow\n", "\n", "box_layout = Layout(display='flex',\n", " flex_flow='column', \n", " align_items='stretch', \n", " border='solid',\n", " width='50%')\n", "\n", "words = ['correct', 'horse', 'battery', 'staple']\n", "items = [Button(description=word, layout=items_layout, button_style='danger') for word in words]\n", "box = Box(children=items, layout=box_layout)\n", "box" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0af67dcdb65448188bacea70af5ba64d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Box(children=(Button(button_style='danger', description='weight=1; auto', layout=Layout(flex='1…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import Layout, Button, Box, VBox\n", "\n", "# Items flex proportionally to the weight and the left over space around the text \n", "items_auto = [\n", " Button(description='weight=1; auto', layout=Layout(flex='1 1 auto', width='auto'), button_style='danger'),\n", " Button(description='weight=3; auto', layout=Layout(flex='3 1 auto', width='auto'), button_style='danger'),\n", " Button(description='weight=1; auto', layout=Layout(flex='1 1 auto', width='auto'), button_style='danger'),\n", " ]\n", "\n", "# Items flex proportionally to the weight \n", "items_0 = [\n", " Button(description='weight=1; 0%', layout=Layout(flex='1 1 0%', width='auto'), button_style='danger'),\n", " Button(description='weight=3; 0%', layout=Layout(flex='3 1 0%', width='auto'), button_style='danger'),\n", " Button(description='weight=1; 0%', layout=Layout(flex='1 1 0%', width='auto'), button_style='danger'),\n", " ]\n", "box_layout = Layout(display='flex',\n", " flex_flow='row', \n", " align_items='stretch', \n", " width='70%')\n", "box_auto = Box(children=items_auto, layout=box_layout)\n", "box_0 = Box(children=items_0, layout=box_layout)\n", "VBox([box_auto, box_0])\n" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c895d30bca324c289a7d900e2484115c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Box(children=(Box(children=(Label(value='Age of the captain'), IntSlider(value=40, max=60, min=40)), layout=La…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import Layout, Button, Box, FloatText, Textarea, Dropdown, Label, IntSlider\n", "\n", "form_item_layout = Layout(\n", " display='flex',\n", " flex_flow='row',\n", " justify_content='space-between'\n", ")\n", "\n", "form_items = [\n", " Box([Label(value='Age of the captain'), IntSlider(min=40, max=60)], layout=form_item_layout),\n", " Box([Label(value='Egg style'), \n", " Dropdown(options=['Scrambled', 'Sunny side up', 'Over easy'])], layout=form_item_layout),\n", " Box([Label(value='Ship size'), \n", " FloatText()], layout=form_item_layout),\n", " Box([Label(value='Information'), \n", " Textarea()], layout=form_item_layout)\n", "]\n", "\n", "form = Box(form_items, layout=Layout(\n", " display='flex',\n", " flex_flow='column',\n", " border='solid 2px',\n", " align_items='stretch',\n", " width='50%'\n", "))\n", "form\n" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "57ef280ba9074d2e85567ea86fcf6879", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Label(value='Scroll horizontally:'), Box(children=(Button(button_style='warning', description='…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import Layout, Button, Box\n", "\n", "item_layout = Layout(height='100px', min_width='40px')\n", "items = [Button(layout=item_layout, description=str(i), button_style='warning') for i in range(40)]\n", "box_layout = Layout(overflow_x='scroll',\n", " border='3px solid black',\n", " width='500px',\n", " height='',\n", " flex_flow='row',\n", " display='flex')\n", "carousel = Box(children=items, layout=box_layout)\n", "VBox([Label('Scroll horizontally:'), carousel])" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cb747a7ae5ed4ed38c746866a50376c7", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(HBox(children=(VBox(children=(Text(value='Hello World', description='Title:', placeholder='Type…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def makeplot(title,display_trend,marker,amplitude,step_size,periods,noise_scale,offset,trend):\n", " pass\n", "\n", "def interact_hookup(f, controls):\n", " from ipywidgets import Output\n", " out = Output()\n", " def observer(change):\n", " out.clear_output()\n", " kwargs = {k:v.value for k,v in controls.items()}\n", " with out:\n", " f(**kwargs)\n", " for k,w in controls.items():\n", " w.observe(observer, 'value')\n", " observer(None)\n", " return out\n", "\n", "w = dict(\n", " title=widgets.Text(value='Hello World', placeholder='Type something', description='Title:', disabled=False),\n", " display_trend=widgets.ToggleButton(value=False, description='Display Trend', icon='check'),\n", " marker=widgets.RadioButtons(options=['x', 'o', '.'], value='x', description='Marker:'),\n", " amplitude=widgets.FloatSlider(value=1, min=-5, max=5, description='Amplitude:'),\n", " step_size=widgets.FloatSlider(value=0.1, min=0.01, max=0.1, step=0.01, description='Step size:'),\n", " periods=widgets.FloatSlider(value=5, min=1, max=20, description='Periods:'),\n", " noise_scale=widgets.FloatSlider(value=0.1, min=0.01, max=2, description='Noise:'),\n", " offset=widgets.FloatSlider(value=0, min=-5, max=5, description='Offset:'),\n", " trend=widgets.FloatSlider(value=1, min=-5, max=5, description='Trend:'),\n", " )\n", "\n", "output = interact_hookup(makeplot, w)\n", "\n", "UI = VBox([\n", " HBox([\n", " VBox([\n", " w['title'],\n", " w['display_trend'],\n", " w['marker'],\n", " ]),\n", " VBox([\n", " w['amplitude'],\n", " w['step_size'],\n", " w['periods'],\n", " w['noise_scale'],\n", " w['offset'],\n", " w['trend'],\n", " ])\n", " ]),\n", " output\n", "])\n", "\n", "\n", "display(UI)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interdependent widgets\n", "\n", "The softmax function is used in neural networks.\n", "Suppose we have a network with four neurons, and four corresponding weighted inputs, which we'll denote $z_{1}^{L}, z_{2}^{L}, z_{3}^{L}$, and $z_{4}^{L}$. \n", "\n", "According to this function, the activation $a^L_j$ of the $j$ output neuron is \n", "\\begin{equation}\n", "a_{j}^{L}=\\frac{e^{z_{j}^{L}}}{\\sum_{k} e^{z_{k}^{L}}}\n", "\\label{eq:c03-78} \n", "\\end{equation}\n", "where in the denominator we sum over all the inputs $z^L_j$.\n", "\n", "As you increase any one component, its output will increase\n", "\n", "Shown below are adjustable sliders showing possible values for the weighted inputs, and a graph of the corresponding output activations. A good place to start exploration is by using the bottom slider to increase $z_{4}^{L}$. \n", "As you increase $z_{4}^{L}$, you'll see an increase in the corresponding output activation, $a_{4}^{L}$, and a decrease in the other output activations. Similarly, if you decrease $z_{4}^{L}$ then $a_{4}^{L}$ will decrease, and all the other output activations will increase. In fact, if you look closely, you'll see that in both cases the total change in the other activations exactly compensates for the change in $a_{4}^{L}$. The reason is that the output activations are guaranteed to always sum up to 1." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the code below there is a direct match between each slider and progress bar next to it.\n", "The sliders and progress bars are created in a dict comprehension, using the same keys for sliders and progress bars.\n", "These widgets have global scope and are available inside the softmax function.\n", "\n", "The widgets are displayed manually (not automatically in interact) with the idea that these will be updated later. \n", "\n", "`ipywidgets.interact` automatically displays the widgets when invoked, but we already displayed the widgets. Hence, the `interactive` function is called rather than `interact`, because `interactive` does not display/show the widgets.\n", "\n" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4c245248e46d4a768c61f43b0d9b131c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(HBox(children=(FloatSlider(value=2.5, description='$z^L_1$', max=5.0, min=-5.0, step=0.05), Flo…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from ipywidgets import HBox,VBox,Button,FloatSlider,FloatProgress,interactive\n", "\n", "# set up the widgets with precalculated values\n", "# these sliders and prog bars are visible and are updated below in the softmax function\n", "sliders = {'1':[2.5,0.31], '2':[-1.,0.009], '3':[3.2,0.633], '4':[0.5,0.043]}\n", "sld = {key:FloatSlider(min=-5.0, max=+5.0, value=f'{sliders[key][0]}', step=0.05,description=f'$z^L_{key}$') for key in sliders}\n", "prb = {key:FloatProgress(value=f'{sliders[key][1]}',min=0,max=1.0,step=0.01,description=f'$a^L_{key}$',bar_style='info',orientation='horizontal') for key in sliders}\n", "\n", "# build and display the widget grid in pairs of sliders and prog bars\n", "lstD = [HBox([sld[key], prb[key]]) for key in sld]\n", "display(VBox(lstD))\n", "\n", "# function is invoked if any of the sliders change\n", "# and the result is used to change the progress bar\n", "def softmax(**lstZ):\n", " sum = 0\n", " for key in lstZ:\n", " sum += np.exp(lstZ[key])\n", " for key in lstZ:\n", " prb[key].value = np.exp(lstZ[key])/sum\n", "\n", "# `interactive` does not display/show the widgets, already done above.\n", "w = interactive(softmax, **sld )" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "# The following information is somewhat esoteric, you need not go into this" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simple progress bar\n", "\n", "Note that clear_output wipes the entire cell output, including previous output\n", "\n", "https://mikulskibartosz.name/how-to-display-a-progress-bar-in-jupyter-notebook-47bd4c2944bf" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [], "source": [ "def update_progress(progress, bar_length=20):\n", "\n", " from IPython.display import clear_output\n", " \n", " if isinstance(progress, int):\n", " progress = float(progress)\n", " if not isinstance(progress, float):\n", " progress = 0\n", " if progress < 0:\n", " progress = 0\n", " if progress >= 1:\n", " progress = 1\n", " block = int(round(bar_length * progress))\n", " clear_output(wait = True)\n", " text = \"Progress: [{0}] {1:.1f}%\".format( \"#\" * block + \"-\" * (bar_length - block), progress * 100)\n", " print(text)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Test:" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Progress: [########################################] 100.0%\n", "after\n" ] } ], "source": [ "import time\n", "\n", "print('before')\n", "\n", "#Replace this with a real computation\n", "number_of_elements = 10\n", "for i in range(number_of_elements):\n", " time.sleep(0.1) \n", " \n", " # progress must be a float between 0 and 1\n", " update_progress((i+1) / number_of_elements,bar_length=40)\n", " \n", "print('after')\n" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Progress: [########################################] 100.0%\n", "after\n" ] } ], "source": [ "import pyradi.ryutils as ryutils\n", "\n", "import time\n", "\n", "print('before')\n", "\n", "#Replace this with a real computation\n", "number_of_elements = 10\n", "for i in range(number_of_elements):\n", " time.sleep(0.1) \n", " \n", " # progress must be a float between 0 and 1\n", " ryutils.update_progress((i+1) / number_of_elements,bar_length=40)\n", " \n", "print('after')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternative progress bar \n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Notebook file format" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "From \n", "\n", "Binary data such as figures are also saved directly in the JSON file. This provides convenient single-file portability, but means that the files can be large; a diff of binary data is also not very meaningful. Since the binary blobs are encoded in a single line, they affect only one line of the diff output, but they are typically very long lines. You can use the Cell | All Output | Clear menu option to remove all output from a notebook prior to committing it to version control, if this is a concern.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Reading json files in IPython" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "The following code reads this file and prints the first five cells." ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "import nbformat\n", " \n", "nb = nbformat.read('01-IPythonHintsAndTips.ipynb', as_version=4) \n" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "[{'cell_type': 'markdown',\n", " 'metadata': {'run_control': {'frozen': False, 'read_only': False}},\n", " 'source': 'This notebook forms part of a series on [computational optical radiometry](https://github.com/NelisW/ComputationalRadiometry#computational-optical-radiometry-with-pyradi). The notebooks can be downloaded from [Github](https://github.com/NelisW/ComputationalRadiometry#computational-optical-radiometry-with-pyradi). These notebooks are constantly revised and updated, please revisit from time to time. \\n\\nThis notebook was written several Ipython/Jupyter generations ago, some information may be no longer applicable.\\n'},\n", " {'cell_type': 'markdown',\n", " 'metadata': {'run_control': {'frozen': False, 'read_only': False}},\n", " 'source': '# 1 Jupyter / IPython notebook hints and tips '},\n", " {'cell_type': 'markdown',\n", " 'metadata': {'run_control': {'frozen': False, 'read_only': False}},\n", " 'source': 'The date of this document and module versions used in this document are given at the end of the file. \\nFeedback is appreciated: neliswillers at gmail dot com. '},\n", " {'cell_type': 'markdown',\n", " 'metadata': {'run_control': {'frozen': False, 'read_only': False}},\n", " 'source': '# Jupyter and IPython'},\n", " {'cell_type': 'markdown',\n", " 'metadata': {'run_control': {'frozen': False, 'read_only': False}},\n", " 'source': 'From :\\n\\n\"IPython is a growing project, with increasingly language-agnostic components. IPython 3.x will be the last monolithic release of IPython, containing the notebook server, qtconsole, etc. The language-agnostic parts of the project: the notebook format, message protocol, qtconsole, notebook web application, etc. will move to new projects under the name [Jupyter](https://jupyter.org/). IPython itself will return to being focused on interactive Python, part of which will be providing a Python kernel for Jupyter. IPython 3.0 contains some indications of the project transition, including the logo in the notebook web UI being that of Jupyter.\"\\n\\nIn this document, all references to IPython refer to the IPython kernel, running on top of Jupyter.\\n\\nIPython versions 2.x use the nbformat 3 file format. \\nIPython versions 3.x use the nbformat 4 file format. \\nTo convert from nb4 to nb3 format (from with Jupyter IPython 3 installed) type: \\n\\n ipython nbconvert --to notebook --nbformat 3 mynotebook.ipynb\\n\\n\\n\\n \\n \\n'}]" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nb.cells[0:5]" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### Running notebook servers" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "This document describes how you can secure a notebook server and how to run it on a public interface: \n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "### Markdown formatting in dynamic output display\n", "\n", " \n", "\n", "For this to work, you first have to install the Python markdown package (assuming you have the pip python package installer): \n", "`pip install markdown`\n", "\n", "Use the following function to render a Python string in markdown syntax to display in IPython:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "import markdown\n", "class MD(str):\n", " def _repr_html_(self):\n", " return markdown.markdown(self)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "

Dynamic demonstration

\n", "

This is a mixture of markdown and html:
\n", "The square root of 2 used to be somewhere near 1.4142135623730951

" ], "text/plain": [ "'\\nDynamic demonstration\\n--------------\\nThis is a mixture of markdown **and** html:
\\nThe square root of 2 used to be somewhere near 1.4142135623730951'" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import math\n", "a = 2\n", "MD(\"\"\"\n", "Dynamic demonstration\n", "--------------\n", "This is a mixture of markdown **and** html:
\n", "The square root of {0} used to be somewhere near {1}\"\"\".format(a,math.sqrt(a)))" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "### HTML formatting in dynamic output display\n", "\n", "Use HTML to format the output of your code\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "

Length 0" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

Length 1" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

Length 2" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.display import display, HTML \n", "for x in range(3): \n", " display(HTML(\"

Length \" + str(x) + \"\")) " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "### Displaying tables in HTML\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "class ListTable(list):\n", " \"\"\" Overridden list class which takes a 2-dimensional list of \n", " the form [[1,2,3],[4,5,6]], and renders an HTML Table in \n", " IPython Notebook. \"\"\"\n", " \n", " def _repr_html_(self):\n", " html = [\"\"]\n", " for row in self:\n", " html.append(\"\")\n", " \n", " for col in row:\n", " html.append(\"\".format(col))\n", " \n", " html.append(\"\")\n", " html.append(\"
{0}
\")\n", " return ''.join(html)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "
xyx-y(x-y)**2
7.9614744347984016.8653436399047341.0961307948936671.201502719514222
5.2019775191400587.346595757886568-2.144618238746514.599387389964183
4.6968159452962783.425306695818211.27150924947806751.6167357715082786
6.28540487326775659.328224476424943-3.0428196031571869.258751137357656
1.3372422552629876.186116388698062-4.84887413343507523.51158036189575
7.0401667729726753.9849308854363053.05523588753637039.334466328490153
3.9415622990409631.47561501974043272.465947279300536.080895984289687
" ], "text/plain": [ "[['x', 'y', 'x-y', '(x-y)**2'],\n", " [7.961474434798401, 6.865343639904734, 1.096130794893667, 1.201502719514222],\n", " [5.201977519140058, 7.346595757886568, -2.14461823874651, 4.599387389964183],\n", " [4.696815945296278, 3.42530669581821, 1.2715092494780675, 1.6167357715082786],\n", " [6.2854048732677565,\n", " 9.328224476424943,\n", " -3.042819603157186,\n", " 9.258751137357656],\n", " [1.337242255262987, 6.186116388698062, -4.848874133435075, 23.51158036189575],\n", " [7.040166772972675, 3.984930885436305, 3.0552358875363703, 9.334466328490153],\n", " [3.941562299040963, 1.4756150197404327, 2.46594727930053, 6.080895984289687]]" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import random\n", "table = ListTable()\n", "table.append(['x', 'y', 'x-y', '(x-y)**2'])\n", "for i in range(7):\n", " x = random.uniform(0, 10)\n", " y = random.uniform(0, 10)\n", " table.append([x, y, x-y, (x-y)**2])\n", " \n", "table" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Fine-tuning IPython typographic output appearance\n", "\n", "Changing the fonts, colours and layout to suit your own style. \n", " \n", " " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Adding IPython display output to existing objects\n", "\n", "\n", "\n", "For example, define a function that pretty-prints a polynomial as a LaTeX string:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "def poly2latex(p):\n", " terms = ['%.2g' % p.coef[0]]\n", " if len(p) > 1:\n", " term = 'x'\n", " c = p.coef[1]\n", " if c!=1:\n", " term = ('%.2g ' % c) + term\n", " terms.append(term)\n", " if len(p) > 2:\n", " for i in range(2, len(p)):\n", " term = 'x^%d' % i\n", " c = p.coef[i]\n", " if c!=1:\n", " term = ('%.2g ' % c) + term\n", " terms.append(term)\n", " px = '$P(x)=%s$' % '+'.join(terms)\n", " dom = r', domain: $[%.2g,\\ %.2g]$' % tuple(p.domain)\n", " return px+dom\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/latex": [ "$P(x)=1+2 x+3 x^2$, domain: $[-10,\\ 10]$" ], "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "p = np.polynomial.Polynomial([1,2,3], [-10, 10])\n", "from IPython.display import Latex\n", "Latex(poly2latex(p))\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "But you can instruct IPython to use default display as follows:\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "ip = get_ipython()\n", "latex_formatter = ip.display_formatter.formatters['text/latex']\n", "latex_formatter.for_type_by_name('numpy.polynomial.polynomial',\n", " 'Polynomial', poly2latex)\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/latex": [ "$P(x)=-20+71 x+-15 x^2+x^3$, domain: $[-1,\\ 1]$" ], "text/plain": [ "Polynomial([-20., 71., -15., 1.], domain=[-1, 1], window=[-1, 1])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])\n", "p2\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Making slides from IPython notebooks\n", "\n", "IPython is the tool of choice for presentations at Python conferences today - you hardly see a slideshow that was not made with IPython. \n", " \n", " \n", " \n", " \n", "\n", "Now one of the coolest new features are the Reveal.js based slideshows. [Here](http://www.slideviper.oquanta.info/tutorial/slideshow_tutorial_slides.html?transition=none#/) is an example by the developer of the slideshow feature Damián Avila which shows how to turn any IPython Notebook into a slideshow and how to include math, images, videos, tables, etc. \n", "\n", " \n", " - hiding code in slide shows. \n", " - local copy of reveal.js \n", " - youtube video \n", "\n", "First (1) create the IPython notebook as a regular notebook, then (2) change each cell's metadata to set its slideshow status, then (3) save the notebook, (4) convert the notebook to the slideshow format, and (5) serve the slideshow html file on an http server. Some of these steps are described next.\n", "\n", "Step (2): Click on the the \"Cell Toolbar\" dropdown combobox: select the \"Slideshow\" option. On the top-right side of _each_ cell will appear a dropdown combobox where you can define the slideshow status of that specific cell. Select the appropriate type for each cell.\n", "\n", "Steps (4) and (5): The slide show runs in a reveal.js javascript environment, but requires that the file be served on an http server. In order to convert the notebook to slide show and serve in a browser, type the following command:
\n", "`ipython nbconvert --to slides --post serve filename`
\n", "where `filename` is the name of the ipython notebook you want to convert to a slide show.\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Blogging with IPython\n", "\n", "IPython is also used to created blogging pages: \n", " \n", " \n", " \n", " " ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Customising the IPython notebook\n", "\n", "The notebook is primarily rendered in HTML in the browser and when exported to HTML. As an HTML product it can be customised in terms of layout, font, colours and other elements of style. Likewise the exports to other formats, such as LaTeX, can also be similarly customised to a particular look and feel.\n", "\n", " \n", " \n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Publishing your notebooks\n", "\n", "If a notebook file (.ipynb) is available somewhere on the web, you can paste the URL into a text box on this website \n", "http://nbviewer.ipython.org/ and it will render the notebook for you, returning a URL to the HTML rendered file. This new URL can be embedded as a hyperlink in an HTML file - when the user clicks on the link, the browser will display the rendered notebook. This is how the notebooks referred to in the next section are rendered.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "### More HTML formatting\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "

This is an autogenerated header

This is some text in a box
" ], "text/plain": [ "" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "htmlContent = ''\n", "\n", "def header(text):\n", " raw_html = '

' + str(text) + '

'\n", " return raw_html\n", "\n", "def box(text):\n", " raw_html = '
'+str(text)+'
'\n", " return raw_html\n", "\n", "def addContent(raw_html):\n", " global htmlContent\n", " htmlContent += raw_html\n", "\n", "\n", "# Example\n", "addContent( header(\"This is an autogenerated header\") )\n", "addContent( box(\"This is some text in a box\") )\n", "\n", "from IPython.core.display import HTML\n", "HTML(htmlContent)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Class Descriptors\n", "\n", "https://twitter.com/jakevdp/status/1121873857973870592/photo/1 \n", "\n", "1. The instance method (aka plain function) remains unbound when retrieved from the class so `C.method.__get__` just returns itself. By contrast, the class method gets bound to the class in that case, so it returns a new bound method object. In the first case both calls point to the same thing. In the second case since it is a classmethod, every call call creates a new instance of the method. I think this kind of explains the whole idea behind classmethods.\n", "\n", "1. In the first cell, `C.method` evaluates to `C.__dict__[\"method\"]` ; in second cell it evaluates to `C.__dict__[\"method\"].__get__(C, None)` which turns new objects each time\n", "\n", "1. In the first case, `C.method` points to the `method()` function.\n", "In the second case, because the `method()` function is decorated with a `@classmethod` decorator, `C.method` returns an instance of bound method object. Every time you write `C.method` a new object is created.\n", "\n", "\n", "To add to your confusion, `id(Example.clsmethod) == id(Example.clsmethod)`, because method objects use a free list. After the first id() call, the object gets deallocated and the second call can reuse the same object.\n", "\n" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class C:\n", " def method(self):\n", " pass\n", " \n", "C.method is C.method" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "True\n", "False\n" ] } ], "source": [ "class C:\n", " @classmethod\n", " def method(cls):\n", " pass\n", " \n", "print(C.method is C.method)\n", "\n", "print(id(C.method)==id(C.method))\n", "\n", "a = C.method\n", "b = C.method\n", "print(id(a)==id(b))" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "mappingproxy({'__module__': '__main__',\n", " 'method': ,\n", " '__dict__': ,\n", " '__weakref__': ,\n", " '__doc__': None})" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "C.__dict__" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n" ] } ], "source": [ "print(type(C.method))\n", "print(type(C.__dict__['method']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Class and Instance Attributes\n", "\n", "https://twitter.com/jakevdp/status/1120898594519650304?s=09 \n", "\n", "Tricky Python bug I just hit due to an incorrect mental model of class \\& instance attributes\n", "Solution is to use `self.__class__._num_instances += 1`." ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "class Foo:\n", " _num_instances = 0\n", " def __init__(self): \n", " self._num_instances += 1 \n", "# self.__class__._num_instances += 1\n", " \n", "f1 = Foo() \n", "f2 = Foo() \n", "print(Foo._num_instances)\n" ] }, { "cell_type": "markdown", "metadata": { "run_control": { "frozen": false, "read_only": false } }, "source": [ "## Python and module versions, and dates" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Software versions\n", "Python: 3.9.18 64bit [MSC v.1929 64 bit (AMD64)]\n", "IPython: 8.18.1\n", "OS: Windows 10 10.0.22621 SP0\n", "matplotlib: 3.5.3\n", "numpy: 1.21.6\n", "pyradi: 1.1.4\n", "scipy: 1.10.1\n", "pandas: 1.5.3\n", "Mon Jan 08 14:39:30 2024 South Africa Standard Time\n" ] } ], "source": [ "try:\n", " import pyradi.ryutils as ryutils\n", " print(ryutils.VersionInformation('matplotlib,numpy,pyradi,scipy,pandas'))\n", "except:\n", " print(\"pyradi.ryutils not found\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "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.9.18" }, "latex_envs": { "LaTeX_envs_menu_present": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false } }, "nbformat": 4, "nbformat_minor": 4 }