{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Scientific modules and IPython" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nikolay Koldunov\n", "\n", "\n", "koldunovn@gmail.com" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is part of [**Python for Geosciences**](https://github.com/koldunovn/python_for_geosciences) notes." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pylab as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Core scientific packages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When people say that they do their scientific computations in Python it's only half true. Python is a construction set, similar to MITgcm or other models. Without packages it's only a core, that although very powerful, does not seems to be able to do much by itself.\n", "\n", "There is a set of packages, that almost every scientist would need:\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are going to talk about all exept Sympy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Installation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Installation instructions can be found in the README.md file of this repository. Better to use [rendered version from GitHub](https://github.com/koldunovn/python_for_geosciences/blob/master/README.md).\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## IPython" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to be productive you need comfortable environment, and this is what IPython provides. It was started as enhanced python interactive shell, but with time become architecture for interactive computing." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Jupyter notebook " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the 0.12 release, IPython provides a new rich text web interface - IPython notebook. Here you can combine:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Code execution" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "I love Python\n" ] } ], "source": [ "print('I love Python')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Text (Markdown)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "IPython [website](http://ipython.org/).\n", "\n", "List:\n", "\n", "* [Python on Codeacademy](http://www.codecademy.com/tracks/python)\n", "* [Google's Python Class](https://developers.google.com/edu/python/)\n", "\n", "Code:\n", "\n", " print('hello world')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### $\\LaTeX$ equations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\int_0^\\infty e^{-x^2} dx=\\frac{\\sqrt{\\pi}}{2}$$\n", "$$\n", "F(x,y)=0 ~~\\mbox{and}~~\n", "\\left| \\begin{array}{ccc}\n", " F''_{xx} & F''_{xy} & F'_x \\\\\n", " F''_{yx} & F''_{yy} & F'_y \\\\\n", " F'_x & F'_y & 0 \n", " \\end{array}\\right| = 0\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plots" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = [1,2,3,4,5]\n", "plt.plot(x);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Rich media" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('F4rFuIb1Ie4')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* [IPython website](http://ipython.org/)\n", "* [Notebook gallery](https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to start Jupyter notebook you have to type:\n", "\n", " jupyter notebook\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### You can download and run this lectures:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Web version can be accesed from the [github repository](https://github.com/koldunovn/python_for_geosciences)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Main IPython features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Getting help" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can use question mark in order to get help. To execute cell you have to press *Shift+Enter*" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Question mark after a function will open pager with documentation. Double question mark will show you source code of the function. " ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "plt.plot??" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Press SHIFT+TAB after opening bracket in order to get help for the function (list of arguments, doc string)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Accessing the underlying operating system" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can access system functions by typing exclamation mark." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/Users/koldunovn/COURSE/python_for_geosciences\r\n" ] } ], "source": [ "!pwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you already have some netCDF file in the directory and *ncdump* is installed, you can for example look at its header." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "netcdf test_netcdf {\r\n", "dimensions:\r\n", "\tTIME = 366 ;\r\n", "\tLATITUDE = 94 ;\r\n", "\tLONGITUDE = 192 ;\r\n", "variables:\r\n", "\tfloat TIME(TIME) ;\r\n", "\t\tTIME:units = \"hours since 1-1-1 00:00:0.0\" ;\r\n", "\tfloat LATITUDE(LATITUDE) ;\r\n", "\tfloat LONGITUDE(LONGITUDE) ;\r\n", "\tfloat New_air(TIME, LATITUDE, LONGITUDE) ;\r\n", "\t\tNew_air:missing_value = -9999.f ;\r\n", "}\r\n" ] } ], "source": [ "!ncdump -h test_netcdf.nc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Magic functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The magic function system provides a series of functions which allow you to\n", "control the behavior of IPython itself, plus a lot of system-type\n", "features." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create some set of numbers using [range](http://docs.python.org/2/library/functions.html#range) command:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(range(10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And find out how long does it take to run it with *%timeit* magic function:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "396 ns ± 13 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n" ] } ], "source": [ "%timeit list(range(10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Print all interactive variables (similar to Matlab function):" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variable Type Data/Info\n", "----------------------------------\n", "YouTubeVideo type \n", "plt module ges/matplotlib/pylab.py'>\n", "x list n=5\n" ] } ], "source": [ "%whos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cell-oriented magic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Receive as argument both the current line where they are declared and the whole body of the cell. " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "348 ns ± 5.51 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n" ] } ], "source": [ "%%timeit\n", "range(10)\n", "range(100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thre are several cell-oriented magic functions that allow you to run code in other languages:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "My shell is: /bin/bash\n" ] } ], "source": [ "%%bash\n", "\n", "echo \"My shell is:\" $SHELL" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The variable has the value of 1\n" ] } ], "source": [ "%%perl\n", "\n", "$variable = 1;\n", "print \"The variable has the value of $variable\\n\";" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can write content of the cell to a file with *%%writefile* (or *%%file* for ipython < 1.0):" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting hello.py\n" ] } ], "source": [ "%%writefile hello.py\n", "#if you use ipython < 1.0, use %%file comand\n", "#%%file \n", "a = 'hello world!'\n", "print(a)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And then run it:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello world!\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%run hello.py" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The *%run* magic will run your python script and load all variables into your interactive namespace for further use." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variable Type Data/Info\n", "----------------------------------\n", "YouTubeVideo type \n", "a str hello world!\n", "plt module ges/matplotlib/pylab.py'>\n", "x list n=5\n" ] } ], "source": [ "%whos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to get information about all magic functions type:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "%magic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Links:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[The cell magics in IPython](http://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Cell%20Magics.ipynb)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 1 }