{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "0", "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "import logging\n", "import warnings\n", "\n", "import numpy as np\n", "\n", "np.set_printoptions(precision=4)\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "\n", "logger = logging.getLogger()\n", "logger.setLevel(logging.ERROR)" ] }, { "cell_type": "markdown", "id": "1", "metadata": {}, "source": [ "# Temperature independent average observable\n", "\n", "We first extrapolate our ideal gas test system in temperature and compare to the exact result. We also compare results with finite numbers of samples to exact results for an infinite number of samples. This is possible because we can analytically calculate derivatives for the ideal gas model at any order rather than estimating them.\n", "\n", "The first thing we want to do is define some parameters and generate data. We will define a reference inverse temperature, specific orders we want to extrapolate to, and create some reference data. The {func}`thermoextrap.idealgas.generate_data` function conveniently provides random samples of $x$ and $U$ data. This will be in the format of an array with `nconfig` elements, each being the average $x$ value over $N$ independent ideal gas particles. The relevant potential energy is an array of the same shape with a single entry for each configuration. More generally, the data that should be provided to the extrapolation/interpolation code can have any number of columns but should have a single row associated with each simulation snapshot and potential energy. This allows for simultaneous extrapolation of all points in RDFs or time correlation functions with the interparticle distance or time varying with column. Or for simultaneous extrapolation of multiple observables. Critical, however, is that the potential energy (or Hamiltonian) is that which is appropriate to the snapshot with the same index. So for dynamical quantities like time correlation functions, the appropriate Hamiltonian is that for the starting configuration. Another main point here is that the number of columns is arbitrary, with each extrapolated separately, but because of the way the code is vectorized you get much better efficiency by providing multiple columns rather than running the extrapolation multiple times for different observables.\n", "\n", "For more information on the structure of data and other options for inputting data, please see the [Data_Organization](./Data_Organization.ipynb) notebook." ] }, { "cell_type": "code", "execution_count": 2, "id": "2", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import cmomy\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# Import idealgas module\n", "from thermoextrap import idealgas\n", "\n", "# set random seed\n", "rng = cmomy.random.default_rng(0)\n", "\n", "# Define test betas and reference beta\n", "betas = np.arange(0.1, 10.0, 0.5)\n", "beta_ref = betas[11]\n", "vol = 1.0\n", "\n", "# Define orders to extrapolate to\n", "orders = [1, 2, 4, 6]\n", "order = orders[-1]\n", "\n", "npart = 1000 # Number of particles (in single configuration)\n", "nconfig = 100_000 # Number of configurations\n", "\n", "# Generate all the data we could want\n", "xdata, udata = idealgas.generate_data((nconfig, npart), beta_ref, vol)" ] }, { "cell_type": "markdown", "id": "3", "metadata": {}, "source": [ "All the code below relies on inputting xarray objects. This is easily applied." ] }, { "cell_type": "code", "execution_count": 3, "id": "4", "metadata": {}, "outputs": [], "source": [ "import xarray as xr\n", "\n", "xdata = xr.DataArray(xdata, dims=[\"rec\"])\n", "udata = xr.DataArray(udata, dims=[\"rec\"])" ] }, { "cell_type": "markdown", "id": "5", "metadata": {}, "source": [ "We now want to create and train our extrapolation and perturbation models that we will compare. By default the {class}`~thermoextrap.models.ExtrapModel` or other classes work with the simplest case of directly extrapolating an observable that is an average quantity and does not explicitly depend on temperature. Note that this covers quantities that include dependence on kinetic degrees of freedom, with the potential energy simply substituted for the full Hamiltonian (total energy). Or it works for extrapolating in temperature or pressure in the NPT ensemble - again you just have to insert the appropriate Hamiltonian instead of the potential energy. To be specific, that means that if we want to extrapolate with respect to $\\beta$ in the NPT ensemble, we need to provide $U + pV$ instead of just $U$. To extrapolate with respect to $p$ in the NPT, we only provide $\\beta V$ at each snapshot. The math then works out the same way and all of this code can be re-used. We handle other cases, like explicit temperature dependence of the quantity to be averaged, in other notebooks." ] }, { "cell_type": "code", "execution_count": 4, "id": "6", "metadata": {}, "outputs": [], "source": [ "import thermoextrap as xtrap" ] }, { "cell_type": "code", "execution_count": 5, "id": "7", "metadata": {}, "outputs": [], "source": [ "# First, create a model around the data - see \"Data_Organization\" notebook\n", "data = xtrap.DataCentralMomentsVals.from_vals(\n", " order=orders[-1], rec_dim=\"rec\", xv=xdata, uv=udata, central=True\n", ")\n", "\n", "# Create extrapolation and perturbation models\n", "xem = xtrap.beta.factory_extrapmodel(beta_ref, data)\n", "\n", "xpm = xtrap.beta.factory_perturbmodel(beta_ref, uv=udata, xv=xdata)" ] }, { "cell_type": "markdown", "id": "8", "metadata": {}, "source": [ "Let's test some predictions and look at the results. Notice that you can make predictions over scalars or arrays of values, but the extrapolation will only be 1D in the variable of interest (e.g. temperature, pressure, etc.). Extrapolations in multiple dimensions of state variables is not yet supported." ] }, { "cell_type": "code", "execution_count": 6, "id": "9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.045\n" ] } ], "source": [ "x = rng.random()\n", "print(f\"{x:.3f}\")" ] }, { "cell_type": "code", "execution_count": 7, "id": "10", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Extrapolation: -23.750\n", "Perturbation:, 0.199\n", "\n", "\n", "At lower order\n", "--------------\n", "Extrapolation: 0.448\n", "Perturbation: 0.199\n", "\n", "\n", "For multiple beta values\n", "------------------------\n", "Extrapolation: [0.4484 0.4137 0.3811 0.3503]\n", "Perturbation: [0.1986 0.1986 0.1986 0.1986]\n", "\n" ] } ], "source": [ "# Make some predictions\n", "print(\n", " f\"\"\"\n", "Extrapolation: {xem.predict(betas[0]).values:.3f}\n", "Perturbation:, {xpm.predict(betas[0]).values:.3f}\n", "\"\"\"\n", ")\n", "\n", "# By default, uses maximum order, which here is inaccurate due to limited sampling (see figure below)\n", "# But can switch to any lower order if desired\n", "# Remember, order doesn't matter for perturbation\n", "print(\n", " f\"\"\"\n", "At lower order\n", "--------------\n", "Extrapolation: {xem.predict(betas[0], order=2).values:.3f}\n", "Perturbation: {xpm.predict(betas[0]).values:.3f}\n", "\"\"\"\n", ")\n", "\n", "# Can also make predictions for multiple values\n", "print(\n", " f\"\"\"\n", "For multiple beta values\n", "------------------------\n", "Extrapolation: {xem.predict(betas[:4], order=2).values}\n", "Perturbation: {xpm.predict(betas[:4]).values}\n", "\"\"\"\n", ")" ] }, { "cell_type": "markdown", "id": "11", "metadata": {}, "source": [ "All of the extrapolation/interpolation model classes come with a way to resample data efficiently to allow for bootstrapped uncertainty estimates. The {meth}`thermoextrap.data.DataCentralMomentsVals.resample` function actually resamples the data and returns a new extrapolation/interpolation class object, meaning that the necessary coefficients are automatically recomputed. However, the coefficients are computed separately for the different bootstrapped samples, which appear as different entries in the \"replication\" or \"rep\" dimension. In what we show below, this makes it easy to create bootstrap resampled data, then compute statistics on the coefficients or the predictions using built in statistical functions in xarray (e.g., {meth}`xarray.DataArray.mean` and {meth}`xarray.DataArray.std`)." ] }, { "cell_type": "code", "execution_count": 8, "id": "12", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray (order: 3, rep: 100)> Size: 2kB\n",
       "array([[ 0.1749,  0.1748,  0.1749,  0.1748,  0.1748,  0.1748,  0.1749,\n",
       "         0.1749,  0.1749,  0.1748,  0.1749,  0.1748,  0.1748,  0.1749,\n",
       "         0.1748,  0.1749,  0.1749,  0.1749,  0.1749,  0.1749,  0.1748,\n",
       "         0.1749,  0.1749,  0.1749,  0.1748,  0.1748,  0.1749,  0.1748,\n",
       "         0.1748,  0.1748,  0.1748,  0.1748,  0.1749,  0.1748,  0.1748,\n",
       "         0.1749,  0.1749,  0.1748,  0.1748,  0.1749,  0.1749,  0.1748,\n",
       "         0.1749,  0.1748,  0.1748,  0.1749,  0.1749,  0.1748,  0.1748,\n",
       "         0.1749,  0.1749,  0.1749,  0.1749,  0.1749,  0.1748,  0.1748,\n",
       "         0.1749,  0.1749,  0.1748,  0.1749,  0.1749,  0.1748,  0.1748,\n",
       "         0.1748,  0.1748,  0.1749,  0.1749,  0.1749,  0.1749,  0.1748,\n",
       "         0.1749,  0.1749,  0.1748,  0.1748,  0.1749,  0.1749,  0.1748,\n",
       "         0.1748,  0.1748,  0.1748,  0.1748,  0.1748,  0.1748,  0.1748,\n",
       "         0.1748,  0.1748,  0.1748,  0.1749,  0.1748,  0.1748,  0.1749,\n",
       "         0.1748,  0.1748,  0.1749,  0.1749,  0.1748,  0.1749,  0.1748,\n",
       "         0.1749,  0.1748],\n",
       "       [-0.0283, -0.0282, -0.0285, -0.0283, -0.0283, -0.0282, -0.0283,\n",
       "        -0.0282, -0.028 , -0.0281, -0.0282, -0.028 , -0.028 , -0.0281,\n",
       "        -0.0284, -0.0281, -0.0281, -0.0284, -0.0284, -0.0284, -0.0281,\n",
       "        -0.0282, -0.0282, -0.0282, -0.0283, -0.0284, -0.0281, -0.0282,\n",
       "        -0.0282, -0.0282, -0.0283, -0.0284, -0.0283, -0.0282, -0.028 ,\n",
       "...\n",
       "        -0.0282, -0.0284, -0.0282, -0.0283, -0.0283, -0.0284, -0.0281,\n",
       "        -0.0283, -0.0284, -0.0282, -0.0282, -0.0281, -0.028 , -0.0282,\n",
       "        -0.0283, -0.0284, -0.0286, -0.0284, -0.0283, -0.0284, -0.0285,\n",
       "        -0.0282, -0.028 , -0.0282, -0.0283, -0.0283, -0.0283, -0.0279,\n",
       "        -0.0282, -0.0282],\n",
       "       [ 0.0039,  0.0035,  0.0045,  0.004 ,  0.004 ,  0.0035,  0.0038,\n",
       "         0.0049,  0.0032,  0.0036,  0.0034,  0.0041,  0.0044,  0.0039,\n",
       "         0.0041,  0.0046,  0.0041,  0.0035,  0.0035,  0.0035,  0.0043,\n",
       "         0.004 ,  0.0033,  0.0048,  0.0038,  0.0038,  0.0034,  0.0041,\n",
       "         0.0035,  0.0042,  0.005 ,  0.0038,  0.0054,  0.0037,  0.0048,\n",
       "         0.0039,  0.0039,  0.0047,  0.0048,  0.0043,  0.004 ,  0.0041,\n",
       "         0.0041,  0.0032,  0.0041,  0.0047,  0.0044,  0.0044,  0.0037,\n",
       "         0.0042,  0.0038,  0.0049,  0.0046,  0.0026,  0.0045,  0.0038,\n",
       "         0.003 ,  0.0045,  0.0034,  0.0048,  0.004 ,  0.0049,  0.0027,\n",
       "         0.0031,  0.0041,  0.0045,  0.0039,  0.0024,  0.0037,  0.0043,\n",
       "         0.0037,  0.0042,  0.0051,  0.0027,  0.004 ,  0.0037,  0.0047,\n",
       "         0.0036,  0.0053,  0.0046,  0.0046,  0.0039,  0.0033,  0.004 ,\n",
       "         0.0038,  0.0045,  0.0034,  0.0044,  0.0051,  0.004 ,  0.0041,\n",
       "         0.0049,  0.004 ,  0.0042,  0.0042,  0.0045,  0.004 ,  0.0038,\n",
       "         0.0043,  0.0043]])\n",
       "Dimensions without coordinates: order, rep
" ], "text/plain": [ " Size: 2kB\n", "array([[ 0.1749, 0.1748, 0.1749, 0.1748, 0.1748, 0.1748, 0.1749,\n", " 0.1749, 0.1749, 0.1748, 0.1749, 0.1748, 0.1748, 0.1749,\n", " 0.1748, 0.1749, 0.1749, 0.1749, 0.1749, 0.1749, 0.1748,\n", " 0.1749, 0.1749, 0.1749, 0.1748, 0.1748, 0.1749, 0.1748,\n", " 0.1748, 0.1748, 0.1748, 0.1748, 0.1749, 0.1748, 0.1748,\n", " 0.1749, 0.1749, 0.1748, 0.1748, 0.1749, 0.1749, 0.1748,\n", " 0.1749, 0.1748, 0.1748, 0.1749, 0.1749, 0.1748, 0.1748,\n", " 0.1749, 0.1749, 0.1749, 0.1749, 0.1749, 0.1748, 0.1748,\n", " 0.1749, 0.1749, 0.1748, 0.1749, 0.1749, 0.1748, 0.1748,\n", " 0.1748, 0.1748, 0.1749, 0.1749, 0.1749, 0.1749, 0.1748,\n", " 0.1749, 0.1749, 0.1748, 0.1748, 0.1749, 0.1749, 0.1748,\n", " 0.1748, 0.1748, 0.1748, 0.1748, 0.1748, 0.1748, 0.1748,\n", " 0.1748, 0.1748, 0.1748, 0.1749, 0.1748, 0.1748, 0.1749,\n", " 0.1748, 0.1748, 0.1749, 0.1749, 0.1748, 0.1749, 0.1748,\n", " 0.1749, 0.1748],\n", " [-0.0283, -0.0282, -0.0285, -0.0283, -0.0283, -0.0282, -0.0283,\n", " -0.0282, -0.028 , -0.0281, -0.0282, -0.028 , -0.028 , -0.0281,\n", " -0.0284, -0.0281, -0.0281, -0.0284, -0.0284, -0.0284, -0.0281,\n", " -0.0282, -0.0282, -0.0282, -0.0283, -0.0284, -0.0281, -0.0282,\n", " -0.0282, -0.0282, -0.0283, -0.0284, -0.0283, -0.0282, -0.028 ,\n", "...\n", " -0.0282, -0.0284, -0.0282, -0.0283, -0.0283, -0.0284, -0.0281,\n", " -0.0283, -0.0284, -0.0282, -0.0282, -0.0281, -0.028 , -0.0282,\n", " -0.0283, -0.0284, -0.0286, -0.0284, -0.0283, -0.0284, -0.0285,\n", " -0.0282, -0.028 , -0.0282, -0.0283, -0.0283, -0.0283, -0.0279,\n", " -0.0282, -0.0282],\n", " [ 0.0039, 0.0035, 0.0045, 0.004 , 0.004 , 0.0035, 0.0038,\n", " 0.0049, 0.0032, 0.0036, 0.0034, 0.0041, 0.0044, 0.0039,\n", " 0.0041, 0.0046, 0.0041, 0.0035, 0.0035, 0.0035, 0.0043,\n", " 0.004 , 0.0033, 0.0048, 0.0038, 0.0038, 0.0034, 0.0041,\n", " 0.0035, 0.0042, 0.005 , 0.0038, 0.0054, 0.0037, 0.0048,\n", " 0.0039, 0.0039, 0.0047, 0.0048, 0.0043, 0.004 , 0.0041,\n", " 0.0041, 0.0032, 0.0041, 0.0047, 0.0044, 0.0044, 0.0037,\n", " 0.0042, 0.0038, 0.0049, 0.0046, 0.0026, 0.0045, 0.0038,\n", " 0.003 , 0.0045, 0.0034, 0.0048, 0.004 , 0.0049, 0.0027,\n", " 0.0031, 0.0041, 0.0045, 0.0039, 0.0024, 0.0037, 0.0043,\n", " 0.0037, 0.0042, 0.0051, 0.0027, 0.004 , 0.0037, 0.0047,\n", " 0.0036, 0.0053, 0.0046, 0.0046, 0.0039, 0.0033, 0.004 ,\n", " 0.0038, 0.0045, 0.0034, 0.0044, 0.0051, 0.004 , 0.0041,\n", " 0.0049, 0.004 , 0.0042, 0.0042, 0.0045, 0.004 , 0.0038,\n", " 0.0043, 0.0043]])\n", "Dimensions without coordinates: order, rep" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a bootstrapped sample\n", "boot_xem = xem.resample(nrep=100)\n", "\n", "# Predict coefficients - these are derivatives divided by appropriate factorial, so Taylor series coefficients\n", "boot_xem.coefs(order=2)" ] }, { "cell_type": "code", "execution_count": 9, "id": "13", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray (beta: 4, rep: 100)> Size: 3kB\n",
       "array([[0.4493, 0.4352, 0.4688, 0.4502, 0.4498, 0.4348, 0.4462, 0.479 ,\n",
       "        0.4265, 0.439 , 0.432 , 0.454 , 0.4629, 0.449 , 0.4553, 0.4682,\n",
       "        0.4535, 0.4369, 0.436 , 0.4376, 0.459 , 0.4509, 0.4312, 0.4752,\n",
       "        0.4438, 0.4473, 0.4336, 0.4542, 0.4375, 0.4569, 0.4828, 0.4449,\n",
       "        0.4927, 0.442 , 0.4728, 0.4487, 0.447 , 0.4724, 0.4741, 0.4612,\n",
       "        0.4509, 0.4549, 0.4543, 0.4262, 0.4525, 0.4733, 0.4642, 0.4617,\n",
       "        0.4421, 0.4574, 0.4469, 0.4785, 0.4709, 0.4086, 0.4672, 0.4435,\n",
       "        0.4214, 0.4644, 0.434 , 0.4761, 0.4524, 0.4804, 0.4124, 0.4243,\n",
       "        0.4547, 0.4657, 0.4483, 0.4023, 0.4426, 0.4629, 0.4414, 0.4581,\n",
       "        0.4833, 0.4119, 0.4506, 0.4435, 0.4723, 0.4388, 0.4927, 0.4696,\n",
       "        0.468 , 0.4471, 0.4289, 0.4512, 0.4441, 0.4671, 0.4355, 0.4654,\n",
       "        0.4848, 0.4518, 0.4542, 0.4766, 0.4504, 0.4585, 0.4571, 0.4674,\n",
       "        0.4505, 0.4427, 0.4601, 0.4613],\n",
       "       [0.4145, 0.4029, 0.4307, 0.4152, 0.4149, 0.4025, 0.412 , 0.439 ,\n",
       "        0.3956, 0.4059, 0.4001, 0.4183, 0.4257, 0.4142, 0.4196, 0.4301,\n",
       "        0.4179, 0.4044, 0.4036, 0.4049, 0.4224, 0.4158, 0.3995, 0.4359,\n",
       "        0.4099, 0.4129, 0.4014, 0.4186, 0.4047, 0.4207, 0.4422, 0.4109,\n",
       "        0.4504, 0.4085, 0.4338, 0.414 , 0.4126, 0.4334, 0.435 , 0.4244,\n",
       "        0.4159, 0.4192, 0.4187, 0.3955, 0.4171, 0.4343, 0.4269, 0.4247,\n",
       "        0.4086, 0.4213, 0.4125, 0.4386, 0.4324, 0.3809, 0.4293, 0.4097,\n",
       "...\n",
       "        0.377 , 0.3872, 0.3801, 0.4012, 0.3962, 0.3545, 0.3937, 0.3778,\n",
       "        0.363 , 0.3917, 0.3715, 0.3997, 0.3839, 0.4026, 0.3569, 0.3649,\n",
       "        0.3854, 0.3927, 0.381 , 0.3501, 0.3771, 0.391 , 0.3764, 0.3877,\n",
       "        0.4044, 0.3567, 0.3826, 0.3779, 0.397 , 0.3747, 0.4108, 0.3952,\n",
       "        0.3941, 0.3801, 0.3678, 0.3829, 0.3782, 0.3937, 0.3727, 0.3926,\n",
       "        0.4055, 0.3835, 0.3851, 0.3999, 0.3823, 0.3878, 0.3869, 0.3938,\n",
       "        0.3825, 0.377 , 0.3889, 0.3897],\n",
       "       [0.3509, 0.3433, 0.3614, 0.3513, 0.3511, 0.3431, 0.3493, 0.3665,\n",
       "        0.3386, 0.3452, 0.3416, 0.353 , 0.3578, 0.3505, 0.3542, 0.3607,\n",
       "        0.3529, 0.3445, 0.3439, 0.3448, 0.3558, 0.3516, 0.3412, 0.3644,\n",
       "        0.3479, 0.3499, 0.3423, 0.3534, 0.3445, 0.3547, 0.3686, 0.3487,\n",
       "        0.3738, 0.3469, 0.3629, 0.3505, 0.3495, 0.3627, 0.3639, 0.3572,\n",
       "        0.3518, 0.354 , 0.3536, 0.3387, 0.3523, 0.3634, 0.3589, 0.3572,\n",
       "        0.3472, 0.3552, 0.3496, 0.3662, 0.3623, 0.3293, 0.3604, 0.3477,\n",
       "        0.3361, 0.3587, 0.3428, 0.3651, 0.3527, 0.3675, 0.3312, 0.3375,\n",
       "        0.3539, 0.3596, 0.3502, 0.3258, 0.3471, 0.3583, 0.3467, 0.3557,\n",
       "        0.3687, 0.3311, 0.3516, 0.3479, 0.3628, 0.3453, 0.3739, 0.3615,\n",
       "        0.3606, 0.3495, 0.3397, 0.3518, 0.3481, 0.3604, 0.3438, 0.3595,\n",
       "        0.3697, 0.3524, 0.3536, 0.3652, 0.3512, 0.3557, 0.355 , 0.3604,\n",
       "        0.3515, 0.347 , 0.3565, 0.3571]])\n",
       "Coordinates:\n",
       "  * beta     (beta) float64 32B 0.1 0.6 1.1 1.6\n",
       "    dalpha   (beta) float64 32B -5.5 -5.0 -4.5 -4.0\n",
       "    beta0    float64 8B 5.6\n",
       "Dimensions without coordinates: rep
" ], "text/plain": [ " Size: 3kB\n", "array([[0.4493, 0.4352, 0.4688, 0.4502, 0.4498, 0.4348, 0.4462, 0.479 ,\n", " 0.4265, 0.439 , 0.432 , 0.454 , 0.4629, 0.449 , 0.4553, 0.4682,\n", " 0.4535, 0.4369, 0.436 , 0.4376, 0.459 , 0.4509, 0.4312, 0.4752,\n", " 0.4438, 0.4473, 0.4336, 0.4542, 0.4375, 0.4569, 0.4828, 0.4449,\n", " 0.4927, 0.442 , 0.4728, 0.4487, 0.447 , 0.4724, 0.4741, 0.4612,\n", " 0.4509, 0.4549, 0.4543, 0.4262, 0.4525, 0.4733, 0.4642, 0.4617,\n", " 0.4421, 0.4574, 0.4469, 0.4785, 0.4709, 0.4086, 0.4672, 0.4435,\n", " 0.4214, 0.4644, 0.434 , 0.4761, 0.4524, 0.4804, 0.4124, 0.4243,\n", " 0.4547, 0.4657, 0.4483, 0.4023, 0.4426, 0.4629, 0.4414, 0.4581,\n", " 0.4833, 0.4119, 0.4506, 0.4435, 0.4723, 0.4388, 0.4927, 0.4696,\n", " 0.468 , 0.4471, 0.4289, 0.4512, 0.4441, 0.4671, 0.4355, 0.4654,\n", " 0.4848, 0.4518, 0.4542, 0.4766, 0.4504, 0.4585, 0.4571, 0.4674,\n", " 0.4505, 0.4427, 0.4601, 0.4613],\n", " [0.4145, 0.4029, 0.4307, 0.4152, 0.4149, 0.4025, 0.412 , 0.439 ,\n", " 0.3956, 0.4059, 0.4001, 0.4183, 0.4257, 0.4142, 0.4196, 0.4301,\n", " 0.4179, 0.4044, 0.4036, 0.4049, 0.4224, 0.4158, 0.3995, 0.4359,\n", " 0.4099, 0.4129, 0.4014, 0.4186, 0.4047, 0.4207, 0.4422, 0.4109,\n", " 0.4504, 0.4085, 0.4338, 0.414 , 0.4126, 0.4334, 0.435 , 0.4244,\n", " 0.4159, 0.4192, 0.4187, 0.3955, 0.4171, 0.4343, 0.4269, 0.4247,\n", " 0.4086, 0.4213, 0.4125, 0.4386, 0.4324, 0.3809, 0.4293, 0.4097,\n", "...\n", " 0.377 , 0.3872, 0.3801, 0.4012, 0.3962, 0.3545, 0.3937, 0.3778,\n", " 0.363 , 0.3917, 0.3715, 0.3997, 0.3839, 0.4026, 0.3569, 0.3649,\n", " 0.3854, 0.3927, 0.381 , 0.3501, 0.3771, 0.391 , 0.3764, 0.3877,\n", " 0.4044, 0.3567, 0.3826, 0.3779, 0.397 , 0.3747, 0.4108, 0.3952,\n", " 0.3941, 0.3801, 0.3678, 0.3829, 0.3782, 0.3937, 0.3727, 0.3926,\n", " 0.4055, 0.3835, 0.3851, 0.3999, 0.3823, 0.3878, 0.3869, 0.3938,\n", " 0.3825, 0.377 , 0.3889, 0.3897],\n", " [0.3509, 0.3433, 0.3614, 0.3513, 0.3511, 0.3431, 0.3493, 0.3665,\n", " 0.3386, 0.3452, 0.3416, 0.353 , 0.3578, 0.3505, 0.3542, 0.3607,\n", " 0.3529, 0.3445, 0.3439, 0.3448, 0.3558, 0.3516, 0.3412, 0.3644,\n", " 0.3479, 0.3499, 0.3423, 0.3534, 0.3445, 0.3547, 0.3686, 0.3487,\n", " 0.3738, 0.3469, 0.3629, 0.3505, 0.3495, 0.3627, 0.3639, 0.3572,\n", " 0.3518, 0.354 , 0.3536, 0.3387, 0.3523, 0.3634, 0.3589, 0.3572,\n", " 0.3472, 0.3552, 0.3496, 0.3662, 0.3623, 0.3293, 0.3604, 0.3477,\n", " 0.3361, 0.3587, 0.3428, 0.3651, 0.3527, 0.3675, 0.3312, 0.3375,\n", " 0.3539, 0.3596, 0.3502, 0.3258, 0.3471, 0.3583, 0.3467, 0.3557,\n", " 0.3687, 0.3311, 0.3516, 0.3479, 0.3628, 0.3453, 0.3739, 0.3615,\n", " 0.3606, 0.3495, 0.3397, 0.3518, 0.3481, 0.3604, 0.3438, 0.3595,\n", " 0.3697, 0.3524, 0.3536, 0.3652, 0.3512, 0.3557, 0.355 , 0.3604,\n", " 0.3515, 0.347 , 0.3565, 0.3571]])\n", "Coordinates:\n", " * beta (beta) float64 32B 0.1 0.6 1.1 1.6\n", " dalpha (beta) float64 32B -5.5 -5.0 -4.5 -4.0\n", " beta0 float64 8B 5.6\n", "Dimensions without coordinates: rep" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Make predictions\n", "boot_xem.predict(betas[:4], order=2)" ] }, { "cell_type": "code", "execution_count": 10, "id": "14", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray (beta: 4)> Size: 32B\n",
       "array([0.4527, 0.4173, 0.384 , 0.3526])\n",
       "Coordinates:\n",
       "  * beta     (beta) float64 32B 0.1 0.6 1.1 1.6\n",
       "    dalpha   (beta) float64 32B -5.5 -5.0 -4.5 -4.0\n",
       "    beta0    float64 8B 5.6
" ], "text/plain": [ " Size: 32B\n", "array([0.4527, 0.4173, 0.384 , 0.3526])\n", "Coordinates:\n", " * beta (beta) float64 32B 0.1 0.6 1.1 1.6\n", " dalpha (beta) float64 32B -5.5 -5.0 -4.5 -4.0\n", " beta0 float64 8B 5.6" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Make predictions and compute statistics over bootstrapped resamples\n", "# This should closely match the predictions without bootstrapping!\n", "boot_xem.predict(betas[:4], order=2).mean(\"rep\")" ] }, { "cell_type": "code", "execution_count": 11, "id": "15", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray (beta: 4)> Size: 32B\n",
       "array([0.0178, 0.0147, 0.0119, 0.0094])\n",
       "Coordinates:\n",
       "  * beta     (beta) float64 32B 0.1 0.6 1.1 1.6\n",
       "    dalpha   (beta) float64 32B -5.5 -5.0 -4.5 -4.0\n",
       "    beta0    float64 8B 5.6
" ], "text/plain": [ " Size: 32B\n", "array([0.0178, 0.0147, 0.0119, 0.0094])\n", "Coordinates:\n", " * beta (beta) float64 32B 0.1 0.6 1.1 1.6\n", " dalpha (beta) float64 32B -5.5 -5.0 -4.5 -4.0\n", " beta0 float64 8B 5.6" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# And standard deviations\n", "# And remember, you can do the same thing with coefficients (which includes the bootstrapped data itself)\n", "boot_xem.predict(betas[:4], order=2).std(\"rep\")" ] }, { "cell_type": "markdown", "id": "16", "metadata": {}, "source": [ "To demonstrate how easy it is to try extrapolations at different orders and compare to our analytical test system, we will loop over different numbers of samples (in sets randomly drawn from the data we generated earlier) and extrapolation orders and compare the performance of extrapolation and perturbation to the analytical result." ] }, { "cell_type": "code", "execution_count": 12, "id": "17", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True extrapolation coefficients: [ 0.1749 -0.0282 0.0076 -0.0023 0.0004 0.0003 -0.0004]\n", "\t With N_configs = 10: [ 1.7514e-01 -1.6838e-02 5.7698e-02 -9.1330e-02 -2.8572e+00 5.4054e+01\n", " -2.4043e+02]\n", "\t With N_configs = 100: [ 1.7533e-01 -2.4669e-02 5.8247e-02 1.8898e-01 -6.3072e+00 3.1714e+01\n", " 1.0259e+03]\n", "\t With N_configs = 1000: [ 1.7476e-01 -2.8602e-02 8.0187e-03 7.5768e-03 8.5724e-01 2.5574e+01\n", " -3.4636e+02]\n", "\t With N_configs = 10000: [ 1.7487e-01 -2.8687e-02 6.2837e-03 4.7795e-02 -7.1003e-01 2.6718e+00\n", " -5.6026e+01]\n", "\t With N_configs = 100000: [ 0.1748 -0.0282 0.0078 -0.0049 -0.1045 0.4246 -0.0662]\n" ] }, { "data": { "image/png": "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865vw6PVsWPHUlJSwu7du5kxYwaffvopAQEBzJ8/n/j4eB577DHD52lwcLDh+BdffJE5c+Zw4MAB+vTpQ1lZGSNHjmTdunXs2rWLG2+8kVtuucXkc/2dd96hT58+7Ny5k+nTp/Pcc8+RlJQE6LN+t912G4WFhfz+++8kJSVx9OhRxowZY/E+SktLGTduHJs2beLPP/+kW7dujBw50tBOcceOHQAsWbKErKwsw/rZ5s+fz7vvvsvcuXPZs2cPN954I7feeiuHDx82KjdjxgxeeOEFUlJS6N69O/feey91de1roveOStHYobg6mi4au7auWptoN7nx9957j0ceeYRHH30UgHnz5rFmzRoWLVrEnDlzLB73xBNPcN9996FWq03aR4C+3YS/f/vrQZhXno9abT7gUqt1lFPB0KFDGTp0KKD/YCsrKzMp2/gDvPFj20WLFgH6x7YDBw5kwoQJ3H777RfhTsT5cvdxxc7BzuKjA3cf1zaolWhJhw8fRlEUevbsaXZ/z549KSoqIi8vj06dOpGenk5sbKzVc3799dfs2LGDxYsXG213dnbGw8OD9PR0rr76aovH//jjjyaPGF966SVeffVVAN544w3WrVvH448/zv79+xk7diyjR48G9J8n9vb2ODk5mf1cnT17NjfccINh3dvbm759+xrW33jjDVauXMn333/P008/bdiekJDAtGnTAOjevTtbtmzh/fff54YbbmDdunXs2bOH48ePGwLIpUuXEh0dzY4dOxgwYIBJPa699lqj9cWLF+Pp6cnvv//OzTffjK+v/pGch4eH1b8Pc+fO5aWXXuKee+4B4O233+a3335j3rx5fPTRR4ZyL7zwAjfddBMAs2bNIjo6miNHjhAZGWnx3OLCFRaVo4vvZbEJS2FReetXqo21i6CupqaG5ORkw3/qBsOGDWPr1q0Wj1uyZAlHjx7lP//5D2+88YbZMmVlZYSGhlJfX0+/fv14/fXXiYmJsXjO6upqqqurDetarfYc7+biUKlUhobTDRRF4ccff2Tbtm2GJTU11fCtH/Tf6JOSkgwfyo23f/zxxwwYMIDY2Fjc3dtXD57LQacQXxIPzjf7iMDdx/WyawtyOWr4v9rQ3KKystLqk4QNGzYwfvx4Pv30U6Kjo032Ozo6UlFhvdf00KFDDV/6GjTO+tnb2/Of//yHPn36EBoaatS+rylnZxnLy8uZNWsWP/74I5mZmdTV1VFZWWmSqYuPjzdZb7jugQMHCA4ONsoIRkVF4eHhwYEDB8wGdbm5ufzjH//g119/JScnh/r6eioqKpp88tOYVqslMzOThIQEo+0JCQns3r3baFufPn0M7wMCAgx1kKDu4iqrqDEf0AGobfT7LzPtIqjLz8+nvr4ePz8/o+1+fn5kZ2ebPebw4cNMmzaNTZs2WWyMGxkZSWJiIr1790ar1TJ//nzDf8hu3bqZPWbOnDnMmjXrwm6oGQqrrX/wFm78DXqqICoKnMxPFqxSqejbty99+/bl8ccfB/QfRH/99Rfbtm1j+/btbNu2jaysLK644gqjY//66y+jIDoyMpIBAwYYln79+rWLx9QdXacQ31YJ3mSO2bYRERGBSqUiNTWV2267zWT/wYMH8fT0xMfHBwAfHx+KisyPX/j7779zyy238N577/Hggw+aLVNYWGjIQlni7OxMRESE1TINX6YLCwspLCzE2bl57TvPLjd16lTWrFnD3LlziYiIwNHRkTvvvJOamqb/2DYEuoqimLQxtrYd9L188/LymDdvHqGhoWg0GuLj45t1XUv1sHZdOzs7k/LS9EW0hXYR1DVozn8egPr6eu677z5mzZpF9+7dLZ5v0KBBDBo0yLCekJBA//79+eCDD1iwYIHZY6ZPn86UKVMM61qt1ugbYkspr7f+4VK+8mt48CVQqSAiAnr3hj599K+9e0N4OKhNR7h2c3Pj2muvNTx+UBSFzanbKXWsZfOJM+1G1hz4Hc8IP4qO6BsbHzx4kIMHD7J06VIAbG1t6dOnD4MGDeLDDz+0+OEp2j+ZY7bteHt7c8MNN7Bw4UKee+45o3Z12dnZfPnllzz44IOG/18xMTGkpqaanGfDhg3cfPPNvP3224YvcGc7evQoVVVVVp9ENMfRo0d57rnn+PTTT/nvf//Lgw8+yPr167Gx0WdE7O3tqa83P73d2TZt2sT48eMNTwrKyspIT083Kffnn3+arDdkuaKiosjIyODkyZOGz+LU1FRKSkosPtbetGkTCxcuZOTIkYB+SJn8/HyjMnZ2dlbvw83NjcDAQDZv3syQIUMM27du3crAgQObuHPRGlw8zCc8mru/I2oXQZ2Pjw9qtdokK5ebm2uSvQN9I9i//vqLXbt2Gdpl6HQ6FEXB1taWtWvXmrSpALCxsWHAgAEmjVwb02g0Ld69/7x07Qq+6ZCXB4cP65dvvz2z38kJoqPPBHkNAd9Z39IPFaTzU807qOuNvzXaDYHHExIoWO7P7t92kJKSQm3tmbZdDe3zampqTAK6r776yvCzDA8Pl4CvnWvOHLMS1F08H374IYMHD+bGG2/kjTfeMBrSpHPnzrz55puGsjfeeCOPPvoo9fX1qP/+0rZhwwZuuukmnn32We644w7D56S9vb3RY9NNmzYRHh5O165drdanurra5LPW1tYWHx8f6uvrGTt2LMOGDeOhhx5ixIgR9O7dm3fffZepU6cC+p6j27ZtIz09HRcXF5MOG41FRETw7bffcsstt6BSqXj11VfNZrC2bNnCv/71L2677TaSkpL43//+x08//QTA9ddfT58+fbj//vuZN28edXV1TJw4kauvvtpip5KIiAiWLl1KXFwcWq2WqVOnmnRUCQsLY/369SQkJKDRaAw9gBubOnUqr732Gl27dqVfv34sWbKElJQUk3ECRdvw9Df9nZ3L/o6oXfR+tbe3JzY21tDbqUFSUhKDBw82Ke/m5sbevXtJSUkxLBMmTKBHjx6kpKSYPGpsoCgKKSkphjYPbcnD0YN6nflgqF6nwuOpKZCbC9nZkJQE774L48dDbCw4OEBFBezYAZ99Bs89B9ddB506gb8/3HADPP88JCaSt2+HlQ4ZCuMmjmf79u2Ulpayfft2PvzwQ8aNG0dUVBQqlcrsN9JZs2Zx7733EhERgY+PD8OHD+fVV1/lhx9+sPi4XIjLVbdu3fjrr7/o2rUrY8aMoWvXrjz++OMMHTqUP/74wygoGjlyJHZ2dkbDfiQmJlJRUcGcOXMICAgwLGd3fFq2bBmPPfZYk/X55ZdfjM4TEBBgGNvuzTffJD09nU8++QTQ99D997//zSuvvEJKSgqg7xSgVquJiorC19fXaju1999/H09PTwYPHswtt9zCjTfeSP/+/U3KPf/88yQnJxMTE8Prr7/Ou+++y4033gicGSTY09OTIUOGcP311xMeHs6KFSssXvezzz6jqKiImJgYxo4dy6RJk+jUqZNRmXfffZekpCSCg4MtZjcnTZrE888/z/PPP0/v3r355Zdf+P777y023xGiramUxq3q29CKFSsYO3YsH3/8MfHx8XzyySd8+umn7N+/n9DQUKZPn87p06f54osvzB4/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(len(orders) + 1, sharex=True, sharey=True)\n", "\n", "nsampvals = np.array((10.0 * np.ones(5)) ** np.arange(1, 6), dtype=int)\n", "nsampcolors = plt.cm.viridis(np.arange(0.0, 1.0, float(1.0 / len(nsampvals))))\n", "\n", "# First plot the analytical result\n", "for a in ax:\n", " a.plot(betas, idealgas.x_ave(betas, vol), \"k--\", linewidth=2.0)\n", "\n", "# Next look at extrapolation with an infinite number of samples\n", "# This is possible in the ideal gas model in both temperature and volume\n", "for j, o in enumerate(orders):\n", " trueExtrap, trueDerivs = idealgas.x_beta_extrap(o, beta_ref, betas, vol)\n", " ax[j + 1].plot(betas, trueExtrap, \"r-\", zorder=0)\n", " if j == len(orders) - 1:\n", " print(f\"True extrapolation coefficients: {trueDerivs}\")\n", "\n", "for i, n in enumerate(nsampvals):\n", " thisinds = rng.choice(len(xdata), size=n, replace=False)\n", "\n", " # Get parameters for extrapolation model with this data by training it - the parameters are the derivatives\n", " xem = xtrap.beta.factory_extrapmodel(\n", " beta=beta_ref,\n", " data=xtrap.DataCentralMomentsVals.from_vals(\n", " uv=udata[thisinds], xv=xdata[thisinds], central=True, order=order\n", " ),\n", " )\n", " out = xem.predict(betas, cumsum=True)\n", "\n", " print(\n", " f\"\\t With N_configs = {n:6}: {xem.derivs(norm=False).values}\"\n", " ) # Have to flatten because observable is 1-D\n", " for j, o in enumerate(orders):\n", " out.sel(order=o).plot(\n", " ax=ax[j + 1],\n", " marker=\"s\",\n", " ls=\"None\",\n", " markersize=4,\n", " color=nsampcolors[i],\n", " label=f\"N={n}\",\n", " )\n", "\n", " # And do the same thing for perturbation, but here the parameters are just the data\n", " xpm = xtrap.beta.factory_perturbmodel(beta_ref, udata[thisinds], xdata[thisinds])\n", " xpm.predict(betas).plot(ax=ax[0], marker=\"s\", ls=\"None\", ms=4, color=nsampcolors[i])\n", "\n", "\n", "ax[2].set_ylabel(r\"$\\langle x \\rangle$\")\n", "ax[-1].set_xlabel(r\"$\\beta$\")\n", "\n", "ax[0].annotate(\"Perturbation\", xy=(0.5, 0.7), xycoords=\"axes fraction\")\n", "for j, o in enumerate(orders):\n", " ax[j + 1].annotate(\n", " \"O(%i) Extrapolation\" % (o), xy=(0.5, 0.7), xycoords=\"axes fraction\"\n", " )\n", "\n", "ax[-1].set_ylim((0.0, 0.6))\n", "ax[-1].yaxis.set_major_locator(mpl.ticker.MaxNLocator(nbins=4, prune=\"both\"))\n", "\n", "fig.tight_layout()\n", "fig.subplots_adjust(hspace=0.0)\n", "\n", "for a in ax:\n", " a.set_title(\"\")\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "18", "metadata": {}, "source": [ "In each of the figures, the true behavior is shown as a black dashed line, the analytical result (infinite sampling) for each order of extrapolation is shown as a red solid line and the results with 10, 100, 1000, ... 100000 randomly sampled configurations are shown with purple (fewer samples) to green (more samples) circles. Perturbation works close to the reference temperature, but saturates far away. With more samples, it works further out, but the increases in accuracy are marginal. First order extrapolation quickly converges to the infinite sampling limit while second order takes more sampling to do so. The actual coefficients at each order of extrapolation are printed below. Since perturbation essentially refuses to provide an estimate past a certain distance in $\\beta$, it is not reliable some distance out. Both first and second order extrapolation essentially get lucky here and remain highly accurate over very large temperature ranges. For higher order extrapolation, the analytical, infinite sampling result matches very closely with the true temperature dependence of $\\langle x \\rangle$. However, the finite-sampling results are in practice very poor due to difficulties in accurately estimating the higher-order moments of the potential energy distribution. The higher orders are actually quite accurate (if you try zooming in) close to the point we're extrapolating from, but the error grows very quickly as we move further away." ] } ], "metadata": { "celltoolbar": "Tags", "hide_input": false, "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.11.8" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 5 }