FFT_for_analyize_data.ipynb 31.7 KB
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import math\n",
    "import wave\n",
    "import pyaudio\n",
    "from scipy.fftpack import fft\n",
    "from scipy.io import wavfile # get the api\n",
    "\n",
    "CHUNK = 1024\n",
    "FORMAT = pyaudio.paInt16\n",
    "CHANNELS = 1\n",
    "RATE = 44100\n",
    "RECORD_SECONDS = 5\n",
    "count = 0\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "* recording\n",
      "* done recording\n"
     ]
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/rfj/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/ipykernel_launcher.py:8: RuntimeWarning: overflow encountered in short_scalars\n",
      "  \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "-24068"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Fs = 44032 # 샘플링 주파수\n",
    "T = 1/Fs # 샘플링 interval time <-? \n",
    "te= 5 #end of time\n",
    "t = np.arange(0,te,T) # Time vector (0초부터 te초까지 T간격으로 떨어져있는 배열생성)\n",
    "fs, data = wavfile.read('sounds/output%d.wav'% count) # load the data\n",
    "y = data.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "x and y must have same first dimension, but have shapes (220160,) and (1,)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-128-0aaa3ccbf52c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdpi\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfacecolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'white'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'time($sec$)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'y'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m   3356\u001b[0m                       mplDeprecation)\n\u001b[1;32m   3357\u001b[0m     \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3358\u001b[0;31m         \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   3359\u001b[0m     \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   3360\u001b[0m         \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hold\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwashold\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1853\u001b[0m                         \u001b[0;34m\"the Matplotlib list!)\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1854\u001b[0m                         RuntimeWarning, stacklevel=2)\n\u001b[0;32m-> 1855\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1856\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1857\u001b[0m         inner.__doc__ = _add_data_doc(inner.__doc__,\n",
      "\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1525\u001b[0m         \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_alias_map\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1526\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1527\u001b[0;31m         \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1528\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1529\u001b[0m             \u001b[0mlines\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_grab_next_args\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m    404\u001b[0m                 \u001b[0mthis\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    405\u001b[0m                 \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 406\u001b[0;31m             \u001b[0;32mfor\u001b[0m \u001b[0mseg\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    407\u001b[0m                 \u001b[0;32myield\u001b[0m \u001b[0mseg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    408\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[0;34m(self, tup, kwargs)\u001b[0m\n\u001b[1;32m    381\u001b[0m             \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindex_of\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    382\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 383\u001b[0;31m         \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_xy_from_xy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    384\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    385\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcommand\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'plot'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda2/envs/AGIOT2/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_xy_from_xy\u001b[0;34m(self, x, y)\u001b[0m\n\u001b[1;32m    240\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    241\u001b[0m             raise ValueError(\"x and y must have same first dimension, but \"\n\u001b[0;32m--> 242\u001b[0;31m                              \"have shapes {} and {}\".format(x.shape, y.shape))\n\u001b[0m\u001b[1;32m    243\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    244\u001b[0m             raise ValueError(\"x and y can be no greater than 2-D, but have \"\n",
      "\u001b[0;31mValueError\u001b[0m: x and y must have same first dimension, but have shapes (220160,) and (1,)"
     ]
    },
    {
     "data": {
      "image/png": "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nlGse/7WW2/p4MGDWrZsWWzsxIkTkqSUlBS98cYbmjt37vguepJL5O88MzNTqamp8nq9sbGcnBz19PRoYGBAaWlp47rmyS6RPV+9erVKSkp02223SZIuu+wyffDBB7r99ttVW1s7pj8jjdGfP1NSUjR9+vRTvp0J/1fhZ76TL5E9l6QNGzbovvvu03PPPae8vLzxXuYZxbrn8+bN0+uvv67Ozs7Y5YYbbtDVV1+tzs5OhUKhZC190krk73zhwoXav39/LNQk6c0331RmZibhcAoS2fNjx44NCwSv1yv30Rv6x22tZ6vRnj/z8vKUmpp66jdkenvlODn50Z7m5ma3b98+V1FR4c4991x38OBB55xzJSUlce/UfeWVV5zX63X333+/6+rqcvfffz8f1TSy7vkDDzzg0tLS3Pbt292hQ4dil6NHj07UQ5h0rHv+SXzaws6655FIxJ133nnuzjvvdG+88YZ79tln3YwZM9yPf/zjiXoIk451z9esWeOmTp3qtm7d6g4cOOB27tzp5s6d62666aaJegiTytGjR11HR4fr6OhwktzGjRtdR0dH7KOx1dXVrqSkJDb/5Ec1Kysr3b59+1xzc/Pk/aimc85t3rzZZWdnu7S0NDd//nz34osvxv7bVVdd5VauXBk3/7e//a275JJLXGpqqps3b57bsWNHklc8+Vn2PDs720kadlmzZk3yFz6JWf/O/3/EQ2Kse97W1uby8/Odz+dzc+bMcevXr3eDg4NJXvXkZtnz48ePu7Vr17q5c+c6v9/vQqGQ++53v+v+85//TMDKJ58XXnhhxP83n9zjlStXuquuuirumF27drkrr7zSpaWluYsvvtg1Njaa75ef5AYAACYT/p4HAAAwuRAPAADAhHgAAAAmxAMAADAhHgAAgAnxAAAATIgHAABgQjwAAAAT4gEAAJgQDwAAwIR4AAAAJsQDAAAw+T8YVdVPsQpR6wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(num=1,dpi=100,facecolor='white')\n",
    "plt.plot(t,y,'r')\n",
    "plt.xlim(0, 5)\n",
    "plt.xlabel('time($sec$)')\n",
    "plt.ylabel('y')\n",
    "plt.savefig(\"sounds/test_figure%d.png\"%count,dpi=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "'''\n",
    "FFT 계산\n",
    "양측파대 설명 = http://linecard.tistory.com/46\n",
    "우리는 양측파대 안쓰고 단측파대를 쓰나보지..?\n",
    "'''\n",
    "\n",
    "n= len(y) #신호의 길이 (FFT의 샘플개수 결정) (1000)\n",
    "NFFT = n # C++ 에서는 NFFT = 2^nextpow2(length(y)) 해줘야하는데 파이썬에서는 알아서해줌 (FFT의 샘플개수)\n",
    "\n",
    "k=np.arange(NFFT) #NFFT 샘플개수만큼의 배열 (1000개의 원소)\n",
    "\n",
    "f0 = k*Fs/NFFT # <- NFFT 샘플개수만큼의 배열 양측파대 (double side frequency) 범위\n",
    "\n",
    "f0 = f0[range(math.trunc(NFFT/2))]\n",
    "\n",
    "Y=np.fft.fft(y)/NFFT #y(wave)를 푸리에변환한 후 1000으로 나눔\n",
    "Y=Y[range(math.trunc(NFFT/2))]\n",
    "#amplitude_Hz = 2*abs(Y) #\"진폭\"을 구하기위해 abs(푸리에변환한놈)x2해줌\n",
    "amplitude_Hz = abs(Y) #\"진폭\"을 구하기위해 abs(푸리에변환한놈)x2해줌\n",
    "phase_ang = np.angle(Y)*180/np.pi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# amplitude....\n",
    "plt.subplot(3,1,2)\n",
    "\n",
    "# Plot single-sided amplitude spectrum.\n",
    "\n",
    "plt.plot(f0,amplitude_Hz,'r')   #  2* ???\n",
    "plt.xticks(np.arange(0,20000,2000))\n",
    "plt.xlim( 0, 20000)\n",
    "plt.ylim( 0, 50)\n",
    "#plt.title('Single-Sided Amplitude Spectrum of y(t)')\n",
    "plt.xlabel('frequency($Hz$)')\n",
    "plt.ylabel('amplitude')\n",
    "plt.grid()\n",
    "plt.savefig(\"sounds/test_figure%d-fft.png\"%count,dpi=300)\n",
    "\n",
    "\n",
    "print(\"%d번 음성 FFT완료\"%count)\n",
    "count = count + 1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''\n",
    "Fs = 2000 # 샘플링 주파수\n",
    "T = 1/Fs # 샘플링 interval time <-? \n",
    "te= 5 #end of time\n",
    "t = np.arange(0,te,T) # Time vector (0초부터 te초까지 T간격으로 떨어져있는 배열생성)\n",
    "noise = np.random.normal(0,0.05,len(t)) \n",
    "x=0.6*np.cos(2*np.pi*60*t + np.pi/2) + np.cos(2*np.pi*120*t)\n",
    "y= x+noise\n",
    "\n",
    "'''\n",
    "'''\n",
    "# figure 1 ..................................\n",
    "plt.figure(num=2,dpi=100,facecolor='white')\n",
    "plt.subplots_adjust(hspace = 0.6, wspace = 0.3)\n",
    "plt.subplot(3,1,1)\n",
    "\n",
    "plt.plot(t,y,'r')\n",
    "plt.title('Signal FFT analysis')\n",
    "plt.xlabel('time($sec$)')\n",
    "plt.ylabel('y')\n",
    "\n",
    "#plt.xlim( 0, 0.1)\n",
    "\n",
    "\n",
    "# Phase .... <- 이해안감\n",
    "#plt.figure(num=2,dpi=100,facecolor='white')\n",
    "plt.subplot(3,1,3)\n",
    "plt.plot(f0,phase_ang,'r')   #  2* ???\n",
    "plt.xlim( 0, 200)\n",
    "plt.ylim( -180, 180)\n",
    "#plt.title('Single-Sided Phase Spectrum of y(t)')\n",
    "plt.xlabel('frequency($Hz$)')\n",
    "plt.ylabel('phase($deg.$)')\n",
    "plt.xticks([0, 60, 120, 200])\n",
    "plt.yticks([-180, -90, 0, 90, 180])\n",
    "plt.grid()\n",
    "\n",
    "plt.savefig(\"./test_figure2.png\",dpi=300)\n",
    "plt.show()\n",
    "\n",
    "'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}