{ "cells": [ { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import os\n", "from IPython.display import Video # new module" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lecture 8:\n", "\n", "- more about **matplotlib**: adding notes and saving images\n", "\n", "- about DataFrames and Series, two new _data structures_, that are part of the **Pandas** package \n", "\n", "- some basic filtering tricks with **Pandas**\n", "\n", "- how to read in and save data files with **Pandas**\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### More tricks in matplotlib. \n", "\n", "A few lectures ago we read in the record of an earthquake and plotted it: " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "EQ=np.loadtxt('Datasets/seismicRecord/earthquake.txt') # read in data\n", "plt.plot(EQ,'r-') # plots as a red line\n", "plt.xlabel('Arbitrary Time') # puts a label on the X axis\n", "plt.ylabel('Velocity'); # puts a label on the Y axis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are a few things that can be improved about this plot:\n", "\n", "1) What are the time units? \n", "\n", "2) Seismologists can recognize the arrival of different phases, including the \"P\" wave (for primary) and the \"S\" wave (for secondary or also shear). It would be nice to label the P and S wave arrivals. \n", "\n", "So let's start with point one, converting the arbitrary time units to minutes. \n", "\n", "The measurement rate of this seismometer was 20 measurements per second. Let's convert this to minutes. First we'll need to create a data structure (say, an array) of the original \"arbitrary time\" and then convert \"arbitrary time\" to minutes by dividing by 1200 (the number of seconds in 20 minutes):\n", "\n", "$20{\\hbox{measurements}\\over {\\hbox{seconds}}} \\times 60 {\\hbox{seconds}\\over {\\hbox{minute}}} =1200 {\\hbox{measurements}\\over {\\hbox{minute}}}$.\n", "\n", "To create a data structure of 'arbitrary time' with the same length as the original array, we can use the _built-in_ **len( )** function which gives us the length of a list or a 1D array, then use **np.arange( )** to give us an array from 0 to the length of the array. Because it is an array (and not a list), we can divide the whole array by 1200 to create a new array that is in minutes. \n", "We can then plot the minutes on the $x$-axis and the velocities on the $y$-axis:\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "velocity=np.loadtxt('Datasets/seismicRecord/earthquake.txt') # read in data\n", "# remember np.arange? it makes an array that is N long.\n", "# here, we want N to be the length of the velocity array, so len(velocity)\n", "time_units=np.arange(len(velocity)) # makes an array of arbitrary time units\n", "# now I want an array that is normalized to minutes: \n", "minutes=time_units/1200. # sampling rate=20/sec = 1/1200 minutes\n", "# the plt.plot method can plot X, versus Y with plt.plot(X,Y), so:\n", "plt.plot(minutes,velocity,'r-') # plots X=Minutes, Y= velocity as a red line\n", "# we can change the labels to reflect the new reality:\n", "plt.xlabel('Minutes') # puts a label on the X axis\n", "plt.ylabel('Velocity'); # puts a label on the Y axis\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is something you should notice in the above script. \n", "\n", "Did you see you we just took the **time_units** array and divided it by 1200? 1200 is a scalar, so each element is divided by 1200. Try that with a list! As we did a few lectures ago, we can make a list with **range( )** that is very similar to time_units but a list, not an **NumPy** array. But if we try to divide it by scalar, we get an error! " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unsupported operand type(s) for /: 'range' and 'float'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mlist_of_units\u001b[0m\u001b[0;34m=\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m360\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mlist_of_units\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m1200.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for /: 'range' and 'float'" ] } ], "source": [ "list_of_units= range(360)\n", "list_of_units/1200." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As mentioned before, this is one big advantage of arrays over lists. \n", "\n", "### Saving plots and putting in notes \n", "\n", "Saving turns out to be easy with the **plt.savefig( )** method. The argument is the desired filename (including any PATH if desired). \n", "\n", "I mentioned earlier that it would be nice to label the 'P' and 'S' wave arrivals. You may remember that the first wave that hits a station is the 'P' wave (for primary). The second wave is the 'S' wave (for secondary). P waves are 'compressional' waves, while the S waves are 'shear' waves. They are a bit slower, which is why they arrive second. So, let's label the arrivals in our plot.\n", "\n", "To put notes on a figure, we use **plt.text( )** which has many options. Check out this web site for hints on making beautiful notes: \n", "\n", "http://matplotlib.org/users/text_props.html\n", "\n", "So the keyword arguments we want are _rotation_ which allows us to rotate the note by some angle (say, 90), and the vertical (**verticalalignment**or **va**)\tand horizontal (**horizontalalignment** or **ha**) alignments with respect to the x and y values given. " ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaMAAAEKCAYAAAC/hjrSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnXmYFNW5/z+vMwwzoGyKiiCKCO4BdSQE3OKCkJjgfuHmF0gkwUSNiZrFJCpeNblK3KISjQneYFxwu0bixlVDgrui4gJqnIDREUTZ94GB8/vj1LFOV1f1Mlt1M+/nefrp7lPb6eqq8633Pe95jxhjUBRFUZQ02S7tCiiKoiiKipGiKIqSOipGiqIoSuqoGCmKoiipo2KkKIqipI6KkaIoipI6qYmRiOwuIrNE5B0RmSciPwzKLxORj0VkbvD6irfNz0WkTkTeE5ETvPKRQVmdiFzklfcTkZdE5H0RuVdEqoLyjsH3umD5nm33yxVFUZQoaVpGjcCFxpj9gKHAOSKyf7DsemPM4OD1GECwbAxwADAS+J2IVIhIBTAFGAXsD4z19nN1sK8BwApgQlA+AVhhjNkbuD5YT1EURUmJ1MTIGLPYGPNa8HkN8A7QO8cmo4HpxpgGY8xCoA4YErzqjDELjDGbgOnAaBER4BjggWD7acBJ3r6mBZ8fAI4N1lcURVFSoDLtCgAEbrKDgZeA4cC5IjIOmIO1nlZghepFb7N6QvH6KFL+RWBHYKUxpjFm/d5uG2NMo4isCtZfGqnXRGAiQOfOnQ/dd999m/tTFUVR2hWvvvrqUmNMz3zrpS5GIrI98CDwI2PMahG5BbgCMMH7tcCZQJzlYoi37kyO9cmzLCww5jbgNoDa2lozZ86c3D9GURRFyUBE/l3IeqlG04lIB6wQ3WWM+V8AY8wSY8wWY8xW4A9YNxxYy2Z3b/M+wKIc5UuBbiJSGSnP2FewvCuwvGV/naIoilIoaUbTCTAVeMcYc51X3stb7WTg7eDzDGBMEAnXDxgAvAy8AgwIIueqsEEOM4zNADsLOC3YfjzwsLev8cHn04C/Gc0YqyiKkhppuumGA98E3hKRuUHZL7DRcIOxbrMPgLMAjDHzROQ+YD42Eu8cY8wWABE5F5gJVAC3G2PmBfv7GTBdRK4EXseKH8H7n0WkDmsRjWnNH6ooiqLkRtQgKAztM1IURSkeEXnVGFObbz3NwKAoiqKkjoqRoiiKkjoqRoqiKErqqBgpiqIoqaNipCiKoqSOipGiKIqSOipGiqIoSuqoGCmKoiipo2KkKIqipI6KkaIoipI6KkaKoihK6qgYKYqiKKmjYqQoiqKkjoqRoiiKkjoqRoqiKErqqBgpiqIoqaNipCiKoqSOipGiKIqSOqmJkYjsLiKzROQdEZknIj8MynuIyJMi8n7w3j0oFxG5UUTqRORNETnE29f4YP33RWS8V36oiLwVbHOjiEiuYyiKoijpkKZl1AhcaIzZDxgKnCMi+wMXAU8bYwYATwffAUYBA4LXROAWsMICTAK+CAwBJnnickuwrttuZFCedAxFURQlBVITI2PMYmPMa8HnNcA7QG9gNDAtWG0acFLweTRwh7G8CHQTkV7ACcCTxpjlxpgVwJPAyGBZF2PMC8YYA9wR2VfcMRRFUZQUKIk+IxHZEzgYeAnYxRizGKxgATsHq/UGPvI2qw/KcpXXx5ST4xiKoihKCqQuRiKyPfAg8CNjzOpcq8aUmSaUF1O3iSIyR0TmfPbZZ8VsqiiKohRBqmIkIh2wQnSXMeZ/g+IlgYuN4P3ToLwe2N3bvA+wKE95n5jyXMfIwBhzmzGm1hhT27Nnz6b9SEVRFCUvaUbTCTAVeMcYc523aAbgIuLGAw975eOCqLqhwKrAxTYTGCEi3YPAhRHAzGDZGhEZGhxrXGRfccdQFEVRUqAyxWMPB74JvCUic4OyXwBXAfeJyATgQ+D0YNljwFeAOmA98G0AY8xyEbkCeCVY73JjzPLg8/eBPwE1wOPBixzHUBRFUVJAbKCZko/a2lozZ86ctKuhKIpSVojIq8aY2nzrpR7AoCiKoigqRoqiKErqqBgpiqIoqaNipCiKoqSOipGiKIqSOipGiqIoSuqoGCmKoiipo2KkKIqipI6KkaIoSltw/fUwYEDatShZ0kwHpCiK0n644AL7vnUrbKd2QBQ9I4qiKG3J+vVp16AkUTFSFEVpS9auTbsGJYmKkaIoSluillEsKkaKoihtSUND2jUoSVSMFEVR2hIVo1hUjBRFUdoSFaNYVIxKkCVLljBhwgRGjRoFwPz585k6dWrKtVIUpUVQMYpFxagE+da3vsUJJ5zAokWLABg4cCA33HBDuMJHH4HO0Kso5YmKUSwqRiXI0qVLOeOMM9guGBhXWVlJRUWFXbhoEfTtC5dckmINFUVpMipGsaQqRiJyu4h8KiJve2WXicjHIjI3eH3FW/ZzEakTkfdE5ASvfGRQViciF3nl/UTkJRF5X0TuFZGqoLxj8L0uWL5n2/ziwujcuTPLli1DRAB48cUX6dq1q1346af2/a9/Tal2iqI0CxWjWNK2jP4EjIwpv94YMzh4PQYgIvsDY4ADgm1+JyIVIlIBTAFGAfsDY4N1Aa4O9jUAWAFMCMonACuMMXsD1wfrlQzXXnstX//61/nXv/7F8OHDGTduHDfddJNdWF1t3zduTK+CiqI0HRWjWFLNTWeMmV2EVTIamG6MaQAWikgdMCRYVmeMWQAgItOB0SLyDnAM8J/BOtOAy4Bbgn1dFpQ/ANwsImJMaXTEHHroofzjH//gvffewxjDPvvsQ4cOHezCyuAv27IlvQoqitJ0VIxiSdsySuJcEXkzcON1D8p6Ax9569QHZUnlOwIrjTGNkfKMfQXLVwXrZyAiE0VkjojM+eyzz1rmlxXAoEGDmDx5MtXV1Rx44IGhENlK2fetW9usPoqitCAqRrGUohjdAvQHBgOLgWuDcolZ1zShPNe+MguMuc0YU2uMqe3Zs2e+ercYM2bMoLKykjPOOIPDDjuMa665hg8//DBauTarj6IoLYiKUSwlJ0bGmCXGmC3GmK3AHwhdcfXA7t6qfYBFOcqXAt1EpDJSnrGvYHlXYHnL/5qmsccee/DTn/6UV199lbvvvps333yTfv362YVOhNQyUpTywb9fVYxiKTkxEpFe3teTARdpNwMYE0TC9QMGAC8DrwADgsi5KmyQw4yg/2cWcFqw/XjgYW9f44PPpwF/K5X+IscHH3zA5MmTGTNmDO+++y6TJ0+2C1SMFKX88Pt4VYxiSTWAQUTuAY4GdhKRemAScLSIDMa6zT4AzgIwxswTkfuA+UAjcI4xZkuwn3OBmUAFcLsxZl5wiJ8B00XkSuB1wKUxmAr8OQiCWI4VsJLhi1/8Ips3b+b000/n/vvvZ6+99goXqhgpSvmxeXP4WcUolrSj6cbGFCfmvTHG/Ar4VUz5Y8BjMeULCN18fvlG4PSiKtuGTJs2jX333Td+oYqRopQfjY3hZxWjWHTa8RJk33335dFHH2XevHls9MYTXXrppSpGilKOqBjlpeT6jBT43ve+x7333stNN92EMYb777+ff//733ahipGilB/qpsuLilEJ8vzzz3PHHXfQvXt3Jk2axAsvvMBHHwVDqZwIlVa8haIouVDLKC8qRiVITU0NAJ06dWLRokV06NCBhQsX2oVqGSlK+aFilBftMypBTjzxRFauXMlPfvITDjnkEESE7373u3ahEyO1jBSlfFAxyouKUQlySTA9xKmnnsqJJ57Ixo0bw6zdToTWr0+pdoqiFI32GeVFxagEOeKIIzjyyCM54ogjGD58eChEEIrRpk3pVE5RlOLxLSO9d2PRPqMSZNq0aeyzzz48+OCDDBs2jNraWs4//3y7UN1zilJ+qJsuL2oZlSB77bUXNTU1VFVVUVVVxaxZs3jnnXfsQhUjRSk/1E2XF7WMSpD+/ftz0kknsWTJEiZMmMDbb7/NE088YRdqFJ2ilB/OMurYUcUoAbWMSpDzzjuPZ599lnvuuYfXX3+do446iiOPPJL+/furZaQo5YgTo06dMq0k5XPUMipBfvjDH3L//ffz1FNPceihh3LZZZcxcOBAu1DFSFHKDydG1dWZ/UfK56hlVIJceOGFPPvss6xdu5YvfelLXH755RxxxBF2oYqRopQfzhqqrlbLKAEVoxJk6NCh/PSnP2WXXXbJXqhipCjlh7OGampgzZp061KiqBiVIKefnmN2CxUjRSk/fDFasSLdupQo2mdUbqgYKUr54fcZqZsuFhWjckNDuxWl/HACVFOjAQwJqJuuhNi4cSO33nordXV1HHTQQUyYMIHKyshfpJaRopQfvptOxSiWVC0jEbldRD4Vkbe9sh4i8qSIvB+8dw/KRURuFJE6EXlTRA7xthkfrP++iIz3yg8VkbeCbW4UEcl1jLQZP348c+bM4aCDDuLxxx/nwgsvzF5JxUhRyg8N7c5L2m66PwEjI2UXAU8bYwYATwffAUYBA4LXROAWsMICTAK+CAwBJnnickuwrttuZJ5jpMr8+fO58847Oeuss3jggQd45plnsldSMVKU8kNDu/OSqhgZY2YDyyPFo4FpwedpwEle+R3G8iLQTUR6AScATxpjlhtjVgBPAiODZV2MMS8YYwxwR2RfccdIlQ4dOnz+Ocs951AxUpTyw3fTbdmi93EMpdhntIsxZjGAMWaxiOwclPcGPvLWqw/KcpXXx5TnOkYGIjIRa1nRt2/f5vymgnjjjTfo0qULQb3YsGEDXbp0wRiDiLB69Wq9iBWlHPHFCKwgJT1wtlPK6WxITJlpQnnBGGNuA24DqK2tbXUV2LJlS/6VfDEyBiTuZyqKUlL4fUZgXXUqRhmk3WcUx5LAxUbw/mlQXg/s7q3XB1iUp7xPTHmuY5Q+UTFSFKX08UO7QYMYYihFMZoBuIi48cDDXvm4IKpuKLAqcLXNBEaISPcgcGEEMDNYtkZEhgZRdOMi+4o7RunjjzPSMUeKUh5E3XQqRlmkaieKyD3A0cBOIlKPjYq7CrhPRCYAHwIuN85jwFeAOmA98G0AY8xyEbkCeCVY73JjjAuK+D42Yq8GeDx4keMYpY9vDanfWVHKgzg3nZJBqi2ZMWZswqJjY9Y1wDkJ+7kduD2mfA5wYEz5srhjlCT19fY1dKj97ouRWkZKa7Fpk72+XOOpNA8nPh072ne1jLLQx+pSZ+BA2LAhFCEVI6UtGDIE6upg7dq0a7Jt0NhovRhu+IaKURYqRqXOhg2Z31WMlLbgjTfSrsG2RWOjFSLnVlcxyqIUAxiUXKgYKUr54SwjJ0baZ5SFilG5EQ1gUJRSo1cvuPTStGtRWrhxReqmSySvGInINSJyQFtURsmBs4J8a0jFSCk1Vq+GTz6BK65IuyalRdQyUjHKohDL6F3gNhF5SUS+JyJdW7tSSgxOhHTQq9LabNoUfi7WnfTRR/nXaY9E+4zUTZdFXjEyxvzRGDMcO2h0T+BNEblbRL7c2pVTPOLESPuMlNZg1arwczSAJh8u8KGiouXqsy2gbrq8FNRnJCIVwL7BaynwBnCBiExvxbopPipGSlvRHDF65BH7vvfe2cu2bm2/rmV10+Ulb2i3iFwHfA34G/BrY8zLwaKrReS91qyc4qFipLQVq1eHn9evL25b5+Lr1Cl72cEHW8tgzpym161cUTddXgoZZ/Q2cLExJu6qHNLC9VGScE+UKkZKa7NxY/i5WMvIPfH7/U6ON99sep3KHR30mpdC3HTfiAqRiDwNYIxZFb+J0uKoZaS0Fb6QFGsZuSf+ODFqz7g+I7WMEkm0jESkGuiETWLanXB+oC7Abm1QN8VHxUhpK3whaapl1NDQcvXZFtA+o7zkctOdBfwIKzyveeWrgSmtWSklhjjhUTFSWoOWEKNCLaO33oKXXoLvfKe445Qbmg4oL4luOmPMb40x/YAfG2P6ea9Bxpib27COCqhlpLQdLeGmy2UZ+Q3xccfBd78b77Z64gn47LPijl+qlGOf0eTJdibpNoqATBQjETkm+PixiJwSfbVJ7ZQQFSOlrWgJyyhXn4i/z0+DSZZXrsxcZ+NGGDUKJkwo7vilSq4+o8cfh732ygypLwUuvti+L17cJofLFcBwVPD+tZjXia1cLyVKXDTdU0+lUxdl26Y5llGSGPnXrR+t54g2xO64f/1rcccvVZybLs4y+ulPYeFCO2VHKSFBmEAbWaeJfUbGmEnB+7fbpCZKbuIsox/8AM49N536KNsuzbGM/Gg6Y8IGzd9nnBhFy+LWKWdyBTC4c+OP7yoF3H/nrNdWppBEqb8WkW7e9+4icmXrVkvJwonRmDHp1kPZ9mkJy8iYzL4Gvw+pPYpRLjedO2fr1rV9vQqhjSyjQsYZjTLGfO7QNcasAL7SelWyiMgHIvKWiMwVkTlBWQ8ReVJE3g/euwflIiI3ikidiLwpIod4+xkfrP++iIz3yg8N9l8XbCvZtSgh2msaFaXtaYk+I8hscPOJUfQ4xR631MkVwOA+l+qsuqViGQEVItLRfRGRGqBjjvVbki8bYwYbY2qD7xcBTxtjBgBPB98BRgEDgtdE4Jagrj2AScAXsdkiJjkBC9aZ6G03svV/TjPQDN1KW9ES0XTR/bR3yyhXaLc7Z6UkRlu3hvVatKhNDlmIGN0JPC0iE0TkTOBJYFrrViuR0d6xpwEneeV3GMuLQDcR6QWcADxpjFkeWHRPAiODZV2MMS8YYwxwh7ev0kTFSGkrnIh07tw8y6g5YtTWltHHHyfnzFu+HPbYw0a9NZVcM72WohitWBF2Dbz/fpscspApJCYDVwL7AfsDVwRlrY0B/k9EXhWRiUHZLsaYxUG9FgM7B+W9AX8ilfqgLFd5fUx5BiIyUUTmiMicz9Ie76Bh3Epb4RrHLl1ax00Xt89oWVtbRgcfDIcdFr/stdfgww/hN79p+v5zTSHhzlNb9Bndcosd15WPJ54IP69Y0Xr18Sh02vHXgX8Afw8+twXDjTGHYF1w54jIkTnWjevvMU0ozyww5jZjTK0xprZnz56F1Ln1aK+WUUMDDBgADz2Udk3aD5s2QVWVzbzdFDddx47hfhy+GP34x9nL0+4zcg+bcfeZs1iqqpq+/yQ3nTGhCLXFbz77bPjjH/M/3M6ebd/337/N/otCounOAF4GTgPOAF4SkdNau2LGmEXB+6fAQ9g+nyWBi43g3fWs1QO7e5v3ARblKe8TU166tFfLaMkSO/7iBz9IuybtBydGNTVNs4zc9BFJltFbb9llviUQzdiQVp9RXBqjpUvte9y0GIXi3HTbBU2uOzfr14fCVKzwN4d8YeS9etn3ffZps/+iEMvol8BhxpjxxphxWFG4pDUrJSKdRWQH9xkYgZ3KYgbgIuLGAw8Hn2cA44KouqHAqsCNNxMYEYSjdw/2MzNYtkZEhgZRdOO8fZUmxuRPwf+Pf8DLL+dep9xwN6pGE7YdmzbZp/hcltH69dlZEyBTjHKNLVqxInPfuQIY2vJBLE58nZuqpqbp+3VuOhF7buMEqC3FKJ/rbf16+3tratpMjAqZz2i7wDpxLKNw915T2QV4KIi2rgTuNsY8ISKvAPeJyATgQ+D0YP3HsOHmdcB64NsAxpjlInIF8Eqw3uXGmOXB5+8DfwJqgMeDV+mydSsMGpR7naOPtu/bkkvP3QgqRm3Hpk3W1VZVlZzw9IgjbF9K9FrbvDlejKKWz7p1mZZTrgCGjRubZ5UUw4YN0K1bZplruJszlbqzjMC+x2U3b2sx6tcvefm6dfacV1eXlBg9ISIzgXuC7/+BbfxbDWPMAiCr5TXGLAOOjSk3wDkJ+7oduD2mfA5wYLMr21aUs8AsWgT77guzZsGhhxa3rbsR2qubMg2cm66qKjnh6WuvxZcX4qYD2/DmEiu/AVy/vm3FKMry4Pm1OdNiuD4jsGIUN+9TU8XommuseEyaVPg2+fLgrV9voynbUIwKiab7CXAb8AWsQNxmjPlZa1dMiVDOjfHDD8OaNfCHP+Re75NPbOe2f/G7z+UsxuWGE6MOHYqfBC7JTRdnGfl9Rrkso2Ia6QsugNu9Z89iLepcbrrmNMq+ZeS76Yq1jP72t8xtnnsOfvITuOyy4uqTT4ycZdSxY+mIEYAx5kFjzAXGmPONMRrWlAZJjXE5NNIuuUW+ut5wA1x7LTzmGd4qRm1PU8Voyxb7PxViGa1bV3ifUTFidP31Yabv+norAA88UPj2rSVGrs8Imm4ZLVwIxx4LEyeGZV/9atPqU4xl1EYTJeaaQmKNiKyOea0RkRLL6NcOSLKM3JPflQnpAkth3hQnJPkyLtUHQ7/8J2bXOLSUGH36qbXASpUPP2yzlP2JNDSEbrp8k+T5/4u71lxHf5xldHMwFdqGDbkto6aKkc9LL9n3u+4qfJumipExycK9datd3tw+o2XL7Purr4Zlfbyg4GIiH+OCT3z8PqPNm9ukzzbX5Ho7GGO6xLx2MMZ0afWaKZn8+tfx5e6iviQmwPG99+zTbTFPhq2Ba5QKHafhi1axfUbvvJP7xunbNwxbLUX22MPObZMmxVhGcTnWcrnpBg607/nEyG9YmzoY1O2zmCi4OEEoRIyOOgr23jv+ocmdF9dn5Lvp3Dnq2rVwMfIDKXbbLXt5Ev49VIxlBG1iHRXkphORw0Xk28HnnUQkRxiG0mL4F3aSoORqeN94w75Pn17Y8a6/3jbmLY1r0PKJkfu9cXPfFGIZ/fvfdpDeL36RvE4buRyaRdp52YoRI19w3LqdO2d+h/C8u0i1jRtDkYlzBTXFMopeI24frkEthKZYRqtWwTPPWKs2bk4iJzxxbjr3u7t3b5oY+ectX5YYf/+F9hm5c9cG12Qhg14nAT8Dfh4UVWHz1SmtTSH++lxuONdQFJKQfO5c2/m7//6F1a0Y4iyjzZvhn/8MXXMQNiZxfQmFiJHb1z/+0fS6KmFodyFiFDcVQi7LyInRhg1hw9+9e27LqNAHpKigue+VhQQNxxwX7G9w0XRJDfKCBeHnuXOzl7tzFOemc+eoW7fM637ZMrj66sxz6Abf+pZeQ0Mo/m65Y+vWzH36FmahlpHLplEKYgScDHwdWAefZ0bYoTUrpQQUIkZxltEnn1gB+uY37fdCLqQ1a4qrWzHEidEll9jR3bvvDvffb8uc4Hz4YbheMWLkbvC2iDycMQN+/vP865UCjY02k0Wh+KHdcX1G/vktVoy6drXvGzaE/22cGG3cCDsEzcz55xdW7+g+XOObb3yQ/3uiYjRsWPIyh39u46ZbyOWmS7KMbr4ZLrooMzmrs4z8+6ihIew3ilpGl1ySmezWF6NC+4zcsfL1HbYAhYjRpmAcj4HPMyIobUFTLSPXcesoRmh8HzTYp8KuXa0bolg++8yK4u9+Z7/7FtqLL4af3b6d4Pj9Y8WIkbvp2sLNNXo0XHVVeUT5nXUW7Lpr4ecln5vOt0Di3HRJ0XSVleFTvC9G3brFW0b9+4ffC+lAj+6j0CzYuVyCLlhgp52S+658AYpzleVy00UtI3c9uSCWjz8O9+MsH7++DQ3Qu3fmcrD7ueGGzDoVaxmVoBjdJyK/x07L8F3gKSDPgBGlRWiqZRR1S0QtBRG49NLMMtfARF16r71m81gVM6DO4SwcdzP4wrnzzuHnuLT6jmLEyK2b1Gj452r+/JaZ5rm10v63pMi5cTfO3RQ9zoUXwvPPh2X5xMhvDAu1jDZutC4f52JyYtSxY/zAyo0b7bqTgwkC8j3JR+tlTPgQlq+f0N8uyfoZOjT5oc6JQEVFvBjlctP5ltGWLeG6Loedfx04yyia02/XXe36/rG/971QWF293bVaURF/LThc8tbOnUMxKna8WRPIFdp9s4gMM8ZcAzwAPAjsA1xqjLmp1WumNN0yil5ou+wSfnYX9xVX2PcXX7RpQdzTXVSMXAdmU56MOkbmYPR/j2+BuZvU3WR+lgbXUER/5xtvwOuRBPKuIUnqCPYbmgMOKD4bRBwtmV7fb3iKDbRYsKCwTukoGzbAddfB8OFhWT43nd94+8ujYhS1jDp2tI1mVVUoRtXVyQEM1dW2oYXwPM+fbwd6xuHvY8uWcFK4fCHP/vLoup07Q22tFaPNm+PPx7JltoHv378wyyjOTef60ty1G/cw4kQvKkY1NbDjjpnHvu228LMTI7fdHntk9y/5NDSE48VKxDJ6H7hWRD4AjgPuMsb82BjzZKvXSrEUcgHEiZEfFAA2FY8jakl96UvwwQfw97/b79tFLgnnb29stBfwokXwyisURFTYkua6ccdwN8vy5Xbb6dPDhi861mHwYDjkEDLIZxlFRSou8ikfS5dmnt9cT5hgJya79trCLB3/nBQTzmyMbQhPPTV7mW8Vx4l0nMVRjGUU56ZLGmfkHmxcNnBfjOLcdDU10KOH/e7O84gRcPjh2XWK1quhwUZXun3lIpdlZIzN+ej6r6LWUWOjdStv2WKt/VxilCsdUPdgAuqoGPkC6ywj/390Y8K6dMmsmx/kEBWj3r1zP7i49XzLKE0xMsb81hjzJeAoYDnwPyLyjohcKiIDW71mSmE+/jg3XVRQ3IV0//2ZaUP8G8/dHH5nrzFw443h8p497YU8ZEjm/u+5B77ylex6RIXS/+43tlddlVm2cKF9v+SS+IbCb9hnzsxeHm0wpkyxgpsrdLZQt9jRR9ugC0c+y+icc2yKo7gAgs2bM/sbcvVdrFmTXEe33dNPZy/zxSZO4OLq74uRMdnXWKGWUVSMnKVciBi5Za6RdmLk+lDizkVUjJxllC9kOin1kDFh30mSGPnuzXxiVIxl5B4i/PokWUbO/en/Dj8JqtuHc9P17m1d1EmBPm79ErKMADDG/NsYc7Ux5mDgP7HRda0wGEXJohAxirOMomL0zDP2xj7jDPjVr8Jyf+ySa3DctuvWwa23hmOUookxR44MP//nf9qony1brLXhBCL6VD1nDjz7rP0cvalXr85uLCsq4sXIb9inTIHvf99aK9HG/OSTrRvy3HNh1KjkRunWW21kXyHZKubNy/y+fLm9yceMgUcftRadP43HP/9p3+MaqSuvtC5U95TqPwUWzeHkAAAgAElEQVT752L5ctuB/vvfx9cpV4CKPxAy+vCxeHG8Zeeett2TvPsfV6+2brK2EKOoZRQVzbgn+6gYuca7GMvouedsFJsxYXmnTtbycMedMcM+3EDm9dCzZ/F9RkmWkSv3rwO/z8i3nOLEyP13/j58y8iY5D5TJ1rbb19aYiQiHUTkayJyF3aahX8CMf4ApcUpJL1HIVFGL7wQ3wfhPxm5m8NZRj172lkhk/AtEseaNdZ95oQqKkbPPWenHgDbEB5zTLhs1apsMaqsjLcWnPsF7JiiW2+1obD++XrqKfjLX6xQuuMlidHZZ1t32gsvxM8om+uhYMUKeOQRuPdeOPFEWzZtWrjcuSqXLLEJY31uvdW+u4bNP45/LpYssY2B6+fz+d3v4Le/Db+fckrmVCN+34D/+3/yE9tvd2TMBMp+n5H7/sgjNqrygAMyxc+/rtz/7WY0LVSM4pJxumW+m86/nt57L3mQK1iL0P3eZ5/NTKETxb9uXn3Vju/57LNMC8HN9LxwoY2k/Pa37Xdn2a5caddZujTb4sjlpkuyjJwguO8rV9p69uhh9+/6ddyYsKgYrV4dTimzfj28/baNqoQwFDwpKKTUxEhEjheR27Gzok7EThvR3xjzH8aYv7R6zZTCLKNNm7Iv/kI7v/2oO9f4bdoE//u/TZtq2Ldu1q1LtjQ+/NA2/O5pEGzj4oexuvrFWUb+U7F7uluzJnNdZz25xrhDh3gxmj49bNROPNE25r7Av/uuvdEfeST+t0QniUvi4ovhpJPgf/7HNgwQ/m933w1TpyZbRu5z3BiWc87JDIV/6CE7CaOzzqJi9OKLViCd+zUO300HtuH03bv+/zRpUijCfqPbsWNxllFSAIPvpvOto6FDwzx3/jYO56Jz1NYm/964+2zp0kwxckFAzrJ3fawrV1oXXteu9hUdaAq53XSbNtkHQOcGdNtGrRnXvzl4cFjuzm/HjraOUTFyaa/WrQujEiEMBS9EjNw1kLJl9AvgBWA/Y8zXjDF3GWOamCRKaRKFiNGGDdkWSKHjSXx3nrsAP/ggviM8jo8/hh/9KPzum/2ffZYcDehchbNnW9cWwIMPZq8XddNFQ1V9OnbMvBldY+TWjY5wd/gZkF39b73VBn3ce29ozZxxRvzNu3x5tkUXdZNCOPbrzDPhoIOsyLkGafJk+M53kvOxud/g1n/pJbj88tz9XP/6l3333XRjxsD/+3/2c9K2W7fa40TFyP8vfTfpP/4R/oe+GEUj8aJitHFjYW66Dh1so7hiRbZLMZcYOeH23VU+H3xgB4WvWxeedz/gZtmy8HqpqQnFKDrebuXK0KpxARrRB7l8od1VVaFr0z1oufvRvTtvwIEHhuVOwJ1l5F/fa9aEkYjr1mUOpdhpp7DucaRkGSXmyTDGfLnVj67kphDr5MMP4QtfyCwrVIz8/TdlvMzZZ1v/ueO998LPhx2WnEl8xx3t+6hR4SDIuPxhSW46V1d/WuzNmzMbWD+LA9gbNk6M4qzIc8+172PGhGUbNsB3v5u97ooV9qb1qaiw9XHZmuP41a+yLcf588PPToweeshaa47777fCGK1fFNdwR0N4nUjF4WeedumAwDZEnb2x7nEWmr9tZWXmxHxr1lg3ad++9nt1tf19W7fahtzPDF1REfbXuGuiRw/7e6JiFB1PF3XTQbJ1fvXVcOed1k3prJKddgr7fJYvD//XmhrbZ7Tddtl9hr4YuQi26P2Xb9Brx442GlLEWuAnnxz+/+5adyLlXGwuQwJku+kaGux+d9rJns/16zPvL1ffpIg6X4zcg1Up9Bkprcy//53ZiAPcdJO1FAoRlbFjsy2QQl1svoXhd7oXinNVOE47Lfy8dCn8LGEORjfGaPLk8IZ3DY17cgfbGLqBkWCfVp96Kqy3/7S3alXm7/b7lcDe6HFiVMxN5ouFY/ny7Ju6osKGIFdXJ0fb7bprdkPpP3WvWWODKnwhglCIIPfUCO64ucaTOMaOte+uEYPMPqPNmzPFKG6fjY2Zja5vGY0eba9x11jHuenc8d3xtm4N1+/ePV6Mool3/QcLJ0ZJDwNu23ffDRt+1y8EmRZTp062Ue7WLTvTeCGWUb50QFVV9jcec0zowo1aRu4a811vUcvIHddZ+F262LqvW5f5sOnqW4xllOag1/aAiIwUkfdEpE5ELmq1Az3yiO08POccO8BwyBD7hFpfD3vuaV1CI0faoICDD4bzzrMN+ze+Udj+3YXiXE6FipHvYmsK+TIYJD15+VFKTozc07brsIbQMnJlF14Ixx8fphLyG4/VqzPF2wUF+DR1XhxHnMtn5crs83DddaFQJ52j+vpsq8wPClmwIIzES+Lyy5OXOffc0qWZoh1l7twwVH/jxkwx8t10/rTfcRFjDQ3JfUazZtn3qBht2BAGMLjj++++ZRTnpou6Af1znfQQsGWLTbzq5rR65ZVQYPypO9auza6Ha8T9Y8RZRklilBRN535/795hvaJi5H6b73orRIw6d7bXvXuAGzgwzA9YLm66bR0RqQCmAMdjgzReEZEZxpiYx99m8PHH8LWvZZfvvXfm95kz4yPU8tG9e3ZOsKYEH7Qlrn41Ndli5Fx4EFpGPXpYN49zMX30kX1S9YVr9Wpb5lx3UXfUxo2tI0YrVjQtrdDjj2c/tfuDcPMJUS66dLFit3SpDYyIuhEdP/iBjbxz4u5fN1ExyjdVQUNDtpsu2oC5Phm/4YyzjPzrA+w1/u672WLkW2h9+2a6D50Y7bNPpufhhz+0wwFcYMSCBfFi5FtGfj18nIXv+nGSpluI6zPyo+lcg7/zzmF/nBMK3zLafvswxDyXGDnh8S2jTZtsm/PWW6HrzR1j5Uq73D20uGN27pwdgt6KtGfLaAhQZ4xZYIzZBEwHRrf4UfKN0G8u48aFF79rdFpbjPbYo3nbr11rXVl+4sw4y6ihwbotfIEC+/S4ww6ZriNnGfmpj3zWr2+eGO21V/yT5Jw5dtBvsTirMfq07e83CT/AJDoAGWzE1cKFoeWY1B/o9+GAvW7i3HSbNtkG7YAD7Pc4N51vGfl9Rr7gOtFOctO569gXKsjsMxIJrQM/jDraj+X+q6lTYb/97OctW8Jxc06sFi2yn7fbLuw7gsIsI4fbrlDLKBpN5yyjrl3tOfOF0LeMnKXjyn0x6tTJ1nfr1vA8u3vEWUbdu9v/pbLSLnPn6Gtfs/fNlCl2n2vXhn2GpRDa3Q7oDXzkfa8Pyj5HRCaKyBwRmfNZvomrkjjwwEw/v8+119p0PGAv5HPPzc7n5g9SjeO3vw2tLCdG0fEsLc2YMdlBE8Wwdm1440bFyEX6QNiHEn2y/+c/7U3nu45cn1GSS2rdusLEKKnB6do1ezrw6H9VKE5wBwzITNXk48+RE2XPPcPP48dnL99vv8yO9qRZgp0Y+R3vSW66devC/opi3HTRZKnueIWIkft/nZtu2TLboL71lg2O2bo1WWhdQ9unj41UBNsg+xFzbmbWd96x16Gfn2/duuyZYt214c6bo1Ax8scZRfuMILzO/evMt4y6dAnXibOMwNY5rs9ozZpMse3WLTxHLlz93HPtwOq1a8P7UsWoTYibcS7Db2KMuc0YU2uMqe3p908UdRSxIcL332+f5FavtoMxFy60k9nNmmVvmBtusIELS5fawaFnn23HpPiZDvKR5I5paYqZOTOONWvCffgNV2Vl/JTbcRFva9ZkilFdne2ncf7wKE6M4ua2GTEifChImoitS5fsEG4X2ZRE797x5U6MTjwxdLsUgy9GcQ8Fe+6Z6SqaMCF+Py6tUZJl5IvR2rWhhRpn7W/cmOmO6tDB/m9+kIwbhBkVI3cOnLXij+8BK0ANDdbl3b27fWBxDx2rV8cHKbh9VVcnp/L54hft+9tv28Z31Cj7ENCjh/29UQvNuenc1OkOd98luekKiaaDUADcOK4+fWw9XLaErl3Da2fp0ngx2rAh/J3OMkoSo7g+3QULwon1oGTGGW3r1ANekjH6AIsS1m0+p51mb+YddrDRRa5B6djR9oG44IPtt7cTek2ZAt/6VmGztDqa+qReLDU1yXmtfvOb/Nv/+c+Zrh534XfqFLpgfJLcjr4YOaqr7fl19XQ0Nton+qjfH+x/cscddvxPNGjkrbfsk7MvcuPG2fdcAynffNMGXMThtjvttLCOxYiS74o86KDs5f6D0ze+kW0t7rqrFQYnZH5D5ho4X4ycmy7Xw07UTVdZad1i7sn+hBNs1gew//eWLXa/1dWhqLsEtP74HgjrP39+2Bi78/Xoo5mRk+4ecGLkwrIhO7+fS7j6wQfhNdivn/2dcW4654GIik0+yyjaZxQXTefOC4Rj5Pr0seepoSG0jNwA248+yhQj99+sWZNtGTk3XZxlFM2ZuHlzmI8P7MNbRYWKUSvzCjBARPqJSBUwBpiRZ5u2pxgxaq25daLkEqPhw21YuhuVXwjuwu/UKd6yScpg7W5u5z4C23D85S+20YlalXfemXlD+sffe28rIJMm2fDy00+3U7AfeKB1pflicckldhxT3BQUtbXw1a9akUiyjH76U+uCHDYs/O3+lBqHH27Lr7sus/F0+/PrEj1flZWZonHmmdnHHzvWWuSu8Uty0/lhvWvXZovR66/b7BGQX4wmTIjve6muDi20jwKvuRtE6+rl3GLvv58tRt/7Xma/WTSXXU1N+J+vXp0ZbLLvvuH59/sft98+PoDhzDPtvi64IPM8uP3ns4ySsnZHLSNfjMCeQ9dnBPZ8ffBBphvR3QOLFmVH08VZRl27WjGKTsfh0g75D3odOmg0XWtijGkUkXOBmUAFcLsxZl6ezdqeuNH8SbSEZdS/f+6BkWBvuqSceF27WpfXKacULqR+gxAnFscea+cviuJukL59Qz+7bw3FueT8iDj31OjfeN27W8stKrZ+o7/DDtY68Rvn006ziWcfeCBsPIcOzT4+WOFx1o2r76672ogxsJkp/HP34IP2OrgoGH3QpYsVPNf47bijbUDWrw8zFvh1BZv+58MP7X7coF6H76ZzAlRVFdbtf/7HNnDbb2/7qFzuvcGDwxByP5rO5aZrbAzFyP9f/SCV6mp7bjt3tmL01FN2QKr7XZDZRxMVI8jsw9phB3strFhh//8OHcJjO1esv6/tt890S0GyZdSzZ9jQ77FHaJH5U2O48+gTzfvohNoYe96ioeHuWnYPH7/5jbXOXf0PPdQK9je/GR7fWfyrVtnz0bGj/U25LKN587LvK2cp+fdR0rxWLUx7towwxjxmjBlojOlvjMkTKZASxVhG0UGAPhdeGD+Ngc8BB2SmxAcrBNGBl7ksozjL5rzzch/XiUFNjW0sjzoqXNavXzjFRHQb56Y46aTwPPninTRI1d83ZDZEju22y9yXP22Eq69r9L/wBfjTn2yanj32COvSt298f4bfkEafzKuqsv/zU06xv9E1OJWVNkjl/vvt908+yZw+wm903Ocf/MA2aldfnflbILMR9S0jJ5j33Wffq6uz3ZjuAShqGVVU2O+u/8IXSP/3V1fb37vbbvZ3vPCCLa+oCPsP/fo6N27cQ4vbzp0/JxJx/ZBgxcidd/8acNbEhg2hlRfltddCN6yfqQGS3XT+oFcIXZV+miQIp1DZf3/77vLKufV2390+BPh9Wv6xf/Mb+3+I2N+ycqX9Huemi45VW7Ik+wGtqkoHvSokW0ZxndK5Itw6dco9+BHCJ0mfuLE1HTtmWkYugzHEi9ENN2SX+S6s6JPl3/8eCmBtbXYdLrrIRgA5MdppJxv8AZnBDnGDQpcts26Wo48OxSiu7ynKgAHhZ1dPv4Ht3Dk+zBpsrjvXXwKZASDRfpFc07v/4Q/2aXjQoMxGt7Iy/C3uad+R1Gj7+O4lP/nmzjtnX3/RPj1fjPy+kaibzq+T/9Ttju2e4JcutWLl8uO59f1s8pDcx2ZM9vXUu3f8/eKfK1+MogEWcfToYf+rm2+2Vqr/W5LGGfluOlfu9xm5+tbV2d977LGZ+/GF3ZjwwcqPSIzmzuvcOfwP/P7Sbt3iBwZ/8km8GKllpCRaRrfckl122GHJ+4lzWTmuuSZcJ9rB36FDdh3cUy/YEez+FMdxVoaIDRDw8bNAu5vUb6RcmbspXH8CwH//t81U4YRvl11CV4d/07hGwscYG1I/a1bYsBYrRq4xcQ1ZkpXoOOuszKzJ/vl0fUWHHGLdaD//efJ+DjzQnsc4C3jnnW3j+Je/FC9GSZZRRUVmMMQRR2RbVXGWUT43XZwYOQGIuswc7uHHue6SxGjLlmxLA2ykXJSamnjLyM8Q4e8jyg472KwqfmBCRUW2ZeTOaVSMGhvDDOkQXof/+pe9Nvv3D/cxdCj813+Fx4XQPelbRi6tl0vM61/bfl+d/9DoT0GybJl1RaoYKVkkWUa5xCWOpJBlCCP7XMNQX28nrEvabrvtwqSh++5r13n5ZRsB6De0/viqb37TTk0RV5/okyFki1Hv3vYG8hv1iy6yrxEjwsbEt4yqq+2T6x//GJa5+ZQg3KaQczlwoP1t/lgU1+gXOkvso49m1gVsFOWvf23Hwuy+e3FuWR8RK/C1tdkWWz6SAhggdO2OGGHdp9262UG3rgFripvO/5+j00okiZEjrs8oiruOfavG9wr88Id2niuR3JbR+vW5xSgOl5HcJ8lNFxUjd6x160LhcGHkjz8euhtdnePEyJW5yD//d/kPmv75O/hg6779j/+w13J9fSpi1G4DGMqGuMbpoIOKC2yAbFG5775QLIYPt/7vH/zAfu/d25bdcktm5I9ju+3gl7+0iVDdjXXYYdmW2T332Ag2h+9u8+sTZxlFb1CR7AwIu+5qrSR//ehNc845mROruUgtCMOiCxlD1rFjtgXkbthCxShuavZOnXJbQ03Bb/gLEdqkcUY+/pgUf4bgODedy67hW0aFuOncBIu5LFUnRpWVNmP8b36T6Zrq0CE+E7z/H//kJ6GbOEmM1q+3dS/EsvSprs7fZ+S76TZvjn8Yc/WZPdtGLfpWjauTGx5RXZ2dicL9Lv9cRoNwHH362AjP++6zYyKjuQgvvjhzMHoroWJU6sSJjsuFlY/zz7fRSW+9lS1GX/96+LlTp9BV53ANrMsP5+Ncd0lzxfh19+ufJEa5LKNCn0xdyhc3xsjH7X/s2MybcPx4e4NGAzQKxR/EWEoUYg355BKjuXNt1FxciDhkW0aVlfba8PuMRDIbt5awjMCmsfnww2wx6tHDurqSxMi3ktz1EGcZrVlT/EDyXJaRH00HoWUUd6274+6yS/YQBWfVfPqp3Xa77cJtV63KTOPj/y4/KtG/D5ww+4Lj18VF7bUyJXYXKVk01W0DtgP/+OPtE/mXI9NT+cIQ10nr+/+dv374cDsuwfdlF4PfaOezjJwYFipG/fqF6WKiHHSQHQ8TFarKysxpL4pln32su/LHP276PlqDYl24IuHU31ExGjQot7sqToxcHRobw2396zipz2j9+sItI0c0oGLIkNCK86/rHj1sxoUlSzKv/egYHwhnTY2GQxdCdPpvCK0fdw58N93mzbnFKA5Xp8WLw/UqKsIgEH9b/1z6GUP83+X+a1+MCulHbWG0z6jUibOMChWoykrbcdvQYDvIk/YbZ+H4kVEHH2w/33ijHWy3zz6FHT9KMZaRczsUk3qoR4/kczN2bMvfYJWVNngjmh6mHGlosP1xriH13XS5Hgh8MXIpnSB00/kzvMbtLy6AoSli1KMHPPGE7SN0QSH+tSNiH6TcWC6Huw+iltGmTVbUWspNF3ftb96c2WfkrJxofaI4y+jjjzP7fpwI+WLkPg8fnnlvuHL/wVLFSMlJXOOaq4/C5bWCzAGMcbgLMu4YLhCguhouvdSOYznkkOZl7C6mz8hZY8V2ICvNwzXWucas+fhi1NAQ/l/OTeePo3HkctOtWxffEJ91ln2PLnOup6OPtimHqqpCMYrmNKyoyK5L1HXm12/RonhLOxdJlpF/7fs5/xobw+8i8cMGojiB3LQpUyzjxGjYMHvuom5457b0J7P0xahYEW4B1E1X6hQbqLDbbrZB+fvf47f1R47PmxcOsIvipgsYPtze4MccU1w94ihGjJpiGSkhN96YmSapUFyGgULFqLLSXmcNDeFkea7cWUbRffnXZaGW0Q032NDm6IPT7rtbi8hZ7xA+MLmJ6nLh6uKPm/P7X/w0TYXQo4eNaNu61b5cAFDctZ9khebLA+hbQ3GWkS8kXbrYcW5R+va17YQ/ZMGF82/Z0nZJlz1UjEqdpvQZ7bNPsivt1VfDm7Rv3+x0+I4vf9kOvmtq/1AcSWLkhCdOjPIFSSjxuMjIYnEDIYs5766/aePG8D90fUZxlpGPH03X2GjFMM4y8gd2RjnhhMzvbqhCIXOJOS9DnGUEyfdHEj172oe8U06x2Uw+/TRbjJz4uJyL/rLo1Cpx+MvyuelyEddG7LijrXMKYqRuulKnWMsoHzvuGFo9+WhJIYJkMXLBEnFuupb+/Uo8V15p31eujB/onIuOHa0F5GcscG66OMsoui2E/310apCm4LJRFNK3eeaZ1pLyw+796zA6yDcfO+9sLaOHHw7H/ETFyP1mNwbLX+bOey4x2G67eCsoLky9WFwKqObso4nonV7q5GoUksJtS5WkaLq4/qFo2n2ldTn+ePu+alXxCXedi23hwuwJ5IqxjBzNFaOePW2uwD//Of+6hx5qg3L8vtDmWkZ+n9GWLdli5H6zEyNfrN29kM8ycRaRbxm5/q3m9Pe4TPQpPASqGJU6cReFcy0kzZdTqhRjGTmrrFifvdI0/H6SQvuLHC7P2RtvhEEDzk1XqGXkN6At8VQ+fnxoIRWLL4bFWkbRAdRr1yZbRm5AsL/MuafznQN3vqKDV6F5LrYrrrC5G91cT22IPnaWOrkso2LHk6RNkhi5p0G/T+BnP7ONybBhbVO39o4To+XLw/xvhdK9ezjtgQt0qay0DWtcaLePuyb8RjWFsOIM/IeiYq2MaDJiNwNuLjddUywjt9y3jJwYNSd1T58+NndjCqhlVOpsq2Lk1z06LTPYp+2JE8vvN5YrrgFuaEieuj2JHj3CWVpdTjT3X65fX5ilFTetRlo0ZzhB1DKKE6Oomy7OMsonRs5j4oule4goU9e2ilGpk8t3W26d+/ksozK9ibYJmmMNdO8ejm/zp6sGK0ZxlpE/dXr0mCl0nmfQHDGKWkYbNhQXwBCXESIXvogfd5xN3eTGZJUZeveXOrkGvZab1RA38A+yZ8JU2h6/Ac6VETuO7t3DJ3onRvkso/nzM91Jpeima0ogQJxl5GdZgOw+o7hlhVqn/n/Vq5dNqlqmlNmjdTskVwBDuTXeSZaR6/RuiWnTlabh99cVK0Z+ip44MYr7X3v0yMwr52c6SNsy2nln6/L6/e+L3zZa97h5kdy5jgtgcFOc5DsHrg1IIVNCa1FyYiQil4nIxyIyN3h9xVv2cxGpE5H3ROQEr3xkUFYnIhd55f1E5CUReV9E7hWRqqC8Y/C9Lli+Z1v+xqLI1WdUbm66uKwLEI6eLzZySWk5RMJGsimWkSPOTVdIn1GcoKXFDjvY6RnGjm3+vjZuzBajXAEM115rp5NPmird4fqHooliy5hSbc2uN8YMDl6PAYjI/sAY4ABgJPA7EakQkQpgCjAK2B8YG6wLcHWwrwHACsDNPTwBWGGM2Ru4PlivNCnUMiqHTAVJ9f3v/7aZIZqagFVpGVyD2RaWURT/ekjbMmou69aF01rETV+eq89oxx1tJvl8g46vusqGr7s5ubYBSlWM4hgNTDfGNBhjFgJ1wJDgVWeMWWCM2QRMB0aLiADHAG4msGnASd6+pgWfHwCODdYvPQqNpotOPFeK+L8lmh4lmlVcaXta0jJyYrR1a/HjltK2jJpLp07hOYxz07kMF3FiVCiDB9uBvcWe2xKmVMXoXBF5U0RuFxF3pfcGPvLWqQ/Kksp3BFYaYxoj5Rn7CpavCtbPQEQmisgcEZnzmUvt0dYU6qYrlxvYJe/U/qHSwwUhtKSbDor/r8vlWs6FEx9nGfli5OaPinPTtWNSESMReUpE3o55jQZuAfoDg4HFgBuBFdcqmyaU59pXZoExtxljao0xtT0LmZq6NXCRZj7lGsAA8H//Zyf924Y6XrcZXAqm5rjpnIstbr6qpuyvXPHFyM9m7ujYMT6AoR2TSmi3Mea4QtYTkT8AjwRf6wG/h7sPsCj4HFe+FOgmIpWB9eOv7/ZVLyKVQFeggBS/KZCr0S5HMTrwwMKnTVfaFvfg0xzLyDXCcWNn8vHb38J9920b482cdRfnpgMrTmoZZVBybjoR8SdhORl4O/g8AxgTRML1AwYALwOvAAOCyLkqbJDDDGOMAWYBbl7p8cDD3r7GB59PA/4WrF96VFaG2X8d5WwZKaWLm8uoKemAHC5zQFMso/POg2efLe7YpYoTn9WrrfszKkZqGWVRio8gk0VkMNZt9gFwFoAxZp6I3AfMBxqBc4wxWwBE5FxgJlAB3G6MmRfs62fAdBG5EngdmBqUTwX+LCJ1WItoTFv8sCYTFR0nRuUW2q2UNlOmwMyZcOSRxW3ni40/hbajPfYPOrecm1Mpzk3n3KIqRkAJipEx5ps5lv0K+FVM+WPAYzHlC7DRdtHyjcDpzatpG5IkOmoZKS3J2WfbV3NwATfN6TPaFnDjtpwYRS2jaHSdUnpuOiWGJMtIxUgpVdq7ZQRWcJLEyE+EmjSDbTuj5CwjJYYk0SnRoVFKO+TMM8NptEEtI7AC5KZxjwqOL0bNScy6DaFiVA5E3XQlGmuhtGOmTs38rpaRjahLsoz8LBNqGQHqpisPktx0ilKqqGVkBWjpUvs5OpDXWUZVVRqIFKBnoRzQi1UpN9QysmL06af2c3QgrxMjddF9jrZy5YC66ZRyw7eM2qsbyheaqKISOa0AAA2eSURBVBg5N52K0eeoGCmK0vKoGGUKTXQgsbOM2qvVGIOKUblz7bXw3HNp10Ipc9b5kXAtge+ma69P/37S2GiKJSdGLjmtomJUlvhuugsugGHD0quLUtY8//zz7L///uy3334AvPHGG5zd3IGvoJYRhCK8yy7ZwzCcm077gz9Hz4SitGPOP/98Zs6cyY6BG2nQoEHMnj27+Tv2LaP2LkZxs7H60XQKoGJUnmgAg9KC7B6Z7r2iJTJ7qGWUW4xcXrptaNrw5qJipCjtmN13353nn38eEWHTpk1cc801n7vsmoVaRpluuigjR8JJJ8EDD2Qva6eoGJUjahkpLcStt97KlClT+Pjjj+nTpw9z585lypQpzd+xWkbh79555+xlvXrBQw/FL2unaDqgckTFSGkhjDHcddddLb9jtYzspHoA3bqlW48yQS0jRWnHDBs2jBEjRjB16lRWrlzZcjv2LaP2GjHm+t6KnaywndJOr5IyRy0jpYV4//33ufLKK5k3bx6HHHIIJ554InfeeWfzd6xz9MBZZ8Epp9iXkhcVo3JExUhpQYYMGcJ1113Hyy+/TI8ePRg/fnzzd1qpPQDsuSc8+KBaRgWiYqQo7ZjVq1czbdo0Ro0axbBhw+jVqxcvv/xy83esc20pRZKKGInI6SIyT0S2ikhtZNnPRaRORN4TkRO88pFBWZ2IXOSV9xORl0TkfRG5V0SqgvKOwfe6YPme+Y5RNqhlpLQQgwYNYu7cuVx66aX885//5Oqrr+bQQw9Nu1pKOyQtW/pt4BTg936hiOwPjAEOAHYDnhKRgcHiKcDxQD3wiojMMMbMB64GrjfGTBeRW4EJwC3B+wpjzN4iMiZY7z+SjmGM2dK6P1lRSo8FCxYgrWXF/PWvsNNOrbNvZZsjFTEyxrwDxN0Eo4HpxpgGYKGI1AFDgmV1xpgFwXbTgdEi8g5wDPCfwTrTgMuwYjQ6+AzwAHCz2AMmHeOFFv6ZilLyLF26lMmTJzNv3jw2btz4efnf/va35u/8xBObvw+l3VBqfUa9gY+87/VBWVL5jsBKY0xjpDxjX8HyVcH6SfsqH848M+0aKNsI3/jGN9h3331ZuHAhkyZNYs899+Swww5Lu1pKO6TVxEhEnhKRt2Neo3NtFlNmmlDelH1lV0ZkoojMEZE5n332Wdwqbc+AAXDGGWnXQtlGWLZsGRMmTKBDhw4cddRR3H777bz44otpV0tph7Sam84Yc1wTNqsH/KyNfYBFwee48qVANxGpDKwff323r3oRqQS6AsvzHCP6G24DbgOora1NN2rgqafguOM0eEFpUToE44F69erFo48+ym677UZ9fX3KtVLaI6XmppsBjAki4foBA4CXgVeAAUHkXBU2AGGGMcYAs4DTgu3HAw97+3IDJk4D/hasn3SM0iYu2aKiNJOLL76YVatWce2113LNNdfwne98h+uvvz7taintkFQCGETkZOAmoCfwqIjMNcacYIyZJyL3AfOBRuAcF+UmIucCM4EK4HZjzLxgdz8DpovIlcDrwNSgfCrw5yBAYTlWwMh1jJKmvaZUUVqV4447jurqarp27cqsWbPSro7SjhGjbp+CqK2tNXPmzEmvAu++C/vtB/37Q11devVQtin23ntvdtllF4444giOPPJIhg8fTteuXdOulrINISKvGmNq862nj9vlgo5oV1qBuro67rnnHg466CAeeeQRBg0axODBg9OultIO0QRS5YK66ZRWoL6+nueee45nnnmGN954gwMOOIDDDz887Wop7RAVo3LBWUbqVlVakL59+3LYYYfxi1/8gltvvTXt6ijtGH3cLhecCKm7TmlBXn/9dcaNG8fdd9/Nl770JcaNG8fUqVPzb6goLYxaRuXC1q32Xd11SgsyaNAg+vfvT//+/XnmmWe48847mT17NhMmTEi7ako7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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# same plot as before: \n", "plt.plot(minutes,velocity,'r-') # plots as a red line\n", "plt.xlabel('Minutes') # puts a label on the X axis\n", "plt.ylabel('Velocity') # puts a label on the Y axis\n", "# here I add a few more decorations with the plt.text method\n", "plt.text(1.08,100000, \"P wave\",rotation=90,va='bottom',ha='center') # put on the P wave label\n", "plt.text(11.76,-70000, \"S wave\",rotation=90,va='top',ha='center') # put on the S wave label\n", "plt.ylim([-150000,250000]) # increase vertical axis bounds to include S wave label\n", "plt.savefig('seismogram.png') # let's just save this as a png file." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Let's do some seismology!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The farther away an earthquake is from a receiver, the more time there is between the arrivals of the P and S waves. This makes sense if you think about racing a little kid (who is on a tricycle) around a track. The distance between you will just keep increasing as you run because the kid on the trike is slower (like the S wave). [Well, until you lap the little tyke.] \n", "\n", "You can use the difference between the arrival times of the two waves to calculate the distance to the earthquake source, if we know the velocities of the waves through the Earth. So first we need to know how these two waves behave. \n", "\n", "There are plenty of data on earthquakes and the arrival times of different waves. Here is a short video demonstration that I found here: https://www.iris.edu/hq/inclass/animation/traveltime_curves_how_they_are_created\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Video('Figures/A_6_seismictraveltimeirisbounc.mp4',width=500)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Now we can look at some data from the model for the Earth. I found the data we need on this website: https://earthquake.usgs.gov/learn/topics/ttgraph.php and saved it in the datafile Datasets/TravelTimeDelta/DeltaTime.txt \n", "\n", "Let's take a look at the contents of the file. We can look at the first 10 lines combining the tricks for printing out lines in a file we learned in Lecture 1, with the list slicing we learned a few lectures ago. To look at the top 10 lines, we can do this:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['https://earthquake.usgs.gov/learn/topics/ttgraph.php\\n',\n", " 'Delta Time of P S-P Time\\n',\n", " ' Deg M S M S\\n',\n", " ' 0.0 0 5.4 0 4.0\\n',\n", " ' 0.5 0 10.6 0 7.8\\n',\n", " ' 1.0 0 17.7 0 13.5\\n',\n", " ' 1.5 0 24.6 0 19.0\\n',\n", " ' 2.0 0 31.4 0 24.4\\n',\n", " ' 2.5 0 38.3 0 29.9\\n',\n", " ' 3.0 0 45.2 0 35.4\\n']" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "open('Datasets/TravelTimeDelta/DeltaTime.txt').readlines()[0:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarly, the bottom ten lines can be seen this way: " ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[' 96.0 13 23.6 11 16.1\\n',\n", " ' 97.0 13 28.1 11 20.1\\n',\n", " ' 98.0 13 32.6 11 24.1\\n',\n", " ' 99.0 13 37.0 11 28.1\\n',\n", " '100.0 13 41.5 11 32.0\\n',\n", " '101.0 13 45.9 11 35.8\\n',\n", " '102.0 13 50.4 11 39.7\\n',\n", " '103.0 13 54.8 11 43.6\\n',\n", " '104.0 13 59.2 11 47.5\\n',\n", " '105.0 14 3.7 11 51.4\\n']" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "open('Datasets/TravelTimeDelta/DeltaTime.txt').readlines()[-10:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first line in our dataset contains WORDS, so we can't read it in with **np.loadtxt**. One strategy to remove the text would be to edit the text file, but instead let's up our game and use the wonderful **Pandas** package - a useful recent addition to Python. \n", "\n", "\n", "\n", "### The Joy of Pandas\n", "\n", "**Pandas** is a relatively new package for Python. It allows us to read in more complicated data file formats than **NumPy**, and wrangle the data in powerful ways. It also provides many useful data analysis tools.\n", "\n", "There are two basic data structures in **Pandas**, the **DataFrame**, which is essentially a spreadsheet with multiple columns while the **Series** is a single column of data. A **Series** is like a **list** or **array** on steroids. \n", "\n", "The DeltaTime file includes the website where I got the original data at the top of the file, a description in line 2 of what the data are about in general, and then some column headers in line 3. This kind of file does not play nicely with **np.loadtxt( )**, but we can use the **Pandas** function, **read_csv( )** to read in the datafile. This function not only reads in 'comma separated variable' files (.csv), but also other data formats once we tell it how the file is delimited. \n", "\n", "Of course we must first import **Pandas** into the notebook:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A few things you need to let **Pandas** know. \n", "\n", "- We need to skip the first two rows. We use the keyword argument **skiprows=2** to do that. \n", "- **pd.read_csv( )** reads 'comma separated variables' by default but this file is _whitespace_ delimited. _whitespace_ is either spaces or tabs. The keyword argument **delim_whitespace=True** will split on white space.\n", "- the _header_ is in the third row; this is the row with the column names in it. Python starts counting from zero, but we skipped two rows, so **header=0** will read in the first row after the skipped rows as the header. \n", "- fun fact: with skiprows we don't need the header statement, but you need to know what it is. For example, you could use **header=2** instead of **skiprows**. Why 2? because **header** starts with 0 as the default. \n", "\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DegMSM.1S.1
00.005.404.0
10.5010.607.8
21.0017.7013.5
31.5024.6019.0
42.0031.4024.4
\n", "
" ], "text/plain": [ " Deg M S M.1 S.1\n", "0 0.0 0 5.4 0 4.0\n", "1 0.5 0 10.6 0 7.8\n", "2 1.0 0 17.7 0 13.5\n", "3 1.5 0 24.6 0 19.0\n", "4 2.0 0 31.4 0 24.4" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DeltaTimeData=pd.read_csv('Datasets/TravelTimeDelta/DeltaTime.txt',\\\n", " delim_whitespace=True,skiprows=2,header=0)\n", "# we specify the path of the file (relative to our current directory), \n", "# then all the other arguments.\n", "DeltaTimeData.head() # this is \"panda-ish\" for looking at the \"head\" of the object we read in. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**DeltaTimeData** is now a Pandas **DataFrame**. \n", "\n", "So what is a **DataFrame**? It is a new data container that is more sophisticated than any we have learned about so far (**lists, tuples, sets, dictionaries, arrays**). \n", "It has named columns (like an Excel spreadsheet) and identifies the rows by _indices_ starting with 0. \n", "\n", "The file we read in included column headers and **Pandas** knows which line they were in (after the header or skiprows arguments). \n", "\n", "If we want to be sure, we can use the **DataFrame.columns** attribute on the DeltaTimeData DataFrame:\n" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Deg', 'M', 'S', 'M.1', 'S.1'], dtype='object')" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DeltaTimeData.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that a **DataFrame** is of type _object_, similar to one of the **NumPy** array types that mixed data types we briefly encountered before. Let's explore these objects with Pandas DataFrames. \n", "\n", "We see that the columns of **DeltaTimeData** are: \n", "- \"Deg\": the degrees away from the source (the angle from the center of the Earth)\n", "- \"M\": the time of the P wave arrival in minutes\n", "- \"S\": the P wave arrival in seconds (added to the minutes)\n", "- \"M.1\": the difference in the P and S wave arrival time in minutes and \n", "- \"S.1\" the seconds for the time differende in the P and S waves. \n", "\n", "Each one of these columns is a **Pandas Series.** So to review:, **DataFrames** are like Excel spreadsheets and **Series** are one column of the spreadsheet. \n", "\n", "If we like (and I do), we can change the column names by setting **DataFrame.columns** to a list with the new (more meaningful) column names: " ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DegreesP_wave_minutesP_wave_secondsS-P_minutesS-P_seconds
00.005.404.0
10.5010.607.8
21.0017.7013.5
31.5024.6019.0
42.0031.4024.4
\n", "
" ], "text/plain": [ " Degrees P_wave_minutes P_wave_seconds S-P_minutes S-P_seconds\n", "0 0.0 0 5.4 0 4.0\n", "1 0.5 0 10.6 0 7.8\n", "2 1.0 0 17.7 0 13.5\n", "3 1.5 0 24.6 0 19.0\n", "4 2.0 0 31.4 0 24.4" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DeltaTimeData.columns=['Degrees','P_wave_minutes',\\\n", " 'P_wave_seconds','S-P_minutes','S-P_seconds']\n", "DeltaTimeData.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To save a DataFrame to a file, we use the **to_csv** method: " ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "DeltaTimeData.to_csv('PSArrival.csv', index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Without the argument **index=False**, there is an annoying extra column with all the DataFrame's index numbers, with **index** set to False, these do not appear. You can check it out with excel or something. \n", "\n", "Also, there are many other file formats besides 'comma separated variable' (.csv) which can be saved using the **sep** argument. **sep** stands for \"separator\". For example, sep='\\t' makes it a tab delimited (separated) file: " ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "DeltaTimeData.to_csv('PSArrival.txt',sep='\\t', index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Back to the science\n", "\n", "What we really want for our \"science\" problem is the arrival time in decimal minutes, not minutes and seconds as in this data file. We can do this by defining a new column (\"P\\_decimal\\_minutes\"), converting the seconds data to decimal minutes (by dividing by 60) and adding that to the minutes: " ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DegreesP_wave_minutesP_wave_secondsS-P_minutesS-P_secondsP_decimal_minutes
00.005.404.00.090000
10.5010.607.80.176667
21.0017.7013.50.295000
31.5024.6019.00.410000
42.0031.4024.40.523333
\n", "
" ], "text/plain": [ " Degrees P_wave_minutes P_wave_seconds S-P_minutes S-P_seconds \\\n", "0 0.0 0 5.4 0 4.0 \n", "1 0.5 0 10.6 0 7.8 \n", "2 1.0 0 17.7 0 13.5 \n", "3 1.5 0 24.6 0 19.0 \n", "4 2.0 0 31.4 0 24.4 \n", "\n", " P_decimal_minutes \n", "0 0.090000 \n", "1 0.176667 \n", "2 0.295000 \n", "3 0.410000 \n", "4 0.523333 " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DeltaTimeData['P_decimal_minutes']=DeltaTimeData['P_wave_minutes']\\\n", " +DeltaTimeData['P_wave_seconds']/60.\n", "DeltaTimeData.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice how we have a new column which is the decimal minutes after the Earthquake that the P wave arrived at that angular distance (Deg). \n", "\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Degrees', 'P_wave_minutes', 'P_wave_seconds', 'S-P_minutes',\n", " 'S-P_seconds', 'P_decimal_minutes'],\n", " dtype='object')" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DeltaTimeData.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We would also like the time of S wave arrival, rather than the time between the S and P wave arrivals" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DegreesP_wave_minutesP_wave_secondsS-P_minutesS-P_secondsP_decimal_minutesSP_decimal_minutesS_decimal_minutes
00.005.404.00.0900000.0666670.156667
10.5010.607.80.1766670.1300000.306667
21.0017.7013.50.2950000.2250000.520000
31.5024.6019.00.4100000.3166670.726667
42.0031.4024.40.5233330.4066670.930000
\n", "
" ], "text/plain": [ " Degrees P_wave_minutes P_wave_seconds S-P_minutes S-P_seconds \\\n", "0 0.0 0 5.4 0 4.0 \n", "1 0.5 0 10.6 0 7.8 \n", "2 1.0 0 17.7 0 13.5 \n", "3 1.5 0 24.6 0 19.0 \n", "4 2.0 0 31.4 0 24.4 \n", "\n", " P_decimal_minutes SP_decimal_minutes S_decimal_minutes \n", "0 0.090000 0.066667 0.156667 \n", "1 0.176667 0.130000 0.306667 \n", "2 0.295000 0.225000 0.520000 \n", "3 0.410000 0.316667 0.726667 \n", "4 0.523333 0.406667 0.930000 " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DeltaTimeData['SP_decimal_minutes']=DeltaTimeData['S-P_minutes']+\\\n", " DeltaTimeData['S-P_seconds']/60. # convert delay time to decimal minutes\n", "DeltaTimeData['S_decimal_minutes']=DeltaTimeData['P_decimal_minutes']+\\\n", " DeltaTimeData['SP_decimal_minutes'] # calculate S wave arrival time in minutes\n", "DeltaTimeData.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OK. Now we are ready to make a plot of our travel time and angular distances (just like in the movie!). Combining **Pandas DataFrames** with **matplotlib** turns out to be pretty simply, where we just use the name of the **Series** we want to plot as an argument in **plt.plot( )**. " ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "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VL37btVFi4KOLDoAKRrGMdb7CPLol19+4bffftv9+Oeff6ZatWr77NemTRvefvttateuTaFChTjqqKMYN24cLVu2BGD9+vVUDtWlfeONN3a/TkS46KKLuPPOOznxxBMpV64cYE1SL7300h6fC7b8ZcOGDenVqxfJycksXLgw/7+0c1Hizz+hVy+r9dO9uy3qMmQIpKbCM89AaFVYFyZvGsqjTZs2ceutt7Ju3TqKFClCrVq1GDx48D77Va9eHbCEANCqVStSU1M58sgjAXjkkUfo2LEjlStX5tRTT91dchqseahp06YMHz5897YBAwbQo0cPGjVqRHp6Om3atOHVV1/lhRdeYOLEiRQuXJh69epxzjnnRO7LOxcAVfjhB+u7+/BD23bRRXDbbdC6deIO/cwPES9DnR+8DHX+8H8zF4t27LCZvy+8YNU/y5a1cf89ekAOF+Eum6goQ+2cc3n1zz82+uell2zxl7p1YeBAG/tfqlTQ0cUXTwTOuaiyaBE8/7xV/tyyBc46y9r/zz472AXe41lMJwJVRbxhMCyx0AToEtu0adbR++GHVuitSxe44w5o2DDoyOJfzCaCEiVKsGbNGsqVK+fJIBeqypo1a3ySmYs6GRlW9//pp23Gb9mytuLXrbcmXuG3IMVsIqhSpQqpqamsWrUq6FBiQokSJXySmYsaO3bYco/PPGPlHqpWteagbt2gTJmgo0s8MZsIihYtunsWrnMuNmzcaKUfnn/exvw3bAhvvWWrfiVC3f9oFbOJwDkXO1atghdftBFAa9daIbjXXrMOYG/ZDZ4nAudcxCxbBv362UF/61abANarl63/66KHJwLnXL779Vd46ilr9lG1EUC9etk6AC76eCJwzuWbOXPgv/+1dQCKFYObboK777bOYBe9PBE45w5ZSgo88YSVgC5dGu65x+YAVKwYdGQuHJ4InHN5NmUK9OkDX3xhcwAeeshX/opFngiccwdt8mRLAF9/DeXLw5NPws03w+GHBx2ZywtPBM65sH3zDTz6qP2tWNFGBN10kxeBi3WeCJxzufr2W3jkEUsAxxxjE8K6d4fDDgs6MpcfvJafc26/Jk2C00+3CWALF9qaAIsXQ8+engTiiScC59w+vv8e2rWDtm33TAC33w4lSwYdnctvngicc7v9+KOVfWjVyuYEPPecJ4BEELFEICLHichEEVkg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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(DeltaTimeData['Degrees'],DeltaTimeData['P_decimal_minutes'],'r-',label='P waves',linewidth=2)\n", " # plots the P wave arrival as red lines\n", "# notice the linewidth=2 makes the line heavier. the default is linewidth=1\n", "plt.plot(DeltaTimeData['Degrees'],DeltaTimeData['S_decimal_minutes'],'b-',label='S waves') \n", " # plots the S wave arrival as blue lines\n", "plt.xlabel('Arc Distance (degrees)') # labels the x axis\n", "plt.ylabel('Time (minutes)'); # labels the y axis\n", "plt.legend(loc=2); # location 2 is in the upper left hand corner" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or we could plot the data as squares and triangles" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "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c5IukoiEGm3QV5xSkRrKlRMsp0n35JNPcv/99/P000+z00478frrr7Oh66A1EamqOPL/jZD6KSQVLYJc/zDK+QfT0dHBwIED2WmnnYBgmoj3vOc92+2zatUqDj30UAAWLlyImfHqq68CwRQS77zzDvfddx9HHHEEY8aM4dhjj+W1115jy5YtNDc38+abb2491vve9z5ee+01Vq9ezcknn8xhhx3GYYcdxuOPPw7AY489RktLCy0tLYwZM4Y1a9aU/uVE6ojO/MuXikAQh+OOO44VK1aw//778+Uvf5nHHnus2z6DBw9m/fr1vP3227S1tdHa2kpbWxuvvPIKgwcPZuedd+boo4/mqaee4plnnmHSpEl873vfo0ePHpxwwgncddddAMyZM4fm5maampq48MILufjii5k7dy533HEHn/vc5wC45ppruOGGG1iwYAFtbW306dOnqn8PkWpS5V9ZqUgNxaFv377Mnz+ftrY2Zs6cycSJE5k2bRpnnXXWdvsdddRRPP7448yaNYvLL7+chx56CHffOg11e3s7EydOpKOjgw0bNjB8+HAgmGfo6quv5uyzz+b3v//91onn/vznP7N06dKtx3/77bdZs2YNY8eO5ZJLLmHy5Ml86lOfYujQodX5Q4gkoJLpn1qY6ydxUaYoTfpW7jTU+aZ7rZTbb7/dP/GJT3Tbfsstt/hll13mhx9+uG/evNmPOOII/8IXvuD33Xefu7tPmDDB77nnHnd3nzlzpk+YMMHd3bds2eL77ruvr1q1ypubm/311193d/cBAwb4O++8k7UMixYt8mnTpvmQIUN82bJl3V7XNNRS7yo95XOlpnuuVSQ9DXWjW758Oc8///zW5wsWLOC9731vt/3Gjx/P9OnT2W+//ejRowd77LEHDzzwAGPHjgXgrbfeYsiQYHbuW265Zev7zIyTTjqJSy65hIMOOogBAwYAQUrqRz/60XafC8Hyl6NGjeKb3/wmra2tPPfcc5X/0iIJqHQaKM0poFxSEQhyLe9WzrJva9eu5cwzz9y6TvDSpUu56qqruu3X3NwMBAEB4Oijj6Z///7svvvuAFx11VWccsopjBs3joEDB2733okTJzJ9+vStaSEI1iaeN28eo0ePZsSIEVuXpfzhD3/IyJEjOfjgg+nTpw/HH3986V9OJGGq/Ksr9mmoK0HTUFeG/mZSLyox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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(DeltaTimeData['Degrees'],DeltaTimeData['P_decimal_minutes'],'r^',label='P waves')\n", " # plots the P wave arrival as red triangles (^)\n", "plt.plot(DeltaTimeData['Degrees'],DeltaTimeData['S_decimal_minutes'],'bs',label='S waves') \n", " # plots the S wave arrival as blue squares (s)\n", "plt.xlabel('Arc Distance (degrees)') # labels the x axis\n", "plt.ylabel('Time (minutes)'); # labels the y axis\n", "plt.legend(loc=2); # location 2 is in the upper left hand corner" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have two different symbols, red triangles and blue squares. We used the **label** argument to label the symbol types and then use the **plt.legend( )** method to place the legend onto the figure. \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next lecture, we'll use this on real P and S wave arrival data. We will calulate the time delay between the P and S wave arrival, find that time delay in our DeltaTimeData DataFrame, find the corresponding angular distance, and then calculate the actual great circle between the two points to help find the location of the source. So stay tuned. :) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we go, let's leave a nice data file to work on. We can make a **DataFrame** of our earthquake data called **EQ**." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...25190251912519225193251942519525196251972519825199
00.00.0008330.0016670.00250.0033330.0041670.0050.0058330.0066670.0075...20.99166720.992520.99333320.99416720.99520.99583320.99666720.997520.99833320.999167
11807.01749.0000001694.0000001618.00001516.0000001394.0000001282.0001198.0000001077.000000957.0000...-9275.000000-10063.0000-10806.000000-11515.000000-12214.000-12915.000000-13599.000000-14264.0000-14888.000000-15489.000000
\n", "

2 rows × 25200 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 \\\n", "0 0.0 0.000833 0.001667 0.0025 0.003333 0.004167 \n", "1 1807.0 1749.000000 1694.000000 1618.0000 1516.000000 1394.000000 \n", "\n", " 6 7 8 9 ... 25190 \\\n", "0 0.005 0.005833 0.006667 0.0075 ... 20.991667 \n", "1 1282.000 1198.000000 1077.000000 957.0000 ... -9275.000000 \n", "\n", " 25191 25192 25193 25194 25195 \\\n", "0 20.9925 20.993333 20.994167 20.995 20.995833 \n", "1 -10063.0000 -10806.000000 -11515.000000 -12214.000 -12915.000000 \n", "\n", " 25196 25197 25198 25199 \n", "0 20.996667 20.9975 20.998333 20.999167 \n", "1 -13599.000000 -14264.0000 -14888.000000 -15489.000000 \n", "\n", "[2 rows x 25200 columns]" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EQ=pd.DataFrame([minutes,velocity])\n", "EQ.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hmmm, that doesn't look like what we really need. First, there are only two rows (minutes and velocity) and we want\n", "two columns, not two rows. To do that, we can transpose the **DataFrame**, just like a **NumPy** array: " ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
00.0000001807.0
10.0008331749.0
20.0016671694.0
30.0025001618.0
40.0033331516.0
\n", "
" ], "text/plain": [ " 0 1\n", "0 0.000000 1807.0\n", "1 0.000833 1749.0\n", "2 0.001667 1694.0\n", "3 0.002500 1618.0\n", "4 0.003333 1516.0" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EQ=pd.DataFrame([minutes,velocity]).transpose()\n", "EQ.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That is better, but we would really like column headers with names, not numbers so we change the column headers with the **column** attribute (as before). " ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MinutesVelocity
00.0000001807.0
10.0008331749.0
20.0016671694.0
30.0025001618.0
40.0033331516.0
\n", "
" ], "text/plain": [ " Minutes Velocity\n", "0 0.000000 1807.0\n", "1 0.000833 1749.0\n", "2 0.001667 1694.0\n", "3 0.002500 1618.0\n", "4 0.003333 1516.0" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EQ.columns=['Minutes','Velocity']\n", "EQ.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we now we can save our DataFrames as a file. " ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "EQ.to_csv('minutes_velocity.csv',index=None)\n", "DeltaTimeData.to_csv('DeltaTimeData.csv',index=None)\n", "# by setting index to None, we don't have the indices as a column in the datafile. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can safely leave this project until later. \n" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "# cleanup\n", "os.remove('seismogram.png')\n", "os.remove('PSArrival.csv') \n", "os.remove('PSArrival.txt') \n", "# this command will delete anything that starts with PSArrival.\n", "os.remove('minutes_velocity.csv') # I already put this into the next Lecture so don't worry. \n", "os.remove('DeltaTimeData.csv')" ] } ], "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.6.7" } }, "nbformat": 4, "nbformat_minor": 1 }