{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This is part of [**Python for Geosciences**](https://github.com/koldunovn/python_for_geosciences) notes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "================" ] }, { "cell_type": "heading", "level": 2, "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": "heading", "level": 2, "metadata": {}, "source": [ "IPython and pylab" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to be productive you need comfortable environment, and this is what IPython provide. It was started as enhanced python interactive shell, but with time become architecture for interactive computing.\n", "\n", "Starting IPython with *--pylab* option loads some necessary modules (NumPy for data array support and Matplotlib for plotting support), that make it similar to Matlab console.\n", "\n", "In order to use latest version of IPython on zmaw computers one has to load appropriate module:\n", "\n", " module load python/2.7-ve2\n", " \n", "and then\n", "\n", " ipython --pylab\n", " \n", "On Ubuntu or other Debian-based distributions something like this will set you up for the rest of the course:\n", "\n", " sudo apt-get install ipython-notebook python-matplotlib python-scipy python-pandas python-sympy python-mpltoolkits.basemap netcdf-bin cdo\n" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "IPython 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": "heading", "level": 4, "metadata": {}, "source": [ "Code execution" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print('I love Python')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "I love Python\n" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 4, "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": "heading", "level": 4, "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": "heading", "level": 4, "metadata": {}, "source": [ "Plots" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = [1,2,3,4,5]\n", "plot(x)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEACAYAAABI5zaHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGOBJREFUeJzt3X9MVff9x/HXMZi0FwyWZGAjJDXCJvgDLmt2/6DWS13X\nyCqxqWl0mzKryZVmGk36j/tntBqTfhlpNC4GF2PCmowl/jPmrlaXeemUMNYOu2WQCI3Ee9GRGUOr\nnUZ+nO8fTsqVC/dwOffec+59PhIS4J7e++6n9uPTD/d6DdM0TQEAMsqidA8AALAfmzsAZCA2dwDI\nQGzuAJCB2NwBIAOxuQNABrK0ub/wwgtat26dvF6vvve978W8Zv/+/SorK1NlZaV6e3ttHRIAMD85\nVi4yDEOhUEgFBQUxbw8GgxocHNTAwID++te/qrGxUd3d3bYOCgCwzvKxzFyvdero6FBDQ4Mkyefz\naXR0VCMjIwufDgCQEEubu2EY+v73v68XX3xRv/71r2fcPjw8rJKSkqmvi4uLFYlE7JsSADAvlo5l\nrl69queff17/+c9/9Oqrr2rVqlVav3591DVPl71hGPZNCQCYF0ub+/PPPy9J+ta3vqU33nhDPT09\nUZv78uXLFQ6Hp76ORCJavnx51H2Ulpbqiy++sGNmAMgaK1eu1ODg4Lz/ubjHMv/973917949SdLX\nX3+tixcvau3atVHX1NfXq62tTZLU3d2tpUuXqqioKOqaL774QqZpOv7jF7/4RdpnYE5mZM7snLOv\nz5TPZ+qVV0zduPH4e4lGcdxyHxkZ0RtvvCFJGh8f149//GP94Ac/UGtrqyQpEAiorq5OwWBQpaWl\nys3N1ZkzZxIaBgCy0cSE1NIiNTdLhw9LgYC00JPtuJv7ihUrdO3atRnfDwQCUV+fOHFiYZMAQBbq\n75d27ZJyc6W//U164QV77pdXqD7F7/enewRLmNM+bphRYk67pXvOiQnp//5Pevll6ac/lf70J/s2\ndkkyTNNMyZt1GIahFD0UADja9Fo/fXruTT3RvZNyB4AUSXatT2fpqZAAgIVJ1tn6bCh3AEiiVNb6\ndJQ7ACRJqmt9OsodAGyWrlqfjnIHABuls9ano9wBwAZOqPXpKHcAWCCn1Pp0lDsAJMhptT4d5Q4A\nCXBirU9HuQPAPDi51qej3AHAIqfX+nSUOwDE4ZZan45yB4A5uKnWp6PcASAGN9b6dJQ7ADzFrbU+\nHeUOAP/j9lqfztLmPjExIa/Xq82bN8+4LRQKKT8/X16vV16vV0eOHLF9SABItv5+qaZG+vjjx7W+\nd+/C36Q6nSwdyxw7dkwVFRW6d+9ezNs3bNigjo4OWwcDgFSYmJBaWqTmZunwYSkQcPem/kTcco9E\nIgoGg9qzZ8+s7+PHe6MCcKNMq/Xp4m7uBw8eVHNzsxYtin2pYRjq6upSZWWl6urq1NfXZ/uQAGCn\nTDpbn82cxzLnzp1TYWGhvF6vQqFQzGuqq6sVDofl8Xh0/vx5bdmyRdevX0/GrACwYJnwTBgr5tzc\nu7q61NHRoWAwqIcPH+qrr77Szp071dbWNnXNkiVLpj7ftGmT3nnnHd29e1cFBQUz7q+pqWnqc7/f\nL7/fv/B/AwCwYPrZ+vvvPz5bn+VAIq1CodCsMT0fhmnxwLyzs1O//OUv9Yc//CHq+yMjIyosLJRh\nGOrp6dFbb72loaGhmQ9kGJzNA0iL6bV++rS7aj3RvXNeL2Iy/veThtbWVklSIBDQ2bNndfLkSeXk\n5Mjj8ai9vX3eQwBAMril1pPBcrkv+IEodwAp5OZany7RvTNLfg8DkC2mPxOmoUG6dMm9G/tC8HfL\nAMgY2fJMGCsodwCuR63PRLkDcDVqPTbKHYArUetzo9wBuA61Hh/lDsA1qHXrKHcArkCtzw/lDsDR\nqPXEUO4AHItaTxzlDsBxqPWFo9wBOAq1bg/KHYAjUOv2otwBpB21bj/KHUDaUOvJQ7kDSAtqPbko\ndwApRa2nBuUOIGWo9dSh3AEkHbWeepY294mJCXm9Xm3evDnm7fv371dZWZkqKyvV29tr64AA3K2/\nX6qpkT7++HGtNzZmz5tUp5OlJT527JgqKipkGMaM24LBoAYHBzUwMKBTp06psbHR9iEBuA+1nl5x\nN/dIJKJgMKg9e/bEfAfujo4ONTQ0SJJ8Pp9GR0c1MjJi/6QAXINaT7+4y33w4EE1Nzdr0Sz/ZYaH\nh1VSUjL1dXFxsSKRiH0TAnANat055ny2zLlz51RYWCiv16tQKDTrdU8XfazjG0lqamqa+tzv98vv\n91seFICz8UwYe4RCoTn3W6sMM9ZZy//8/Oc/129+8xvl5OTo4cOH+uqrr/Tmm2+qra1t6pq9e/fK\n7/dr27ZtkqRVq1aps7NTRUVF0Q9kGDGPdQC428SE1NIiNTdL778vBQIcwdgp0b1zzv8ER48eVTgc\n1o0bN9Te3q5XXnklamOXpPr6+qnvdXd3a+nSpTM2dgCZibN155rXi5ieHLe0trZKkgKBgOrq6hQM\nBlVaWqrc3FydOXPG/ikBOAq17nxzHsvY+kAcywAZYfrZ+unTnK0nW1KOZQDgCZ4J4y783TIA4uKZ\nMO5DuQOYFbXuXpQ7gJiodXej3AFEodYzA+UOYAq1njkodwDUegai3IEsR61nJsodyFLUemaj3IEs\nRK1nPsodyCLUevag3IEsQa1nF8odyHDUenai3IEMRq1nL8odyEDUOih3IMNQ65AodyBjUOuYjnIH\nMgC1jqdR7oCLUeuYTdzN/eHDh/L5fKqqqlJFRYUOHTo045pQKKT8/Hx5vV55vV4dOXIkKcMC+EZ/\nv1RTI3388eNab2zkTarxjbjHMs8884wuX74sj8ej8fFxvfTSS7py5YpeeumlqOs2bNigjo6OpA0K\n4LGJCamlRWpult5/XwoE2NQxk6Uzd4/HI0l69OiRJiYmVFBQMOOaRN6dG8D8cLYOqyz9fj85Oamq\nqioVFRWptrZWFRUVUbcbhqGuri5VVlaqrq5OfX19SRkWyFacrWO+LJX7okWLdO3aNX355Zd67bXX\nFAqF5Pf7p26vrq5WOByWx+PR+fPntWXLFl2/fn3G/TQ1NU197vf7o+4DQGzUenYJhUIKhUILvh/D\nnOd5yuHDh/Xss8/q3XffnfWaFStW6LPPPos6vjEMg6MbYB44W4eU+N4Z95fKnTt3NDo6Kkl68OCB\nLl26JK/XG3XNyMjI1IP39PTINM2Y5/IArOGZMFiouMcyt2/fVkNDgyYnJzU5OakdO3Zo48aNam1t\nlSQFAgGdPXtWJ0+eVE5Ojjwej9rb25M+OJCJqHXYZd7HMgk/EMcywJymn62fPs3ZOh5L2rEMgOTi\nmTBIBv5uGSCNeCYMkoVyB9KAWkeyUe5AilHrSAXKHUgRah2pRLkDKUCtI9UodyCJqHWkC+UOJAm1\njnSi3AGbUetwAsodsBG1Dqeg3AEbUOtwGsodWCBqHU5EuQMJotbhZJQ7kABqHU5HuQPzQK3DLSh3\nwCJqHW5CuQNxUOtwI8odmAO1Drei3IEYqHW43Zyb+8OHD+Xz+VRVVaWKigodOnQo5nX79+9XWVmZ\nKisr1dvbm5RBgVTp75dqaqSPP35c642NvEk13GfOX7LPPPOMLl++rGvXrukf//iHLl++rCtXrkRd\nEwwGNTg4qIGBAZ06dUqNjY1JHRhIFmodmSTumbvH45EkPXr0SBMTEyooKIi6vaOjQw0NDZIkn8+n\n0dFRjYyMqKioKAnjAsnB2ToyTdw/bE5OTqqqqkpFRUWqra1VRUVF1O3Dw8MqKSmZ+rq4uFiRSMT+\nSYEkoNaRqeKW+6JFi3Tt2jV9+eWXeu211xQKheT3+6OuMU0z6mvDMGLeV1NT09Tnfr9/xv0AqfSk\n1j0eqadHWrEi3RMBUigUUigUWvD9GObTO/McDh8+rGeffVbvvvvu1Pf27t0rv9+vbdu2SZJWrVql\nzs7OGccyhmHM+E0ASIeJCamlRWpult5/XwoE+IEpnCvRvXPOX9J37tzR6OioJOnBgwe6dOmSvF5v\n1DX19fVqa2uTJHV3d2vp0qWct8OxeCYMssWcxzK3b99WQ0ODJicnNTk5qR07dmjjxo1qbW2VJAUC\nAdXV1SkYDKq0tFS5ubk6c+ZMSgYH5oNaR7aZ17HMgh6IYxmkyfRnwpw+zQ9M4S5JOZYB3IxnwiCb\n8XfLICPxvHVkO8odGYVaBx6j3JExqHXgG5Q7XI9aB2ai3OFq1DoQG+UOV6LWgblR7nAdah2Ij3KH\na4yPU+uAVZQ7XKG/X/rpT6W8PGodsIJyh6ONj0sffCCtX/94c6fWAWsodzjW9Fr/9FM2dWA+KHc4\nDrUOLBzlDkeh1gF7UO5wBGodsBfljrSj1gH7Ue5IG2odSB7KHWlBrQPJRbkjpah1IDXibu7hcFi1\ntbVavXq11qxZo+PHj8+4JhQKKT8/X16vV16vV0eOHEnKsHC3/n6ppka6ePFxrTc28ibVQLLEPZZZ\nvHixPvzwQ1VVVen+/fv67ne/q1dffVXl5eVR123YsEEdHR1JGxTuNT4utbRIzc3S4cNSIMCmDiRb\n3M192bJlWrZsmSQpLy9P5eXlunXr1ozNPZF350bm42wdSI959dPQ0JB6e3vl8/mivm8Yhrq6ulRZ\nWam6ujr19fXZOiTch7N1IL0sP1vm/v372rp1q44dO6a8vLyo26qrqxUOh+XxeHT+/Hlt2bJF169f\nn3EfTU1NU5/7/X75/f6EB4dzUetA4kKhkEKh0ILvxzAtnKeMjY3p9ddf16ZNm3TgwIG4d7pixQp9\n9tlnKigo+OaBDIOjmwzH2Tpgv0T3zrjlbpqmdu/erYqKilk39pGRERUWFsowDPX09Mg0zaiNHZmP\nWgecJe7mfvXqVX300Udat26dvF6vJOno0aO6efOmJCkQCOjs2bM6efKkcnJy5PF41N7entyp4RjU\nOuBMlo5lbHkgjmUyzvRaP32aWgeSIdG9k8bCvPFMGMD5+LtlMC+crQPuQLnDEmodcBfKHXFR64D7\nUO6YFbUOuBfljpiodcDdKHdEodaBzEC5Ywq1DmQOyh3UOpCBKPcs19cn7dpFrQOZhnLPUk9q/eWX\nqXUgE1HuWYhaBzIf5Z5FqHUge1DuWYJaB7IL5Z7hqHUgO1HuGYxaB7IX5Z6BqHUAlHuGodYBSJR7\nxqDWAUwXd3MPh8Oqra3V6tWrtWbNGh0/fjzmdfv371dZWZkqKyvV29tr+6CYXV+fVFMjXbz4uNYb\nG3mTaiDbxd0CFi9erA8//FD/+te/1N3drV/96lfq7++PuiYYDGpwcFADAwM6deqUGhsbkzYwvkGt\nA5hN3DP3ZcuWadmyZZKkvLw8lZeX69atWyovL5+6pqOjQw0NDZIkn8+n0dFRjYyMqKioKEljg7N1\nAHOZ1x/eh4aG1NvbK5/PF/X94eFhlZSUTH1dXFysSCRiz4SIQq0DsMLys2Xu37+vrVu36tixY8rL\ny5txu2maUV8bhjHjmqampqnP/X6//H6/9UkxVeu5udQ6kKlCoZBCodCC78cwn96VYxgbG9Prr7+u\nTZs26cCBAzNu37t3r/x+v7Zt2yZJWrVqlTo7O6OOZQzDmPEbAKwZH5daWqTmZunwYSkQ4AemQLZI\ndO+Mu0WYpqndu3eroqIi5sYuSfX19Wpra5MkdXd3a+nSpZy324RnwgBIRNxyv3Llil5++WWtW7du\n6qjl6NGjunnzpiQpEAhIkn72s5/pwoULys3N1ZkzZ1RdXR39QJT7vFDrAKTE905LxzJ2YHO3bvoz\nYU6f5mwdyGZJO5ZB6vBMGAB24e+WcQietw7ATpR7mlHrAJKBck8jah1AslDuaUCtA0g2yj3FqHUA\nqUC5pwi1DiCVKPcUoNYBpBrlnkTUOoB0odyThFoHkE6Uu82odQBOQLnbiFoH4BSUuw2odQBOQ7kv\nELUOwIko9wRR6wCcjHJPALUOwOko93mg1gG4BeVuEbUOwE3ilvvbb7+toqIirV27NubtoVBI+fn5\n8nq98nq9OnLkiO1DphO1DsCN4pb7rl27tG/fPu3cuXPWazZs2KCOjg5bB3MCah2AW8Ut9/Xr1+u5\n556b85pMe+Nrah2A2y34B6qGYairq0uVlZWqq6tTX1+fHXOlTV+fVFMjXbz4uNYbG6VF/NgZgMss\neNuqrq5WOBzW559/rn379mnLli12zJVy1DqATLLgZ8ssWbJk6vNNmzbpnXfe0d27d1VQUDDj2qam\npqnP/X6//H7/Qh/eFv39jzd0ztYBpFsoFFIoFFrw/RimhQPzoaEhbd68Wf/85z9n3DYyMqLCwkIZ\nhqGenh699dZbGhoamvlAhuG4s/nxcamlRWpulg4flgIBjmAAOEuie2fcct++fbs6Ozt1584dlZSU\n6L333tPY2JgkKRAI6OzZszp58qRycnLk8XjU3t4+/+nTgFoHkMkslbstD+SQcqfWAbhJ0so9k1Dr\nALJFVjTrk2fCrF/PM2EAZIeML3dqHUA2ythyp9YBZLOMLHdqHUC2y6hyp9YB4LGMKXdqHQC+4fpy\np9YBYCZXlzu1DgCxubLcqXUAmJvryp1aB4D4XFPu1DoAWOeKcqfWAWB+HF3u1DoAJMax5U6tA0Di\nHFfu1DoALJyjyp1aBwB7OKLcqXUAsFfay51aBwD7xS33t99+W0VFRVq7du2s1+zfv19lZWWqrKxU\nb2+vpQem1gEgeeJu7rt27dKFCxdmvT0YDGpwcFADAwM6deqUGhsb4z5of79UUyNdvPi41hsbnfMm\n1aFQKN0jWMKc9nHDjBJz2s0tcyYq7pa6fv16Pffcc7Pe3tHRoYaGBkmSz+fT6OioRkZGYl7rhlp3\ny39w5rSPG2aUmNNubpkzUQs+cx8eHlZJScnU18XFxYpEIioqKppxbU0NZ+sAkAq2HIaYphn1tWEY\nMa9zaq0DQMYxLbhx44a5Zs2amLcFAgHzt7/97dTX3/nOd8x///vfM65buXKlKYkPPvjgg495fKxc\nudLKNj3Dgo9l6uvrdeLECW3btk3d3d1aunRpzCOZwcHBhT4UAMCiuJv79u3b1dnZqTt37qikpETv\nvfeexsbGJEmBQEB1dXUKBoMqLS1Vbm6uzpw5k/ShAQBzM8ynD8wBAK5n+7PLL1y4oFWrVqmsrEwf\nfPBBzGsSedGT3eLNGQqFlJ+fL6/XK6/XqyNHjqR8xmS9gMxu8eZ0wlqGw2HV1tZq9erVWrNmjY4f\nPx7zunSvp5U5nbCeDx8+lM/nU1VVlSoqKnTo0KGY16V7Pa3M6YT1lKSJiQl5vV5t3rw55u3zXsuE\nTupnMT4+bq5cudK8ceOG+ejRI7OystLs6+uLuuaPf/yjuWnTJtM0TbO7u9v0+Xx2jmDbnJcvXzY3\nb96c8tmm++STT8y///3vs/4w2wlraZrx53TCWt6+fdvs7e01TdM07927Z37729925K9NK3M6YT1N\n0zS//vpr0zRNc2xszPT5fOZf/vKXqNudsJ6mGX9Op6xnS0uL+aMf/SjmLImspa3l3tPTo9LSUr3w\nwgtavHixtm3bpt///vdR18znRU/JYmVOSTOe4plqdr6ALJnizSmlfy2XLVumqqoqSVJeXp7Ky8t1\n69atqGucsJ5W5pTSv56S5PF4JEmPHj3SxMSECgoKom53wnpamVNK/3pGIhEFg0Ht2bMn5iyJrKWt\nm3usFzQNDw/HvSYSidg5RlxW5jQMQ11dXaqsrFRdXZ36+vpSOqMVTlhLK5y2lkNDQ+rt7ZXP54v6\nvtPWc7Y5nbKek5OTqqqqUlFRkWpra1VRURF1u1PWM96cTljPgwcPqrm5WYtm+XtYEllLWzf32V68\n9LSnf2ey+s/ZxcrjVVdXKxwO6/PPP9e+ffu0ZcuWFEw2f+leSyuctJb379/X1q1bdezYMeXl5c24\n3SnrOdecTlnPRYsW6dq1a4pEIvrkk09ivpzfCesZb850r+e5c+dUWFgor9c7558g5ruWtm7uy5cv\nVzgcnvo6HA6ruLh4zmsikYiWL19u5xhxWZlzyZIlU3+c27Rpk8bGxnT37t2UzhmPE9bSCqes5djY\nmN5880395Cc/ifk/sFPWM96cTlnPJ/Lz8/XDH/5Qn376adT3nbKeT8w2Z7rXs6urSx0dHVqxYoW2\nb9+uP//5z9q5c2fUNYmspa2b+4svvqiBgQENDQ3p0aNH+t3vfqf6+vqoa+rr69XW1iZJc77oKZms\nzDkyMjL1O2VPT49M04x5VpdOTlhLK5ywlqZpavfu3aqoqNCBAwdiXuOE9bQypxPW886dOxodHZUk\nPXjwQJcuXZLX6426xgnraWXOdK/n0aNHFQ6HdePGDbW3t+uVV16ZWrcnEllLW9+sIycnRydOnNBr\nr72miYkJ7d69W+Xl5WptbZXknBc9WZnz7NmzOnnypHJycuTxeNTe3p7yOd3yArJ4czphLa9evaqP\nPvpI69atm/qf++jRo7p58+bUnE5YTytzOmE9b9++rYaGBk1OTmpyclI7duzQxo0bHff/upU5nbCe\n0z05blnoWvIiJgDIQA55iwwAgJ3Y3AEgA7G5A0AGYnMHgAzE5g4AGYjNHQAyEJs7AGQgNncAyED/\nD9fAMA4apl2cAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Rich media" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('F4rFuIb1Ie4')" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 36, "text": [ "" ] } ], "prompt_number": 36 }, { "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": "heading", "level": 2, "metadata": {}, "source": [ "Run notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to start IPython notebook you have to type:\n", "\n", " ipython notebook\n", "\n", "but in order to work in the notebook efficiently one has to start it with *pylab* and *inline* mode, that allow inline graphics\n", "\n", " ipython notebook --pylab inline\n", "\n", "\n", "on ZMAW computers, where default browser is Konqueror, you might need to use:\n", "\n", " ipython notebook --pylab inline --browser=\"firefox\"" ] }, { "cell_type": "heading", "level": 3, "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": [ "You can download them as .zip file:\n", "\n", " wget https://github.com/koldunovn/python_for_geosciences/archive/master.zip\n", "\n", "Unzip:\n", " \n", " unzip master.zip\n", "\n", "And run:\n", "\n", " cd python_for_geosciences-master/\n", " ipython notebook --pylab inline" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Main IPyhton features" ] }, { "cell_type": "heading", "level": 3, "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", "collapsed": false, "input": [ "?" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "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", "collapsed": false, "input": [ "plot??" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Press TAB after opening bracket in order to get help for the function (list of arguments, doc string)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "sum(" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Accessing the underlying operating system" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can access system functions by typing exclamation mark." ] }, { "cell_type": "code", "collapsed": false, "input": [ "!pwd" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/home/magik/NOTEBOOKS/PYTHON\r\n" ] } ], "prompt_number": 7 }, { "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", "collapsed": false, "input": [ "!ncdump -h test_netcdf.nc" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "netcdf test_netcdf {\r\n", "dimensions:\r\n", "\tTIME = 1464 ;\r\n", "\tLATITUDE = 73 ;\r\n", "\tLONGITUDE = 144 ;\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 New_air(TIME, LATITUDE, LONGITUDE) ;\r\n", "\t\tNew_air:missing_value = -9999.f ;\r\n", "\tfloat LONGITUDE(LONGITUDE) ;\r\n", "\tfloat LATITUDE(LATITUDE) ;\r\n", "}\r\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example of [cdo](https://code.zmaw.de/projects/cdo) use:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!cdo nyear test_netcdf.nc" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1\r\n", "cdo nyear: Processed 1 variable over 1464 timesteps. ( 0.01s )\r\n" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get information from OS output to the python variable" ] }, { "cell_type": "code", "collapsed": false, "input": [ "nmon = !cdo nmon test_netcdf.nc\n", "nmon" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "['cdo nmon: Processed 1 variable over 1464 timesteps. ( 0.01s )', '12']" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Return information from Pyhton variable to the SHELL" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!echo {nmon[1]}" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "12\r\n" ] } ], "prompt_number": 11 }, { "cell_type": "heading", "level": 2, "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", "collapsed": false, "input": [ "range(10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And find out how long does it take to run it with *%timeit* magic function:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit range(10)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000000 loops, best of 3: 679 ns per loop\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Print all interactive variables (similar to Matlab function):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%whos" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Interactive namespace is empty.\n" ] } ], "prompt_number": 7 }, { "cell_type": "heading", "level": 3, "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", "collapsed": false, "input": [ "%%timeit\n", "range(10)\n", "range(100)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "100000 loops, best of 3: 3.34 \u00b5s per loop\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thre are several cell-oriented magic functions that allow you to run code in other languages:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%bash\n", "\n", "echo \"My shell is:\" $SHELL\n", "echo \"My memory status is:\"\n", "free" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "My shell is: /bin/bash\n", "My memory status is:\n", " total used free shared buffers cached\n", "Mem: 3925620 1857860 2067760 0 82812 757212\n", "-/+ buffers/cache: 1017836 2907784\n", "Swap: 3906556 0 3906556\n" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "%%perl\n", "\n", "$variable = 1;\n", "print \"The variable has the value of $variable\\n\";" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The variable has the value of 1\n" ] } ], "prompt_number": 14 }, { "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", "collapsed": false, "input": [ "%%writefile hello.py\n", "#if you use ipython < 1.0, use %%file comand\n", "#%%file \n", "a = 'hello world!'\n", "print(a)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Writing hello.py\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And then run it:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%run hello.py" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "hello world!\n" ] } ], "prompt_number": 17 }, { "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", "collapsed": false, "input": [ "%whos" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Variable Type Data/Info\n", "----------------------------\n", "a str hello world!\n" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to get information about all magic functions type:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%magic" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "heading", "level": 3, "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": {} } ] }