{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Deep Learning: Downscale climate models\n",
    "\n",
    "> * 🔬 Data Science\n",
    "* 🤖 Machine Learning\n",
    "* 🥠 Predictive Modeling\n",
    "* 📈 Graphing and Visualization\n",
    "* 🖥️ Requires ArcPy\n",
    "* 👟 Ready To Run!\n",
    "\n",
    "In this notebook, an essential component for making climate projections is addressed with spatial and non-spatial machine learning methods, namely climate downscaling. Downscaling is calibrating a global climate model with spatially-limited local temperature measurements.\n",
    "\n",
    "For climate models, calibration can be done in various ways. One way of performing calibration is the so-called statistical downscaling that forms a statistical relationship between global climate models and temperature observations. For the inherently spatial problem of downscaling, we evaluate regression methods based on their method of handling spatial information.\n",
    "\n",
    "1. Non-spatial (generic) machine learning\n",
    "2. Spatial machine learning\n",
    "3. Non-spatial machine learning with geoenriched predictors\n",
    "  \n",
    "## What is Statistical Climate Downscaling\n",
    "### Overview\n",
    "Scientists use Global Climate Models (GCMs) to model mesoscale to large scale (100s of kilometers) atmospheric dynamics of our planet. GCMs solve analytical equations, such as Navier-Stokes equations, to model global air flow and energy transfer in the atmosphere. In addition to global dynamics, weather is impacted by local effects such as distance to a water body, proximity to mountains, etc. These local effects are not modeled in GCMs. Thus, GCMs need to be calibrated with measurements collected at a finer scale. Fine-scale measurements of weather such as local temperature comes from weather stations that collect data continuously. In this analysis, we will be using weather measurements from a subset of weather stations in U.S. and CGCM1 climate model. Statistical downscaling is summarized below:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\" data:image/png;base64,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\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Predicting Climate Over Contiguous U.S.\n",
    "Predicting future temperature using a GCM requires forming a statistically-valid relationship between coarse-scale climate model and fine-scale weather measurements using observed data. We will use 19 variables from CGCM1:\n",
    "\n",
    "- Mean sea level pressure\n",
    "- Airflow strength (simulated at 3 pressure levels)\n",
    "- Surface zonal velocity (simulated at 3 pressure levels)\n",
    "- Meridional velocity (simulated at 3 pressure levels)\n",
    "- Surface vorticity (simulated at 3 pressure levels)\n",
    "- Geopotential height (simulated 2 pressure levels)\n",
    "- Zonal velocity (simulated at 2 pressure levels)\n",
    "- Near surface relative humidity\n",
    "- Near surface specific humidity\n",
    "\n",
    "We will establish a relationship between simulated climate variables and measured average temperature to calibrate GCM. This process is known as downscaling and it can be done a number of ways (Wilby and Wigley, 1997). In this blog we will explore statistical downscaling. For the sake of demonstration, we will downscale GCM variables for a time snapshot: March 12, 2012 in the contiguous United States. \n",
    "Downscaling methods we will explore are summarized below."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\" data:image/png;base64,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t927d4cuL/Sc+tmF4naZHTt2zIX37NnjwgpUExjifVZtlWJUEdCu7FWEdF0EEgRsB86u387lkpNQVZdEQAREQAREYC4ErA+D8C67zM9Fua+Emo5d++t56jhG2eKer1SNJST29T7LZ+00JWliPs1yl9UiIAIiIAIiIAIiIAIiIAIiIAI9IaCl7D0pCKkhAiIgAiIgAiIgAiIgAiIgAiIwTQKamE+z3GW1CIiACIiACIiACIiACIiACIhATwhoYt6TgpAaIiACIiACIiACIiACIiACIiAC0ySgifk0y11Wi4AIiIAIiIAIiIAIiIAIiIAI9ISAJuY9KQipIQIiIAIiIAIiIAIiIAIiIAIiME0CmphPs9xltQiIgAiIgAiIgAiIgAiIgAiIQE8IaGLek4KQGiIgAiIgAiIgAiIgAiIgAiIgAtMkoIn5NMtdVouACIiACIiACIiACIiACIiACPSEgCbmPSkIqSECIiACIiACIiACIiACIiACIjBNApqYT7PcZbUIiIAIiIAIiIAIiIAIiIAIiEBPCHytJ3pIDREYPIGDBw8Wp06dKrZv315ceeWVg7dHBoiACIiACIiACIiACIiACCyGwJrTpVtMVspl2QT+/e9/Fx988EHx+eefF2effXbxrW99qzjnnHOWrdZS8//vf/9bPP/888Wnn35a/PznP+/EY82aNTNbfvvb3xb79+9fql3KfPwEctbd8dOShSIgAiIQJqC2NMxFZ0VABBZPQEvZF898oTmePHmyOHz4cLFr167iu9/9brFz587iqquuKi6++OJi48aNxS233FIcP358oTrlyAz2YCIc+8N12I2HESn3xBNPFNdff32xb9++4tChQ6mok7iWi+skYC3ZSNXdJReAsheBBAG1pQk4PbuktrRnBSJ1RGDCBDQxH3HhY8J9ww03zCaeTz31VNDSAwcOFOeff37x+uuvB6/39WTMHtMX1zHhxsOIVFwsPZc7QyDFCrHqcj0jUaF5EVDdnRdZyRWB7gTUlnZnuCgJaksXRVr5iIAIVBHQN+ZVhAZ8/ejRo25S+uijjxY7duwo1q5dO7Po7bffLu6//353HW/QP/nkk+Kss84anMXvvfee0/mLL74oTpw4URw5cqTAQwc4vLl47rnngt9948HFhg0bZvGwlF3uDIEuXM9IUWheBFR350VWckUgLwG1pXl55pam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bBIBEVg0AbWliyau/ERABESgGwFNzLvxU2oRqEXg5MmTszfmWKp+4MCBYBrsjn311VfX3iwsKGQkJ8VrJAUpM0RABJZKQG3pUvErcxEQARFoREAT80a4FFkE8hDgHV3Xrl27kI2/8mi+HCnitRzuylUERGBcBNSWjqs8ZY0IiMC4CGhiPq7ylDUiIAIiIAIiIAIiIAIiIAIiIAIDI6Bd2QdWYFJXBERABERABERABERABERABERgXAQ0MR9XecoaERABERABERABERABERABERCBgRHQxHxgBSZ1RUAEREAEREAEREAEREAEREAExkVAE/NxlaesEQEREAEREAEREAEREAEREAERGBgBTcwHVmBSVwREQAREQAREQAREQAREQAREYFwENDEfV3nKGhEQAREQAREQAREQAREQAREQgYER0MR8YAUmdUVABERABERABERABERABERABMZFQBPzcZWnrBEBERABERABERABERABERABERgYAU3MB1ZgUlcEREAEREAEREAEREAEREAERGBcBL42LnNkjQhMg8DBgweLU6dOFdu3by+uvPLKaRgtK0VABERABERABERABERgpATWnC7dSG2TWR6Bf//738UHH3xQfP7558XZZ59dfOtb3yrOOeccL5YOh0BgzZo1MzV/+9vfFvv37x+CytJRBERABJIE1Ecl8XS6ePLkyQJ/3/nOdyrlWNyzzjqrwJ/cOAn897//LZ5//vni008/LX7+859rPDjOYpZVAyOgpewDK7Cm6qKDPXz4cIGJ3He/+91i586dxVVXXVVcfPHFxcaNG4tbbrmlOH78eFOxS4+/a9eumU2wK/SH67AbAz258RCoKneuCxhwyImACPSbgPVRuLen1EdxW4VwyFW1d7iO1VN1+rmvf/3rM75Ik3Kvv/56YXHx4Lepq6Oz+uamVOcT/4knniiuv/76Yt++fcWhQ4fmk4mkioAINCKgN+aNcA0rMibc559/fi2lX3vtteKiiy6qFbcPkWIDmZBuTz75ZPGzn/0sdGmw58z+qb0xN7vrFNxzzz2nZf4lKAza33777WLdunXFZZddVged4ojAQgigj7r99tuLp556qjK/MfdRMD60eLFJe1fVz7GsUF7QAW0FHo6Ye+utt4rvfe97dljL53yqElTpXJVe17sRuO+++2b3H6RMbSzRjZxSi8D8COgb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+qZp6mnWj1jMBxvG2KYxy9IOgwvbzKurPmwb7BlzOTYpr2Vx8fOtW75cJ9qUI6dXHWhSUxR3CARwX6leD6GkmuvYpM3EfjjYPwWTPLygSDl8n2/7tuChaM7600Rn1pHbaZyvq1PbdJx3Vdi3qa5uVXJ1XQRE4EsCmpirJoiACIiACIiACIiACIyCwJo1a2Z2YJUZVgCkHDa/xWZ3cLkn5ql8dU0EREAEQgS0lD1ERedEQAREQAREQAREQAQGSwDL1avc008/7aLo7a9DoYAIiMCSCGhiviTwylYEREAEREAEREAERCAvAfu+Hd/I4+fWsMTbd/g5OHxXbj8zV7Xk3U+vYxEQARGYBwEtZZ8HVckUAREQAREQAREQARFYOAFMxPfu3VtgmXodh003d+/eXSeq4oiACIjAXAloYj5XvBIuAiIgAiIgAiIgAiKwSAInT54sXnzxxQJL1e2tuJ8/dhO/+uqra2+u5qfXsQiIgAjkJqCJeW6ikicCIiACIiACIiACItAbArybOH6aLvXzkr1RWoqIgAhMjoAm5pMrchksAiIgAiIgAiIgAiIgAiIgAiLQJwLa/K1PpSFdREAEREAEREAEREAEREAEREAEJkdAE/PJFbkMFgEREAEREAEREAEREAEREAER6BMBTcz7VBrSRQREQAREQAREQAREQAREQAREYHIENDGfXJHLYBEQAREQAREQAREQAREQAREQgT4R0MS8T6UhXURABERABERABERABERABERABCZHQBPzyRW5DBYBERABERABERABERABERABEegTAU3M+1Qa0kUEREAEREAEREAEREAEREAERGByBDQxn1yRy2AREAEREAEREAEREAEREAEREIE+EdDEvE+lIV1EQAREQAREQAREQAREQAREQAQmR0AT88kVuQwWAREQAREQAREQAREQAREQARHoEwFNzPtUGtJFBERABERABERABERABERABERgcgQ0MZ9ckctgERABERABERABERABERABERCBPhHQxLxPpSFdREAEREAEREAEREAEREAEREAEJkdAE/PJFbkMFgEREAEREAEREAEREAEREAER6BMBTcz7VBrSRQREQAREQAREQAREQAREQAREYHIENDGfXJHLYBEQAREQAREQAREQAREQAREQgT4R0MS8T6UhXURABERABERABERABERABERABCZHQBPzyRW5DBYBERABERABERABERABERABEegTAU3M+1Qa0kUEREAEREAEREAEREAEREAERGByBDQxn1yRy2AREAEREAEREAEREAEREAEREIE+EdDEvE+lIV1EQAREQAREQAREQAREQAREQAQmR0AT88kVuQwWAREQAREQAREQAREQAREQARHoEwFNzPtUGtJFBERABERABERABERABERABERgcgQ0MZ9ckctgERABERABERABERABERABERCBPhHQxLxPpSFdREAEREAEREAEREAEREAEREAEJkdAE/PJFbkMFgEREAEREAEREAEREAEREAER6BMBTcz7VBrSRQREQAREQAREQAREQAREQAREYHIENDGfXJHLYBEQAREQAREQAREQAREQAREQgT4R0MS8T6UhXURABERABERABERABERABERABCZHQBPzyRW5DBYBERABERABERABERABERABEegTAU3M+1Qa0kUEREAEREAEREAEREAEREAERGByBDQxn1yRy2AREAEREAEREAEREAEREAEREIE+EdDEvE+lIV1EQAREQAREQAREQAREQAREQAQmR0AT88kVuQwWAREQAREQAREQAREQAREQARHoEwFNzPtUGtJFBERABERABERABERABERABERgcgQ0MZ9ckctgERABERABERABERABERABERCBPhHQxLxPpSFdREAEREAEREAEREAEREAEREAEJkdAE/PJFbkMFgEREAEREAEREAEREAEREAER6BMBTcz7VBrSRQREQAREQAREQAREQAREQAREYHIENDGfXJHLYBEQAREQAREQAREQAREQAREQgT4R0MS8T6UhXURABERABERABERABERABERABCZHQBPzyRW5DBYBERABERABERABERABERABEegTAU3M+1Qa0kUEREAEREAEREAEREAEREAERGByBDQxn1yRy2AREAEREAEREAEREAEREAEREIE+EdDEvE+lIV1EQAREQAREQAREQAREQAREQAQmR0AT88kVuQwWAREQAREQAREQAREQAREQARHoEwFNzPtUGtJFBERABERABERABERABERABERgcgQ0MZ9ckctgERABERABERABERABERABERCBPhHQxLxPpSFdREAEREAEREAEREAEREAEREAEJkdAE/PJFbkMFgEREAEREAEREAEREAEREAER6BOB/wMU51eCV3HynAAAAABJRU5ErkJggg==\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Approach\n",
    "#### (1) Introduce Climate Downscaling\n",
    "#### (2) Explain Regression Problem\n",
    "#### (3) Methods we used: SVM/Ridge Regression method/GWR/RF"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's get started.  First, we will import libraries that contain spatial and non-spatial regression models used throughout the study. In this notebook, we will use ArcPy and ArcGIS API for Python to perform spatial machine learning functions and data management, and scikit-learn will be used for non-spatial machine learning methods."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import shutil\n",
    "import zipfile\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.cm as cm\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.linear_model import Ridge, RidgeCV\n",
    "from sklearn.svm import SVR\n",
    "from IPython.display import display\n",
    "from IPython.display import IFrame\n",
    "\n",
    "from arcgis.gis import GIS\n",
    "import arcpy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe\n",
       "            width=\"100%\"\n",
       "            height=\"800px\"\n",
       "            src=\"https://arcgis.com/apps/Minimalist/index.html?appid=295c7fed9bbb413f8d8394b0effe1f71\"\n",
       "            frameborder=\"0\"\n",
       "            allowfullscreen\n",
       "        ></iframe>\n",
       "        "
      ],
      "text/plain": [
       "<IPython.lib.display.IFrame at 0x7f482c2d1550>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "IFrame(src='https://arcgis.com/apps/Minimalist/index.html'\\\n",
    "           '?appid=295c7fed9bbb413f8d8394b0effe1f71',\n",
    "       width=\"100%\", height=\"800px\") "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Even though it is a must, we recommend making sure ArcPy is properly imported by running the GetInstallInfo function and querying the version of the ArcPy installed on ArcGIS Notebook Server."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'10.7.0'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arcpy.GetInstallInfo()['Version']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Connect to GIS. GIS enables interactive widgets to be embedded in analytical work and internally uses the ArcGIS API for JavaScript."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "agol_gis = GIS(set_active=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Automatically authenticate to your WebGIS using your credentials"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "gis = GIS(\"home\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 0. Environment setting "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 0.1 Unzip uploaded GDB "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from shutil import unpack_archive"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's copy the sample geodatabase used from this sample from `/arcgis/samplesdata/` to `/arcgis/home`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GDB succesfully copied to /arcgis/home/climate_input.gdb/\n"
     ]
    }
   ],
   "source": [
    "arcgis_dir = os.path.abspath(os.path.join(os.sep, 'arcgis', ''))\n",
    "home_dir = os.path.join(arcgis_dir, 'home', '')\n",
    "\n",
    "def copy_sample_gdb_to_home(gdb_zip_name):\n",
    "    \"\"\"Given the full filename (with extensions) of a gdb zip file in \n",
    "    /arcgis/samplesdata/, will copy and unzip that gdb to /arcgis/home/\n",
    "    Will return the full path to the unzipped gdb in home\"\"\"\n",
    "\n",
    "    # Get the full paths of all the source and destination files to copy\n",
    "    gdb_dir_name = gdb_zip_name.split(\".zip\")[0]\n",
    "    gdb_zip_path_src = os.path.join(arcgis_dir, 'samplesdata', \n",
    "                                    gdb_zip_name)\n",
    "    gdb_dir_path_src = os.path.join(arcgis_dir, 'samplesdata', \n",
    "                                    gdb_dir_name)\n",
    "    gdb_zip_path_dst = os.path.join(home_dir, gdb_zip_name)\n",
    "    gdb_dir_path_dst = os.path.join(home_dir, gdb_dir_name)\n",
    "\n",
    "    # If the gdb has been copied/unzipped to home dir before, delete it\n",
    "    if os.path.exists(gdb_zip_path_dst):\n",
    "        os.remove(gdb_zip_path_dst)\n",
    "    if os.path.exists(gdb_dir_path_dst):\n",
    "        shutil.rmtree(gdb_dir_path_dst)\n",
    "\n",
    "    # Copy the zip file to home, unzip it\n",
    "    shutil.copy(gdb_zip_path_src, gdb_zip_path_dst)\n",
    "    zip_ref = zipfile.ZipFile(gdb_zip_path_dst, 'r')\n",
    "    zip_ref.extractall(home_dir)\n",
    "    zip_ref.close()\n",
    "    \n",
    "    # Return the output full path to /arcgis/home/unzipped_gdb/\n",
    "    return os.path.join(gdb_dir_path_dst, '') # Adds trailing slash\n",
    "\n",
    "gdb_path = copy_sample_gdb_to_home('climate_input.gdb.zip')\n",
    "print(f\"GDB succesfully copied to {gdb_path}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 0.2 Set up working environment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "arcpy.env.workspace = gdb_path\n",
    "outputSpace = home_dir\n",
    "climate_output_gdb_path = os.path.join(home_dir, \"climate_output.gdb\")\n",
    "if os.path.exists(climate_output_gdb_path):\n",
    "    shutil.rmtree(climate_output_gdb_path)\n",
    "arcpy.CreateFileGDB_management(outputSpace, \"climate_output.gdb\")\n",
    "outGDB = os.path.join(outputSpace, \"climate_output.gdb\")\n",
    "\n",
    "arcpy.env.overwriteOutput = True ## overwrite the output results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 0.3 List the feature class in my working environment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "datasets = arcpy.ListDatasets(feature_type='feature')\n",
    "datasets = [''] + datasets if datasets is not None else []"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Data Wrangling \n",
    "### 1.1 Filling Missing Station Values\n",
    "#### There are a lot of them and we don't have much data to start with, so let's do FIMV.\n",
    "#### There are some average surface temperature values are missing, and we need to fill the missing values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "station_fc = \"station\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "station_sdf = pd.DataFrame.spatial.from_featureclass(station_fc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>T_MONTHLY_MAX</th>\n",
       "      <th>T_MONTHLY_MIN</th>\n",
       "      <th>T_MONTHLY_MEAN</th>\n",
       "      <th>T_MONTHLY_AVG</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-9999.0</td>\n",
       "      <td>11.4</td>\n",
       "      <td>17.8</td>\n",
       "      <td>-9999.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-9999.0</td>\n",
       "      <td>-9999.0</td>\n",
       "      <td>-9999.0</td>\n",
       "      <td>16.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22.6</td>\n",
       "      <td>9.3</td>\n",
       "      <td>16.0</td>\n",
       "      <td>-9999.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-9999.0</td>\n",
       "      <td>-9999.0</td>\n",
       "      <td>18.8</td>\n",
       "      <td>18.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>21.6</td>\n",
       "      <td>9.5</td>\n",
       "      <td>15.6</td>\n",
       "      <td>15.8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   T_MONTHLY_MAX  T_MONTHLY_MIN  T_MONTHLY_MEAN  T_MONTHLY_AVG\n",
       "0        -9999.0           11.4            17.8        -9999.0\n",
       "1        -9999.0        -9999.0         -9999.0           16.7\n",
       "2           22.6            9.3            16.0        -9999.0\n",
       "3        -9999.0        -9999.0            18.8           18.8\n",
       "4           21.6            9.5            15.6           15.8"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# show the temperature info from my station data\n",
    "station_sdf[[\"T_MONTHLY_MAX\", \"T_MONTHLY_MIN\", \"T_MONTHLY_MEAN\",\n",
    "             \"T_MONTHLY_AVG\"]].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Result '/arcgis/home/climate_output.gdb/station_filled_missing_value'>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# As you can see, there are many -9999.0 in SUR_TEMP_MONTHLY_AVG. \n",
    "# -9999 represents missing values, and we need to use fill mising value \n",
    "# tool to fill those fields\n",
    "# You can use the number of spatial neighbors for interpolating the \n",
    "# missing values; here we'll use five numbers of neighbors\n",
    "\n",
    "station_fmv = os.path.join(outGDB, \"station_filled_missing_value\")\n",
    "\n",
    "arcpy.stpm.FillMissingValues(station_fc, station_fmv,\n",
    "    \"T_MONTHLY_MAX;T_MONTHLY_MIN;T_MONTHLY_MEAN;T_MONTHLY_AVG\",\n",
    "    \"AVERAGE\", \"K_NEAREST_NEIGHBORS\", None, None, \"TIME\", 6, \"WBANNO\",\n",
    "    None, None, None, None, -9999, None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>T_MONTHLY_MAX</th>\n",
       "      <th>T_MONTHLY_MIN</th>\n",
       "      <th>T_MONTHLY_MEAN</th>\n",
       "      <th>T_MONTHLY_AVG</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>24.54</td>\n",
       "      <td>11.40</td>\n",
       "      <td>17.80</td>\n",
       "      <td>18.04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>23.06</td>\n",
       "      <td>9.82</td>\n",
       "      <td>16.48</td>\n",
       "      <td>16.70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22.60</td>\n",
       "      <td>9.30</td>\n",
       "      <td>16.00</td>\n",
       "      <td>16.48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>24.80</td>\n",
       "      <td>12.04</td>\n",
       "      <td>18.80</td>\n",
       "      <td>18.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>21.60</td>\n",
       "      <td>9.50</td>\n",
       "      <td>15.60</td>\n",
       "      <td>15.80</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   T_MONTHLY_MAX  T_MONTHLY_MIN  T_MONTHLY_MEAN  T_MONTHLY_AVG\n",
       "0          24.54          11.40           17.80          18.04\n",
       "1          23.06           9.82           16.48          16.70\n",
       "2          22.60           9.30           16.00          16.48\n",
       "3          24.80          12.04           18.80          18.80\n",
       "4          21.60           9.50           15.60          15.80"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "station_fmv_sdf = pd.DataFrame.spatial.from_featureclass(station_fmv)\n",
    "\n",
    "station_fmv_sdf[[\"T_MONTHLY_MAX\", \"T_MONTHLY_MIN\",\n",
    "                 \"T_MONTHLY_MEAN\", \"T_MONTHLY_AVG\"]].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2 Plot Local Station Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# create a function which is able to plot the spatially enabled data frame\n",
    "def visualizeFeatureClassBySEDF(myMap, fc, renderer_type,\n",
    "                                method, class_count, col,\n",
    "                                colors, alpha, line_width):\n",
    "    sdf = pd.DataFrame.spatial.from_featureclass(fc)\n",
    "    # change the spatial reference of the SEDF same as the map\n",
    "    sdf.spatial.project(spatial_reference = {'wkid': 3857}) \n",
    "    sdf.spatial.plot(map_widget= myMap,renderer_type=renderer_type,\n",
    "                     method=method, class_count=class_count,\n",
    "                     col=col,colors=colors,alpha=alpha,\n",
    "                     line_width=line_width)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "879c6a16b3d1425aab14335c83616150",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "MapView(layout=Layout(height='400px', width='100%'), zoom=4.0)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div class=\"map-static-img-preview-a3dad310-c53d-4547-8e50-c5946e87576f\"><img src=\"\"></img></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sdf_map = agol_gis.map('United States',zoomlevel=4)\n",
    "sdf_map"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "visualizeFeatureClassBySEDF(sdf_map, station_fmv, renderer_type='c',\n",
    "                            method='esriClassifyNaturalBreaks',\n",
    "                            class_count=7,col=\"T_MONTHLY_AVG\",\n",
    "                            colors='Reds' ,alpha=0.5, line_width=0.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.3 Resolve Scale and Discretization Differences\n",
    "Global climate modeling is simulated at locations around the world. One of the global climate variables is visualized."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# First, let's plot the GCM data\n",
    "\n",
    "def visualizeFeatureClassBySEDF_unique(myMap, fc, symbol_type,\n",
    "                                       cmap,line_width,marker_size, \n",
    "                                       alpha):\n",
    "    sdf = pd.DataFrame.spatial.from_featureclass(fc)\n",
    "    # change the spatial reference of the SEDF same as the map\n",
    "    sdf.spatial.project(spatial_reference = {'wkid': 3857})\n",
    "    sdf.spatial.plot(map_widget= myMap,symbol_type=symbol_type,\n",
    "                     cmap=cmap,line_width=line_width, \n",
    "                     marker_size=marker_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We add the GCM data to the map above; as you can see, the locations of GCM data points do not coincide with the locations of stations\n",
    "visualizeFeatureClassBySEDF_unique(sdf_map, \"airFlow500_201203\", \n",
    "                                   symbol_type='simple',\n",
    "                                   cmap=[90,180,172,225],\n",
    "                                   line_width= 0.5,\n",
    "                                   marker_size=7,\n",
    "                                   alpha=\"0.5\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"specHum2m_201203\", \"shum\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"airT2m_201203\", \"air\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"geoHgt850_201203\", \"hgt\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"geoHgt500_201203\", \"hgt\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"relHumSurf_201203\", \"rhum\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"specHum850_201203\", \"shum\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"specHum500_201203\", \"shum\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"vort850_201203\", \"omega\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"vort500_201203\", \"omega\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"merid850_201203\", \"vwnd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"merid500_201203\", \"vwnd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"zonal850_201203\", \"uwnd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"zonal500_201203\", \"uwnd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"airFlow850_201203\", \"wspd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"airFlow500_201203\", \"wspd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"airFlowSurf_201203\", \"wspd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"vortSurf_201203\", \"wspd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"meridSurf_201203\", \"vwnd\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"seaLevP_201203\", \"slp\", ...\n",
      "Calling arcpy.ga.EmpiricalBayesianKriging(\"zonalSurf_201203\", \"uwnd\", ...\n"
     ]
    }
   ],
   "source": [
    "# Since the locations of GCM data do not coincide with the\n",
    "# locations of the real station, first, we need to interpolate GCM data\n",
    "# and get the raster surfaces of GCM \n",
    "\n",
    "arcpy.env.extent = arcpy.Extent(-124.76308372794, 24.5230996116049, -66.9498936574818, 49.3843680121063)  # setting the extent as US polygon - this is important, as otherwise some parts of the US won't get the interpolated values\n",
    "# run through a loop to create all GCM raster surfaces using EBK\n",
    "gcm_lst = [(\"specHum2m_201203\",\"shum\"),(\"airT2m_201203\",\"air\"),\n",
    "           (\"geoHgt850_201203\",\"hgt\"),(\"geoHgt500_201203\",\"hgt\"),\n",
    "           (\"relHumSurf_201203\",\"rhum\"),(\"specHum850_201203\",\"shum\"),\n",
    "           (\"specHum500_201203\",\"shum\"),(\"vort850_201203\",\"omega\"),\n",
    "           (\"vort500_201203\",\"omega\"),(\"merid850_201203\",\"vwnd\"),\n",
    "          (\"merid500_201203\",\"vwnd\"),(\"zonal850_201203\",\"uwnd\"),\n",
    "           (\"zonal500_201203\",\"uwnd\"),(\"airFlow850_201203\",\"wspd\"),\n",
    "           (\"airFlow500_201203\",\"wspd\"),(\"airFlowSurf_201203\",\"wspd\"),\n",
    "           (\"vortSurf_201203\",\"wspd\"),(\"meridSurf_201203\",\"vwnd\"),\n",
    "           (\"seaLevP_201203\",\"slp\"),(\"zonalSurf_201203\",\"uwnd\")]\n",
    "\n",
    "for gcm,value in gcm_lst:\n",
    "    arcpy.env.workspace = home_dir + \"/climate_input.gdb\"\n",
    "    file_name = str(gcm)+\"_ebk_surface\"\n",
    "    output = os.path.join(outGDB, file_name)\n",
    "    print(f'Calling arcpy.ga.EmpiricalBayesianKriging('\\\n",
    "          f'\"{gcm}\", \"{value}\", ...')\n",
    "    arcpy.ga.EmpiricalBayesianKriging(gcm, value, None, output,\n",
    "        9.94450736020055E-02, \"NONE\", 100, 1, 100,\n",
    "        \"NBRTYPE=StandardCircular RADIUS=15 ANGLE=0 \"\\\n",
    "        \"NBR_MAX=15 NBR_MIN=10 SECTOR_TYPE=ONE_SECTOR\",\n",
    "        \"PREDICTION\", 0.5, \"EXCEED\", None, \"POWER\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We can list all raster files in the output gdb to make sure our \n",
    "# EBK outputs are in there\n",
    "\n",
    "# Reset the current workspace\n",
    "arcpy.env.workspace = home_dir + \"climate_output.gdb\" "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<geoprocessing server result object at 0x7f47adb77f08>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# extract the values from the raster surface to the points of stations. \n",
    "# The \"extract multi value to points\" method can help us to do that\n",
    "arcpy.env.workspace = home_dir + \"/climate_input.gdb\"\n",
    "\n",
    "# since we don't want to change the original input station data, \n",
    "# we make a copy to climate_output.gdb\n",
    "arcpy.CopyFeatures_management(station_fmv, \n",
    "    home_dir + \"/climate_output.gdb/station_GCM\")  \n",
    "\n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "arcpy.sa.ExtractMultiValuesToPoints(\"station_GCM\", \n",
    "    [[\"specHum2m_201203_ebk_surface\", \"specHum2m\"], \n",
    "     [\"airT2m_201203_ebk_surface\", \"airT2m\"], \n",
    "     [\"geoHgt850_201203_ebk_surface\", \"geoHgt850\"],\n",
    "     [\"geoHgt500_201203_ebk_surface\",\"geoHgt500\"],\n",
    "     [\"relHumSurf_201203_ebk_surface\",\"relHumSurf\"],\n",
    "     [\"specHum500_201203_ebk_surface\",\"specHum500\"],\n",
    "     [\"specHum850_201203_ebk_surface\",\"specHum850\"],\n",
    "     [\"vort850_201203_ebk_surface\",\"vort850\"],\n",
    "     [\"vort500_201203_ebk_surface\",\"vort500\"],\n",
    "     [\"merid850_201203_ebk_surface\",\"merid850\"],\n",
    "     [\"merid500_201203_ebk_surface\",\"merid500\"],  \n",
    "     [\"zonal850_201203_ebk_surface\",\"zonal850\"],\n",
    "     [\"zonal500_201203_ebk_surface\",\"zonal500\"],\n",
    "     [\"airFlow850_201203_ebk_surface\",\"airFlow850\"],\n",
    "     [\"airFlow500_201203_ebk_surface\",\"airFlow500\"],\n",
    "     [\"airFlowSurf_201203_ebk_surface\",\"airFlowSurf\"],\n",
    "     [\"vortSurf_201203_ebk_surface\",\"vortSurf\"],\n",
    "     [\"meridSurf_201203_ebk_surface\",\"meridSurf\"],\n",
    "     [\"seaLevP_201203_ebk_surface\",\"seaLevP\"],\n",
    "     [\"zonalSurf_201203_ebk_surface\",\"zonalSurf\"]],\n",
    "    \"NONE\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# now the station data gets the values from 20 GCM raster surfaces, \n",
    "# we can check them by listing the files in our data\n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "fields = arcpy.ListFields(\"station_GCM\")\n",
    "station_predictors = [\"airT2m\",\"geoHgt850\",\"geoHgt850\",\n",
    "                      \"geoHgt500\",\"relHumSurf\",\"specHum500\",\n",
    "                      \"specHum850\",\"vort850\",\"vort500\",\"merid850\",\n",
    "                      \"vort500\",\"merid850\", \"merid500\",\"zonal850\",\n",
    "                      \"zonal500\",\"airFlow850\",\"airFlow500\",\"airFlowSurf\",\n",
    "                      \"vortSurf\",\"meridSurf\",\"seaLevP\",\"zonalSurf\"]\n",
    "station_predictand = [\"T_MONTHLY_AVG\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>airT2m</th>\n",
       "      <th>geoHgt850</th>\n",
       "      <th>geoHgt850</th>\n",
       "      <th>geoHgt500</th>\n",
       "      <th>relHumSurf</th>\n",
       "      <th>specHum500</th>\n",
       "      <th>specHum850</th>\n",
       "      <th>vort850</th>\n",
       "      <th>vort500</th>\n",
       "      <th>merid850</th>\n",
       "      <th>...</th>\n",
       "      <th>zonal850</th>\n",
       "      <th>zonal500</th>\n",
       "      <th>airFlow850</th>\n",
       "      <th>airFlow500</th>\n",
       "      <th>airFlowSurf</th>\n",
       "      <th>vortSurf</th>\n",
       "      <th>meridSurf</th>\n",
       "      <th>seaLevP</th>\n",
       "      <th>zonalSurf</th>\n",
       "      <th>T_MONTHLY_AVG</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>289.849213</td>\n",
       "      <td>164.443024</td>\n",
       "      <td>164.443024</td>\n",
       "      <td>164.443024</td>\n",
       "      <td>84.124435</td>\n",
       "      <td>10.733868</td>\n",
       "      <td>10.733868</td>\n",
       "      <td>-0.000187</td>\n",
       "      <td>-0.000187</td>\n",
       "      <td>1.560632</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.228055</td>\n",
       "      <td>-0.228055</td>\n",
       "      <td>4.300753</td>\n",
       "      <td>4.300753</td>\n",
       "      <td>3.480743</td>\n",
       "      <td>3.480743</td>\n",
       "      <td>1.641173</td>\n",
       "      <td>1019.500061</td>\n",
       "      <td>0.168134</td>\n",
       "      <td>18.04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>288.776917</td>\n",
       "      <td>159.583237</td>\n",
       "      <td>159.583237</td>\n",
       "      <td>159.583237</td>\n",
       "      <td>81.953171</td>\n",
       "      <td>10.155221</td>\n",
       "      <td>10.155221</td>\n",
       "      <td>0.009756</td>\n",
       "      <td>0.009756</td>\n",
       "      <td>1.874495</td>\n",
       "      <td>...</td>\n",
       "      <td>0.081150</td>\n",
       "      <td>0.081150</td>\n",
       "      <td>4.569221</td>\n",
       "      <td>4.569221</td>\n",
       "      <td>4.804224</td>\n",
       "      <td>4.804224</td>\n",
       "      <td>2.306259</td>\n",
       "      <td>1018.818359</td>\n",
       "      <td>0.031886</td>\n",
       "      <td>16.70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>288.779755</td>\n",
       "      <td>161.611938</td>\n",
       "      <td>161.611938</td>\n",
       "      <td>161.611938</td>\n",
       "      <td>82.471779</td>\n",
       "      <td>10.262570</td>\n",
       "      <td>10.262570</td>\n",
       "      <td>0.007005</td>\n",
       "      <td>0.007005</td>\n",
       "      <td>1.700716</td>\n",
       "      <td>...</td>\n",
       "      <td>0.011286</td>\n",
       "      <td>0.011286</td>\n",
       "      <td>4.380100</td>\n",
       "      <td>4.380100</td>\n",
       "      <td>4.402224</td>\n",
       "      <td>4.402224</td>\n",
       "      <td>2.013057</td>\n",
       "      <td>1019.115356</td>\n",
       "      <td>0.132225</td>\n",
       "      <td>16.48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>292.476349</td>\n",
       "      <td>165.336807</td>\n",
       "      <td>165.336807</td>\n",
       "      <td>165.336807</td>\n",
       "      <td>83.303917</td>\n",
       "      <td>11.522954</td>\n",
       "      <td>11.522954</td>\n",
       "      <td>-0.002438</td>\n",
       "      <td>-0.002438</td>\n",
       "      <td>2.187343</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.947112</td>\n",
       "      <td>-0.947112</td>\n",
       "      <td>4.986618</td>\n",
       "      <td>4.986618</td>\n",
       "      <td>3.740792</td>\n",
       "      <td>3.740792</td>\n",
       "      <td>1.571567</td>\n",
       "      <td>1019.343567</td>\n",
       "      <td>-0.971350</td>\n",
       "      <td>18.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>288.211273</td>\n",
       "      <td>163.101761</td>\n",
       "      <td>163.101761</td>\n",
       "      <td>163.101761</td>\n",
       "      <td>82.624016</td>\n",
       "      <td>10.282774</td>\n",
       "      <td>10.282774</td>\n",
       "      <td>0.005627</td>\n",
       "      <td>0.005627</td>\n",
       "      <td>1.584904</td>\n",
       "      <td>...</td>\n",
       "      <td>0.027554</td>\n",
       "      <td>0.027554</td>\n",
       "      <td>4.157563</td>\n",
       "      <td>4.157563</td>\n",
       "      <td>4.306343</td>\n",
       "      <td>4.306343</td>\n",
       "      <td>1.747068</td>\n",
       "      <td>1019.363281</td>\n",
       "      <td>0.216421</td>\n",
       "      <td>15.80</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       airT2m   geoHgt850   geoHgt850   geoHgt500  relHumSurf  specHum500  \\\n",
       "0  289.849213  164.443024  164.443024  164.443024   84.124435   10.733868   \n",
       "1  288.776917  159.583237  159.583237  159.583237   81.953171   10.155221   \n",
       "2  288.779755  161.611938  161.611938  161.611938   82.471779   10.262570   \n",
       "3  292.476349  165.336807  165.336807  165.336807   83.303917   11.522954   \n",
       "4  288.211273  163.101761  163.101761  163.101761   82.624016   10.282774   \n",
       "\n",
       "   specHum850   vort850   vort500  merid850      ...        zonal850  \\\n",
       "0   10.733868 -0.000187 -0.000187  1.560632      ...       -0.228055   \n",
       "1   10.155221  0.009756  0.009756  1.874495      ...        0.081150   \n",
       "2   10.262570  0.007005  0.007005  1.700716      ...        0.011286   \n",
       "3   11.522954 -0.002438 -0.002438  2.187343      ...       -0.947112   \n",
       "4   10.282774  0.005627  0.005627  1.584904      ...        0.027554   \n",
       "\n",
       "   zonal500  airFlow850  airFlow500  airFlowSurf  vortSurf  meridSurf  \\\n",
       "0 -0.228055    4.300753    4.300753     3.480743  3.480743   1.641173   \n",
       "1  0.081150    4.569221    4.569221     4.804224  4.804224   2.306259   \n",
       "2  0.011286    4.380100    4.380100     4.402224  4.402224   2.013057   \n",
       "3 -0.947112    4.986618    4.986618     3.740792  3.740792   1.571567   \n",
       "4  0.027554    4.157563    4.157563     4.306343  4.306343   1.747068   \n",
       "\n",
       "       seaLevP  zonalSurf  T_MONTHLY_AVG  \n",
       "0  1019.500061   0.168134          18.04  \n",
       "1  1018.818359   0.031886          16.70  \n",
       "2  1019.115356   0.132225          16.48  \n",
       "3  1019.343567  -0.971350          18.80  \n",
       "4  1019.363281   0.216421          15.80  \n",
       "\n",
       "[5 rows x 23 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# here are the variables we will use later\n",
    "station_GCM = os.path.join(outGDB, \"station_GCM\")\n",
    "station_GCM_sdf = pd.DataFrame.spatial.from_featureclass(station_GCM)\n",
    "station_GCM_sdf[station_predictors + station_predictand].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.4 Create Prediction Location\n",
    "\n",
    "Now, we have almost prepared all input data for our analysis, but we also need to prepare prediction locations. \"US_Prediction_Grid\" is the predicted grid that we created in advance, and we need to use the \"Extract multi value to points\" method again to extract values from raster surface data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<geoprocessing server result object at 0x7f47ace43aa8>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arcpy.env.workspace = home_dir + \"/climate_input.gdb\"\n",
    "station = \"US_Prediction_Grid\"\n",
    "\n",
    "# since we don't want to change the original input US_Prediction_Grid \n",
    "# data, we make a copy to climate_output.gdb\n",
    "arcpy.CopyFeatures_management(station,\n",
    "    home_dir + \"/climate_output.gdb/US_Prediction_Grid_GCM\")  \n",
    "\n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "arcpy.sa.ExtractMultiValuesToPoints(\"US_Prediction_Grid_GCM\",\n",
    "    [[\"specHum2m_201203_ebk_surface\", \"specHum2m\"], \n",
    "     [\"airT2m_201203_ebk_surface\", \"airT2m\"], \n",
    "     [\"geoHgt850_201203_ebk_surface\", \"geoHgt850\"],\n",
    "     [\"geoHgt500_201203_ebk_surface\",\"geoHgt500\"],\n",
    "     [\"relHumSurf_201203_ebk_surface\",\"relHumSurf\"],\n",
    "     [\"specHum500_201203_ebk_surface\",\"specHum500\"],\n",
    "     [\"specHum850_201203_ebk_surface\",\"specHum850\"],\n",
    "     [\"vort850_201203_ebk_surface\",\"vort850\"],\n",
    "     [\"vort500_201203_ebk_surface\",\"vort500\"],\n",
    "     [\"merid850_201203_ebk_surface\",\"merid850\"],\n",
    "     [\"merid500_201203_ebk_surface\",\"merid500\"],  \n",
    "     [\"zonal850_201203_ebk_surface\",\"zonal850\"],\n",
    "     [\"zonal500_201203_ebk_surface\",\"zonal500\"],\n",
    "     [\"airFlow850_201203_ebk_surface\",\"airFlow850\"],\n",
    "     [\"airFlow500_201203_ebk_surface\",\"airFlow500\"],\n",
    "     [\"airFlowSurf_201203_ebk_surface\",\"airFlowSurf\"],\n",
    "     [\"vortSurf_201203_ebk_surface\",\"vortSurf\"],\n",
    "     [\"meridSurf_201203_ebk_surface\",\"meridSurf\"],\n",
    "     [\"seaLevP_201203_ebk_surface\",\"seaLevP\"],\n",
    "     [\"zonalSurf_201203_ebk_surface\",\"zonalSurf\"]], \n",
    "    \"NONE\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# now the US_Prediction_Grid data gets the values from 20 GCM raster \n",
    "# surfaces. We can check them by listing the files in our data\n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\" \n",
    "fields = arcpy.ListFields(\"US_Prediction_Grid_GCM\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OBJECTID</th>\n",
       "      <th>FID_USdown</th>\n",
       "      <th>FID_US_pol</th>\n",
       "      <th>airFlow850</th>\n",
       "      <th>airFlowSur</th>\n",
       "      <th>airT2m_201</th>\n",
       "      <th>geoHgt500_</th>\n",
       "      <th>geoHgt850_</th>\n",
       "      <th>merid500_2</th>\n",
       "      <th>merid850_2</th>\n",
       "      <th>...</th>\n",
       "      <th>zonal850</th>\n",
       "      <th>zonal500</th>\n",
       "      <th>airFlow850_1</th>\n",
       "      <th>airFlow500_1</th>\n",
       "      <th>airFlowSurf</th>\n",
       "      <th>vortSurf</th>\n",
       "      <th>meridSurf</th>\n",
       "      <th>seaLevP</th>\n",
       "      <th>zonalSurf</th>\n",
       "      <th>SHAPE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>65667</td>\n",
       "      <td>748</td>\n",
       "      <td>3.78559</td>\n",
       "      <td>4.60107</td>\n",
       "      <td>286.886993</td>\n",
       "      <td>117.762001</td>\n",
       "      <td>117.762001</td>\n",
       "      <td>0.894856</td>\n",
       "      <td>0.894856</td>\n",
       "      <td>...</td>\n",
       "      <td>1.982475</td>\n",
       "      <td>1.982475</td>\n",
       "      <td>4.088900</td>\n",
       "      <td>4.088900</td>\n",
       "      <td>4.638579</td>\n",
       "      <td>4.638579</td>\n",
       "      <td>0.974592</td>\n",
       "      <td>1013.396057</td>\n",
       "      <td>1.815351</td>\n",
       "      <td>{\"x\": -105.51129143475185, \"y\": 31.06161320108...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>65668</td>\n",
       "      <td>748</td>\n",
       "      <td>3.81009</td>\n",
       "      <td>4.62228</td>\n",
       "      <td>287.040985</td>\n",
       "      <td>117.556000</td>\n",
       "      <td>117.556000</td>\n",
       "      <td>0.927791</td>\n",
       "      <td>0.927791</td>\n",
       "      <td>...</td>\n",
       "      <td>1.972188</td>\n",
       "      <td>1.972188</td>\n",
       "      <td>4.107887</td>\n",
       "      <td>4.107887</td>\n",
       "      <td>4.665758</td>\n",
       "      <td>4.665758</td>\n",
       "      <td>1.019339</td>\n",
       "      <td>1013.370911</td>\n",
       "      <td>1.796262</td>\n",
       "      <td>{\"x\": -105.39566505429877, \"y\": 31.06161320108...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>65669</td>\n",
       "      <td>748</td>\n",
       "      <td>3.86146</td>\n",
       "      <td>4.66634</td>\n",
       "      <td>287.350006</td>\n",
       "      <td>117.151001</td>\n",
       "      <td>117.151001</td>\n",
       "      <td>0.997158</td>\n",
       "      <td>0.997158</td>\n",
       "      <td>...</td>\n",
       "      <td>1.960618</td>\n",
       "      <td>1.960618</td>\n",
       "      <td>4.127301</td>\n",
       "      <td>4.127301</td>\n",
       "      <td>4.692918</td>\n",
       "      <td>4.692918</td>\n",
       "      <td>1.065441</td>\n",
       "      <td>1013.346924</td>\n",
       "      <td>1.774962</td>\n",
       "      <td>{\"x\": -105.2800386738457, \"y\": 31.061613201088...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>65670</td>\n",
       "      <td>748</td>\n",
       "      <td>3.88835</td>\n",
       "      <td>4.68925</td>\n",
       "      <td>287.489014</td>\n",
       "      <td>116.954002</td>\n",
       "      <td>116.954002</td>\n",
       "      <td>1.033590</td>\n",
       "      <td>1.033590</td>\n",
       "      <td>...</td>\n",
       "      <td>1.931506</td>\n",
       "      <td>1.931506</td>\n",
       "      <td>4.168343</td>\n",
       "      <td>4.168343</td>\n",
       "      <td>4.756423</td>\n",
       "      <td>4.756423</td>\n",
       "      <td>1.177940</td>\n",
       "      <td>1013.292419</td>\n",
       "      <td>1.715283</td>\n",
       "      <td>{\"x\": -105.16441229429194, \"y\": 31.06161320108...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>65671</td>\n",
       "      <td>748</td>\n",
       "      <td>3.91607</td>\n",
       "      <td>4.71277</td>\n",
       "      <td>287.639008</td>\n",
       "      <td>116.760002</td>\n",
       "      <td>116.760002</td>\n",
       "      <td>1.071180</td>\n",
       "      <td>1.071180</td>\n",
       "      <td>...</td>\n",
       "      <td>1.916167</td>\n",
       "      <td>1.916167</td>\n",
       "      <td>4.189304</td>\n",
       "      <td>4.189304</td>\n",
       "      <td>4.783813</td>\n",
       "      <td>4.783813</td>\n",
       "      <td>1.228021</td>\n",
       "      <td>1013.271912</td>\n",
       "      <td>1.687406</td>\n",
       "      <td>{\"x\": -105.0487859138388, \"y\": 31.061613201088...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 43 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   OBJECTID  FID_USdown  FID_US_pol  airFlow850  airFlowSur  airT2m_201  \\\n",
       "0         1       65667         748     3.78559     4.60107  286.886993   \n",
       "1         2       65668         748     3.81009     4.62228  287.040985   \n",
       "2         3       65669         748     3.86146     4.66634  287.350006   \n",
       "3         4       65670         748     3.88835     4.68925  287.489014   \n",
       "4         5       65671         748     3.91607     4.71277  287.639008   \n",
       "\n",
       "   geoHgt500_  geoHgt850_  merid500_2  merid850_2  \\\n",
       "0  117.762001  117.762001    0.894856    0.894856   \n",
       "1  117.556000  117.556000    0.927791    0.927791   \n",
       "2  117.151001  117.151001    0.997158    0.997158   \n",
       "3  116.954002  116.954002    1.033590    1.033590   \n",
       "4  116.760002  116.760002    1.071180    1.071180   \n",
       "\n",
       "                         ...                          zonal850  zonal500  \\\n",
       "0                        ...                          1.982475  1.982475   \n",
       "1                        ...                          1.972188  1.972188   \n",
       "2                        ...                          1.960618  1.960618   \n",
       "3                        ...                          1.931506  1.931506   \n",
       "4                        ...                          1.916167  1.916167   \n",
       "\n",
       "   airFlow850_1  airFlow500_1  airFlowSurf  vortSurf  meridSurf      seaLevP  \\\n",
       "0      4.088900      4.088900     4.638579  4.638579   0.974592  1013.396057   \n",
       "1      4.107887      4.107887     4.665758  4.665758   1.019339  1013.370911   \n",
       "2      4.127301      4.127301     4.692918  4.692918   1.065441  1013.346924   \n",
       "3      4.168343      4.168343     4.756423  4.756423   1.177940  1013.292419   \n",
       "4      4.189304      4.189304     4.783813  4.783813   1.228021  1013.271912   \n",
       "\n",
       "   zonalSurf                                              SHAPE  \n",
       "0   1.815351  {\"x\": -105.51129143475185, \"y\": 31.06161320108...  \n",
       "1   1.796262  {\"x\": -105.39566505429877, \"y\": 31.06161320108...  \n",
       "2   1.774962  {\"x\": -105.2800386738457, \"y\": 31.061613201088...  \n",
       "3   1.715283  {\"x\": -105.16441229429194, \"y\": 31.06161320108...  \n",
       "4   1.687406  {\"x\": -105.0487859138388, \"y\": 31.061613201088...  \n",
       "\n",
       "[5 rows x 43 columns]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Check the extracting data\n",
    "US_Prediction_Grid_GCM = os.path.join(outGDB, \"US_Prediction_Grid_GCM\")      \n",
    "output_GCM_sdf =  pd.DataFrame.spatial.from_featureclass(\n",
    "    US_Prediction_Grid_GCM)\n",
    "output_GCM_sdf.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Explore the Relationship between variables "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "station_GCM = os.path.join(outGDB, \"station_GCM\")\n",
    "station_GCM_sdf = pd.DataFrame.spatial.from_featureclass(station_GCM)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "gcm_variables = station_GCM_sdf[station_predictors]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>airT2m</th>\n",
       "      <th>geoHgt850</th>\n",
       "      <th>geoHgt850</th>\n",
       "      <th>geoHgt500</th>\n",
       "      <th>relHumSurf</th>\n",
       "      <th>specHum500</th>\n",
       "      <th>specHum850</th>\n",
       "      <th>vort850</th>\n",
       "      <th>vort500</th>\n",
       "      <th>merid850</th>\n",
       "      <th>...</th>\n",
       "      <th>merid500</th>\n",
       "      <th>zonal850</th>\n",
       "      <th>zonal500</th>\n",
       "      <th>airFlow850</th>\n",
       "      <th>airFlow500</th>\n",
       "      <th>airFlowSurf</th>\n",
       "      <th>vortSurf</th>\n",
       "      <th>meridSurf</th>\n",
       "      <th>seaLevP</th>\n",
       "      <th>zonalSurf</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>289.849213</td>\n",
       "      <td>164.443024</td>\n",
       "      <td>164.443024</td>\n",
       "      <td>164.443024</td>\n",
       "      <td>84.124435</td>\n",
       "      <td>10.733868</td>\n",
       "      <td>10.733868</td>\n",
       "      <td>-0.000187</td>\n",
       "      <td>-0.000187</td>\n",
       "      <td>1.560632</td>\n",
       "      <td>...</td>\n",
       "      <td>1.560632</td>\n",
       "      <td>-0.228055</td>\n",
       "      <td>-0.228055</td>\n",
       "      <td>4.300753</td>\n",
       "      <td>4.300753</td>\n",
       "      <td>3.480743</td>\n",
       "      <td>3.480743</td>\n",
       "      <td>1.641173</td>\n",
       "      <td>1019.500061</td>\n",
       "      <td>0.168134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>288.776917</td>\n",
       "      <td>159.583237</td>\n",
       "      <td>159.583237</td>\n",
       "      <td>159.583237</td>\n",
       "      <td>81.953171</td>\n",
       "      <td>10.155221</td>\n",
       "      <td>10.155221</td>\n",
       "      <td>0.009756</td>\n",
       "      <td>0.009756</td>\n",
       "      <td>1.874495</td>\n",
       "      <td>...</td>\n",
       "      <td>1.874495</td>\n",
       "      <td>0.081150</td>\n",
       "      <td>0.081150</td>\n",
       "      <td>4.569221</td>\n",
       "      <td>4.569221</td>\n",
       "      <td>4.804224</td>\n",
       "      <td>4.804224</td>\n",
       "      <td>2.306259</td>\n",
       "      <td>1018.818359</td>\n",
       "      <td>0.031886</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>288.779755</td>\n",
       "      <td>161.611938</td>\n",
       "      <td>161.611938</td>\n",
       "      <td>161.611938</td>\n",
       "      <td>82.471779</td>\n",
       "      <td>10.262570</td>\n",
       "      <td>10.262570</td>\n",
       "      <td>0.007005</td>\n",
       "      <td>0.007005</td>\n",
       "      <td>1.700716</td>\n",
       "      <td>...</td>\n",
       "      <td>1.700716</td>\n",
       "      <td>0.011286</td>\n",
       "      <td>0.011286</td>\n",
       "      <td>4.380100</td>\n",
       "      <td>4.380100</td>\n",
       "      <td>4.402224</td>\n",
       "      <td>4.402224</td>\n",
       "      <td>2.013057</td>\n",
       "      <td>1019.115356</td>\n",
       "      <td>0.132225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>292.476349</td>\n",
       "      <td>165.336807</td>\n",
       "      <td>165.336807</td>\n",
       "      <td>165.336807</td>\n",
       "      <td>83.303917</td>\n",
       "      <td>11.522954</td>\n",
       "      <td>11.522954</td>\n",
       "      <td>-0.002438</td>\n",
       "      <td>-0.002438</td>\n",
       "      <td>2.187343</td>\n",
       "      <td>...</td>\n",
       "      <td>2.187343</td>\n",
       "      <td>-0.947112</td>\n",
       "      <td>-0.947112</td>\n",
       "      <td>4.986618</td>\n",
       "      <td>4.986618</td>\n",
       "      <td>3.740792</td>\n",
       "      <td>3.740792</td>\n",
       "      <td>1.571567</td>\n",
       "      <td>1019.343567</td>\n",
       "      <td>-0.971350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>288.211273</td>\n",
       "      <td>163.101761</td>\n",
       "      <td>163.101761</td>\n",
       "      <td>163.101761</td>\n",
       "      <td>82.624016</td>\n",
       "      <td>10.282774</td>\n",
       "      <td>10.282774</td>\n",
       "      <td>0.005627</td>\n",
       "      <td>0.005627</td>\n",
       "      <td>1.584904</td>\n",
       "      <td>...</td>\n",
       "      <td>1.584904</td>\n",
       "      <td>0.027554</td>\n",
       "      <td>0.027554</td>\n",
       "      <td>4.157563</td>\n",
       "      <td>4.157563</td>\n",
       "      <td>4.306343</td>\n",
       "      <td>4.306343</td>\n",
       "      <td>1.747068</td>\n",
       "      <td>1019.363281</td>\n",
       "      <td>0.216421</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       airT2m   geoHgt850   geoHgt850   geoHgt500  relHumSurf  specHum500  \\\n",
       "0  289.849213  164.443024  164.443024  164.443024   84.124435   10.733868   \n",
       "1  288.776917  159.583237  159.583237  159.583237   81.953171   10.155221   \n",
       "2  288.779755  161.611938  161.611938  161.611938   82.471779   10.262570   \n",
       "3  292.476349  165.336807  165.336807  165.336807   83.303917   11.522954   \n",
       "4  288.211273  163.101761  163.101761  163.101761   82.624016   10.282774   \n",
       "\n",
       "   specHum850   vort850   vort500  merid850    ...      merid500  zonal850  \\\n",
       "0   10.733868 -0.000187 -0.000187  1.560632    ...      1.560632 -0.228055   \n",
       "1   10.155221  0.009756  0.009756  1.874495    ...      1.874495  0.081150   \n",
       "2   10.262570  0.007005  0.007005  1.700716    ...      1.700716  0.011286   \n",
       "3   11.522954 -0.002438 -0.002438  2.187343    ...      2.187343 -0.947112   \n",
       "4   10.282774  0.005627  0.005627  1.584904    ...      1.584904  0.027554   \n",
       "\n",
       "   zonal500  airFlow850  airFlow500  airFlowSurf  vortSurf  meridSurf  \\\n",
       "0 -0.228055    4.300753    4.300753     3.480743  3.480743   1.641173   \n",
       "1  0.081150    4.569221    4.569221     4.804224  4.804224   2.306259   \n",
       "2  0.011286    4.380100    4.380100     4.402224  4.402224   2.013057   \n",
       "3 -0.947112    4.986618    4.986618     3.740792  3.740792   1.571567   \n",
       "4  0.027554    4.157563    4.157563     4.306343  4.306343   1.747068   \n",
       "\n",
       "       seaLevP  zonalSurf  \n",
       "0  1019.500061   0.168134  \n",
       "1  1018.818359   0.031886  \n",
       "2  1019.115356   0.132225  \n",
       "3  1019.343567  -0.971350  \n",
       "4  1019.363281   0.216421  \n",
       "\n",
       "[5 rows x 22 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gcm_variables.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>airT2m</th>\n",
       "      <th>geoHgt850</th>\n",
       "      <th>geoHgt850</th>\n",
       "      <th>geoHgt500</th>\n",
       "      <th>relHumSurf</th>\n",
       "      <th>specHum500</th>\n",
       "      <th>specHum850</th>\n",
       "      <th>vort850</th>\n",
       "      <th>vort500</th>\n",
       "      <th>merid850</th>\n",
       "      <th>...</th>\n",
       "      <th>merid500</th>\n",
       "      <th>zonal850</th>\n",
       "      <th>zonal500</th>\n",
       "      <th>airFlow850</th>\n",
       "      <th>airFlow500</th>\n",
       "      <th>airFlowSurf</th>\n",
       "      <th>vortSurf</th>\n",
       "      <th>meridSurf</th>\n",
       "      <th>seaLevP</th>\n",
       "      <th>zonalSurf</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>airT2m</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.523639</td>\n",
       "      <td>0.523639</td>\n",
       "      <td>0.523639</td>\n",
       "      <td>0.024602</td>\n",
       "      <td>0.453666</td>\n",
       "      <td>0.453666</td>\n",
       "      <td>-0.158646</td>\n",
       "      <td>-0.158646</td>\n",
       "      <td>0.115328</td>\n",
       "      <td>...</td>\n",
       "      <td>0.115328</td>\n",
       "      <td>-0.511303</td>\n",
       "      <td>-0.511303</td>\n",
       "      <td>0.347236</td>\n",
       "      <td>0.347236</td>\n",
       "      <td>0.015608</td>\n",
       "      <td>0.015608</td>\n",
       "      <td>-0.023069</td>\n",
       "      <td>0.447385</td>\n",
       "      <td>-0.424286</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>geoHgt850</th>\n",
       "      <td>0.523639</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.289858</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.264305</td>\n",
       "      <td>0.988291</td>\n",
       "      <td>-0.476785</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>geoHgt850</th>\n",
       "      <td>0.523639</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.289858</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.264305</td>\n",
       "      <td>0.988291</td>\n",
       "      <td>-0.476785</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>geoHgt500</th>\n",
       "      <td>0.523639</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.289858</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.264305</td>\n",
       "      <td>0.988291</td>\n",
       "      <td>-0.476785</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>relHumSurf</th>\n",
       "      <td>0.024602</td>\n",
       "      <td>0.289858</td>\n",
       "      <td>0.289858</td>\n",
       "      <td>0.289858</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.656611</td>\n",
       "      <td>0.656611</td>\n",
       "      <td>-0.077643</td>\n",
       "      <td>-0.077643</td>\n",
       "      <td>0.327936</td>\n",
       "      <td>...</td>\n",
       "      <td>0.327936</td>\n",
       "      <td>-0.486520</td>\n",
       "      <td>-0.486520</td>\n",
       "      <td>0.378329</td>\n",
       "      <td>0.378329</td>\n",
       "      <td>0.079683</td>\n",
       "      <td>0.079683</td>\n",
       "      <td>0.355062</td>\n",
       "      <td>0.345988</td>\n",
       "      <td>-0.514809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>specHum500</th>\n",
       "      <td>0.453666</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.656611</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>...</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>-0.661489</td>\n",
       "      <td>-0.661489</td>\n",
       "      <td>0.237164</td>\n",
       "      <td>0.237164</td>\n",
       "      <td>-0.040895</td>\n",
       "      <td>-0.040895</td>\n",
       "      <td>0.333365</td>\n",
       "      <td>0.511869</td>\n",
       "      <td>-0.591803</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>specHum850</th>\n",
       "      <td>0.453666</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.493986</td>\n",
       "      <td>0.656611</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>...</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>-0.661489</td>\n",
       "      <td>-0.661489</td>\n",
       "      <td>0.237164</td>\n",
       "      <td>0.237164</td>\n",
       "      <td>-0.040895</td>\n",
       "      <td>-0.040895</td>\n",
       "      <td>0.333365</td>\n",
       "      <td>0.511869</td>\n",
       "      <td>-0.591803</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vort850</th>\n",
       "      <td>-0.158646</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.077643</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>-0.185647</td>\n",
       "      <td>-0.270364</td>\n",
       "      <td>0.541750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vort500</th>\n",
       "      <td>-0.158646</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.077643</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>-0.185647</td>\n",
       "      <td>-0.270364</td>\n",
       "      <td>0.541750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>merid850</th>\n",
       "      <td>0.115328</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>0.327936</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>0.929763</td>\n",
       "      <td>-0.231771</td>\n",
       "      <td>-0.304147</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vort500</th>\n",
       "      <td>-0.158646</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.291146</td>\n",
       "      <td>-0.077643</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>-0.002722</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>-0.185647</td>\n",
       "      <td>-0.270364</td>\n",
       "      <td>0.541750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>merid850</th>\n",
       "      <td>0.115328</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>0.327936</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>0.929763</td>\n",
       "      <td>-0.231771</td>\n",
       "      <td>-0.304147</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>merid500</th>\n",
       "      <td>0.115328</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>-0.217218</td>\n",
       "      <td>0.327936</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>0.377871</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>-0.190525</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>0.929763</td>\n",
       "      <td>-0.231771</td>\n",
       "      <td>-0.304147</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>zonal850</th>\n",
       "      <td>-0.511303</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486520</td>\n",
       "      <td>-0.661489</td>\n",
       "      <td>-0.661489</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.254708</td>\n",
       "      <td>-0.254708</td>\n",
       "      <td>0.054983</td>\n",
       "      <td>0.054983</td>\n",
       "      <td>-0.283296</td>\n",
       "      <td>-0.459407</td>\n",
       "      <td>0.879255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>zonal500</th>\n",
       "      <td>-0.511303</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486174</td>\n",
       "      <td>-0.486520</td>\n",
       "      <td>-0.661489</td>\n",
       "      <td>-0.661489</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>0.437514</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.377805</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.254708</td>\n",
       "      <td>-0.254708</td>\n",
       "      <td>0.054983</td>\n",
       "      <td>0.054983</td>\n",
       "      <td>-0.283296</td>\n",
       "      <td>-0.459407</td>\n",
       "      <td>0.879255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>airFlow850</th>\n",
       "      <td>0.347236</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>0.378329</td>\n",
       "      <td>0.237164</td>\n",
       "      <td>0.237164</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>...</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>-0.254708</td>\n",
       "      <td>-0.254708</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.689066</td>\n",
       "      <td>0.689066</td>\n",
       "      <td>0.403269</td>\n",
       "      <td>-0.046564</td>\n",
       "      <td>-0.163162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>airFlow500</th>\n",
       "      <td>0.347236</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>-0.025860</td>\n",
       "      <td>0.378329</td>\n",
       "      <td>0.237164</td>\n",
       "      <td>0.237164</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.091073</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>...</td>\n",
       "      <td>0.510818</td>\n",
       "      <td>-0.254708</td>\n",
       "      <td>-0.254708</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.689066</td>\n",
       "      <td>0.689066</td>\n",
       "      <td>0.403269</td>\n",
       "      <td>-0.046564</td>\n",
       "      <td>-0.163162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>airFlowSurf</th>\n",
       "      <td>0.015608</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>0.079683</td>\n",
       "      <td>-0.040895</td>\n",
       "      <td>-0.040895</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>...</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>0.054983</td>\n",
       "      <td>0.054983</td>\n",
       "      <td>0.689066</td>\n",
       "      <td>0.689066</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.631892</td>\n",
       "      <td>-0.512012</td>\n",
       "      <td>0.184889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vortSurf</th>\n",
       "      <td>0.015608</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>-0.486201</td>\n",
       "      <td>0.079683</td>\n",
       "      <td>-0.040895</td>\n",
       "      <td>-0.040895</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>0.193134</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>...</td>\n",
       "      <td>0.615799</td>\n",
       "      <td>0.054983</td>\n",
       "      <td>0.054983</td>\n",
       "      <td>0.689066</td>\n",
       "      <td>0.689066</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.631892</td>\n",
       "      <td>-0.512012</td>\n",
       "      <td>0.184889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>meridSurf</th>\n",
       "      <td>-0.023069</td>\n",
       "      <td>-0.264305</td>\n",
       "      <td>-0.264305</td>\n",
       "      <td>-0.264305</td>\n",
       "      <td>0.355062</td>\n",
       "      <td>0.333365</td>\n",
       "      <td>0.333365</td>\n",
       "      <td>-0.185647</td>\n",
       "      <td>-0.185647</td>\n",
       "      <td>0.929763</td>\n",
       "      <td>...</td>\n",
       "      <td>0.929763</td>\n",
       "      <td>-0.283296</td>\n",
       "      <td>-0.283296</td>\n",
       "      <td>0.403269</td>\n",
       "      <td>0.403269</td>\n",
       "      <td>0.631892</td>\n",
       "      <td>0.631892</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.265171</td>\n",
       "      <td>-0.282589</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>seaLevP</th>\n",
       "      <td>0.447385</td>\n",
       "      <td>0.988291</td>\n",
       "      <td>0.988291</td>\n",
       "      <td>0.988291</td>\n",
       "      <td>0.345988</td>\n",
       "      <td>0.511869</td>\n",
       "      <td>0.511869</td>\n",
       "      <td>-0.270364</td>\n",
       "      <td>-0.270364</td>\n",
       "      <td>-0.231771</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.231771</td>\n",
       "      <td>-0.459407</td>\n",
       "      <td>-0.459407</td>\n",
       "      <td>-0.046564</td>\n",
       "      <td>-0.046564</td>\n",
       "      <td>-0.512012</td>\n",
       "      <td>-0.512012</td>\n",
       "      <td>-0.265171</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.463801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>zonalSurf</th>\n",
       "      <td>-0.424286</td>\n",
       "      <td>-0.476785</td>\n",
       "      <td>-0.476785</td>\n",
       "      <td>-0.476785</td>\n",
       "      <td>-0.514809</td>\n",
       "      <td>-0.591803</td>\n",
       "      <td>-0.591803</td>\n",
       "      <td>0.541750</td>\n",
       "      <td>0.541750</td>\n",
       "      <td>-0.304147</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.304147</td>\n",
       "      <td>0.879255</td>\n",
       "      <td>0.879255</td>\n",
       "      <td>-0.163162</td>\n",
       "      <td>-0.163162</td>\n",
       "      <td>0.184889</td>\n",
       "      <td>0.184889</td>\n",
       "      <td>-0.282589</td>\n",
       "      <td>-0.463801</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>22 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "               airT2m  geoHgt850  geoHgt850  geoHgt500  relHumSurf  \\\n",
       "airT2m       1.000000   0.523639   0.523639   0.523639    0.024602   \n",
       "geoHgt850    0.523639   1.000000   1.000000   1.000000    0.289858   \n",
       "geoHgt850    0.523639   1.000000   1.000000   1.000000    0.289858   \n",
       "geoHgt500    0.523639   1.000000   1.000000   1.000000    0.289858   \n",
       "relHumSurf   0.024602   0.289858   0.289858   0.289858    1.000000   \n",
       "specHum500   0.453666   0.493986   0.493986   0.493986    0.656611   \n",
       "specHum850   0.453666   0.493986   0.493986   0.493986    0.656611   \n",
       "vort850     -0.158646  -0.291146  -0.291146  -0.291146   -0.077643   \n",
       "vort500     -0.158646  -0.291146  -0.291146  -0.291146   -0.077643   \n",
       "merid850     0.115328  -0.217218  -0.217218  -0.217218    0.327936   \n",
       "vort500     -0.158646  -0.291146  -0.291146  -0.291146   -0.077643   \n",
       "merid850     0.115328  -0.217218  -0.217218  -0.217218    0.327936   \n",
       "merid500     0.115328  -0.217218  -0.217218  -0.217218    0.327936   \n",
       "zonal850    -0.511303  -0.486174  -0.486174  -0.486174   -0.486520   \n",
       "zonal500    -0.511303  -0.486174  -0.486174  -0.486174   -0.486520   \n",
       "airFlow850   0.347236  -0.025860  -0.025860  -0.025860    0.378329   \n",
       "airFlow500   0.347236  -0.025860  -0.025860  -0.025860    0.378329   \n",
       "airFlowSurf  0.015608  -0.486201  -0.486201  -0.486201    0.079683   \n",
       "vortSurf     0.015608  -0.486201  -0.486201  -0.486201    0.079683   \n",
       "meridSurf   -0.023069  -0.264305  -0.264305  -0.264305    0.355062   \n",
       "seaLevP      0.447385   0.988291   0.988291   0.988291    0.345988   \n",
       "zonalSurf   -0.424286  -0.476785  -0.476785  -0.476785   -0.514809   \n",
       "\n",
       "             specHum500  specHum850   vort850   vort500  merid850    ...      \\\n",
       "airT2m         0.453666    0.453666 -0.158646 -0.158646  0.115328    ...       \n",
       "geoHgt850      0.493986    0.493986 -0.291146 -0.291146 -0.217218    ...       \n",
       "geoHgt850      0.493986    0.493986 -0.291146 -0.291146 -0.217218    ...       \n",
       "geoHgt500      0.493986    0.493986 -0.291146 -0.291146 -0.217218    ...       \n",
       "relHumSurf     0.656611    0.656611 -0.077643 -0.077643  0.327936    ...       \n",
       "specHum500     1.000000    1.000000 -0.002722 -0.002722  0.377871    ...       \n",
       "specHum850     1.000000    1.000000 -0.002722 -0.002722  0.377871    ...       \n",
       "vort850       -0.002722   -0.002722  1.000000  1.000000 -0.190525    ...       \n",
       "vort500       -0.002722   -0.002722  1.000000  1.000000 -0.190525    ...       \n",
       "merid850       0.377871    0.377871 -0.190525 -0.190525  1.000000    ...       \n",
       "vort500       -0.002722   -0.002722  1.000000  1.000000 -0.190525    ...       \n",
       "merid850       0.377871    0.377871 -0.190525 -0.190525  1.000000    ...       \n",
       "merid500       0.377871    0.377871 -0.190525 -0.190525  1.000000    ...       \n",
       "zonal850      -0.661489   -0.661489  0.437514  0.437514 -0.377805    ...       \n",
       "zonal500      -0.661489   -0.661489  0.437514  0.437514 -0.377805    ...       \n",
       "airFlow850     0.237164    0.237164  0.091073  0.091073  0.510818    ...       \n",
       "airFlow500     0.237164    0.237164  0.091073  0.091073  0.510818    ...       \n",
       "airFlowSurf   -0.040895   -0.040895  0.193134  0.193134  0.615799    ...       \n",
       "vortSurf      -0.040895   -0.040895  0.193134  0.193134  0.615799    ...       \n",
       "meridSurf      0.333365    0.333365 -0.185647 -0.185647  0.929763    ...       \n",
       "seaLevP        0.511869    0.511869 -0.270364 -0.270364 -0.231771    ...       \n",
       "zonalSurf     -0.591803   -0.591803  0.541750  0.541750 -0.304147    ...       \n",
       "\n",
       "             merid500  zonal850  zonal500  airFlow850  airFlow500  \\\n",
       "airT2m       0.115328 -0.511303 -0.511303    0.347236    0.347236   \n",
       "geoHgt850   -0.217218 -0.486174 -0.486174   -0.025860   -0.025860   \n",
       "geoHgt850   -0.217218 -0.486174 -0.486174   -0.025860   -0.025860   \n",
       "geoHgt500   -0.217218 -0.486174 -0.486174   -0.025860   -0.025860   \n",
       "relHumSurf   0.327936 -0.486520 -0.486520    0.378329    0.378329   \n",
       "specHum500   0.377871 -0.661489 -0.661489    0.237164    0.237164   \n",
       "specHum850   0.377871 -0.661489 -0.661489    0.237164    0.237164   \n",
       "vort850     -0.190525  0.437514  0.437514    0.091073    0.091073   \n",
       "vort500     -0.190525  0.437514  0.437514    0.091073    0.091073   \n",
       "merid850     1.000000 -0.377805 -0.377805    0.510818    0.510818   \n",
       "vort500     -0.190525  0.437514  0.437514    0.091073    0.091073   \n",
       "merid850     1.000000 -0.377805 -0.377805    0.510818    0.510818   \n",
       "merid500     1.000000 -0.377805 -0.377805    0.510818    0.510818   \n",
       "zonal850    -0.377805  1.000000  1.000000   -0.254708   -0.254708   \n",
       "zonal500    -0.377805  1.000000  1.000000   -0.254708   -0.254708   \n",
       "airFlow850   0.510818 -0.254708 -0.254708    1.000000    1.000000   \n",
       "airFlow500   0.510818 -0.254708 -0.254708    1.000000    1.000000   \n",
       "airFlowSurf  0.615799  0.054983  0.054983    0.689066    0.689066   \n",
       "vortSurf     0.615799  0.054983  0.054983    0.689066    0.689066   \n",
       "meridSurf    0.929763 -0.283296 -0.283296    0.403269    0.403269   \n",
       "seaLevP     -0.231771 -0.459407 -0.459407   -0.046564   -0.046564   \n",
       "zonalSurf   -0.304147  0.879255  0.879255   -0.163162   -0.163162   \n",
       "\n",
       "             airFlowSurf  vortSurf  meridSurf   seaLevP  zonalSurf  \n",
       "airT2m          0.015608  0.015608  -0.023069  0.447385  -0.424286  \n",
       "geoHgt850      -0.486201 -0.486201  -0.264305  0.988291  -0.476785  \n",
       "geoHgt850      -0.486201 -0.486201  -0.264305  0.988291  -0.476785  \n",
       "geoHgt500      -0.486201 -0.486201  -0.264305  0.988291  -0.476785  \n",
       "relHumSurf      0.079683  0.079683   0.355062  0.345988  -0.514809  \n",
       "specHum500     -0.040895 -0.040895   0.333365  0.511869  -0.591803  \n",
       "specHum850     -0.040895 -0.040895   0.333365  0.511869  -0.591803  \n",
       "vort850         0.193134  0.193134  -0.185647 -0.270364   0.541750  \n",
       "vort500         0.193134  0.193134  -0.185647 -0.270364   0.541750  \n",
       "merid850        0.615799  0.615799   0.929763 -0.231771  -0.304147  \n",
       "vort500         0.193134  0.193134  -0.185647 -0.270364   0.541750  \n",
       "merid850        0.615799  0.615799   0.929763 -0.231771  -0.304147  \n",
       "merid500        0.615799  0.615799   0.929763 -0.231771  -0.304147  \n",
       "zonal850        0.054983  0.054983  -0.283296 -0.459407   0.879255  \n",
       "zonal500        0.054983  0.054983  -0.283296 -0.459407   0.879255  \n",
       "airFlow850      0.689066  0.689066   0.403269 -0.046564  -0.163162  \n",
       "airFlow500      0.689066  0.689066   0.403269 -0.046564  -0.163162  \n",
       "airFlowSurf     1.000000  1.000000   0.631892 -0.512012   0.184889  \n",
       "vortSurf        1.000000  1.000000   0.631892 -0.512012   0.184889  \n",
       "meridSurf       0.631892  0.631892   1.000000 -0.265171  -0.282589  \n",
       "seaLevP        -0.512012 -0.512012  -0.265171  1.000000  -0.463801  \n",
       "zonalSurf       0.184889  0.184889  -0.282589 -0.463801   1.000000  \n",
       "\n",
       "[22 rows x 22 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Let's create a correlation martix to check the relationship\n",
    "cor_table=gcm_variables.corr()\n",
    "cor_table"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x1080 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# colors make the correlation matrix more readable\n",
    "size = 15\n",
    "fig, ax = plt.subplots(figsize=(size, size))\n",
    "cax = ax.matshow(cor_table,cmap=cm.get_cmap('coolwarm'), vmin=-1,vmax=1)\n",
    "fig.colorbar(cax, ticks=[1,0,-1], shrink=0.8)\n",
    "plt.xticks(range(len(gcm_variables.columns)), gcm_variables.columns, \n",
    "           rotation='vertical', fontsize=12)\n",
    "plt.yticks(range(len(gcm_variables.columns)), gcm_variables.columns)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Analysis:  Average Temperature Prediction\n",
    "\n",
    "### 3.1 Support Vector Machine (SVM) VS. Ridge Regression\n",
    "#### 3.1.1. Ridge Regression for Climate Downscaling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RidgeCV(alphas=array([1.00000e-10, 1.66810e-08, 2.78256e-06, 4.64159e-04, 7.74264e-02, 1.29155e+01, 2.15443e+03, 3.59381e+05,\n",
       "       5.99484e+07, 1.00000e+10]),\n",
       "    cv=None, fit_intercept=True, gcv_mode=None, normalize=True,\n",
       "    scoring=None, store_cv_values=True)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge = RidgeCV(alphas=np.logspace(-10, 10, 10), \n",
    "                fit_intercept = True, normalize = True, \n",
    "                store_cv_values = True)\n",
    "ridge.fit(station_GCM_sdf[station_predictors], \n",
    "          station_GCM_sdf[station_predictand])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = plt.gca()\n",
    "ax.plot(ridge.alphas.ravel(), \n",
    "        np.mean(ridge.cv_values_, \n",
    "        axis = 0).ravel())\n",
    "ax.set_xscale('log')\n",
    "ax.set_xlim(ax.get_xlim()[::-1])  # reverse axis\n",
    "plt.xlabel('Regularization Strength')\n",
    "plt.ylabel('CV Error')\n",
    "plt.title('CV Error vs Alpha')\n",
    "plt.axis('tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimal Regularization Parameter = 0.0004641588833612782\n"
     ]
    }
   ],
   "source": [
    "print('Optimal Regularization Parameter = {0}'.format(ridge.alpha_))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3.1.2 Support Vector Machine for Climate Downscaling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "svr_rbf = SVR(kernel= 'rbf', C = 1.0, gamma='auto').fit(\n",
    "    station_GCM_sdf[station_predictors],\n",
    "    station_GCM_sdf[station_predictand].values.ravel())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([10.178156, 10.247221, 10.389448, 10.494384, ...,  9.024728,  9.024996,  9.054723,  9.058166])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svr_rbf.predict(output_GCM_sdf[station_predictors])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe\n",
       "            width=\"100%\"\n",
       "            height=\"800px\"\n",
       "            src=\"https://eath.maps.arcgis.com/apps/StorytellingSwipe/index.html?appid=ca2c84c6611140f6883f9843c06d1d56#\"\n",
       "            frameborder=\"0\"\n",
       "            allowfullscreen\n",
       "        ></iframe>\n",
       "        "
      ],
      "text/plain": [
       "<IPython.lib.display.IFrame at 0x7f47aca6ee48>"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import IFrame\n",
    "IFrame(src='https://eath.maps.arcgis.com/apps/StorytellingSwipe/'\\\n",
    "           'index.html?appid=ca2c84c6611140f6883f9843c06d1d56#',\n",
    "       width=\"100%\", height=\"800px\") "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 EBK Regression Prediction  VS.  Geographically Weighted Regression (GWR)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Result 'EBK_pred_ga'>"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Let's use EBK regression to predict average temperature\n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "input_feature = station_fmv\n",
    "out_ga_layer = \"EBK_pred_ga\"\n",
    "out_raster = \"EBK_pred_raster\"\n",
    "\n",
    "arcpy.ga.EBKRegressionPrediction(station_fmv, \"T_MONTHLY_AVG\",\n",
    "    \"vort850_201203_ebk_surface;specHum850_201203_ebk_surface;\"\\\n",
    "    \"zonalSurf_201203_ebk_surface\", out_ga_layer, out_raster, \n",
    "    None, None, 95, None, \"NONE\", \"EXPONENTIAL\", 100, 1, 100, \n",
    "    \"NBRTYPE=StandardCircular RADIUS=15 ANGLE=0 NBR_MAX=15 \"\\\n",
    "    \"NBR_MIN=10 SECTOR_TYPE=ONE_SECTOR\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Result '/arcgis/home/climate_output.gdb/GWR_out_feature_class'>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Now, we use GWR to predict average temperature and compare the \n",
    "# result with EBK\n",
    "\n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "input_feature = station_GCM\n",
    "out_feature_class = os.path.join(outGDB, \"GWR_out_feature_class\")\n",
    "kernal = \"ADAPTIVE\"\n",
    "number_of_neighbor = 30\n",
    "prediction_location = \"US_Prediction_Grid_GCM\"\n",
    "prediction_output = \"GWR_pred\"\n",
    "\n",
    "arcpy.stats.GeographicallyWeightedRegression(input_feature, \n",
    "    \"T_MONTHLY_AVG\", \"specHum850;vort850;zonalSurf\", \n",
    "     out_feature_class, kernal,\"BANDWIDTH_PARAMETER\", \n",
    "     None, number_of_neighbor, None, None, 9.22719999999999E-02, \n",
    "     prediction_location,\"specHum850;vort850;zonalSurf\",prediction_output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe\n",
       "            width=\"100%\"\n",
       "            height=\"800px\"\n",
       "            src=\"https://eath.maps.arcgis.com/apps/StorytellingSwipe/index.html?appid=fe637afce2a4436db5332d08704722e2#\"\n",
       "            frameborder=\"0\"\n",
       "            allowfullscreen\n",
       "        ></iframe>\n",
       "        "
      ],
      "text/plain": [
       "<IPython.lib.display.IFrame at 0x7f47aca6e320>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import IFrame\n",
    "IFrame(src='https://eath.maps.arcgis.com/apps/StorytellingSwipe/'\\\n",
    "            'index.html?appid=fe637afce2a4436db5332d08704722e2#',\n",
    "       width=\"100%\", height=\"800px\") "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Result '/arcgis/home//climate_output.gdb/GWR_pred_raster'>"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The predicted output using GWR tool is point type. To better visualize continouous value (temperature), we convert the points result into raster with point to raster method. \n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\" \n",
    "input_feature = \"GWR_pred\"\n",
    "output_result = \"GWR_pred_raster\"\n",
    "assignmentType = \"MEAN\"\n",
    "priorityField = \"\"\n",
    "cellSize = \"2000\"\n",
    "\n",
    "arcpy.PointToRaster_conversion(input_feature, \"PREDICTED\", \n",
    "                               output_result, assignmentType, \n",
    "                               priorityField, cellSize)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "### 3.3 Forest-Based Classification and Regression VS. Forest-Based Classification and Regression with Distance Features "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Result '/arcgis/home//climate_output.gdb/RF_pred'>"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# use Forest-Based Classification and Regression method to predict average temperature\n",
    "\n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "input_feature = \"station_GCM\"\n",
    "predict_location = \"US_Prediction_Grid_GCM\"\n",
    "output_result = \"RF_pred\"\n",
    "\n",
    "\n",
    "arcpy.stats.Forest(\"PREDICT_FEATURES\", input_feature, \"T_MONTHLY_AVG\",\n",
    "    None,\"zonalSurf false;zonal850 false;zonal500 false;\"\\\n",
    "         \"vortSurf false;vort850 false;vort500 false;specHum850 \"\\\n",
    "         \"false;specHum500 false;specHum2m false;\"\\\n",
    "         \"seaLevP false;relHumSurf false;meridSurf false;\"\\\n",
    "         \"merid850 false;merid500 false;geoHgt850 false;\"\\\n",
    "         \"geoHgt500 false;airT2m false;airFlowSurf false;airFlow850 \"\\\n",
    "         \"false;airFlow500 false\", \n",
    "    None, None, predict_location, output_result, None, \n",
    "         \"specHum2m specHum2m;airT2m airT2m;geoHgt850 geoHgt850;\"\\\n",
    "         \"geoHgt500 geoHgt500;relHumSurf relHumSurf;specHum850 \"\\\n",
    "         \"specHum850;vort850 vort850;vort500 vort500;merid850 \"\\\n",
    "         \"merid850;merid500 merid500; zonal850 zonal850;zonal500 \"\\\n",
    "         \"zonal500; airFlow850 airFlow850;airFlow500 airFlow500 \"\\\n",
    "         \"airFlowSurf airFlowSurf; vortSurf vortSurf; meridSurf \"\\\n",
    "         \"meridSurf;seaLevP seaLevP;zonalSurf zonalSurf\", \n",
    "    None, None, None, None, \"TRUE\", 100, None, None, 100, None, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Result '/arcgis/home//climate_output.gdb/RF_pred_raster'>"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The predicted output using Forest-Based Classification and \n",
    "# Regression method is point type. To better visualize continouous \n",
    "# value (temperature), we convert the points result into raster with \n",
    "# point to raster method. \n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "input_feature = \"RF_pred\"\n",
    "output_result = \"RF_pred_raster\"\n",
    "assignmentType = \"MEAN\"\n",
    "priorityField = \"\"\n",
    "cellSize = \"2000\"\n",
    "\n",
    "arcpy.PointToRaster_conversion(input_feature, \"PREDICTED\", \n",
    "                                output_result, assignmentType,\n",
    "                               priorityField, cellSize)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since the distance features to be applied for the Forest() method later would require a coordinate system defined, the cell below is to use the existing arcpy method \"DefineProjection_management\" to have the projection defined."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start Time: Wednesday, February 13, 2019 2:52:49 AM\n",
      "Succeeded at Wednesday, February 13, 2019 2:52:50 AM (Elapsed Time: 1.75 seconds)\n"
     ]
    }
   ],
   "source": [
    "try:\n",
    "    # set workspace environment\n",
    "    arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "    \n",
    "    # get the coordinate system by describing a feature class\n",
    "    dsc = arcpy.Describe(\"station_GCM\")\n",
    "    coord_sys = dsc.spatialReference\n",
    "    \n",
    "    # set local variables\n",
    "    in_dataset = \"Large_Water_Body\"\n",
    "    \n",
    "    # set workspace environment\n",
    "    arcpy.env.workspace = home_dir + \"/climate_input.gdb\"\n",
    "    \n",
    "    # run the tool\n",
    "    arcpy.DefineProjection_management(in_dataset, coord_sys)\n",
    "    \n",
    "    # print messages when the tool runs successfully\n",
    "    print(arcpy.GetMessages(0))\n",
    "    \n",
    "except arcpy.ExecuteError:\n",
    "    print(arcpy.GetMessages(2))\n",
    "    \n",
    "except Exception as ex:\n",
    "    print(ex.args[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Result '/arcgis/home//climate_output.gdb/RF_pred_water_body'>"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The power of GIS is that we consider space, so next, we include \n",
    "# the distance of water body to our analysis\n",
    "arcpy.env.workspace = home_dir + \"/climate_output.gdb\"\n",
    "input_feature = \"station_GCM\"\n",
    "output_result = \"RF_pred_water_body\"\n",
    "distance_feature = home_dir + \"/climate_input.gdb/Large_Water_Body\"\n",
    "\n",
    "arcpy.stats.Forest(\"PREDICT_FEATURES\", input_feature, \"T_MONTHLY_AVG\", \n",
    "    None, \"zonalSurf false;zonal850 false;zonal500 false;\"\\\n",
    "          \"vortSurf false;vort850 false;vort500 false;specHum850 \"\\\n",
    "          \"false;specHum500 false;specHum2m false;\"\\\n",
    "          \"seaLevP false;relHumSurf false;meridSurf false;merid850 \"\\\n",
    "          \"false;merid500 false;geoHgt850 false;\"\\\n",
    "          \"geoHgt500 false;airT2m false;airFlowSurf false;airFlow850 \"\\\n",
    "          \"false;airFlow500 false\",\n",
    "    distance_feature, None, \"US_Prediction_Grid_GCM\", output_result,\n",
    "    None, \"specHum2m specHum2m;airT2m airT2m;geoHgt850 \"\\\n",
    "          \"geoHgt850;geoHgt500 geoHgt500;relHumSurf \"\\\n",
    "          \"relHumSurf;specHum850 specHum850;\"\\\n",
    "          \"vort850 vort850;vort500 vort500;merid850 merid850;merid500 \"\\\n",
    "          \"merid500; zonal850 zonal850;zonal500 zonal500; airFlow850 \"\\\n",
    "          \"airFlow850;airFlow500 airFlow500 \"\\\n",
    "          \"airFlowSurf airFlowSurf; vortSurf vortSurf; meridSurf \"\\\n",
    "          \"meridSurf;seaLevP seaLevP;zonalSurf zonalSurf\",\n",
    "    None, None, None, None, \"TRUE\", 100, None, None, 100, None, 10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe\n",
       "            width=\"100%\"\n",
       "            height=\"800px\"\n",
       "            src=\"https://eath.maps.arcgis.com/apps/StorytellingSwipe/index.html?appid=409a3bf73fca49c1a8cc77c20900f30d#\"\n",
       "            frameborder=\"0\"\n",
       "            allowfullscreen\n",
       "        ></iframe>\n",
       "        "
      ],
      "text/plain": [
       "<IPython.lib.display.IFrame at 0x7f47963479b0>"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import IFrame\n",
    "IFrame(src='https://eath.maps.arcgis.com/apps/StorytellingSwipe/'\\\n",
    "           'index.html?appid=409a3bf73fca49c1a8cc77c20900f30d#',\n",
    "       width=\"100%\", height=\"800px\") "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Conclusions\n",
    "In this study, we explored different means of incorporating spatial information in climate model downscaling."
   ]
  }
 ],
 "metadata": {
  "esriNotebookRuntime": {
   "notebookRuntimeName": "ArcGIS Notebook Python 3 Advanced",
   "notebookRuntimeVersion": "10.7.1"
  },
  "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": 2
}
