Skip to content

Instantly share code, notes, and snippets.

@JiaweiZhuang
Last active March 24, 2020 02:05
Show Gist options
  • Save JiaweiZhuang/6b8581dc9b5dd4e0cdfaae4f385cefe2 to your computer and use it in GitHub Desktop.
Save JiaweiZhuang/6b8581dc9b5dd4e0cdfaae4f385cefe2 to your computer and use it in GitHub Desktop.
Illustrating an ESMPy bug with strongly stretched grid
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Debugging ESMPy with strongly stretched grid"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import ESMF"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# packages in environment at /opt/conda:\n",
"#\n",
"esmpy 7.1.0.dev46 py27_1 nesii/channel/dev-esmf\n"
]
}
],
"source": [
"!conda list esmpy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Prepare data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Input grid and data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# cell centers\n",
"lon_in, lat_in = np.meshgrid(np.linspace(-20, 20, 5), np.linspace(-15, 15, 4))\n",
"# cell bounds\n",
"lon_in_b, lat_in_b = np.meshgrid(np.linspace(-25, 25, 6), np.linspace(-20, 20, 5))\n",
"\n",
"# stretch the grid in diagonal direction?\n",
"# Switch to False will remove the bug\n",
"stretch = True\n",
"if stretch:\n",
" lon_in += lat_in \n",
" lat_in += lon_in\n",
" lon_in_b += lat_in_b\n",
" lat_in_b += lon_in_b"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,u'input data and grid')"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEICAYAAABcVE8dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XmcHHWd//HXJzOTTI5JQi7IaYIC\nBhYiMBy/BQEVQRBh+QkuriIq/nB3ZWHXlUtcf+y6/ETxwgcKD354gOCPSxG8lkNAVk4TICJErkTJ\nJCEJue+5Pr8/qmrSM1PdXd1d3V3T834+Hnmku7q76puZ5DWVb1V3mbsjIiKNb0S9ByAiIrWh4IuI\nDBMKvojIMKHgi4gMEwq+iMgwoeCLiAwTCr5UzMxeMLPj6j2OOGb2iJl9qt7jKJWZfdzMfpfi+j5v\nZjcWePzPZnZ8WtuTbGqu9wBk6HP3A2qxHTP7IdDh7l+o0vr/DHzK3R+sxvrryd3/T73HIPWnPXyR\nBmdm2rETQMGXFOROB5jZFWZ2h5ndbGZbwume9gHPvczMXjSzDWb2AzNrDR8bNI1hZm5mbzOz84CP\nABeb2VYz+3mesbzXzP5kZpvM7FrAch57q5k9ZGbrzOxNM7vVzCaGj/0ImAP8PFz/xeHyO83sjXB9\nj5pZ3v/NmNknzGxJ+OdeamafznnsODPrMLN/NbM1ZrbKzD6R8/hkM7vXzDab2dPAW4t8zT9mZn8J\n/yz/FvM9uMvMbjGzzcDHw2W35Lz+7JzXX15oW9I4FHyphlOB24CJwL3AtQMe/whwIkHU9gWKTtG4\n+w3ArcBX3X2cu39g4HPMbArwk3B9U4DXgKNynwJ8GZgBzAdmA1eE6z8beB34QLj+r4av+TWwDzAN\neCYcQz5rgFOA8cAngG+a2SE5j+8FTABmAucC3zGzPcLHvgPsBKYDnwx/xTKz/YHvEnwdp+esM9dp\nwF0E34NbY15/HXB2+LWYDMwq8OeSBqHgSzX8zt1/5e49wI+ABQMev9bdl7v7euBK4MMpbfdk4EV3\nv8vdu4BvAW9ED7r7q+7+gLvvcve1wDeAYwut0N2/7+5b3H0XwQ+HBWY2Ic9zf+nur3ngt8D9wDtz\nntIF/Ie7d7n7r4CtwH5m1gR8EPiiu29z9z8CNxUY1hnAz939d+7eCXwRGPihWE+4+8/cvdfdd8S8\n/hfu/mj45/o3oLfQ10Eag4Iv1fBGzu3tQOuAeeTlObf/QrCXmYYZuev24JMB++6b2TQzu83MVoRT\nHbcQ/E8glpk1mdlVZvZa+Pw/hw/FvsbMTjKzJ81svZltJPgBlPvcde7enXN/OzAOmEpwAsXAr0vS\nP+d2YN2A5ywnv4Gv3xbzemlACr7Uw+yc23OAleHtbcCY6AEz22vA64p9tOuq3HWbmQ3Y1pfDdRzk\n7uOBj5Izxx+z/r8jmBo5nmDaZG606oEbNrNRBNNJXwP2dPeJwK/inhtjLdDN4K9LPqvImYIxs9EE\n0zK5Cn2tBn6dxsS8XhqQgi/18Bkzm2Vmk4DPA7eHyxcDB5jZO8IDuVcMeN1qYO8C6/1l+Pr/Gf6P\n4gKCefNIG8E0ykYzmwlcVGT9bcAugr3fMUChUxtHAqMI421mJwEnFHh+n3Dq66fAFWY2JpxjP6fA\nS+4CPmBmf21mI4F/J9kPltzXn2JmR4ev/w/UgmFB32Sphx8TzG8vDX/9J4C7v0wQnweBV4CBbzz6\nHrC/mW00s58NXKm7vwmcCVxFEOl9gMdynvLvwCHAJoIfDj8dsIovA18I1/854GaCqZUVwIvAk/n+\nQO6+heAHzB3ABoL/Hdxb6IswwPkE0ztvAD8EflBgWy8A/0RwYHwVsIXggPGuJBsKX/8Zgu/DqnC8\nHSWMVYYo0wVQpJYa+c1N9WJm44CNwD7uvqze45Hs0h6+yBBkZh8Ip3/GEhw3eJ7dB5VFYin4IkPT\naQQHu1cSTF2d5frvuhShKR0RkWFCe/giIsNEpj5UacqUKT537tx6D0NEZGjo+iMAi/6w6013n1rs\n6ZkK/ty5c1m4cGG9hyEikmm9b+wb3gren9c0/ZVC78zuk6ngi4hIfrtDv9uIvV4m6fvuFHwRkQyL\ni3wkiH1yCr6ISAalGfqIgi8iqenq6qKjo4OdO3fWeyhDlvesCG99t99ywxnV/Dqz3/qxsk+vTCX4\n4VWDbgT+iuBT+j4JvETwoVhzCd4B+CF335DG9kQkmzo6Omhra2Pu3LkEH1YqSXnX8+GtPeMfd2f9\n5oPp6Ohg3rx5ZW0jrfPwrwH+y93fTnCxiyXApcBv3H0f4DfhfRFpYDt37mTy5MmKfQm86/mc2Oc3\nYuRBTJ48uaL/PVW8h29m44FjgI8DhFfg6TSz04DjwqfdBDwCXFLp9kQk2xT74pIEPpe1HBj8XuHX\nNo09/L0JPgP8B2b2rJndGH6g057uvgog/H1a3IvN7DwzW2hmC9euXZvCcEREsinp3nyuKPZpSCP4\nzQSfMX6dux9McNWixNM37n6Du7e7e/vUqUXfKCYikpof/vCHnH/++QBcccUVfO1rX6vKdrzree6+\n6xpefPG1kl6XZuwhneB3AB3u/lR4/y6CHwCrzWw6QPj7mhS2JSIyZOTu0d9z70O8uCR58K3lQLq7\nu4s/sQQVB9/d3wCWm9l+4aL3EFwd6F52X6btHOCeSrclIo3lZ8+u4KirHmLepb/kqKse4mfPrij+\noiJuvvlmDjroIBYsWMDZZ58NwNq1a/ngBz/IYYcdxmGHHcZjjz1WZC27rV69mtNPP50FCxawYMEC\nHn/8cQBuueUWDj/8cN7xjnfw6U9/mp6eHgDGjRvD5y/9Xyw4aD/+x9EfYfXqdTz+xHPc+4tHuPiy\nb3Bw+5m89tpyXnttOSed8ve0H/G3HPOuc/jTn4Jr13zi3C/wr5f8gHe9611cckm6hz3TOg//n4Bb\nw+tjLgU+QfDD5A4zOxd4neDScyIiQBD7y376PDu6glCu2LiDy34a7A3/zcEzy1rnCy+8wJVXXslj\njz3GlClTWL9+PQAXXngh//Iv/8LRRx/N66+/zoknnsiSJUsSrfOCCy7g2GOP5e6776anp4etW7ey\nZMkSbr/9dh577DFaWlr4x3/8R2656So+dvapbNu2gyOPOIgrv3QBF1/6Df7v937CFz5/Hqeechzv\nP/kYzvhgcKnj40/8FNdd+2/ss89beOrpP/CZC/6Thx5+Gkbswcsvv8yDDz5IU1NTWV+HfFIJvrs/\nB7THPPSeNNYvIo3n6vte6ot9ZEdXD1ff91LZwX/ooYc444wzmDJlCgCTJk0C4MEHH+TFF1/se97m\nzZvZsmVL4nXefPPNADQ1NTFhwgR+9KMfsWjRIg477DDwnezYsZOpk08CYOTIFk55/7EAHHrI/jzw\nmycGrXPr1u08/sRiPvThz/Ut29W5+wycM888M/XYg95pKyJ1snLjjpKWJ+Husacu9vb28sQTTzB6\n9Oiy1z1wOx/76Ml8+coLBz3W0tLcN4amphH0dPcMek5vby8TJ7bx7MI7gcEHZ8eOHZvKOAfSBVBE\npC5mTIyPb77lSbznPe/hjjvuYN26dQB9UzonnHAC1157bd/znnvuuZLWed111wHQvfM5Nq17gncf\nM5uf3P0Aa9ZE29nEX/6ysuB6xrWNZcvW7QCMHz+OeXNncudd92MtB+LuLF68OPkftEwKvojUxUUn\n7sfolv7TFqNbmrjoxP3yvKK4Aw44gMsvv5xjjz2WBQsW8NnPfhaAb3/72yxcuJCDDjqI/fffn+uv\nvz7xOq+55hp+85t7OPCv9qH9iLN44cXX2H//t/KlK87nxJP/ngWHfJATTjqPVW8Ufh/RWR96H1/7\n+g855LAP8dpry7nlpi/z/ZseYMGCBRxwwAHcc0/1z2vJ1DVt29vbXRdAERm6lixZwvz58xM//2fP\nruDq+15i5cYdzJg4motO3K/s+ftq2NUZ7HWPtPT3jcs9xz7ua2xmi9w97jhqP5rDF5G6+ZuDZ2Yq\n8JEo9JCt2FdKwRcRCeWGHhor9qDgi0jK8p0pk1UDIx/JYuwrnYJX8EUkNa2traxbt25IfERyvtBD\nfOw37hzDG1sn0tXTREtTD3uN28jE1u2JtpXGXr27s27dOlpbW8teh4IvIqmZNWsWHR0dZPmTb7u7\nOwo+3hTzg2pH10g27uyk1zf1LVtpzsTWbYxu6Sy4PmuaSXCJkMq1trYya9assl+v4ItIalpaWsq+\nGlO1Le2YDsCoAs+Z29wWu/zo7/0bK7dMGrR8Rtt6fnful/Kur9xrz1aLgi8iDSuKfDH5Qh9ZtWWP\nkpZD9mIPCr6INKCkoYfisQeY3rYhdg9/elv8ZbqzGHvQO21FpIEs7ZieeuwBLjrql4xu7j9XP7q5\nk4uO+uWg52Y19qA9fBFpAKVEPpI09gCnvf0ZAK5+7P2s2rIH09s2cNFRv+xbHsly7EHBF5EhrJzQ\nQ2mxj5z29mcGBT5X1mMPCr6IDDHlRj5STuyLGQqxBwVfRIaISkMP6cd+qIQ+ouCLSKalEXpQ7EHB\nF5GMymroYWjGHhR8EcmQB5YFn/P+1paNqaxPse9P5+GLSN09sGx+5mP/4WXvHtKxB+3hi0gdRZGP\nZC32H1727r7bt/+P5JdFzCoFX0Rqrlqhh3Rinxt6aIzYg4IvIjU0MPSQrdgPDD00TuwhxeCbWROw\nEFjh7qeY2TzgNmAS8AxwtrsX/uBoEWk4cZGP5Iv9gy8dwY1Pns7aLZOZ2raOTx15N8fv91TB7VQS\n+7jQQ2PFHtLdw7+Q4FP+x4f3vwJ8091vM7PrgXOB61LcnohkWKHQQ+HYf/3hj7GrO/jk+jVbpvD1\nhz8GkDf65cZ+uIQ+kkrwzWwW8H7gSuCzFlzb7N3A34VPuQm4AgVfpOEVCz0Unsa58cnT+2If2dU9\nihufPD02+KXGPl/kI40ae0hvD/9bwMVA9JWfDGx09+7wfgcwM+6FZnYecB7AnDlzUhqOiNRaktBD\n8Tn7tVsmJ1qeduihsWMPKQTfzE4B1rj7IjM7Lloc89TYy627+w3ADQDt7e2VXZJdRGoqaeQjSQ7Q\nTm1bx5otU2KXR0qJfZLQQ+PHHtLZwz8KONXMTgZaCebwvwVMNLPmcC9/FrAyhW2JSAaUGnpIfjbO\np468u98cPsCo5l186si7geSxTxp6GB6xhxSC7+6XAZcBhHv4n3P3j5jZncAZBGfqnAPcU+m2RKS+\nygk9lHbqZTRPH3eWTrHYlxL5yHCJPVT3PPxLgNvM7D+BZ4HvVXFbIlJFtQh9ruP3e2rQAdpCsS8n\n9DC8Yg8pB9/dHwEeCW8vBQ5Pc/0iUlvlhh5q84aqckMPwy/2oHfaisgAlUQ+Uu3YVxJ6GJ6xBwVf\nREJphB6qG3uFvjIKvsgwl1booTqxrzTykeEee1DwRYat7770LvYZ+UZq60sz9pBe6EGxjyj4IsPI\nd196V9/trMb+suWnpbYuUOxzKfgiw0Bu6CGbsU879KDYD6TgizSwgaGHbMX+4y99FIDpY7akMZx+\nFPvBFHyRBhQXekgv9mmFHhT7WlLwRRpIvtBDfOyffOVg7n76JNZv3YNJ4zZw+uG/5sh9ni24jUpi\nnxt6yB/7N5fPYPmS+XTuGM3I0TuYPX8JU2Yn+zguxT4/BV9kiCsU+Ui+2P/o0TPp7B4JwPqtk/jR\no2cC5I1+ubEfGHooHPtlixfQ2xPkqXPHGJYtXgBQNPqKfWEKvsgQVW7oI3c/fVJf7COd3SO5++mT\nYoNfauzjIh8pNI2zfMn8vthHenuaWb5kft7gK/TJKPgiQ0yS0EPx+fr1W/dIvLyU2BcKPRSfs+/c\nMbqk5Yp9cgq+yBCRNPSQ7ODspHEbWL91UuzyXEljX2noIyNH76Bzx5jY5QMp9qVR8EUyrJTIR5Ke\niXP64b/uN4cPMLK5k9MP/3Xf/SSxLxZ6KO1MnNnzl/SbwwcY0dTN7PlL+j1PsS+dgi+SQeWEHko7\n7TKap893lk6x2CcJPZR+2mU0T1/oLB3Fvjzmnp3LyLa3t/vChQvrPQyRuik39FCbN1QljXxE59jX\nhpktcvf2Ys/THr5IBlQSeqj+G6pKDT0o9lmk4IvUUaWhh+rGvpzQg2KfVQq+SI2lEflItWJfbuhB\nsc8yBV+kRi5efCZzW99MZV1pztdHKol8JO3YK/TpUvBFquzixcHHFWQ19l9aekoq60kz9ot+ty+v\nXvTZ1NYnAQVfpEqi0EM2Y5/V0AOKfZUo+CIpyo18JGuxv3Dx3zKlbVsq60or9lHoQbGvJgVfJAXV\nDD2kE/sLF/8tQKZinxt6UOyrreLgm9ls4GZgL6AXuMHdrzGzScDtwFzgz8CH3H1DvvWIDEVxoYfs\nxD6KfCQrsR8YelDsayGNPfxu4F/d/RkzawMWmdkDwMeB37j7VWZ2KXApcEkK2xOpu3yhh/yxf/G1\nt/Pooneyedt4xo/dzDGH/jf7v/VPBbdTbuyThn7rqmlsenVvenaOoql1FxPetpRx09cUXHe5sY+L\nfESxr42Kg+/uq4BV4e0tZrYEmAmcBhwXPu0m4BEUfBnCCkU+Uij2//XYiXT3tACwedsE/uuxEwHy\nRr+c2A8MPRSO/YYX98N7mwDo2dnKhhf3A8gb/XJiXyj0oNjXUqpz+GY2FzgYeArYM/xhgLuvMrNp\naW5LpFaShB4KT+M8uuidfbGPdPe08Oiid8YGv9TYx4UeCk/hbHp1777YR7y3iU2v7h0b/FJjr9Bn\nT2rBN7NxwE+Af3b3zWaW9HXnAecBzJkzJ63hiFQsaeih+Jz95m3jEy0vJfT5Ih8pNl/fs3NU4uWl\nxL5Y6EGxr5dUgm9mLQSxv9XdfxouXm1m08O9++lA7P8R3f0G4AYIPi0zjfGIVKKU0EOyA7Tjx25m\n87YJscsjSWNfLPSQ7OBsU+suena2xi7PlST2SSIfUezrJ42zdAz4HrDE3b+R89C9wDnAVeHv91S6\nLZFqKjX0kPxsnGMO/e9+c/gAzU1dHHPofwPJYp8k9JD8TJwJb1vabw4fwEb0MOFtS4H0Qw+Kfb2l\nsYd/FHA28LyZPRcu+zxB6O8ws3OB14HS/zWJVFk5kY+UcuplNE8fd5ZOsdgnDT2UdtplNE8fd5ZO\nsdiXGnpQ7LNAF0CRYalWoS+mUOxLCT3U5hz7ckIPin216QIoIjEqCT1UP/alRj5S7diXG3pQ7LNE\nwZdhodLQQ3VjX+/Qw+DYVxL5iGKfLQq+NKw0Ih+pVuzLDT1UL/ZphB4U+yxS8KUhZTX2AK907sW1\nS46taB1pxh5g1fY2Vj4zPZV1KfTZpeBLw8lq7CuNfCTt2KcVelDss07Bl4aSxdinFXpIL/ZrfzuD\nrrZ0z9BT7LNPwZeGkbXYX/37Exg9blfxJyaURuz7Qq/YD0sKvjSELMX+6t+fAJCp2K/97QyA1Pfq\nQbEfShR8GfLiYv+XP8/j+cWHsn37WMaM2caBCxbxlrnLCq4nrdBDfOy71k6ie/ksvHMkNrKT5tkd\ntExdX3S9lcQ+Cj3Ex75nZxu+Yyr0NsOIbmz0Wppak39QmmI/tCj4MqTli/3Cp4+ipyf46719+zgW\nPn0UQN7olxv73MhH8sW+a9lcCD+3xjtHBfehYPTLjX1u6KFA7LftBYwIFvS24Nv2ogcSRV+xH3oU\nfBmy8k3jPL/40L7YR3p6mnl+8aGxwS8n9nGhh/zTON3LZ/XFvk9vE93LZ8UGv5zQD4x8JN80ju+Y\nSl/s+4wIlhcJvmI/NCn4MuQUm6/fvn1s4uWlxj5f6KHwnL13jky8vNTY5ws9FJmz783zzz/f8pBi\nP3Qp+DKkJDk4O2bMNrZvHxe7PFcpsS8Ueih+gNZGduKdgy8sYiM7+90vJfaFQg8JDtCO6Ibelvjl\nMRT6oU/BlyEj6Zk4By5Y1G8OH6CpqZsDFyzqu58k9sUiD8nPxGme3dFvDh+AET00z+7ou5s09sVC\nD8nOxrHRa/vP4QPQi41eO+i5in1jUPBlSCjltMtonj7fWTrFYp8k9FDaaZfRPH2+s3SKxT5J5CNJ\nT71sat1CDxQ9S0exbxwKvmReOefYv2XuspIP0CYNPZR3jn3L1PUlH6CtRuhzNbVuKXiAVrFvLAq+\nZFot3lBVSuihNm+oKiX0oDdUSTIKvmRWWrFPK/RQ/diXGnpQ7CU5BV8yqVqxLyfykbRin1boQbGX\n0ij4kjlpTuNEKgk9pLtnHyk38hHFXkql4EtmZDH0kH7sKw09pB/72Q928fB9l6S6TskeBV8yIe3Y\n3/n8IamsJ83Y+zMTUllPmrHvC/1Fqa1SMkzBl7pLK/Z3PH4E1taVyrqyGHpIL/azHwy+TtqrH14U\nfKmrNGJ/x+NHAGQq9s2PBpHvGvwJD2VLI/ZR6EGxH44UfKmbSmMfhR6yE/so9JBe7CsNfW7kI4r9\n8FT14JvZ+4BrgCbgRne/qtrblOyrJPa5oYf42PvGibB6L+hqgZYu2PMNbOLGguutJPa5oYf42Hf3\ntNHdMwWnGaOb5qY3aW4q/DHElcQ+LvSg2A9nVQ2+mTUB3wHeC3QAvzeze939xWpuV7Kt3NgnCT2E\nsV8xCzz8ULCukbBiFg55o19u7AeGHvLHvqtnT6IPKnNawvvkjX65sc8XelDsh7tq7+EfDrzq7ksB\nzOw24DRAwR+mSo39wMhHCk7hrN5rd+wjPiJYHhP8UmMfF3koPIXT3TOFuIuNdPdMiQ1+ObEvFHpQ\n7KX6wZ8JLM+53wH0+xdsZucB5wHMmTOnysOReiol9vlCDwnm67tiPuM9z/JSYp8v9FB8vt7z/FOL\nW15K7ItFPqLYC1Q/+BazrN/fZne/AbgBoL29Pf23DkrdpRV6SHhwtqUrmMaJW54j8WfZFwg9JDs4\na3TjDP6BY/S/2EjS2CcNPSj2slu1g98BzM65PwtYWeVtSoYkjX2x0EMJZ+Ls+Ub/OXwA6w2Wh5LE\nvljoIfmZOM1Nb/abww/00ty0+7N+ksReoZdKVDv4vwf2MbN5wArgLODvqrxNyYhisU8S+Ugpp13a\nxI3BfyNjztJJK/RQ2mmX0Tx9vrN0isW+lNCDYi/xqhp8d+82s/OB+whOy/y+u79QzW1KNhSKfSmh\nh/LOsbeJGwcdoC0U+6SRj5Rzjn1z05aSD9CWGnpQ7CW/qp+H7+6/An5V7e1IduSLfamhh+q/oarU\n0EP131BVTuQjir0UonfaSqriYl9O6KG6sS8n9FDd2FcSelDspTgFX1KTG/tyIw/phR4Gx77c0EP1\nYl9p6EGxl2QUfElFFPtKQg/pxj5SSeQh3Q9Ay5VG6EGxl+QUfKnY3Ou+xoD305Ul7di3PdMKtFa0\njrRjv9dTnamuT7GXUij4UrYg9OlIM/ZB6CuXZuzTDj0o9lI6BV/KksXYT35kFJ3j497cXbq0Yj/7\n/i10TRiVzspCCr2US8GXkmUt9lHoO8enMCDSif3s+8M3VCn2kiEKvpQkK7Gf/MjukKa1Vw+Vxz4K\nPSj2kj0KviSWN/Zbx8PGqdDTAk1dMHEtjNtccF3lxj439JA/9p0j2tjVtPtjDEb1vMnI3iIXGykz\n9rmRh/yh37LHBDbM2JOelhaaurrYY+Vq2jZsSrQNxV7SoOBLIgVjv3767g8q6xkZ3IfY6KcVeigc\n+51Ne4LtvtjIzqbgYiP5ol9O7AeGHgrHft3smXhTMKaekSNZN3smQNHoK/aSFgVfiio4jbNxavzF\nRjZOHRT8cmIfF3ooPI2zq2lKX+x3b3wEu5qmxAa/1NjHhR4KT+FsmLFnX+wj3jSCDTP2LBh8xV7S\npOBLQUXn7HvyXGxkwPJSYp8v8pFic/ZJLzaSVuih+Hx9T0v81ynfclDsJX0KvuSV6ABtU1cwjRO3\nPJQ09sVCD8kO0Ca52EjS2BeKfN+6Ehycberqomfk4K9TU5cuNC61o+DLICWdiTNxbf85fAguNjJx\nbXAzQeyThB6Sn40zqufNfnP4AHgvo3qCi40kiX2S0EPyM3H2WLm63xw+gPX0ssfK1YOeq9hLtSj4\n0k/Jp11G8/QxZ+kUi33S0ENpp15G8/RxZ+kUi33S0ENpp11G8/SFztJR6KXaFHzpU/Y59uM2l3SA\ntlqhzzWyd8ugA7SFYl9K6KG8c+zbNmzKe4BWsZdaUPAFqP4bqkqJfKQWb6gqNfSgN1TJ0KXgS1Vj\nX07oobqxLyfykH7oQbGX2lLwh7m0Yp9W6KF6sS839KDYS2NQ8IexNPfsI5WEHtKNfaSS0INiL41D\nwR+m0oz9lEUjgMqjmHbs93q8stCD5uulsSj4w1BasQ9Cn460Yp9G5CNpxl6hlyxQ8IeRtEI/42FL\ndW88jXXN/MUb9Ewam8JoAmnEXpGXrFHwh4k0Yj/j4SDMWYr9zF+8AZCp2Cv0klUVBd/MrgY+AHQC\nrwGfcPeN4WOXAecCPcAF7n5fhWOVMlUa+yj0kF7s0wo9ZCf2Cr1kXaV7+A8Al7l7t5l9BbgMuMTM\n9gfOAg4AZgAPmtm+7t5T4fakROXGPjfykXyR3jmyje1jp9I7opkRvd2M2baW1s78c+mVxD439JA/\n9pun7cGbe8+ke9RImnd1MmXpCsav2VBw3eXGXqGXoaKi4Lv7/Tl3nwTOCG+fBtzm7ruAZWb2KnA4\n8EQl25PSlBP7uNBD4dhvbdur74PKeptagvtbiI1+ObEfGPlIodiv3u8teFMTAN2to1i931sAYqNf\nTugVeRmK0pzD/yRwe3h7JsEPgEhHuExqpNTYlxr6yPaxU2MvNrJ97NRBwS819vlCD4Wncd7ce2Zf\n7CPe1MSbe88cFPxSY6/Qy1BWNPhm9iCwV8xDl7v7PeFzLge6gVujl8U83/Os/zzgPIA5c+YkGLIU\nU0rs84UekgW6d0T8X6GBy0uJfaHQQ/E5++5RMZ/PH7O8lNgr9NIIigbf3Y8v9LiZnQOcArzH3aOo\ndwCzc542C1iZZ/03ADcAtLe3x/5QkOSSxL5Q5CNJAz2it5vepsEXGxnRu/tiI0nXVWnoI827Oulu\nHRzz5l2dfbeTxl6hl0ZS6Vk67wMuAY519+05D90L/NjMvkFw0HYf4OlKtiXFFYt9ktBDaXvjY7at\n7TeHD4D3Mmbb2kTrKhb5SCk95KWOAAANZElEQVRn4kxZuqLfHD6A9fQwZekKIFnsFXppRJXO4V9L\n8J76B8wM4El3/3t3f8HM7gBeJJjq+YzO0KmetEIPpc+zt3ZugS3EnqVTaF1JQw+ln3YZzdPHnaVT\nKPaKvDQ62z0LU3/t7e2+cOHCeg9jSCkU+1JCD7V5Q1UpoYfanGOv0MtQZ2aL3L292PP0TtshLF/s\nSw09VP8NVaWGHqofe4VehhsFf4gaGPtyIh+pZuzLCT2kF3uFXmQ3BX8Iyo19JaGH6sS+3MhH0tyz\njyjyIgr+kPPXH/o6M2Lf5lCatD97fuRmZ+qjqyteT9qxV+hFdlPwh5C//tDXU1lP2rFPI/SQbuzv\nf/KLqa1LpFEo+ENEFmOv0IsMLQr+EJCl2E+95+Xgxh4TKl4XpBd7hV6kOAU/w9IKPVQe+77QQ2Zi\nr8iLlEbBz6h8sd8+to0tk6bR09xMU3c3bevXMGZb4eu4VhL7fqGH2NhvmjWVNQfMo3vMKJq372La\nC8uY0LG24Horib1CL1IeBT+DCsV+09Tp+Ijgc2t6WlrYNHU6QN7olxv7JKGHIParDtkXbw4/e35s\nK6sO2Rcgb/TLjb1CL1IZBT9jCk3jbJk0rS/2ER8xgi2TpsUGv9TYD4p8pMAUzpoD5vXFvm9MzU2s\nOWBebPDLib1CL5IOBT9Dis3Z9zTHf7vilpcS+7yhh6Lz9d1j4j+fJm55KbFX5EXSp+BnRJIDtE3d\n3fS0DP7s+abu0j97HoqEHhIdnG3evovusa2xy3Mljb1CL1I9Cn4GJD0bp239mn5z+ADW20vb+jVA\n8tgXDT0kPhNn2gvL+s3hA1h3D9NeWNZ3P0nsFXqR6lPw66yUUy+jefq4s3SSxD5R6KGk0y6jefq4\ns3QUepFsUfDrqJzz7Mds2zLoAG2h2CeOfKSMc+wndKwddIC2WOwVepHaU/DroBZvqCo59FD1N1Qp\n8iL1peDXWLVjX1booaqxV+hFskHBr6Fqxr7eoYfBsVfoRbJFwa+RasS+7MhHqhR7hV4kmxT8Gkgz\n9pBC6CHV2IMiLzIUKPhVlmbsJzz8SjorSjH2v375K6mtS0SqS8GvorRin1roIbXYK/QiQ4+CXyVp\nxH7sXU/SPHlyCqMJpRB7hV5k6FLwq6CS2I+968m+21mKvUIvMvSlEnwz+xxwNTDV3d80MwOuAU4G\ntgMfd/dn0thWlqUVesgf+017z2BN+3y6x42meesOpi1cwoSlKwuvvMzYK/IijaXi4JvZbOC9wOs5\ni08C9gl/HQFcF/7esMqN/cDQQ+HYrzp6Ad4SfNu628aw6ugFAPHRV+hFJEcae/jfBC4G7slZdhpw\ns7s78KSZTTSz6e6+KoXtZU45sY8LPRSexlnTPr8v9hFvaWZN+/zBwS8j9gq9SGOrKPhmdiqwwt0X\nB7M4fWYCy3Pud4TLBgXfzM4DzgOYM2dOJcOpi1Jiny/ykWJz9t3jRidbXmLsFXqR4aFo8M3sQWCv\nmIcuBz4PnBD3sphlHrd+d78BuAGgvb099jlZlTT2xUIPyQ7QNm/dQXfbmNjlfRLGXpEXGX6KBt/d\nj49bbmYHAvOAaO9+FvCMmR1OsEc/O+fps4AiRxaHliSxTyv0kWkLl/Sbwwewrm6mLVwS3EkQe4Ve\nZPgqe0rH3Z8HpkX3zezPQHt4ls69wPlmdhvBwdpNjTR/Xyz2SUIPpZ92Gc3Tx56lUyT2Cr2IVOs8\n/F8RnJL5KsFpmZ+o0nZqrlDsk4Yeyj/HfsLSlSUdoFXoRSSSWvDdfW7ObQc+k9a6syIu9qVEPlKL\nN1Qp9CIykN5pm0BaoYfqxl6RF5FCFPwiBsa+3NBDirFX6EWkDAp+Ae8dcSaccSRQWegh5T37kEIv\nIqVQ8PN474gzgcpDD+nHXqEXkXIo+DGi2Kchrdj/eu31qaxHRIYvBX+AtGKv0ItI1ij4ObIUe4Ve\nRNKm4IeyEnuFXkSqRcEnPvab589j3TGH0j1+LM2btzH50UWMX7Ks4Hoqib1CLyLVNqyDn2+vfvP8\neax531G7LzQyYRxr3ncUQN7olxN7RV5EamnYBr/QFM66Yw6NvdDIumMOjQ1+qbFX6EWkHoZl8IvN\n13ePH5t4eSmxV+hFpJ6GXfCTHJxt3ryN7gnjYpf3u58w9gq9iGTBsAp+0jNxJj+6qN8cPgQXGpn8\n6KK++8Vir8iLSNYMm+CXctplNE8fd5aOQi8iQ9WwCH4559iPX7Js0AHaQrFX6EUk6xo++NV+Q5VC\nLyJDRcMGv9ofgKbQi8hQ05DBr1bsFXkRGcoaLvhpxj6i0ItII2io4Kcd+wd670x1fSIi9dQwwU8z\n9gq9iDSihgh+GrFX5EWk0Q354Fcae4VeRIaLEZWuwMz+ycxeMrMXzOyrOcsvM7NXw8dOrHQ7cSqJ\n/QO9dyr2IjKsVLSHb2bvAk4DDnL3XWY2LVy+P3AWcAAwA3jQzPZ1955KBxwpN/aKvIgMV5VO6fwD\ncJW77wJw9zXh8tOA28Lly8zsVeBw4IkKt1dW6BV5EZHKp3T2Bd5pZk+Z2W/N7LBw+Uxgec7zOsJl\ng5jZeWa20MwWrl27tuDGSo29pm1ERHYruodvZg8Ce8U8dHn4+j2AI4HDgDvMbG/AYp7vcet39xuA\nGwDa29tjnwOlxV6RFxEZrGjw3f34fI+Z2T8AP3V3B542s15gCsEe/eycp84CVpY7yKSxV+hFRPKr\ndErnZ8C7AcxsX2Ak8CZwL3CWmY0ys3nAPsDT5WwgSew1dSMiUlylB22/D3zfzP4IdALnhHv7L5jZ\nHcCLQDfwmXLO0CkUewVeRKQ0FQXf3TuBj+Z57ErgynLXnS/2Cr2ISHky+U7buNgr9CIilclc8AfG\nXqEXEUlHpoL/8qKlHGHzFHkRkSqw4BhrNpjZWuAvKa1uCsEZQ1miMSWTxTFBNselMSXT6GN6i7tP\nLfakTAU/TWa20N3b6z2OXBpTMlkcE2RzXBpTMhpToOJPyxQRkaFBwRcRGSYaOfg31HsAMTSmZLI4\nJsjmuDSmZDQmGngOX0RE+mvkPXwREcmh4IuIDBMNGXwz+5yZuZlNCe+bmX07vMbuH8zskBqP50vh\ndp8zs/vNbEa9x2VmV5vZn8Lt3m1mE3Meq/r1iPOM6czw2si9ZtY+4LG6jCnc9vvC7b5qZpfWctsD\nxvF9M1sTflhhtGySmT1gZq+Ev+9Rw/HMNrOHzWxJ+H27sN5jCrffamZPm9nicFz/Hi6fF16s6RUz\nu93MRtZyXOEYmszsWTP7RV3G5O4N9Yvgc/jvI3gD15Rw2cnArwkuzHIk8FSNxzQ+5/YFwPX1Hhdw\nAtAc3v4K8JXw9v7AYmAUMA94DWiq0ZjmA/sBjwDtOcvrOaamcHt7E3z892Jg/1r+/ckZyzHAIcAf\nc5Z9Fbg0vH1p9H2s0XimA4eEt9uAl8PvVd3GFG7TgHHh7RbgqfDf1x3AWeHy64F/qMP38LPAj4Ff\nhPdrOqZG3MP/JnAx/a+wdRpwsweeBCaa2fRaDcjdN+fcHZsztrqNy93vd/fu8O6TBBepicZ0m7vv\ncvdlQHQ94lqMaYm7vxTzUN3GFG7nVXdf6sGnw94Wjqfm3P1RYP2AxacBN4W3bwL+pobjWeXuz4S3\ntwBLCC5lWrcxhWNxd98a3m0JfznBtTvuqte4zGwW8H7gxvC+1XpMDRV8MzsVWOHuiwc8lPgau9Vi\nZlea2XLgI8AXszKu0CcJ/qcB2RlTrnqOKYtfj1x7uvsqCAIMTKvHIMxsLnAwwd503ccUTp08B6wB\nHiD4X9rGnJ2cenwfv0WwM9ob3p9c6zFl6sPTkihyjd3PE0xVDHpZzLJUz0ctNC53v8fdLwcuN7PL\ngPOB/13tcRUbU/icywkuUnNr9LJ6jynuZdUcUxH13PaQYGbjgJ8A/+zum4Md1/ry4IJL7wiPTd1N\nMF046Gm1Go+ZnQKscfdFZnZctLjWYxpywfc819g1swMJ5ncXh3/hZgHPmNnhpHyN3VLGFePHwC8J\ngl/VcRUbk5mdA5wCvMfDScR6jymPqn//MrrtJFab2XR3XxVOB66p5cbNrIUg9re6+0+zMKZc7r7R\nzB4hmMOfaGbN4R51rb+PRwGnmtnJQCswnmCPv6ZjapgpHXd/3t2nuftcd59L8A/1EHd/g+Aaux8L\nz4o5EtgU/ZezFsxsn5y7pwJ/Cm/XbVxm9j7gEuBUd9+e81Bq1yNOUT3H9Htgn/BsipHAWeF4suJe\n4Jzw9jlAvv8lpS6cg/4esMTdv5GFMYXjmhqddWZmo4HjCY4vPAycUY9xuftl7j4rbNNZwEPu/pGa\nj6nWR6lr9Qv4M7vP0jHgOwTzeM+TcwZIjcbyE+CPwB+AnwMz6z0uggOfy4Hnwl/X5zx2eTiml4CT\najim0wl+UO8CVgP31XtM4bZPJjgD5TWCqaeabXvAOP4fsAroCr9O5xLMA/8GeCX8fVINx3M0wRTE\nH3L+Hp1czzGF4zoIeDYc1x+BL4bL9ybYUXgVuBMYVafv43HsPkunpmPSRyuIiAwTDTOlIyIihSn4\nIiLDhIIvIjJMKPgiIsOEgi8iMkwo+CIiw4SCLyIyTPx/gLN6oRXoZaoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f22900dcfd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data = np.arange(20).reshape(4, 5) # a boring data\n",
"\n",
"plt.pcolormesh(lon_in_b, lat_in_b, data)\n",
"plt.scatter(lon_in, lat_in, label='cell center')\n",
"plt.legend()\n",
"plt.title('input data and grid')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Output Grid"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just a simple rectilinear grid"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"lon_out_b = np.linspace(-50, 50, 51)\n",
"lon_out = 0.5*(lon_out_b[1:]+lon_out_b[:-1])\n",
"\n",
"lat_out_b = np.linspace(-80, 80, 51)\n",
"lat_out = 0.5*(lat_out_b[1:]+lat_out_b[:-1])\n",
"\n",
"# 1D -> 2D\n",
"lon_out, lat_out = np.meshgrid(lon_out, lat_out)\n",
"lon_out_b, lat_out_b = np.meshgrid(lon_out_b, lat_out_b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Regridding"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Convenience function\n",
"Adapted from https://github.com/JiaweiZhuang/xESMF/blob/master/xesmf/backend.py"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def esmf_grid(lon, lat):\n",
" '''\n",
" Create an ESMF.Grid object, for contrusting ESMF.Field and ESMF.Regrid\n",
" '''\n",
" staggerloc = ESMF.StaggerLoc.CENTER\n",
" \n",
" grid = ESMF.Grid(np.array(lon.shape), staggerloc=staggerloc,\n",
" coord_sys=ESMF.CoordSys.SPH_DEG)\n",
" lon_pointer = grid.get_coords(coord_dim=0, staggerloc=staggerloc)\n",
" lat_pointer = grid.get_coords(coord_dim=1, staggerloc=staggerloc)\n",
"\n",
" lon_pointer[...] = lon\n",
" lat_pointer[...] = lat\n",
"\n",
" return grid\n",
"\n",
"def add_corner(grid, lon_b, lat_b):\n",
" '''\n",
" Add corner information to ESMF.Grid for conservative regridding.\n",
" '''\n",
" staggerloc = ESMF.StaggerLoc.CORNER \n",
" \n",
" grid.add_coords(staggerloc=staggerloc)\n",
" lon_b_pointer = grid.get_coords(coord_dim=0, staggerloc=staggerloc)\n",
" lat_b_pointer = grid.get_coords(coord_dim=1, staggerloc=staggerloc)\n",
"\n",
" lon_b_pointer[...] = lon_b\n",
" lat_b_pointer[...] = lat_b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The regridding process"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# make ESMF.Grid object\n",
"\n",
"grid_in = esmf_grid(lon_in, lat_in)\n",
"add_corner(grid_in, lon_in_b, lat_in_b)\n",
"\n",
"grid_out = esmf_grid(lon_out, lat_out)\n",
"add_corner(grid_out, lon_out_b, lat_out_b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`line_type=ESMF.LineType.GREAT_CIRCLE` fixes the previous \"diffusion\" issue."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# make ESMF.Regrid object\n",
"\n",
"sourcefield = ESMF.Field(grid_in)\n",
"destfield = ESMF.Field(grid_out)\n",
"regrid = ESMF.Regrid(sourcefield, destfield, \n",
" regrid_method=ESMF.RegridMethod.BILINEAR,\n",
" unmapped_action=ESMF.UnmappedAction.IGNORE,\n",
" line_type=ESMF.LineType.GREAT_CIRCLE)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Apply regridding\n",
"\n",
"sourcefield.data[...] = data\n",
"destfield = regrid(sourcefield, destfield)\n",
"data_out = destfield.data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Check output data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now the result is correct"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.QuadMesh at 0x7f227b1a75d0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f22900dcb10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.pcolormesh(lon_out_b, lat_out_b, data_out)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conservative method"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# make ESMF.Regrid object\n",
"regrid_con = ESMF.Regrid(sourcefield, destfield, \n",
" regrid_method=ESMF.RegridMethod.CONSERVE,\n",
" unmapped_action=ESMF.UnmappedAction.IGNORE,\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Apply regridding\n",
"sourcefield.data[...] = data\n",
"destfield = regrid_con(sourcefield, destfield)\n",
"data_out_con = destfield.data.copy() # to avoid being overwritten by the next operation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The result is correct in 7.1.0.dev46."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.QuadMesh at 0x7f227b127110>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f227b1be150>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.pcolormesh(lon_out_b, lat_out_b, data_out_con)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Use fractional normalization"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.QuadMesh at 0x7f227b09c910>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n2v52AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f227b16f190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make ESMF.Regrid object\n",
"regrid_frac = ESMF.Regrid(sourcefield, destfield, \n",
" regrid_method=ESMF.RegridMethod.CONSERVE,\n",
" unmapped_action=ESMF.UnmappedAction.IGNORE,\n",
" norm_type=ESMF.NormType.FRACAREA)\n",
"\n",
"# Apply regridding\n",
"sourcefield.data[...] = data\n",
"destfield = regrid_frac(sourcefield, destfield)\n",
"data_out_frac = destfield.data\n",
"\n",
"plt.pcolormesh(lon_out_b, lat_out_b, data_out_frac)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x7f227afdc950>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nbmZWQf8fHA03m7Rj46EAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f227b102bd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Difference at the edge\n",
"plt.pcolormesh(lon_out_b, lat_out_b, data_out_frac-data_out_con, \n",
" cmap='RdBu_r', vmin=-10, vmax=10)\n",
"plt.title('fraction area norm. - destination area norm.')\n",
"plt.colorbar()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
},
"toc": {
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"toc_cell": false,
"toc_position": {},
"toc_section_display": "block",
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment