{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Meta-analysis of LCIA methods\n",
    "\n",
    "This notebook assumes you have completed the `Getting started with Brighway2` notebook.\n",
    "\n",
    "This notebook shows the real power of Brightway2, and in particular the ability to script and analyze many LCA calculations.\n",
    "\n",
    "At the end of this notebook, you should:\n",
    "\n",
    "* Be able to make many LCA calculations\n",
    "* Use `multiprocessing` to utilize the full power of your computer\n",
    "* Store calculations results in `numpy` arrays, for analysis and interpretation\n",
    "* Use matplotlib to display results graphically\n",
    "\n",
    "If you finish the notebook, you get another kitten!\n",
    "\n",
    "You should **download this notebook** and run it cell by cell - don't just read it on the web!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Starting at the beginning\n",
    "\n",
    "Import brightway2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from brightway2 import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Copy our work from introductory notebook\n",
    "\n",
    "And change to our new project."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "if \"BW2 introduction\" not in projects:\n",
    "        raise ValueError(\"Must have run introductory notebook already!\")\n",
    "        \n",
    "if \"Meta-analysis\" not in projects:\n",
    "    projects.set_current(\"BW2 introduction\")\n",
    "    projects.copy_project(\"Meta-analysis\")\n",
    "else:\n",
    "    projects.set_current(\"Meta-analysis\")\n",
    "\n",
    "assert 'forwast' in databases, \"Something went wrong - please run the introductory notebook again\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 277 activities in our database\n"
     ]
    }
   ],
   "source": [
    "print(\"There are {} activities in our database\".format(len(Database('forwast'))))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's start by picking some LCIA methods to analyze - we don't want to use all the available ones, as many are specific to just a few biosphere flows, and it wouldn't make sense to compare these methods to other methods."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 52 methods to test\n"
     ]
    }
   ],
   "source": [
    "CANDIDATES = [\n",
    " ('CML 2001', 'acidification potential', 'average European'),\n",
    " ('CML 2001', 'climate change', 'GWP 100a'),\n",
    " ('CML 2001', 'eutrophication potential', 'average European'),\n",
    " ('CML 2001', 'freshwater aquatic ecotoxicity', 'FAETP 100a'),\n",
    " ('CML 2001', 'human toxicity', 'HTP 100a'),\n",
    " ('CML 2001', 'land use', 'competition'),\n",
    " ('CML 2001', 'marine aquatic ecotoxicity', 'MAETP infinite'),\n",
    " ('CML 2001', 'resources', 'depletion of abiotic resources'),\n",
    " ('CML 2001', 'stratospheric ozone depletion', 'ODP 25a'),\n",
    " ('EDIP2003', 'ecotoxicity', 'in sewage treatment plants'),\n",
    " ('EDIP2003', 'eutrophication', 'terrestrial eutrophication'),\n",
    " ('EDIP2003', 'renewable resources', 'wood'),\n",
    " ('EDIP2003', 'stratospheric ozone depletion', 'ODP total'),\n",
    " ('EPS 2000', 'total', 'abiotic stock resources'),\n",
    " ('EPS 2000', 'total', 'emissions into soil'),\n",
    " ('EPS 2000', 'total', 'emissions into water'),\n",
    " ('EPS 2000', 'total', 'land occupation'),\n",
    " ('IMPACT 2002+ (Endpoint)', 'ecosystem quality', 'land occupation'),\n",
    " ('IMPACT 2002+ (Endpoint)', 'human health', 'ozone layer depletion'),\n",
    " ('IMPACT 2002+ (Endpoint)', 'resources', 'mineral extraction'),\n",
    " ('IMPACT 2002+ (Endpoint)', 'resources', 'non-renewable energy'),\n",
    " ('IMPACT 2002+ (Midpoint)', 'ecosystem quality', 'aquatic acidification'),\n",
    " ('IPCC 2001', 'climate change', 'GWP 100a'),\n",
    " ('ReCiPe Endpoint (H,A)',\n",
    "  'ecosystem quality',\n",
    "  'agricultural land occupation'),\n",
    " ('ReCiPe Endpoint (H,A)',\n",
    "  'ecosystem quality',\n",
    "  'freshwater eutrophication'),\n",
    " ('ReCiPe Endpoint (H,A)',\n",
    "  'ecosystem quality',\n",
    "  'natural land transformation'),\n",
    " ('ReCiPe Endpoint (H,A)',\n",
    "  'ecosystem quality',\n",
    "  'terrestrial acidification'),\n",
    " ('ReCiPe Endpoint (H,A)', 'ecosystem quality', 'urban land occupation'),\n",
    " ('ReCiPe Endpoint (H,A)', 'human health', 'particulate matter formation'),\n",
    " ('ReCiPe Endpoint (H,A)', 'resources', 'fossil depletion'),\n",
    " ('TRACI', 'environmental impact', 'acidification'),\n",
    " ('TRACI', 'environmental impact', 'eutrophication'),\n",
    " ('TRACI', 'environmental impact', 'global warming'),\n",
    " ('TRACI', 'environmental impact', 'ozone depletion'),\n",
    " ('TRACI', 'human health', 'respiratory effects, average'),\n",
    " ('eco-indicator 99, (H,A)',\n",
    "  'ecosystem quality',\n",
    "  'acidification & eutrophication'),\n",
    " ('eco-indicator 99, (H,A)', 'ecosystem quality', 'ecotoxicity'),\n",
    " ('eco-indicator 99, (H,A)', 'ecosystem quality', 'land occupation'),\n",
    " ('eco-indicator 99, (H,A)', 'human health', 'carcinogenics'),\n",
    " ('eco-indicator 99, (H,A)', 'human health', 'climate change'),\n",
    " ('eco-indicator 99, (H,A)', 'human health', 'ozone layer depletion'),\n",
    " ('eco-indicator 99, (H,A)', 'resources', 'fossil fuels'),\n",
    " ('eco-indicator 99, (H,A)', 'resources', 'mineral extraction'),\n",
    " ('ecological footprint', 'total', 'CO2'),\n",
    " ('ecological footprint', 'total', 'land occupation'),\n",
    " ('ecological footprint', 'total', 'nuclear'),\n",
    " ('ecological scarcity 2006', 'total', 'deposited waste'),\n",
    " ('ecological scarcity 2006', 'total', 'emission into groundwater'),\n",
    " ('ecological scarcity 2006', 'total', 'energy resources'),\n",
    " ('ecological scarcity 2006', 'total', 'natural resources'),\n",
    " ('ecosystem damage potential', 'total', 'linear, land occupation'),\n",
    " ('ecosystem damage potential', 'total', 'linear, land transformation'),\n",
    "]\n",
    "print(\"There are {} methods to test\".format(len(CANDIDATES)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will now compute an LCA score for each process in the `FORWAST` database, for each of these 52 methods. To do this, we use the [multiprocessing](https://docs.python.org/3.5/library/multiprocessing.html) library to dispatch jobs to each available CPU core on our machine. We will store our results in an [numpy](http://www.numpy.org/) array."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import multiprocessing\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we create a function that will calculate the LCA score for one method and a list of activities. To do this, we use the ability of the `LCA` class to factorize the technosphere matrix into two triangular matrices (this is what `lca.decompose_technosphere()` does), which will make the actual LCI calculations *very* fast, on the order of 100 per second.\n",
    "\n",
    "There are one potentially tricky thing we need to be aware of. We use the convenience method `redo_lcia`. This will change the LCA demand vector, but will cause an error if the new demanded activity is not in the foreground and background databases that form the technosphere matrix. This is the whole point of `redo_lci` and `redo_lcia` - if the technosphere doesn't change, then we can make calculations faster. If it does change, then we might as well create a whole new `LCA` object. Because we are drawing our list of activities from the same database, this is no problem, but it could be if we were to sample from different databases."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def many_activities_one_method(activities, method):\n",
    "    \"\"\"\n",
    "    Calculate LCA scores for many activities and one method. \n",
    "    \n",
    "    Returns a 1-dimensional numpy array of scores in the same order as `activities`.\n",
    "    \n",
    "    Note that this assumes that all activities link to the same background databases, \n",
    "    i.e. the technosphere matrix doesn't change from one activity to the next.\n",
    "    \"\"\"\n",
    "    output = np.zeros((len(activities),))        # LCA scores will be put here\n",
    "    lca = LCA({activities[0]: 1}, method=method) # LCA object which will do all calculating\n",
    "    lca.lci()                                    # Calculate inventory once to load all database data\n",
    "    lca.decompose_technosphere()                 # Keep the LU factorized matrices for faster calculations\n",
    "    lca.lcia()                                   # Load method data\n",
    "    for index, activity_name in enumerate(activities):\n",
    "        lca.redo_lcia({activity_name: 1})        # It is almost too easy...\n",
    "        output[index] = lca.score\n",
    "    return (method, output)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we define the function that will dispatch the activities and methods using a `multiprocessing` pool. This isn't particularly difficult - just get sorted lists of the inputs, and use `apply_async` (there are also other possibilities, see the [multiprocessing](https://docs.python.org/3.5/library/multiprocessing.html) documentation, or search for tutorials on the web."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def get_lots_of_lca_scores():\n",
    "    \"\"\"Compute LCA scores for all activities and all LCIA methods.\"\"\"\n",
    "    db_data = Database(\"forwast\").load()\n",
    "    activities = sorted(db_data.keys())             # Sort to make sure order is always the same\n",
    "    candidates = sorted(CANDIDATES)                 # Sort to make sure order is always the same\n",
    "    num_methods, num_processes = len(candidates), len(activities)\n",
    "\n",
    "    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())\n",
    "    jobs = [pool.apply_async(\n",
    "        many_activities_one_method,                 # Function\n",
    "        (activities, method)                        # Inputs (activities are always the same, but method changes in the \"for\" loop)\n",
    "    ) for method in candidates]\n",
    "    pool.close()\n",
    "    pool.join()                                     # Blocks doing anything more until calculation is finished\n",
    "    results = dict([job.get() for job in jobs])\n",
    "\n",
    "    output = np.zeros((num_processes, num_methods)) # Create array to store calculated results\n",
    "    for index, method in enumerate(candidates):\n",
    "        output[:, index] = results[method]          # Fill in a column of the results array\n",
    "    return output, candidates, activities"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we are ready to do the actual calculation. Let's time it to see how long it takes us to make more than 50.000 LCA calculations..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5.817174911499023\n"
     ]
    }
   ],
   "source": [
    "from time import time\n",
    "\n",
    "start = time()\n",
    "lca_scores, methods, activities = get_lots_of_lca_scores()\n",
    "print(time() - start)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "More than 8.000 LCA calculations per second. Now we interpret these scores. Because they can be so different from method to method, if would be nice to normalize them. But first, let's do some basic sanity checks on the results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Array shape: (277, 52)\n",
      "Number of activities: 277\n",
      "Average: 30560247080.1\n",
      "Median (of absolute value): 0.0\n",
      "Min, Max: -262.211210418 3.76229001741e+14\n",
      "Fraction of all scores with score of zero: 0.538461538462\n",
      "Methods where all scores are zero: 28\n",
      "Activities where all scores are zero: 0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(array([14403,     0,     0,     0,     0,     0,     0,     0,     0,     1]),\n",
       " array([ -2.62211210e+02,   3.76229002e+13,   7.52458003e+13,\n",
       "          1.12868701e+14,   1.50491601e+14,   1.88114501e+14,\n",
       "          2.25737401e+14,   2.63360301e+14,   3.00983201e+14,\n",
       "          3.38606102e+14,   3.76229002e+14]))"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"Array shape:\", lca_scores.shape)\n",
    "print(\"Number of activities:\", len(activities))\n",
    "print(\"Average:\", np.average(lca_scores))\n",
    "print(\"Median (of absolute value):\", np.median(np.abs(lca_scores)))\n",
    "print(\"Min, Max:\", np.min(lca_scores), np.max(lca_scores))\n",
    "print(\"Fraction of all scores with score of zero:\", (lca_scores == 0).sum() / float(lca_scores.shape[0] * lca_scores.shape[1]))\n",
    "print(\"Methods where all scores are zero:\", (lca_scores.sum(axis=0) == 0).sum())\n",
    "print(\"Activities where all scores are zero:\", (lca_scores.sum(axis=1) == 0).sum())\n",
    "np.histogram(lca_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we need to figure out how to compare these scores. We have no information on the distribution of scores for each method, and no reason to think that they are e.g. normally distributed, so most of our paramteric statistics won't work. Instead, we can compute a [rank order correlation](http://en.wikipedia.org/wiki/Spearman's_rank_correlation_coefficient) coefficient, but using [Kendall's τ](http://en.wikipedia.org/wiki/Kendall_tau_rank_correlation_coefficient) instead of Spearman's ROCC, as in my experience it is a better discriminator."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from scipy import stats\n",
    "\n",
    "def create_correlation_matrix(scores_array):\n",
    "    num_methods = scores_array.shape[1]\n",
    "    correlations = np.zeros((num_methods, num_methods))\n",
    "\n",
    "    for row in range(num_methods):\n",
    "        for col in range(num_methods):\n",
    "            if col <= row:\n",
    "                continue                               # Only need to compute correlation once\n",
    "            dataset_1 = scores_array[:, row]\n",
    "            dataset_2 = scores_array[:, col]\n",
    "            mask = (dataset_1 != 0) * (dataset_2 != 0) # Ignore activities that have zero score\n",
    "            corr = stats.kendalltau( # Get tau value, drop p-statistic\n",
    "                dataset_1[mask], \n",
    "                dataset_2[mask]\n",
    "            )[0]\n",
    "            if np.isnan(corr):\n",
    "                correlations[row, col] = 0\n",
    "            else:\n",
    "                correlations[row, col] = corr\n",
    "\n",
    "    # Drop rows of zeros\n",
    "    mask = correlations.sum(axis=0) != 0\n",
    "    correlations = correlations[:, mask]\n",
    "\n",
    "    # Drop columns of zeros\n",
    "    mask = correlations.sum(axis=1) != 0\n",
    "    correlations = correlations[mask, :]\n",
    "\n",
    "    # correlations = correlations + correlations.T       # Make sorting easier by adding filling in lower left triangle\n",
    "    return correlations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "correlation_matrix = create_correlation_matrix(lca_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's visualize this matrix.\n",
    "\n",
    "By the way, I strongly recommend investigating the [seaborn](http://stanford.edu/~mwaskom/software/seaborn/index.html) graphing library for this kind of analysis. In this workbook, we use matplotlib, to avoid having to install more dependencies."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Warning: metadata {'config': True} was set from the constructor.  Metadata should be set using the .tag() method, e.g., Int().tag(key1='value1', key2='value2')\n",
      "Warning: metadata {'config': True} was set from the constructor.  Metadata should be set using the .tag() method, e.g., Int().tag(key1='value1', key2='value2')\n",
      "Warning: metadata {'config': True} was set from the constructor.  Metadata should be set using the .tag() method, e.g., Int().tag(key1='value1', key2='value2')\n",
      "Warning: metadata {'config': True} was set from the constructor.  Metadata should be set using the .tag() method, e.g., Int().tag(key1='value1', key2='value2')\n",
      "Warning: metadata {'config': True} was set from the constructor.  Metadata should be set using the .tag() method, e.g., Int().tag(key1='value1', key2='value2')\n",
      "Warning: InlineBackend._config_changed is deprecated: use @observe and @unobserve instead.\n",
      "Warning: A parent of InlineBackend._config_changed has adopted the new @observe(change) API\n"
     ]
    }
   ],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We use the [cubehelix](http://www.ifweassume.com/2013/05/cubehelix-or-how-i-learned-to-love.html) colormap, which you should know about :)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 22.0, 0.0, 22.0)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x114fb49e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig = plt.gcf()\n",
    "fig.set_size_inches(12, 12)\n",
    "\n",
    "masked_correlation = np.ma.array(correlation_matrix, mask=correlation_matrix == 0).T\n",
    "plt.pcolor(masked_correlation, cmap=plt.cm.cubehelix_r)\n",
    "plt.colorbar()\n",
    "plt.ylim(None, correlation_matrix.shape[1] - 1)\n",
    "plt.xlim(None, correlation_matrix.shape[0] - 1)\n",
    "plt.axis('off')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is quite interesting. The first thing that jumps out at me is how strongly some methods are correlated. Of course, there will be many strong correlation, as many methods use the same factors for e.g. global warming, or the same model or assumption for e.g. ecotoxicity.\n",
    "\n",
    "Let's find the two methods with the lowest negative correlation, and graph their actual values compared with their ranks:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minimum correlation: 0.0\n"
     ]
    }
   ],
   "source": [
    "print(\"Minimum correlation:\", correlation_matrix.min())\n",
    "# Get array indices\n",
    "indices_min_correlation = np.unravel_index(np.argmin(correlation_matrix), correlation_matrix.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Taking 277 activities scores from 277 possible\n"
     ]
    }
   ],
   "source": [
    "xs = lca_scores[:, indices_min_correlation[0]]\n",
    "ys = lca_scores[:, indices_min_correlation[1]]\n",
    "mask = (xs != 0) * (ys != 0)\n",
    "print(\"Taking {} activities scores from {} possible\".format(mask.sum(), xs.shape[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lots of graphing code to make something decent - there is lots of discussion of matplotlib and its many, many functions all over the web."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x11323ce80>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x116236978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.gcf()\n",
    "fig.set_size_inches(18, 6)\n",
    "\n",
    "ax = plt.subplot(131)\n",
    "ax.hexbin(np.log(xs[mask]), np.log(ys[mask]), cmap=plt.cm.gist_stern_r, gridsize=30)\n",
    "ax.set_xticks([])\n",
    "ax.set_yticks([])\n",
    "# TODO: Colorbar?\n",
    "x_low, x_high = ax.get_xlim()\n",
    "ax.set_xlim(x_low * 1.1, x_high * 1.2)\n",
    "y_low, y_high = ax.get_ylim()\n",
    "ax.set_ylim(y_low * 1.1, y_high * 1.2)\n",
    "ax.set_title(\"Data (hexbin)\")\n",
    "\n",
    "ax = plt.subplot(132)\n",
    "ax.loglog(\n",
    "    xs[mask], \n",
    "    ys[mask], \n",
    "    marker=\".\",\n",
    "    linestyle=\"None\",\n",
    "    alpha=0.3,\n",
    "    markersize=12,\n",
    "    mfc=\"g\",\n",
    "    mec=\"None\"\n",
    ")\n",
    "ax.set_title(\"Raw data\")\n",
    "\n",
    "ax = plt.subplot(133)\n",
    "ax.plot(\n",
    "    np.argsort(np.argsort(xs[mask])),  # Ranks instead of data values\n",
    "    np.argsort(np.argsort(ys[mask])),  # Ranks instead of data values \n",
    "    marker=\".\",\n",
    "    linestyle=\"None\",\n",
    "    alpha=0.3,\n",
    "    markersize=12,\n",
    "    mfc=\"g\",\n",
    "    mec=\"None\"\n",
    ")\n",
    "ax.set_title(\"Ranked data\")"
   ]
  }
 ],
 "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.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
