{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "import subprocess\n",
    "import jinja2\n",
    "import requests\n",
    "from metadata_extractor import CORDEXMetadataExtractor, obs4MIPSMetadataExtractor\n",
    "from tqdm import tqdm_notebook as tqdm\n",
    "from glob import glob\n",
    "from IPython.display import Markdown, Image"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "domain should be one of these three: 'AFR-44', 'EUR-11', 'NAM-44'\n",
    "* AFR-44: CORDEX Africa RCMs at 44 km resolution\n",
    "* EUR-11: CORDEX Europe RCMs at 11 km resolution\n",
    "* NAM-44: CORDEX North America RCMs at 44 km resolution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "domain = 'NAM-44'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The output directory\n",
    "cwd = os.getcwd()\n",
    "workdir = cwd +'/evaluation_result'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Location of obs4Mips files\n",
    "obs_dir = '/mnt/efs/obs4mips'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Location of CORDEX files\n",
    "models_dir = '/mnt/efs/'+domain+'/*'.format(domain=domain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Extract metadata from model and obs files, pairing up files with the same\n",
    "# variables for separate evaluations\n",
    "obs_extractor = obs4MIPSMetadataExtractor(obs_dir)\n",
    "models_extractor = CORDEXMetadataExtractor(models_dir)\n",
    "groups = obs_extractor.group(models_extractor, 'variable')\n",
    "\n",
    "# Configuration file template, to be rendered repeatedly for each evaluation\n",
    "# run\n",
    "env =  jinja2.Environment(loader=jinja2.FileSystemLoader('./templates'),\n",
    "                          trim_blocks=True, lstrip_blocks=True)\n",
    "t = env.get_template('CORDEX.yaml.template')\n",
    "\n",
    "# Each group represents a single evaluation. Repeat the evaluation for\n",
    "# three seasons: Summer, Winter, and Annual.\n",
    "seasons = ['annual', 'winter', 'summer']\n",
    "errored = []\n",
    "for group in tqdm(groups, desc='variable loop'):\n",
    "    obs_info, models_info = group\n",
    "    instrument = obs_info['instrument']\n",
    "    variable = obs_info['variable']\n",
    "    for season in tqdm(seasons, desc='season loop'):\n",
    "        configfile_basename = '_'.join([domain, instrument, variable, season]) + '.yaml'\n",
    "        configfile_path = os.path.join(workdir, domain, instrument,\n",
    "                                       variable, season)\n",
    "        if not os.path.exists(configfile_path):\n",
    "            os.makedirs(configfile_path)\n",
    "        configfile_path = os.path.join(configfile_path, configfile_basename)\n",
    "        with open(configfile_path, 'w') as configfile:\n",
    "            configfile.write(t.render(obs_info=obs_info, models_info=models_info,\n",
    "                                      season=season, output_dir=workdir))\n",
    "\n",
    "        # TODO: Do this in parallel. Will change this once this approach\n",
    "        # is well tested.\n",
    "        code = subprocess.call([sys.executable, '../run_RCMES.py', configfile_path])\n",
    "        if code:\n",
    "            errored.append(configfile_path)\n",
    "print(\"All runs done. The following ended with an error: {}\".format(errored))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Check the evaluation result or download the processed obs4mips and model output."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "display(Markdown('Evaluation results'))\n",
    "ip_address = (requests.get('http://169.254.169.254/latest/meta-data/public-ipv4').content).decode('utf-8')\n",
    "for obs_info in obs_extractor.data:\n",
    "    inst_name = obs_info['instrument']\n",
    "    var_name = obs_info['variable']\n",
    "    display(Markdown('Instrument: '+inst_name+'& Variable: '+var_name))\n",
    "    for season in seasons:\n",
    "        os.chdir(workdir+'/'+domain+'/'+inst_name+'/'+var_name+'/'+season)\n",
    "        png_files = glob('*.png')\n",
    "        for png_file in png_files:    \n",
    "            display(Image(os.getcwd()+'/'+png_file))\n",
    "        nc_file = glob('*.nc')[0]\n",
    "        display(Markdown('['+nc_file+'](http://'+ip_address+':8888'+os.getcwd()+'/'+nc_file+')'))\n",
    "os.chdir(cwd)        \n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
