Skip to content

Instantly share code, notes, and snippets.

@cwebber314
Created November 12, 2019 02:26
Show Gist options
  • Select an option

  • Save cwebber314/1682fae191b6be0613d3dbfd9d49c092 to your computer and use it in GitHub Desktop.

Select an option

Save cwebber314/1682fae191b6be0613d3dbfd9d49c092 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Daniel's Distance Workbook"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pylab\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"pre = (1,1)\n",
"post = (3,2)\n",
"healthy = (3,5)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xd4VGX2wPHvIZQIoYtZpAUEpYmB\nAKKAElnRtWABlF2wa+zuDyy76ooKshYs2FlX2UVFAVFWRBEsiYioSIkIBBGVEkVBSiCEgCTn98c7\nQwopM2EydzI5n+eZJ3fuvHfm5HI5eee9bxFVxRhjTHSp4XUAxhhjQs+SuzHGRCFL7sYYE4UsuRtj\nTBSy5G6MMVHIkrsxxkQhS+7GGBOFLLkbY0wUsuRujDFRqKZXH3zkkUdqQkJChY7ds2cP9erVC21A\nIRCpcUHkxmZxBcfiCk40xrV06dLfVLVZuQVV1ZNHUlKSVlRqamqFj61MkRqXauTGZnEFx+IKTjTG\nBSzRAHKsNcsYY0wUsuRujDFRyJK7McZEIc9uqJbk999/JzMzk9zc3DLLNWzYkIyMjDBFFTgv4oqN\njaVly5bUqlUrrJ9rjIlsEZXcMzMzqV+/PgkJCYhIqeV2795N/fr1wxhZYMIdl6qybds2MjMzadu2\nbdg+1xgT+QJqlhGR9SLyjYiki8iSEl4XEXlKRNaJyAoR6VGRYHJzc2natGmZid0UEBGaNm1a7jcd\nY4z3HnkEUlOL7ktNdfsrQzBt7smqmqiqPUt47U9AB98jBXi+ogFZYg+OnS9jqoZeveCiiwoSfGqq\ne96rV+V8XqiaZc4DXvb1wfxCRBqJSHNV3Ryi9zfGmCotORleew2GDIFzzklg7lyYMcPtrwyiAayh\nKiI/AjsABf6lqi8Ue30O8JCqLvQ9/wj4m6ouKVYuBVezJz4+PmnatGlFPqdhw4a0b9++3Hjy8vKI\niYkpt1xFbNiwgYsuuogvv/wy6GMLxzV16lSWLVvGY489xpw5c2jfvj0dO3YE4KyzzuKBBx6gR48K\ntV4dYt26dWRlZZVZJjs7m7i4uJB8XihZXMGxuIITaXGlpjZjwoTj2Lu3Jpdcsp4rr1wf9HskJycv\nLaUFpYhAa+59VfVnETkK+EBE1qjqgkKvl9Q2cMhfDd8fhRcAevbsqQMGDCjyekZGRkA3JHfv3s3z\nz9enV6+if/VSU+Grr+COOwL4jUoRFxdHjRo1KnRjtPAN1djYWGrXrk39+vWZN28etWrVopfv+1dM\nTAz16tUL2c3X2NhYunfvXmaZtLQ0ip/vSGBxBcfiCk4kxJWbCytWQO/ekJ8PTz4JQ4euZ+7cBK64\nIqHSau4Btbmr6s++n1uAWUDvYkUygVaFnrcEfg5FgKWpzParvLw8rrnmGrp06cKgQYPYu3cv33//\nPWeeeSZJSUn079+fNWvWAPDOO+9w4okn0r17dwYPHsyvv/5a5L0WLVrE7Nmzuf3220lMTOT7778H\n4I033qB3794ce+yxfPrppwD079+f9PT0g8f27duXFStWHP4vZIzxxGefQWIinH46vPMOXHwxzJoF\nV165nhkziuawUCs3uYtIPRGp798GBgErixWbDVzq6zXTB8gKRXv7gAElP8466wjuvx+OPhrOPRfG\njHEn6eijYcMGd+xvvx16XKC+++47brzxRlatWkWjRo148803SUlJ4emnn2bp0qU8+uij3HDDDQD0\n69ePL774guXLlzNkyBAeKXbr++STT2bw4MFMmDCB9PR0jjnmGAAOHDjA4sWLmThxIvfffz8AV199\nNf/9738BWLt2Lfv27aNbt24VOXXGGA/t3g033wz9+8O+fTBzJmRkFG1jT052z7/6qnJiCKRZJh6Y\n5euVURN4TVXfF5HrAFR1EvAecBawDsgBrqiccItq3BhOOgnGjYN77oEFC8o/JhBt27YlMTERgKSk\nJNavX8+iRYsYNmzYwTL79u0DXN/8iy++mM2bN5Obm3sweZfnwgsvLPL+AMOGDWPcuHFMmDCByZMn\nc/nll4fmFzLGhM28eZCSAps2uQQ/fjzExbnae3HJyZV3Q7Xc5K6qPwAnlLB/UqFtBW4MbWiQllby\n/t2791K/fv2DTTH33APPP1/0r+KRR5Z+fHnq1KlzcDsmJoZff/2VRo0aFWky8bv55psZPXo0gwcP\n5r333juk5l7eZ8TExHDgwAEA6taty+mnn87bb7/NjBkzWLLkkCEFxpgItX07jB4NU6ZAx46wcCGc\nfLJ38VTZuWX8iX3GDBg7lkptv2rQoAFt27bljTfeANzI0K+//hqArKwsWrRoAcBrr71W4vH169dn\n9+7dAX3W1VdfzS233EKvXr1o0qRJCKI3xlS2jz6Czp1h6lS4+25YvtzbxA5VOLl/9VV426+mTp3K\nSy+9xAknnECXLl14++23AbjvvvsYNmwY/fv3p2nTpiUeO3z4cCZMmED37t0P3lAtTVJSEg0aNOCK\nK8LSsmWMCYGjjoK2bV3+eeABiI31OiIia7GO1atXBzRZ/a5duwIqF26hiOunn37SDh06aF5eXsDH\nBHLeonHRgspkcQWnOsb18suqN99c8Dw/P/BjbbGOaubll1/mxBNPZPz48dSoYf80xkSy776D9HTY\nu9c9j7SZQCyDRJBLL72UTZs2FemVY4yJDHl58NRT8P777vk997hOG0cc4WlYpbLkbowx5cjIcH3W\n//pXePNNt69WLYjkL9gRHJoxxnjr999dP/XERFi7Fl59FV54ofzjIkFELdZhjDGRYulSuPJKNy/M\nxRe7JpmjjvI6qsBZzd0YYwrZuxf+/nc48UTYuhX+9z+YNq1qJXawmnuVkJaWRu3atTnZ61ERxlQD\n558P8+fD1VfDhAnQqJHXEVVM1a65T50KCQnurkZCgnseBnl5eWH5HL+0tDQWLVoU1s80pjrZtctN\nzQtw113w4Yfw739X3cQOVTm5T53qZufZsAFU3c+UlMNO8OvXr6djx45cdtlldOvWjaFDh5KTk0NC\nQgJjx46lX79+vPHGG6VOAVxcXFwct956Kz169GDgwIFs3boVgPT0dPr06UO3bt244IIL2LFjBwBP\nPfUUnTt3plu3bgwfPpz169czadIknnjiCRITEw9OD2yMCY2dO6FrVzeNCcCpp8LAgd7GFAqRndxL\nmu/3uefca3feCTk5Rcvn5Li+SnBYc/5+++23pKSksGLFCho0aMBzvs+MjY1l4cKFDB8+vNQpgIvb\ns2cPPXr0YNmyZZx66qkHp/e99NJLefjhh1mxYgXHH3/8wf0PPfQQy5cvZ8WKFUyaNImEhASuu+46\nRo0aRXp6Ov379w/49zDGlM43sSuNGrkmmMGDvY0n1CI7uZclM7Pk/du2HfZbt2rVir59+wIwcuRI\nFi5cCMDFF18MuKW7/FMAJyYmcu2117J5c8nT19eoUePgcf73ysrKYufOnZx66qkAXHbZZSzwzVfc\nrVs3RowYwauvvkrNmnZLxJhQU4Xp06FdOzfCFNyaEH36eBtXqEV29ih9zl9o3bpgZY7C2rRxPw9j\nzl8pNo7Y/7xevXoA5OfnlzgF8M6dOw/OAz948GDG+r/nlfHexb377rssWLCA2bNnM27cOFatWlWh\n38EYc6iff4brr4fZs6FnT6hd2+uIKk/ANXcRiRGR5b7FsIu/drmIbBWRdN/j6tCGWYLx46Fu3aL7\n6tZ1+w/Txo0b+fzzzwF4/fXX6devX5HXS5sCOCYmhvT0dNLT0w8m9vz8fGbOnAm4KYH79etHw4YN\nady48cH281deeYVTTz2V/Px8Nm3aRHJyMo888gg7d+4kOzs7qCmDjTGHUoUXX3TT8s6fD48+Cp9/\n7p5Hq2CaZf4KZJTx+nRVTfQ9XjzMuMo3YoQbKtamjZuxp00b93zEiMN+606dOjFlyhS6devG9u3b\nuf766w8pU9oUwMXVq1ePVatWkZSUxMcff8yYMWMAmDJlCrfffjvdunUjPT2dMWPGkJeXx8iRIzn+\n+OPp3r07o0aNolGjRpx77rnMmjXLbqgaUwE//AB//CNccw107w7ffAO33grR3uoZ0K8nIi2Bs4Hx\nwOhKjSgYI0aEJJkXV6NGDSZNmlRkn38pPL+2bdvyvn8GIZ/Satfjxo1j3LhxRfYlJibyxRdfHFLW\n375f2LHHHmsLZRsTpLw8eOONlvznP24emH/9y904jeT5YEIp0F9zInAHkF9GmSEiskJEZopIq8MP\nzRhjKu6332DKlAQGDoRVq1xP6eqS2AHEzf1eRgGRc4CzVPUGERkA3Kaq5xQr0xTIVtV9voWzL1LV\n00p4rxQgBSA+Pj5p2rRpRV5v2LAh7du3LzfovLw8YmJiyi0Xbl7FtW7dOrKyssosk52dTVxcXJgi\nCpzFFRyLq2y//y588EE8Z575CzVqwPff59GuXUzEzbV+OOcrOTl5qar2LLdgeat5AA8CmcB64Bcg\nB3i1jPIxQFZ571vaSkz5ASxnEs0rMQUrPz/fVmKqBBZXcCIlrunTVUF13jz3PFLiKi4iVmJS1TtV\ntaWqJgDDgY9VdWThMiLSvNDTwZR947VUsbGxbNu2zf9HwpRDVdm2bRuxEbFgozHeyMkB/+wcw4bB\np5/CoEHexhQJKny/WETG4v6CzAZuEZHBwAFgO3B5Rd6zZcuWZGZmHhyiX5rc3NyITGhexBUbG0vL\nli3D+pnGRIq0NHeTdOtWN+ylUSMo1nO52goquatqGpDm2x5TaP+dwJ2HG0ytWrVo27ZtueXS0tLo\n3r374X5cyEVqXMZEm6wsuOMO1/v5mGPctLxVeZKvylCN7h0bY6LBnDnQpYsblHTbbW4xjeRkr6OK\nPJbcjTFVwtat8Je/wLnnQuPGboTphAmHDlQ3jiV3Y0zEmz/fTRUwcybcf79bAq93b6+jimxRPgDX\nGBMNWrSATp3cjN9du3odTdVgNXdjTESaPNnN4AiujX3BAkvswbDkboyJSJs2wdq1bsFqEzxL7saY\niHDggJuK97333PO773ZrmR5xhLdxVVWW3I0xnluxAk46CW6/Hd55x+2rWZOImxOmKrHkbozxzL59\ncO+9kJTkRphOn16wTLI5PNZbxhjjiS++gKuugtWrYeRImDgRmjb1OqroYTV3Y0xY7dkDo0fDySfD\nrl3w7rvwyiuW2EPNau7GmLA6/3x3o/T66+Ghh6BBA68jik5WczfGVLqdOwu6NI4ZA5984trWLbFX\nHkvuxphKtXOnG4R0//3uef/+cMop3sZUHVizjDGmUuTmQmysm4r3xhttAY1ws5q7MSakVN0N0jZt\nYNkyt++uu6Bn+at+mhAKOLmLSIyILBeROSW8VkdEpovIOhH5UkQSQhmkMaZq2LgRzj4bLr0U2rWz\n6Xi9FEzN/a+UvjbqVcAOVW0PPAE8fLiBGWOqjvx8d4O0Sxd3s/TJJ2HhQujY0evIqq+AkruItATO\nBl4spch5wBTf9kxgoIgNHDamOli7FkaNSuTGG6FPH1i5Em65BWJivI6segu05j4RuAPIL+X1FsAm\nAFU9AGQBNiTBmCh24AA8/DB06wY//FCPyZPdohoBLINswkBUtewCIucAZ6nqDSIyALhNVc8pVmYV\ncIaqZvqefw/0VtVtxcqlACkA8fHxSdOmTatQ0NnZ2cTFxVXo2MoUqXFB5MZmcQUnkuLavr0Wl1/e\nm8TEnVx9dTqtW9fyOqRDRNL5Kuxw4kpOTl6qquXfnlbVMh/Ag0AmsB74BcgBXi1WZh5wkm+7JvAb\nvj8cpT2SkpK0olJTUyt8bGWK1LhUIzc2iys4XseVm6s6aZJqXp57vnGj++l1XKWJxriAJVpO3lbV\n8ptlVPVOVW2pqgnAcOBjVR1ZrNhs4DLf9lBfmbK/Ehhjqpy334brroOPP3bPW7XyNh5Tugr3cxeR\nsSIy2Pf0JaCpiKwDRgN/D0VwxhjvZWfDp5+67WHD3GyOf/yjtzGZ8gU1QlVV04A03/aYQvtzgWGh\nDMwY470PPoCUFNi+3fVhb9gQTjzR66hMIGyEqjHmEDt2wJVXuikD6tRx0/I2bOh1VCYYltyNMUXM\nmgWdO8PLL8Odd0J6OvTr53VUJlg2cZgxBoBffoGbb4aZMyEx0S1U3b2711GZirKauzGGuXNdbf2d\nd+Cf/4TFiy2xV3VWczfG0KaNS+bPPmvzwUQLq7kbU039619wzTVuu3Nn+OgjS+zRxJK7MdXUli2w\naZNbVMNEH2uWMaaa+P13ePRROP54OOcct4BGjRpg87dGJ6u5G1MNLF8OvXu7hD5vntsXE2OJPZpZ\ncjcmiuXmur7qvXq5ro5vvglPP+11VCYcrFnGmCi1cCFcdZVbTOOKK+Cxx6BxY6+jMuFiNXdjoszu\n3XDTTdC/P+zf7xbQmDzZEnt1YzV3Y6LM+edDair89a/wwAMQgWtVmDCw5G5MFNi+HWJjoW5dGDfO\n3Sg96SSvozJesmYZY6q4HTugSxe47z73/OSTLbEbq7kbU2Xl5LiaeuPGMGoUnHGG1xGZSFJuzV1E\nYkVksYh8LSKrROT+EspcLiJbRSTd97i6csI1xqjCf/7j5oNZssTtu+MOOOEEb+MykSWQmvs+4DRV\nzRaRWsBCEZmrql8UKzddVW8KfYjGGL/Nm2MZNAg+/ND1hrEFNExpyk3uvoWus31Pa/ketvi1MWGU\nlwfPPAN//3svataE556Da6910wcYUxJxubucQiIxwFKgPfCsqv6t2OuXAw8CW4G1wChV3VTC+6QA\nKQDx8fFJ06ZNq1DQ2dnZxEVg/65IjQsiNzaLq3zr19fl0UePY9WqhiQlbeH2278nPn6f12EVEUnn\nq7BojCs5OXmpqvYst6CqBvwAGgGpQNdi+5sCdXzb1wEfl/deSUlJWlGpqakVPrYyRWpcqpEbm8VV\nun37VMeNU61dW7VpU9VXXlH9+GPv4ypJJJyvkkRjXMASDSBfB/WlTlV3AmnAmcX2b1NVf1Xi30BS\nMO9rjDnUzp3wxBNwwQWwejWMHGkTfZnABdJbppmINPJtHwH8EVhTrEzzQk8HAxmhDNKY6mLvXte2\nnp8PRx0F33wD06a5bWOCEUhvmebAFF+7ew1ghqrOEZGxuK8Hs4FbRGQwcADYDlxeWQEbE83eecct\nUt2pEwwcCEcf7XVEpqoKpLfMCuCQpXJVdUyh7TuBO0MbmjHVw65dsGwZDBgAw4bBMcdAkjVsmsNk\nHamM8dB770HXrnDeeZCV5drULbGbULDkbowHfvsNLrkEzj4b6td3qyPZgCQTSpbcjQkjVZg+HTp3\ndjdK773XNcn06eN1ZCba2MRhxoTJzz/D9dfD7NnQsyd89JFbrNqYymA1d2PCYM4cV1v/4AN49FH4\n/HNL7KZyWc3dmDBo397Nsf70027bmMpmNXdjKskzz8Dll7vtjh1h7lxL7CZ8LLkbU0mysmDbNsjN\n9ToSUx1Zs4wxIbJ/Pzz0ECQmwuDBcOedrt+6zQdjvGA1d2NC4Kuv3OCje++F1FS3r0YNS+zGO5bc\njTkMOTlw222un/qOHW5umCee8DoqY6xZxpgKS02Fq6+GH35wqyI9/LCNMjWRw2ruxgQpK8sl89NO\nc80uqakwaZIldhNZrOZuTJDOPx8WLIDbb4f77oO6db2OyJhDWXI3JgBbt0K9ei6RP/ggxMRAr15e\nR2VM6QJZiSlWRBaLyNciskpE7i+hTB0RmS4i60TkSxFJqIxgjfHC9u3QpYvrCQPu5qkldhPpAmlz\n3wecpqonAInAmSJSfA67q4AdqtoeeAJ4OLRhGhN+2dnuZ5Mmrs+6f7SpMVVBucndt+C27zKnlu+h\nxYqdB0zxbc8EBopYD19TNeXnw+zZzWndGhYvdvtGjXK1d2OqioB6y4hIjIikA1uAD1T1y2JFWgCb\nAFT1AJAFNA1loMaEw7p1bu3SJ544ju7d4cgjvY7ImIoR1eKV8DIKizQCZgE3q+rKQvtXAWeoaqbv\n+fdAb1XdVuz4FCAFID4+PmnatGkVCjo7O5u4uLgKHVuZIjUuiNzYIiWuvDxh5syWTJ6cQK1aypVX\nruKCC3ZE3AjTSDlfxVlcwTmcuJKTk5eqas9yC6pqUA/gXuC2YvvmASf5tmsCv+H7w1HaIykpSSsq\nNTW1wsdWpkiNSzVyY4uEuL7+WrVnT1VQPe881Z9+ioy4SmJxBSca4wKWaAC5OpDeMs18NXZE5Ajg\nj8CaYsVmA5f5tocCH/uCMCZi7dvnesAkJcGGDW75u1mz4OijvY7MmMMXSD/35sAUEYnBtdHPUNU5\nIjIW9xdkNvAS8IqIrAO2A8MrLWJjQmTXLnjuOfjzn918ME3tLpGJIuUmd1VdAXQvYf+YQtu5wLDQ\nhmZM6O3ZAy+8ALfcAs2awcqVEB/vdVTGhJ7NLWOqlffeg9Gj4ZNP3HNL7CZaWXI3UW/nTvjwQ7c9\ndCikp7tJv4yJZpbcTVR7+23o3BmGDHFt7CJwwgleR2VM5bPkbqLSr7/CxRe7GRyPOgo+/hgaNPA6\nKmPCx5K7iSqq8Morrrb+v//BAw8ULIFnTHViU/6aqLFxI1x3HcydCyedBC+9BJ06eR2VMd6w5G6i\nwttvw8iRrub+1FNwww1uznVjqitL7qZKU3U3STt2hAED4OmnISHB66iM8Z61uZsqa+JEuOQSt33c\ncfDOO5bYjfGz5G6qrNxcyMlxP40xRVmzjKkycnNd75eePV0XxzvugBpWPTGmRPZfw1QJixZB9+4w\nfjx89pnbZ4ndmNLZfw8T0bKz3SRf/fq5Jpj334cJE7yOypjIZ8ndRKz586FrV3jmGbjpJjeD4xln\neB2VMVWDJXcTcbZvhyuucIk8NhY+/dT1Xa9f3+vIjKk67IaqiTgXXODa1e+6C+65xyV4Y0xwyk3u\nItIKeBn4A5APvKCqTxYrMwB4G/jRt+stVR0b2lBNNPvlF1czr1fPtanXrg2JiV5HZUzVFUjN/QBw\nq6ouE5H6wFIR+UBVVxcr96mqnhP6EE20277dta1fdhk89hj07u11RMZUfYEss7cZ2Ozb3i0iGUAL\noHhyNyYou3a5n02auIWqBw3yNh5joklQN1RFJAG3nuqXJbx8koh8LSJzRaRLCGIzUSo/3/WAadUK\nVq92k6zffLObQsAYExqiqoEVFIkDPgHGq+pbxV5rAOSraraInAU8qaodSniPFCAFID4+PmnatGkV\nCjo7O5u4uLgKHVuZIjUuiJzYNm6sy4QJx7FyZUN69drOddctp127yJu+MVLOV3EWV3CiMa7k5OSl\nqtqz3IKqWu4DqAXMA0YHWH49cGRZZZKSkrSiUlNTK3xsZYrUuFS9j23/ftXx41Vr11Zt3Fh1yhTV\n/Hzv4yqNxRUciys4hxMXsEQDyMOB9JYR4CUgQ1UfL6XMH4BfVVVFpDeuuWdbQH+GTNRbtgyuusot\nTD1smJuWNz7e66iMiW6B9JbpC1wCfCMi6b59dwGtAVR1EjAUuF5EDgB7geG+vzCmGtu7F8aOdV0b\nmzWDt95yfdiNMZUvkN4yCwEpp8wzwDOhCspEhz173FJ3l10Gjz4KjRt7HZEx1YdNP2BCavdueOQR\nyMuDI4+E1atdgrfEbkx4WXI3IfX++/D3v7v5YMAleGNM+FlyN4dt2zaYN89tDx3qZm8cMMDTkIyp\n9iy5mwpThTfegM6d4eKL3YhTEffcGOMtS+6mQjZvhgsvhIsuciNNP/kEGjTwOipjjJ8ldxMUVZg8\nGTp1cu3rjzwCX3wBJ5zgdWTGmMJsPncTsB9+gGuvhQ8/hFNOgRdfhA6HTDJhjIkEltxNQN56Cy65\nBGJi4PnnISXFFqg2JpJZcjdlUnU3SY8/Hs48EyZOdG3sxpjIZnUvU6oJE+Avf3EJvkMHePNNS+zG\nVBWW3E259u/3OgJjTLCsWcYctHcv3HefW+ZuyBC47TbXJGOMqXqs5m4A10+9WzfXtXHJErfPErsx\nVZcl92pu1y64/no3XUB+Pnz0ETz4oNdRGWMOlyX3auzdd6FLF3jhBRg9GlasgNNO8zoqY0woWHKv\nhrZuhREj4JxzoGFDWLQIHnsM6tXzOjJjTKiUm9xFpJWIpIpIhoisEpG/llBGROQpEVknIitEpEfl\nhGtCYcgQN+HXffe5JfBOPNHriIypJqZOhYQETj3tNEhIcM8rSSC9ZQ4At6rqMhGpDywVkQ9UdXWh\nMn8COvgeJwLP+36aCLF1a22ysyEuDp54AurUga5dvY7KmGpk6lQ3tDsnxy1tt2GDew7uq3SIlVtz\nV9XNqrrMt70byABaFCt2HvCyb3HuL4BGItI85NGaCtm2Da68shdjxrjnSUmW2I0Ju7vvhpycovty\nctz+SiDBrGMtIgnAAqCrqu4qtH8O8JBvvVVE5CPgb6q6pNjxKUAKQHx8fNK0adMqFHR2djZxcXEV\nOrYyRVpcu3fXpH79AwDMmNGUvn1zaNFir8dRFRVp58zP4gqOxXWoI376icZLllB3wwbqbtxI46VL\nS1yMWkX45OOPA37f5OTkparas9yCqhrQA4gDlgIXlvDau0C/Qs8/ApLKer+kpCStqNTU1AofW5ki\nJa4DB1Qfe0y1Xj3Vzz5z+yIltuIsruBYXMGp1Ljy81UzM1Xnz1edOFH12mtV+/dXXbnSvf7ii6qg\nGhen2quX+w/pZvMo+mjTJqiPBZZoADk7oBGqIlILeBOYqqpvlVAkEyg860hL4OdA3tuE1sqVcNVV\nsHix6w3TurXXERlTxeXnw/r1brX3jAwYNMgtYDB/vptNz69xY7cMmb/pZcgQV7ZlSzcisFCb+0F1\n68L48ZUSdrnJXUQEeAnIUNXHSyk2G7hJRKbhbqRmqerm0IVpyrN/vxt8NH686974+utu6TsbZWpM\ngH7/Hdatg9hYaNsWMjPh3HNhzRrIzS0oV7euS+49esCzz7qE3qkTHHVU0f9wjRq5h5//pundd6Mb\nNyKtW7v/sJVwMxUC6y3TF7gE+EZE0n377gJaA6jqJOA94CxgHZADXBH6UE1pFi92tfWVK90sjk8+\nCUce6XVUxkSo/Hy3GEF+vusPvHq1e3z3HRw4AP/3f65LWbNm0Ly5G9nnT+CdOrkaOrjXb7ghuM8e\nMQJGjOCTtDQGVPIq8uUmd3U6Qj5wAAATGklEQVQ3Scus//nagW4MVVAmMDk5MGaMuw6bN4d33nFN\nMcYYJ27tWtekkpFRkMR79oTp012C/89/XE28Uyc4/3yXxHv3dgfXqQPvvedp/IfDZoWswvbuhVdf\ndc14Dz9sC1SbamrbtoL28NW+4TcTJwJw7OOPw7ffQu3acNxxLrEnJxcc++OPUDM602B0/lZRLCsL\nnnkG/vY3aNrUXc/+b4nGRC1V2LzZXfDr17t2SIBLL4VXXikoV7cu9Olz8Ona0aPpOWAAtGtXchKP\n0sQOltyrnA8/dE0xffu6mRwtsZuokp8PGze6Jb9iYlwPk2eecUk9K6ug3LBh7qvq+edDYqJrVunc\n2R1XaHHf7GOPhWOP9eAX8Z4l9ypg61Z30/Tss+HCC911Xk2vVxNt1q6FmTMLmlTWrHE3k9ascc0o\neXmu98pf/uKSt//GZv367vgLL/Q2/ghmyT2Cqboujbfc4m7ib9rkrmlL7KbK2L/ftXn7b2b6k/gz\nz7ivnhkZbvh9q1YucZ9yivvZtKk7/tJL3cMEzZJ7hNq0yS2i8e67rgnxxRcLKivGRJqYvXvdEl7+\nBH766a4L4TffuJuY4JpL2rVzNe/atd2+M85wK8bYxR1yltwjTH6+WzzjjjvcN9KJE+Gmm1zzozGe\n277dJe+6daF7d9cO3q0b/TduLChTq5arefv7h7/+uvt57LGuiaWw2NhD95mQsOQeQb77Dq65xq1n\nOnCgS/Lt2nkdlal2VF27t3/1lltvheXLXa3811/dvr/8xd3sbNAABg3iB1XanX22S+Lt2rkED3DE\nETB8uDe/RzVnyT1CvPGGa1qsUwdeegmuuMKmDjBhsmCBa1Lxt4dnZLjV0tPS3OuLF7ubPmedVXBT\ns1s395oI/PvfbExLo10lj7g0wbHk7jFV9/+je3c47zx4/HE4+mivozJRJS8PfvihaPLetQtmzXKv\nP/QQzJ3rhtN36uQmJfKP0gT49FNv4jaHxZK7hx580C1zN2MGtG8PFZze3hhn/37XtufvUnj33e4m\n5g03uDY+vxYt4PjjC+ZYefZZd0PTJiSKKpbcPVS7tmuS3L/fNccYE5A9e1z3wo4d3Y3N6dPh3nvd\njIZ5ea6MCFx2mZvzeeRI1+Wqc2d3TMOGRd+vbdvw/w6m0llyD6M9e+Af/4CTT3YD7EaPtnZ1UwZ/\nm93ata7mnZHBicuWwS+/uNcXLID+/d0w5S5dYOjQgjbxY491iR9cmf79vfs9jCcsuYfJhx+6njDr\n17tFqocNs8RufHJz4csvDx3o8/jjrqfJb7+5QT8dO7Krc2eOuOGGgiQObkGIQYO8/R1MxLHkXsl2\n7IDbboPJk6FDB9fN8ZRTvI7KhJ2qW/whI6MgeZ92mrt5uWWLG60J7i9/585ucE/Llm7fiSe6r30x\nMWSkpRFvvVJMACy5V6JZs9y9rK1b3SyO997r2thNFMvLK1iSrV49l8APHHCr9OzYUVCuSRNo08Zt\nt2oF8+a5pN6ixaFf6WwEm6mAQJbZmwycA2xR1a4lvD4AeBv40bfrLVUdG8ogq5pff4Wbb3Z91084\nAebMgaQkr6MyIfX7767G3aKFe37LLa4N/NtvC5ZkGzTIJfeaNd3qPs2aFUx81axZQRIXsWYVE3KB\n1Nz/CzwDvFxGmU9V1dYA8hk61I37eOABN42Af7CeqcLmz3f9vf1t4t9959rZ/ItD7NzpEv0f/1h0\nSTa/MWO8idtUW4Ess7dARBIqP5SqbeNGyMlxX5+fesp1bfTf7zJVwO7dRW5mdl240A3BX768YOX6\nqVPhmGPcP+wFF7i+4n4vl1X3MSb8xC1/Wk4hl9znlNEs8yaQCfwM3Kaqq0p5nxQgBSA+Pj5pWgVH\n7WRnZxMXF1ehYytDVlZNRozow8CBGxk1amP5B3gg0s6ZX7jjqpWVRd3166m7YQP1Nmzgx6uuIq9u\nXdq++CJtpk4FIL9WLbJbtCC3bVvW3HEH+bGx1MzKIu+II1D/bIYesX/H4ERjXMnJyUtVtWe5BVW1\n3AeQAKws5bUGQJxv+yzgu0DeMykpSSsqNTW1wseG0tatBdsvvKD6+uufexdMOSLlnBVXKXHl56tm\nZqp+8EHBP9Jbb6k2a6bq+q24R716qt98417/5hvV//1Pde1a1d9/r17nKwQsruAcTlzAEg0gx9Yo\nJecHTFV3qWq2b/s9oJaIRPU45gMH3HQcrVvDwoVu3zXXwB/+kOttYNVNfj7s2+e2v/8errzSjcRs\n1Mh1Izz9dHeTE1zPFP/kPXPnwoYNbn6Vrr4vo127utc7dIjqdTVN9XHYV7GI/AH4VVVVRHoDNYBt\nhx1ZhEpPd2vzLlvmVvhq397riKqJ3FyXlAsP8lmzxv2VveUWVxefO9fdxLzkkoI1NXv0cMf36AH/\n/re3v4MxYRRIV8jXgQHAkSKSCdwL1AJQ1UnAUOB6ETkA7AWG+746RJXcXBg3Dh5+2M2vNHMmDBni\ndVRRJjfXdSUsPHth376uG2FeXsF6ma1bu+Q9YEBB8m7fHjZv9ix0YyJNIL1l/lzO68/gukpGrUWL\nXG19zRo3F9Pjj7sxKKaCdu92JzMjg6PWrSsYndm6tRvxBQVLsp1wgnter5772nTMMW4UpzGmTNa4\nWIbsbLjrLjetR6tW8P77blS4CdD27fDTTwVdBm+8Ed55xy0Q69PyuONgrG/M24MPFgy/79Dh0OXX\n/IneGFMuS+5l2L/fNb/ceCP885+2hm+J/DMXghuKW7hd/Ndf3UjMLVvc640aFaxu72sTX75pE6f6\n3+uqq7z4DYyJSpbci9m+3Q1C+sc/XNNLRsah019XW1u2wNKlBW3iq1e76Wg3bXKT5qSluYE+nTqB\nfz3NTp0K/gCMH3/IW6q1kxtTKSy5F5OW5qYNOO00V8msdon9wAG3JFvhXinjx7v28Ndeg1GjXLmj\njnKJ+6KL3EjOI45w5SZMsLmMjYkAltxxax8sXgyDB7tR5d9+6+7bRbV9+wqWZOvdGxIS3MyEgwe7\n9ii/Vq3g559dch8yxM2A1qlTyUuy2XJSxkSMap3cVWHKlILK6MaNrl09qhL7nj1uBkNwzSc33+xq\n5N9/X7Ak26RJcO21cNxxrtuhvzmlY0do0KDgvVq1cg9jTMSrtsl9/XpISYEPPoB+/eDFF6Pghunv\nv7u/VoX7iW/Y4G4gDBzofsG1a13vlYsuKkjixx3njk9IcB35jTFVXrVL7vn5brH3O+90TcPPPgvX\nXee6VVcJW7Ycuhxb9+7w6KNu2PyoUa7dvGNHt1jr1Ve7aWhzc11vFf8UtcaYqFatkntGhst1ixbB\nmWe61gj/YjgRxb8kmz+Bqxa0HZ1yirspAK4m3rmzWyAZ3F+rjAxo3vzQ1XvS0sIWvjHGe9UmuU+b\n5kaXxsW5qbdHjoyATh15efDjj67pZOBAt++mm1zTSnZ2Qbnjjy9I7hMmuME9nTqVvCSbf91NY0y1\nFvXJPT/fNbn06gXDhsFjj0F8fJiD2L/fLcckArNnw+uvu1r5t9+6Xis1a7ruhLVquZr4FVcUGehD\ns2YF73XuuWEO3hhTFUV1ch871i2k89ZbrgfMq6+G4UMzM+GTT4q2ia9b52rnLVq4hP7lly5pDxpU\nkMT9jf433BCGII0x0S6qk3v9+tC0qetEEtIFdLKyXOIu3CvFP/ryk09cm09MjJupsHNn1z/c3wZ+\n221w++0hDMYYYw4VVcl9927XC6ZvX/jzn12X7cNqV9+6tSCB9+kDiYnw2Weu76RfnTquK+GOHe75\nn/4EK1e6ia9K+ovieUO/MaY6iJrkPneuG4eTmVnQRB1QHlV1IzDz890AnW3b3Lzhq1fDb78VlBs/\n3iX3Tp3cAhH+9vC2bQtq5WlpbkIamw/YGOOxQBbrmAycA2zRkhfIFuBJ3PqpOcDlqros1IGWZts2\n15HklVdcvv3sMzjppDIOUHUTsq9aVdCksmuX+8swaZLrC16jBpx/vkve/jZx/8jMJk3gb38Ly+9m\njDEVFUjN/b+4xTheLuX1PwEdfI8Tged9P0PqkUfg7KypdJl6N6du3Ii2as2bSeO5fP4I9u2De+6B\nu+/2TW/y3XfwzTdFb2p26AAzZhSMXNq71yXuSy5xP/v0cR8UEwOpqaEO3xhjwiqQlZgWiEhCGUXO\nA172La33hYg0EpHmqhrSuVzPzppK23+mADkIwMYNnL3xaiY1WMTpVzQhfk8O1HnMFb7yyoKVq9u0\ncck7KangzVauhLp1QxmeMcZElFC0ubcANhV6nunbF9Lk3mXq3bhWnwJHkMvIXc/BSzXcQB//vOET\nJrg+48cdV/KSbJbYjTFRTgJZy9pXc59TSpv7u8CDqrrQ9/wj4A5VXVpC2RQgBSA+Pj5p2rRpAQd6\n6mmnISXEqsCCefPQkPZ1rJjs7GziInR9z0iNzeIKjsUVnGiMKzk5eamq9iy3oKqW+wASgJWlvPYv\n4M+Fnn8LNC/vPZOSkjQobdqourp50UebNsG9TyVKTU31OoRSRWpsFldwLK7gRGNcwBINIG+HYi7E\n2cCl4vQBsjTE7e0Aq0aMJ4eizSk51GXViEOXbjPGmOqu3OQuIq8DnwPHiUimiFwlIteJyHW+Iu8B\nPwDrgH8DlTJ+/t2GI/jxrhegTRtUBNq04ce7XuDdhiMq4+OMMaZKC6S3zJ/LeV2BG0MWUSnuuANg\nBIwfwSdpaQwYMIAuQJfK/mBjjKmCqsoSFcYYY4Jgyd0YY6KQJXdjjIlCltyNMSYKWXI3xpgoFNAI\n1Ur5YJGtwIYKHn4k8Fu5pcIvUuOCyI3N4gqOxRWcaIyrjao2K6+QZ8n9cIjIEg1k+G2YRWpcELmx\nWVzBsbiCU53jsmYZY4yJQpbcjTEmClXV5P6C1wGUIlLjgsiNzeIKjsUVnGobV5VsczfGGFO2qlpz\nN8YYU4aISu4iMllEtojIylJeFxF5SkTWicgKEelR6LXLROQ73+OyMMc1whfPChFZJCInFHptvYh8\nIyLpIrIklHEFGNsAEcnyfX66iIwp9NqZIvKt73z+PYwx3V4onpUikiciTXyvVdr5EpFWIpIqIhki\nskpE/lpCmbBfYwHGFfZrLMC4vLi+AonLq2ssVkQWi8jXvtjuL6FMHRGZ7jsvX0qhZUxF5E7f/m9F\n5IzDCiaQSd/D9QBOAXpQ+sIgZwFzAQH6AF/69jfBTTvcBGjs224cxrhO9n8ebsHwLwu9th440sNz\nNgC3ilbx/THA90A7oDbwNdA5HDEVK3su8HE4zhfQHOjh264PrC3+O3txjQUYV9ivsQDj8uL6Kjcu\nD68xAeJ827WAL4E+xcrcAEzybQ8Hpvu2O/vOUx2gre/8xVQ0loiquavqAmB7GUUOLsatql8AjUSk\nOXAG8IGqblfVHcAHwJnhiktVF/k+F+ALoGWoPrs8AZyz0vQG1qnqD6q6H5iGO7/hjunPwOuh+Nzy\nqOpmVV3m294NZODW+y0s7NdYIHF5cY0FeL5KU5nXV7BxhfMaU1XN9j2t5XsUv7F5HjDFtz0TGCgi\n4ts/TVX3qeqPuDUyelc0lohK7gEobTHu0vZ74Spczc9PgfkislTcGrJeOMn3NXGuiPinwPf8nIlI\nXVyCfLPQ7rCcL99X4e64mlVhnl5jZcRVWNivsXLi8uz6Ku98eXGNiUiMiKQDW3AVglKvMVU9AGQB\nTQnxOSt3sY4IIyXs0zL2h5WIJOP+4/UrtLuvqv4sIkcBH4jIGl/NNlyW4YYrZ4vIWcD/gA5Exjk7\nF/hMVQvX8iv9fIlIHO4/+/+p6q7iL5dwSFiusXLi8pcJ+zVWTlyeXV+BnC88uMZUNQ9IFJFGwCwR\n6aqqhe8/heUaq2o190ygVaHnLYGfy9gfNiLSDXgROE9Vt/n3q+rPvp9bgFkcxtesilDVXf6viar6\nHlBLRI4kAs4Zrr2xyNflyj5fIlILlxCmqupbJRTx5BoLIC5PrrHy4vLq+grkfPmE/Ror9Dk7gTQO\nbb47eG5EpCbQENeMGdpzFuobCof7ABIo/ebg2RS92bXYt78J8CPuRldj33aTMMbVGtc+dnKx/fWA\n+oW2FwFnhvmc/YGC8Qy9gY2+81cTd1OwLQU3vLqEIybf6/4Lul64zpfv934ZmFhGmbBfYwHGFfZr\nLMC4wn59BRKXh9dYM6CRb/sI4FPgnGJlbqToDdUZvu0uFL2h+gOHcUM1opplxC3GPQA4UkQygXtx\nNyRQ1Um4xbjPwl3kOcAVvte2i8g44CvfW43Vol/DKjuuMbg2s+fcfREOqJsUKB73tQzcxf6aqr4f\nqrgCjG0ocL2IHAD2AsPVXUkHROQmYB6uZ8NkVV0VppgALgDmq+qeQodW9vnqC1wCfONrEwW4C5c4\nvbzGAonLi2sskLjCfn0FGBd4c401B6aISAyuZWSGqs4RkbHAElWdDbwEvCIi63B/fIb74l4lIjOA\n1cAB4EZ1TTwVYiNUjTEmClW1NndjjDEBsORujDFRyJK7McZEIUvuxhgThSy5G2NMFLLkbowxUciS\nuzHGRCFL7sYYE4X+HzttVI+qxQgcAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#healthy line\n",
"hl_x = (pre[0], healthy[0])\n",
"hl_y = (pre[1], healthy[1])\n",
"\n",
"# pre-post line\n",
"pp_x = (pre[0], post[0])\n",
"pp_y = (pre[1], post[1])\n",
"\n",
"pylab.plot(hl_x, hl_y, 'bx-.', label='healthy')\n",
"pylab.plot(pp_x, pp_y, 'ro--', label='pre-post')\n",
"pylab.legend()\n",
"pylab.grid()\n",
"pylab.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Distance between point and line\n",
"\n",
"Find the shortest distance between the healthy and the coordinate `(3,2)`. The shortest distance will lie along the line perpendicular to the healthy line. \n",
"\n",
"This distance will give us two sides of the triangle and we can calculate the third.\n",
"\n",
"If we gte the healthy line in the form $Ax + By + C = 0$ we can apply the textbook formula to calculate the distance between point $(m, n)$ \n",
"\n",
"$$\n",
"d=\\frac{\\lvert Am + Bn + C \\rvert}{\\sqrt{A^2 + B^2}}\n",
"$$\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"slope: 2.0\n"
]
}
],
"source": [
"# Calculate formula of healthy line into \n",
"m = (healthy[1] - pre[1]) / (healthy[0] - pre[0]) \n",
"print(\"slope: %s\" % m)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solve for the y-intercept\n",
"Subsitute in any point on the line to solve for $b$. In this case sustitute $(1,1)$ \n",
"$$\n",
"y = m \\cdot x + b \\\\\n",
"1 = 2 \\cdot 1 + b \\\\\n",
"b = -1\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"b: -1.0\n"
]
}
],
"source": [
"x1, y1 = pre\n",
"b = y1 - m*x1\n",
"print(\"b: %s\" % b)"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Let's plot our line and make sure everything looks good\n",
"x = np.arange(0, 3.5 ,0.1)\n",
"y = m*x+b"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pylab.plot(x, y, label=\"healthy\")\n",
"pylab.plot(pp_x, pp_y, 'ro--', label='pre-post')\n",
"pylab.grid()\n",
"pylab.legend()\n",
"pylab.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot line perpendicular healthy \n",
"A perpendicular line will have a inverse slope. "
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"m perpendicular: -0.5\n",
"b perpendicular: 3.5\n"
]
}
],
"source": [
"mp = -1.0 / m\n",
"print(\"m perpendicular: %s\" % mp)\n",
"\n",
"# we know the new line passes through the point (3,2)\n",
"x1, y1 = post\n",
"bp = y1 - mp * x1\n",
"print(\"b perpendicular: %s\" % bp)"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Make array for plotting\n",
"yp = mp * x + bp "
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nOXR4AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pylab.plot(x, y, label=\"healthy\")\n",
"pylab.plot(x, yp, 'g', label=\"healthy-perp\")\n",
"pylab.plot(pp_x, pp_y, 'ro--', label='pre-post')\n",
"pylab.xlim(0,5) # make axes square so perpendicular looks right\n",
"pylab.ylim(0,5) # make axes square \n",
"pylab.grid()\n",
"pylab.legend()\n",
"pylab.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Change to general form of line\n",
"\n",
"Change to the general form of the line to solve the textbook equations.\n",
"\n",
"$$\n",
"Ax + By + C = 0\n",
"$$\n",
"\n",
"In this case\n",
"$$\n",
"y = 2x -1 \\\\\n",
"2x - y -1 = 0 \\\\\n",
"$$\n",
"\n",
"Which gives us\n",
"$$\n",
"A = 2 \\\\\n",
"B = -1 \\\\\n",
"C = -1 \\\\\n",
"$$\n"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"distance: 1.3416407864998738\n"
]
}
],
"source": [
"m, n = post\n",
"A = 2\n",
"B = -1\n",
"C = -1\n",
"d = abs(A*m + B*n + C) / (A**2 + B**2)**0.5\n",
"print(\"distance: %s\" % d)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solve for distance ?\n",
"Now we know two legs of our right triangle:\n",
"\n",
" - the pre-post distance is `3.61` \n",
" - the distance from post to healty line is `1.34`\n",
"\n",
"We apply the only equation we all the pythagorean theorem:\n",
"$$\n",
"c^2 = a^2 + b^2\n",
"$$\n",
"\n",
"which in this case arranges to\n",
"$$\n",
"a^2 = c^2 - b^2 \\\\\n",
"a = \\sqrt{c^2 - b^2}\n",
"$$\n",
"\n",
"Where\n",
"$$\n",
"c = 3.61 \\\\\n",
"b = 1.34 \\\\\n",
"a = ?\n",
"$$\n"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"? distance: 3.35\n"
]
}
],
"source": [
"a = (3.61**2 - 1.34**2)**0.5\n",
"print(\"? distance: %.2f\" % a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment