{ "cells": [ { "cell_type": "markdown", "source": [ "# Emulating using GPs\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "## Ignore my broken HDF5 install...\n", "os.putenv(\"HDF5_DISABLE_VERSION_CHECK\", '1')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\duncan\\miniconda3\\envs\\gcem_dev\\lib\\site-packages\\h5py\\__init__.py:40: UserWarning: h5py is running against HDF5 1.10.6 when it was built against 1.10.5, this may cause problems\n", " '{0}.{1}.{2}'.format(*version.hdf5_built_version_tuple)\n" ] } ], "source": [ "import iris\n", "from utils import get_bc_ppe_data\n", "\n", "from esem import gp_model\n", "from esem.utils import get_random_params\n", "\n", "import iris.quickplot as qplt\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Read in the parameters and observables" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\duncan\\miniconda3\\envs\\gcem_dev\\lib\\site-packages\\iris\\__init__.py:249: IrisDeprecation: setting the 'Future' property 'netcdf_promote' is deprecated and will be removed in a future release. Please remove code that sets this property.\n", " warn_deprecated(msg.format(name))\n", "C:\\Users\\duncan\\miniconda3\\envs\\gcem_dev\\lib\\site-packages\\iris\\__init__.py:249: IrisDeprecation: setting the 'Future' property 'netcdf_promote' is deprecated and will be removed in a future release. Please remove code that sets this property.\n", " warn_deprecated(msg.format(name))\n" ] } ], "source": [ "ppe_params, ppe_aaod = get_bc_ppe_data()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "n_test = 5\n", "\n", "X_test, X_train = ppe_params[:n_test], ppe_params[n_test:]\n", "Y_test, Y_train = ppe_aaod[:n_test,0], ppe_aaod[n_test:,0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup and run the models" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "model = gp_model(X_train, Y_train)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [], "source": [ "model.train()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "m, v = model.predict(X_test.values)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": true }, "outputs": [], "source": [ "## validation_plot(Y_test.data.flatten(), m.data.flatten(), v.data.flatten())" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\duncan\\miniconda3\\envs\\gcem_dev\\lib\\site-packages\\iris\\coords.py:1410: UserWarning: Collapsing a non-contiguous coordinate. Metadata may not be fully descriptive for 'sample'.\n", " warnings.warn(msg.format(self.name()))\n", "C:\\Users\\duncan\\miniconda3\\envs\\gcem_dev\\lib\\site-packages\\iris\\coords.py:1410: UserWarning: Collapsing a non-contiguous coordinate. Metadata may not be fully descriptive for 'job'.\n", " warnings.warn(msg.format(self.name()))\n", "C:\\Users\\duncan\\miniconda3\\envs\\gcem_dev\\lib\\site-packages\\iris\\coords.py:1193: UserWarning: Coordinate 'longitude' is not bounded, guessing contiguous bounds.\n", " 'contiguous bounds.'.format(self.name()))\n", "C:\\Users\\duncan\\miniconda3\\envs\\gcem_dev\\lib\\site-packages\\iris\\coords.py:1193: UserWarning: Coordinate 'latitude' is not bounded, guessing contiguous bounds.\n", " 'contiguous bounds.'.format(self.name()))\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "qplt.pcolormesh((m.collapsed('sample', iris.analysis.MEAN)-Y_test.collapsed('job', iris.analysis.MEAN)), cmap='RdBu_r', vmin=-0.01, vmax=0.01)\n", "plt.gca().coastlines()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.175408691451335e-06" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Note the model variance is constant across the outputs\n", "v.data.max()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(100000, 3)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_random_params(3, int(1e5)).shape" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%|##########| 1000/1000 [00:09<00:00, 149.00sample/s]" ] } ], "source": [ "m, sd = model.batch_stats(get_random_params(3, int(1e3)))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%|##########| 10000/10000 [00:07<00:00, 1459.07sample/s]" ] } ], "source": [ "m, sd = model.batch_stats(get_random_params(3, int(1e4)), batch_size=10)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%|##########| 1000000/1000000 [00:09<00:00, 122569.61sample/s]" ] } ], "source": [ "m, sd = model.batch_stats(get_random_params(3, int(1e6)), batch_size=10000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:gcem_dev]", "language": "python", "name": "conda-env-gcem_dev-py" }, "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.6" } }, "nbformat": 4, "nbformat_minor": 4 }