{ "cells": [ { "cell_type": "markdown", "id": "measured-strengthening", "metadata": {}, "source": [ "# MCMC in EasyVVUQ" ] }, { "cell_type": "markdown", "id": "chief-morocco", "metadata": {}, "source": [ "EasyVVUQ provides support for MCMC sampling with multiple chains in parallel." ] }, { "cell_type": "code", "execution_count": 1, "id": "mechanical-deposit", "metadata": { "ExecuteTime": { "end_time": "2021-06-09T10:32:03.025465Z", "start_time": "2021-06-09T10:31:59.898305Z" } }, "outputs": [], "source": [ "import easyvvuq as uq\n", "import chaospy as cp\n", "import matplotlib.pyplot as plt\n", "from tqdm.notebook import trange" ] }, { "cell_type": "markdown", "id": "leading-aging", "metadata": {}, "source": [ "We define a Rosenbrock function in 2 dimensions for testing purposes. This will be a stand-in for our probability density." ] }, { "cell_type": "code", "execution_count": 2, "id": "allied-earthquake", "metadata": { "ExecuteTime": { "end_time": "2021-06-09T10:32:03.028329Z", "start_time": "2021-06-09T10:32:03.026477Z" }, "code_folding": [ 0 ] }, "outputs": [], "source": [ "def rosenbrock(inputs):\n", " x1 = float(inputs['x1'])\n", " x2 = float(inputs['x2'])\n", " y = (1.0 - x1) ** 2 + 100.0 * (x2 - x1 ** 2) ** 2\n", " return {'value': -y}" ] }, { "cell_type": "markdown", "id": "royal-camel", "metadata": {}, "source": [ "Next we define a helper function to create a campaign, sample the search space and return the corresponding DataFrame." ] }, { "cell_type": "code", "execution_count": 3, "id": "robust-intensity", "metadata": { "ExecuteTime": { "end_time": "2021-06-09T10:32:03.033397Z", "start_time": "2021-06-09T10:32:03.029515Z" }, "code_folding": [ 0 ] }, "outputs": [], "source": [ "def mcmc(tmp_path='.'):\n", " params = {\n", " \"x1\": {\"type\": \"float\", \"default\": 0.0},\n", " \"x2\": {\"type\": \"float\", \"default\": 0.0},\n", " \"chain_id\": {\"type\": \"integer\", \"default\": 0}\n", " }\n", " execute = uq.actions.ExecutePython(rosenbrock)\n", " actions = uq.actions.Actions(execute)\n", " \n", " campaign = uq.Campaign(name='mcmc', work_dir=tmp_path, params=params, actions=actions) \n", " \n", " vary_init = {\n", " \"x1\": [-1.0, 0.0, 1.0, 0.5, 0.1],\n", " \"x2\": [1.0, 0.0, 0.5, 1.0, 0.2]\n", " }\n", " def q(x, b=1):\n", " return cp.J(cp.Normal(x['x1'], b), cp.Normal(x['x2'], b))\n", " sampler = uq.sampling.MCMCSampler(vary_init, q, 'value', n_chains=5)\n", " campaign.set_sampler(sampler)\n", " iterator = campaign.iterate(mark_invalid=True)\n", " for _ in trange(1000):\n", " next(iterator).collate()\n", " df = campaign.get_collation_result()\n", " return df" ] }, { "cell_type": "code", "execution_count": 4, "id": "amino-charger", "metadata": { "ExecuteTime": { "end_time": "2021-06-09T10:32:23.728447Z", "start_time": "2021-06-09T10:32:03.034644Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0a14209e1d084f1680b8a039779c6aee", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/1000 [00:00]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df[(df['chain_id'] == 0).values]['x1'], df[(df['chain_id'] == 0).values]['x2'], alpha=0.5)\n", "plt.plot(df[(df['chain_id'] == 1).values]['x1'], df[(df['chain_id'] == 1).values]['x2'], alpha=0.5)\n", "plt.plot(df[(df['chain_id'] == 2).values]['x1'], df[(df['chain_id'] == 2).values]['x2'], alpha=0.5)\n", "plt.plot(df[(df['chain_id'] == 3).values]['x1'], df[(df['chain_id'] == 3).values]['x2'], alpha=0.5)\n", "plt.plot(df[(df['chain_id'] == 4).values]['x1'], df[(df['chain_id'] == 4).values]['x2'], alpha=0.5)" ] }, { "cell_type": "markdown", "id": "mineral-barrier", "metadata": {}, "source": [ "Finally let us plot a histogram of this data." ] }, { "cell_type": "code", "execution_count": 6, "id": "affecting-collapse", "metadata": { "ExecuteTime": { "end_time": "2021-06-09T10:32:23.878330Z", "start_time": "2021-06-09T10:32:23.822536Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "hist = plt.hist2d(df['x1'].T.values[0], df['x2'].T.values[0], bins=20)" ] } ], "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.9.4" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": false, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false } }, "nbformat": 4, "nbformat_minor": 5 }