Repository: climate Updated Branches: refs/heads/master 14b98e98a -> 4cf79f3d0
http://git-wip-us.apache.org/repos/asf/climate/blob/5c7a9ef1/ocw-parallel/notebooks/Flexible RCMES Workflow.ipynb ---------------------------------------------------------------------- diff --git a/ocw-parallel/notebooks/Flexible RCMES Workflow.ipynb b/ocw-parallel/notebooks/Flexible RCMES Workflow.ipynb new file mode 100644 index 0000000..12bf8a6 --- /dev/null +++ b/ocw-parallel/notebooks/Flexible RCMES Workflow.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Flexible RCMES Workflow\n", + "\n", + "* Typical Steps:\n", + " * Load Datasets\n", + " * Temporal Regrids\n", + " * Spatial Regrids\n", + " * Evaluate Metrics\n", + " * Plot Results\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Make sure that OCW functions are available." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'functions'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-1-0a14eee734d6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'matplotlib inline'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mfunctions\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mloadDatasets\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtemporalRebins\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcommonLatLonGrid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mspatialRegrids\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mfunctions\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcomputeMetrics\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontourPlot\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmymap\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u 001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m# def mymap(f, s): return map(f, s) # sequential single-core map function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'functions'" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "from functions import loadDatasets, temporalRebins, commonLatLonGrid, spatialRegrids\n", + "from functions import computeMetrics, contourPlot, mymap\n", + "\n", + "# def mymap(f, s): return map(f, s) # sequential single-core map function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load Reference Dataset and one or more Model Datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "Missing parentheses in call to 'print' (<ipython-input-2-06a67660f049>, line 7)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"<ipython-input-2-06a67660f049>\"\u001b[0;36m, line \u001b[0;32m7\u001b[0m\n\u001b[0;31m print datasets\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m Missing parentheses in call to 'print'\n" + ] + } + ], + "source": [ + "path1 = \"/Users/bdwilson/Documents/code/RCMES/Workshop/AFRICA_UC-WRF311_CTL_ERAINT_MM_50km-rg_1989-2008_tasmax.nc\"\n", + "variable1 = \"tasmax\"\n", + "path2 = \"/Users/bdwilson/Documents/code/RCMES/Workshop/AFRICA_KNMI-RACMO2.2b_CTL_ERAINT_MM_50km_1989-2008_tasmax.nc\"\n", + "variable2 = \"tasmax\"\n", + "\n", + "datasets = loadDatasets([(path1, variable1), (path2, variable2)], dir='./')\n", + "print datasets" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Temporal Rebin" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import ocw.dataset_processor as dsp\n", + "from datetime import timedelta\n", + "\n", + "timeRes=timedelta(days=365)\n", + "datasets = temporalRebins(datasets, timeRes)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Spatial Regrid" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "latRes = 1.0 # degrees\n", + "lonRes = 1.0 # degrees\n", + "lats, lons = commonLatLonGrid(datasets, latRes, lonRes)\n", + "# Find common spatial bounds, return desired grid with specified resolution\n", + "\n", + "datasets = spatialRegrids(datasets, lats, lons)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compute Metric(s)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "metricNames = ['Bias']\n", + "results = computeMetrics(datasets, metricNames, subregions=None)\n", + "bias = results[0][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot Bias between two models as time-series of contour maps" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "outputName = \"wrf_bias_compared_to_knm\"\n", + "config = {'gridshape': (4, 5),\n", + " 'ptitle': 'TASMAX Bias of WRF Compared to KNMI (1989 - 2008)',\n", + " 'subtitles': range(1989, 2009, 1)\n", + " }\n", + "\n", + "plotFile = contourPlot(bias, lats, lons, outputName, **config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Display Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(plotFile))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}