{ "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 dependent negative logarithm of average observable\n", "\n", "Comparing to Cases 1-3, it should be clear that this is possible and only slightly more annoying to implement. This will come up any time you have computed a free energy change, such as solvation, via exponential averaging at one temperature and want to extrapolate it to another temperature. Note that free energy differences calculated by any method at a given temperature may also be extrapolated using differences in moments of the potential energies between the beginning and end states along the thermodynamic path. This may be more efficient, but has not been investigated.\n", "\n", "As in Case 2, we will need to augment the data with information about the explicit derivatives of the observable with respect to the extrapolation variable." ] }, { "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", "import xarray as xr\n", "\n", "# Import idealgas module\n", "from thermoextrap import idealgas\n", "\n", "rng = cmomy.random.default_rng(seed=0)\n", "\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": "code", "execution_count": 3, "id": "3", "metadata": {}, "outputs": [], "source": [ "import thermoextrap as xtrap" ] }, { "cell_type": "code", "execution_count": 4, "id": "4", "metadata": {}, "outputs": [], "source": [ "# You can use numpy and just wrap with xarray after...\n", "xdataDepend = np.array([xdata * beta_ref, xdata])\n", "xdataDepend = np.vstack((xdataDepend, np.zeros((orders[-1] - 1, xdata.shape[0]))))\n", "xdata = xr.DataArray(xdata, dims=[\"rec\"])\n", "udata = xr.DataArray(udata, dims=[\"rec\"])\n", "# Note the naming of dimensions here and see \"Data_Organization\" for a full explanation\n", "xdataDepend = xr.DataArray(\n", " xdataDepend,\n", " dims=[\"deriv\", \"rec\"],\n", " coords={\"deriv\": np.arange(xdataDepend.shape[0])},\n", ")\n", "\n", "# # Or you can accomplish this with xarray if you really want to...\n", "# xdata = xr.DataArray(xdata, dims=['rec'])\n", "# udata = xr.DataArray(udata, dims=['rec'])\n", "# xdataDepend = (\n", "# xr.concat([xdata*beta_ref, xdata], dim='deriv')\n", "# .assign_coords(deriv=lambda x: np.arange(x.sizes['deriv']))\n", "# .reindex(deriv=np.arange(orders[-1] + 1))\n", "# .fillna(0.0)\n", "# )" ] }, { "cell_type": "code", "execution_count": 5, "id": "5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model parameters (derivatives):\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Size: 56B\n", "array([ 0.0211, -0.017 , 0.0133, 0.0036, 0.6181, -1.947 , -1.9038])\n", "Dimensions without coordinates: order\n", "\n", "\n", "Model predictions:\n", " Size: 32B\n", "array([0.3158, 0.2724, 0.2323, 0.1955])\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", "\n", "\n" ] } ], "source": [ "# Create and train extrapolation model\n", "xem_log_dep = xtrap.beta.factory_extrapmodel(\n", " beta=beta_ref,\n", " post_func=\"minus_log\",\n", " data=xtrap.DataCentralMomentsVals.from_vals(\n", " order=orders[-1], xv=xdataDepend, uv=udata, central=True, deriv_dim=\"deriv\"\n", " ),\n", ")\n", "\n", "# Note that we handled the -log calculation in the definition of the derivatives (even at zeroth order).\n", "# This means we want to just pass data, not the -log of the data.\n", "\n", "# Check the parameters\n", "print(\"Model parameters (derivatives):\")\n", "print(xem_log_dep.derivs(norm=False))\n", "print(\"\\n\")\n", "\n", "# Finally, look at predictions\n", "print(\"Model predictions:\")\n", "print(xem_log_dep.predict(betas[:4], order=2))\n", "print(\"\\n\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "6", "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 (beta: 4)> Size: 32B\n",
       "array([0.1018, 0.0841, 0.0682, 0.0539])\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.1018, 0.0841, 0.0682, 0.0539])\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": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xem_log_dep.resample(nrep=100).predict(betas[:4], order=2).std(\"rep\")" ] }, { "cell_type": "code", "execution_count": 7, "id": "7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True extrapolation coefficients: [ 0.021 -0.0175 0.0142 -0.011 0.0082 -0.0059 0.0043]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\t With N_configs = 10: [ 2.4086e-02 -6.4927e-02 1.6624e-01 -8.8811e-01 -1.8006e+01 -1.0596e+02\n", " 3.2007e+03]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\t With N_configs = 100: [ 1.9524e-02 -4.3979e-02 -1.6634e-01 1.2069e+00 -1.0749e+01 -6.0859e+01\n", " 3.2539e+03]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\t With N_configs = 1000: [ 1.9865e-02 -1.9745e-02 -3.7699e-02 -1.8528e-01 8.4338e-01 4.6758e+01\n", " 5.6450e+01]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\t With N_configs = 10000: [ 2.0856e-02 -1.7558e-02 -2.1172e-02 -2.2158e-01 4.1785e+00 -2.3450e+01\n", " 2.2659e+01]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\t With N_configs = 100000: [ 0.0211 -0.017 0.0133 0.0036 0.6181 -1.947 -1.9038]\n" ] }, { "data": { "image/png": "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x320CiFuAB7XUnclRVEoLi52uK1Tp05s3LjRZt33339PQkIC3t7e7qhehYWGhvLVV18RFBQEwIoVK3jnnXequVZCVF1MYAitw+raLVdL6BRF4ZlnnuGll15izJgxBAUFERoayosvvsjgwYN5/vnnrWXXrl3LnXfeaXeMWbNm0bx5c/72t7/ZbWvYsCHh4eFs3bq1Sq/r+eefp3v37pjNZgC++OILoqOjycjI4NZbbwXgjjvuICgoiDfffNPa8rdw4UKaNGlCvXr1AHjhhRdo0KABwcHBtGzZks8//9waY8uWLeh0OmbNmkXdunWJjo5m6tSplL1r47Jly2jRogU6nY4uXbqwd+9eh/XNy8ujX79+REZGEhISQrdu3di/fz8Aa9as4c033+Sbb76xtkgCjB492qZlMikpic6dO6PT6WjZsiUrVqywbps2bRp9+/blySefRKfTERcXx2effVal91YIcZ0pLnDhwgXFaDRe83EmT56sbNu2TUlOTlZ+//13ZcqUKYparVa+//57RVEU5aWXXlJGjBhhLf/XX38pAQEByrPPPqscOnRIWbBggeLt7a188cUXFY6Zm5urAEpubu41178ivvzySwVQAEWtVivffvutW+IK4SmOHDmiAMqJEyfstm3atEnRaDRKQUGBoiiKEhERofzwww82ZU6ePKk0bNhQyczMVKZOnar069fP7jj333+/8uabbzqMn5ycrABKdna2w+0Gg0Hp2LGj8uqrryopKSlKWFiYzf8poOzdu9fueP3791eys7OV/Px8RVEUZdmyZcq5c+cUo9GorFixQvH19VX++usvRVEUZfPmzYparVZGjx6t5OfnK4cPH1ZiY2OVRYsWKYqiKNu2bVOCgoKUrVu3KgaDQZkxY4YSERGh5OTkKIqiKN27d1dmzJihKIrlM2zlypVKXl6eUlhYqDz99NNKs2bNFLPZrCiK4vA9GjVqlPLMM88oiqIo2dnZSnh4uPLBBx8oBoNB2bJlixIYGKhs377dur+3t7eyfPlyxWg0KosXL1aCgoIUvV7v8P0TQlyba8lLqtxSd/z4cd599126detGZGQkERERDB8+nM8//5y8vLwqHfPcuXOMGDGC5s2bc9ddd/HLL7/w7bffcs899wBw9uxZUlNTreUbNWrE+vXr2bJlC+3ateO1117jgw8+8LjpTMoaMGAAr7zyCmC5hDRkyBCOHz9ezbUSwn1KBzHExMTYbYuJicFkMnHhwgUAsrOz7W5oPX78eKZNm2Z3SbYsrVZLdnZ2ufVo0KABOp3OuixcuBAAb29vVqxYwYwZM+jTpw+PPvqotU9seaZOnYpOp7Ne8h02bBiRkZFoNBqGDBlCfHw8O3bssJY3m8289dZbBAQEEB8fz5NPPsnSpUsBWLJkCcOHD6dbt254e3szceJEQkNDWbduncPXOnjwYAIDA/Hz8+PVV1/l2LFjnDlz5qp1Bli3bh0RERE89dRTeHt70717dx5++GEWL15sLdOhQweGDh2KRqNhxIgRGAwGjh07VqHjCyHcp1IdP06dOsXcuXP56quvSE1N5e677+bRRx9l9erVpKWlsXbtWqZPn87IkSPp0aMHDzzwAE888USFj79gwYJyty9atMhuXffu3e06V3u6qVOnsn//fr766itycnL497//zcqVK6u7WkK4RWkydubMGRo3bmyz7cyZM2g0GsLCwgBLt4Wy0w4tX76coqIiRo0aVW4MvV5P69atyy1z8uRJp33qmjZtSo8ePfjmm2/48ccfr/aSAIiLi7N5PmPGDD7++GPS0tJQqVTk5eXZjMr18/MjMjLS+rxBgwacPn0asPT369Gjh83xGjVqRFpaml3cwsJCnnvuOdavX8+FCxdQqy3n6llZWdZLweVJS0ujYcOGNusaN27Mtm3brM+jo6Otj1UqFf7+/ly8ePGqxxYVI/dRFq5SqaRuz549pKenk5iYSM+ePfHz87NuCw8Pp23btrz88sukpaWxevVqVq9eXamk7kahVqtZsmQJt99+O61bt75qMitEbdKsWTMaNGjAihUr+Ne//mWzbcWKFXTu3Bl/f38A2rVrx5EjR6z96r7//nt2795tTTLy8vIwGo3ExsbaJDyHDh1iwoQJVa7jqlWr2LVrF/fddx8TJkywuUuNs8FNpckUwPbt25k2bRo//vgj7du3R61W065dO5s+c0VFRWRkZFgTu9TUVGsSFhsbS0pKis3xU1JSiI2NtYv77rvvsnv3brZv305sbCw5OTmEhoZaY5WtlyOOYiUnJzuMJVxP7qMsXKlSl1/79evHJ598wgMPPOB0cl+wfEg89dRTfP/999dcwdpKq9Wybds2PvvsMwIDA6u7OkK4jUqlYsaMGSQmJrJgwQLy8vLIycnhrbfeYuXKlfz3v/+1lu3bty+bN2+2Pn///fc5evQo+/btY9++fYwfP56//e1v7N6921rm5MmTZGVl0a1btyrVLzU1lXHjxrF48WKWLFnCvn37mD9/vnV7VFQUJ06cKPcYer0eLy8vIiIiMJvNfPLJJ/zxxx82ZdRqNZMnT6awsJCjR4/y4YcfMmzYMACGDx/Op59+ys8//4zRaGTWrFmcP3+ePn36OIzl5+dHaGgoeXl5TJkyxWZ7VFQUJ0+exGRyfK/ePn36kJGRwZw5czAajfz0008sX76ckSNHVuj9EtdG7qMsXKnKfeq6du1qN52IqJw6deo4nWdPiNpswIABrFq1ioULFxIdHU1cXBw//vgjmzdv5rbbbrOWGzFiBFu3buX8+fMAhISEEB0dbV1KJyovOwn5kiVLGD169FVPlmJjY23mqRs0aBAmk4lhw4bxyCOP0LNnT7RaLStWrOCFF17g8OHDALz22ms8/fTThIaGMn36dIfHvvfeexk4cCBt2rQhJiaGgwcP0rlzZ5sywcHBtGvXjsaNG9OtWzdGjhxpvazcvXt3Zs2axZgxYwgPD2flypVs2LDB4eXiSZMmodFoiIqKonXr1nbTvAwaNAitVkudOnUc7h8aGsqGDRtYtmwZ4eHhjBs3jrlz59KlS5dy3z8hhOdRKVXMIh577DE2btzId999R3x8vHX93r17+de//sX69etdVsnrSa/XExISQm5url2HbHdLSUlh5MiRfPTRR7Ro0aJa6yKEp0hMTLS25F3NxYsXad++PTt37iQiIsINtauaLVu20L9/f3Jycqq7KqKa/XHhLP02fuJ0+1f3PErrsLpurJGobteSl1R5hsyPP/6YV199lS5durBmzRoiIyP597//zapVq3jggQeqetgb1r59+7j77rs5f/48/fr149dff70uE6OK6pNjyCTfaH+v4UAvLTofz01AqtvkyZMrXDY4OFhGkwshbljXNO351KlT8fHx4Z577sFkMtGrVy9+++03OnTo4Kr63TCaNm1KvXr1OH/+PH/++ScPP/wwX3/9NRqN41sxiZolx5DJjKNPYlTs+6J6qbx5tvlsSeyEELWCnMBWnyondWfPniUxMZGPP/6Yli1bcuTIEYYMGSIJXRUFBgayZs0abrnlFs6fP8+GDRt4+eWXefPNN6u7asIF8o16hwkdgFEpId+olw+7G0iPHj3k0qsALt9H2dno14rcR9mTyAls9apyUte4cWPi4+P5/PPPue+++/juu+946KGHSEtL48UXX3RlHW8YjRo14rPPPqNXr16YTCYSExNp164dDz30UHVXTQghxHVwrfdR9jRyAlu9qpzULVy4kCFDhlif9+rVi82bN3P//fdz8uRJ5syZ45IK3mjuuusu3nnnHZ599lkAHnnkEZo3b07btm2ruWZCCCGuh5jAkBqXvAnPVOUpTcomdKU6dOjAjh072LJly7XU6Yb3zDPPWKc2KCgooH///jYz0QshhBBCXKnKSZ0zDRs25Oeff3b1YW8oKpWKefPmccsttwCWqU4GDx6M0Wis5poJIYQQwlNVKqlbt24dcXFxhIWFceedd1rnops6dSq9evXi9ddf59y5c4SGhl6Xyt5I/Pz8+PLLL62Tqnbq1Omqt/sRnivQS4uXytvhNi+VN4Ferpsj8UyOnkOnz9ktZ3LsR6MJIYSoPSo1+XCLFi3o3bs3ffr0YcOGDXz44Yfcf//9fPfdd4wYMYL9+/eTkpLC5s2badas2fWst8t40uTDjvz888+cPXuWBx98sLqrIq6RO4b5n8nRc9+7izAY7UfS+XhpWPfcaGJ0nvd3LoSoHXIMmbx35ElM2A+W0ODNpHgZ/Xo1bpt8ODU1laeffpqGDRty9913Ex8fz/jx45k5cyZPPfUUABMnTuRf//oXn3/+eaUqIhy78tZCoubS+URc9w+znPxChwkdgMFoIie/UJI6IcR1U1Dgy8ZvOqLyKrbbphh9GR/ni86nGip2g6jU9byGDRvyyy+/WJ8PHz4cRVFs7jU4YcIEtm/f7roaCju7du3i3Llz1V0NIYQQwkZOfiH6i97kZgfZLfqL3uTkF1Z3FWu1SiV1L7zwAo899hivvvoqv/32G2q1mh07dtjcp7SgoID8/HyXV1RYfPzxx3Tr1o0HH3wQg8FQ3dURQgghhIeo1OXXUaNGodVqee+993jttddQq9XEx8fTvn172rdvT3x8PK+//rpNy51wHb1ez7Rp0ygpKWH79u1MnDhR5gMUQgghBFCFKU0GDBjATz/9RE5ODps3b+bxxx/Hx8eHTz/9lL///e/s2LGDgwcPMnDgQF599VVWr15d4WNv27aNvn37EhMTg0qlYs2aNeWW37JlCyqVym45cuRIZV9WjaDValm9ejW+vr4AzJ07l//7v/+r5loJIYQQwhNU+Y4SQUFBdO7c2aYjv8lk4siRI+zbt499+/axfft25syZw4ABAyp0zPz8fNq2bcsjjzzCwIEDK1yXo0eP2owQiYiovSNrbrnlFubPn2+dnPgf//gHrVq14o477qjmmglPoAv0x8dL43T0qy7QvxpqJYQQwh0qldRlZGTg7+9PcHCww+0ajYZWrVrRqlUrhg0bxrFjxyo1tUnv3r3p3bt3ZaoEQGRkJDqdrtL71VQjR45k7969zJw5k5KSEgYOHEhSUhL16tWr7qqJahaj07LuudEOOyPrAv1l5KsQ4rqSE8vqVamkbuvWrYwYMYIePXrQr18/+vXrR0xMjE2ZX375ha+++orVq1dz6tQp8vLyXFphR9q3b09RUREtW7bk3//+N3/729+cli0uLqa4+PJQa72+Zk7I+vbbb/P777/z448/kp6ezt///ne2bt2Kn59fdVdNVLMYnVaSNyFEtZATy+pVqT51gwYN4s8//+T+++9n1apVNGrUiFtvvZXXXnuN8ePHExMTwwMPPEB6ejrTp08nMzPzetUbgLp16zJ//nxWrVrFl19+SfPmzbnrrrvYtm2b030SExMJCQmxLvXr17+udbxevLy8+Oyzz2jYsCEAv/76K0888QSVmEtaCCGEcLkYnZaW9aLsFknorr9K3VHiSrm5uXz99desW7eOmJgY+vfvT+fOnV1yOyuVSsXq1avp379/pfbr27cvKpWKtWvXOtzuqKWufv36HntHiavZv38/d9xxBwUFBfj6+rJv3z7i4+Oru1pCCCGEqAK33VHiSiEhIQwfPpzhw4dfy2Fc6vbbb2fZsmVOt/v6+lpHj9YGbdu2ZeHChTz//PN8+eWXktAJIYQQN6had4f4vXv3Urdu3equhls99NBDHDlyhISEBJv1q1evJiMjo5pqJYQQQgh3uqaWuh9++IEffviBjIwMzGazzbZPPvmk0sfLy8vj+PHj1ufJycns27ePsLAw4uLimDx5MqdPn2bJkiUAzJw5k4YNG9KqVSsMBgPLli1j1apVrFq16lpeVo0UEBBg8zw9PZ1BgwahUqno06cPo0eP5r777sPHR266V9vlGDLJN9oPAAr00sqNtIUQoharclL36quv8p///IeEhATq1q2LSqW65sokJSXZjFydNGkSYLmTxaJFizh79iyp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nO83OdljfcqUKfzzn//k0KFDGAwGioqK3IEWICQkhNjYWPd68+bNycnJAVw9+X369PF4vZSUFA4dOuTVbmlpKX/84x/59NNPOXHiBEaj63f1vLw89y+QZ3Po0CFatGjhsS01NZXMzEz3enx8vPt7g8FAaGioX3rqROTsAqqnrr7o0qWL+8EPo9Go/xylXrnmmmto3ry5x31bld5//31uuukmQkNDAUhLSyPvwCG+GPwwi28dzex7xgHwj56/YfGto/li8MNEW7wfhtixYwdpaWkXXeOCBQv49ttvGTJkCGPHjvXYV9OT9ZVhCly98M899xxz5szh5MmT5Ofn0759e4975k6fPs2xY8fc69nZ2e4QlpSUxP79+z1ef//+/SQlJVHda6+9xsaNG1m1ahUFBQXu8yrbqlqXL77a2rdvn8+2RCSwKdT5yciRI/nLX/7Cp59+Snp6ur/LEbliDAYDU6ZMISMjg1mzZlFUVER+fj4vv/wy8+fP97iUOnToUFasWEFieBTtGyUwsENX+vXrx/z/N4PUkCg4VczUqVO57bbb3OccOHCAvLw8evXqdVH1ZWdn89BDD/HOO+8wZ84csrKymDlzpnt/XFwce/fuPetrFBQUYDabiYmJweFw8K9//Ytt27Z5HGM0Gpk0aRKlpaXs2rWLN998033/8L333st7773H6tWrsdlsTJ06lePHjzN48GCfbYWEhNCwYUOv+/wq6z1w4AB2u91nrYMHD+bYsWNMnz4dm83GN998w7x58zzuXxaRq4NCnR89//zz53Wvjkhdc/vtt7NgwQLefvtt4uPjSU5O5quvvmLFihV07drVfdx9993HypUrOX78uHvbe++9x6lTp4iLi6NLly4MGDCAJ5980r1/zpw5jBo1ivDwcM4mKSnJY5y64cOHY7fbueeee3jggQfo378/kZGRvP/++zz55JPu6Qj/53/+h3HjxtGwYUMmT57s87UHDhzIHXfcwXXXXUdiYiLbt293PyRVKSIigrS0NFJTU+nVqxf3338/I0eOBFy3lUydOpXf/e53NG7cmPnz57N06VKfl4vT09MxmUzExcXRvn17rxl4hg8fTmRkJE2aNPF5fsOGDVm6dClz586lcePGPPTQQ8yYMYMePXqc9c/PH6KaRBAU4ntkg6CQIKKaRPjcJ1JfBPzcr5dboM39unXrVtq3b1/j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dAHgpptu8hoK6Mcff6R58+Z+qkiqKykpwWj0/PFuMpk0pEmASklJIT4+3iM/lJWVsXLlygvOD+qpq0Xp6encd999dO7cmW7dujFz5kyys7MZM2aMv0sTXDffz5s3j8WLFxMREeHuVY2KiiI0NNTP1QlARESE1z2O4eHhNG7cWPc+BogJEybQvXt3XnrpJX7zm9+wbt06Zs6cycyZM/1dmlQYOnQoL774IsnJybRr147Nmzfz+uuvM3r0aH+XVm8VFRWxZ88e9/q+ffvIysqiUaNGJCcnM378eF566SVatWpFq1ateOmllwgLC+Puu+++sIacUqvefPNNZ/PmzZ3BwcHOjh07OleuXOnvkqQC4HN5++23/V2anEXv3r2djz/+uL/LkCo+/vhjZ/v27Z0Wi8XZpk0b58yZM/1dklRRUFDgfPzxx53JycnOkJAQZ2pqqvPPf/6z02q1+ru0emvFihU+f/6MHDnS6XQ6nQ6Hw/nss8864+PjnRaLxdmrVy/n1q1bL7gdjVMnIiIiUgfonjoRERGROkChTkRERKQOUKgTERERqQMU6kRERETqAIU6ERERkTpAoU5ERESkDlCoExEREakDFOpERERE6gCFOhEREZE6QKFOREREpA5QqBMRqQXvvPMObdu2JSwsjDZt2vCf//zH3yWJSD2jUCcicokWLlzII488wjPPPMO2bdsYNGgQY8aM8XdZIlLPGJxOp9PfRYiIXM169OjBzTffzPPPPw/A8uXLGT58OPn5+f4tTETqFfXUiYhcgsLCQtauXcuQIUPc2z777DPS0tL8V5SI1EtmfxcgInI127JlCwaDgeuvv56SkhLee+89pk6dyoIFC/xdmojUMwp1IiKXICsrizZt2pCVlUX37t0BuP322z167kRErgRdfhURuQRZWVl06NCB9u3b89133/HGG2+wbNkynn32WX+XJiL1jHrqREQuQVZWFnfffTcRERHceOON3HjjjezcuZNvv/3W36WJSD2jnjoRkYtks9nYvn07bdq08di+ZcsWevbs6aeqRKS+Uk+diMhF2rlzJ6dPn+aFF14gISGBsLAwZsyYwb59+3jwwQf9XZ6I1DMKdSIiFykrK4uEhATCw8Pp2bMn4eHh9OjRgxUrVpCQkODv8kSknlGoExG5SFlZWXTt2pWFCxf6uxQREd1TJyJysbKysrj++uv9XYaICKBQJyJy0bZs2aJQJyIBQ3O/ioiIiNQB6qkTERERqQMU6kRERETqAIU6ERERkTpAoU5ERESkDlCoExEREakDFOpERERE6gCFOhEREZE6QKFOREREpA5QqBMRERGpAxTqREREROqA/w95DIAKv6tSPwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Repeat comparison of results, but for -ln, the most complicated case\n", "\n", "fig, ax = plt.subplots(len(orders), 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, -np.log(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_depend_minuslog(\n", " o, beta_ref, betas, vol\n", " )\n", " ax[j].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_log_dep = xtrap.beta.factory_extrapmodel(\n", " beta=beta_ref,\n", " post_func=\"minus_log\",\n", " data=xtrap.DataCentralMomentsVals.from_vals(\n", " order=orders[-1],\n", " uv=udata[thisinds],\n", " xv=xdataDepend.sel(rec=thisinds),\n", " deriv_dim=\"deriv\",\n", " central=True,\n", " ),\n", " )\n", " out = xem_log_dep.predict(betas, cumsum=True)\n", " print(\n", " \"\\t With N_configs = %6i: %s\"\n", " % (n, str(xem_log_dep.derivs(norm=False).values.flatten()))\n", " ) # Have to flatten because observable is 1-D\n", " for j, o in enumerate(orders):\n", " out.sel(order=o).plot(\n", " marker=\"s\",\n", " ms=4,\n", " color=nsampcolors[i],\n", " ls=\"None\",\n", " label=f\"N={n}\",\n", " ax=ax[j],\n", " )\n", "\n", "ax[2].set_ylabel(r\"$-\\mathrm{ln} \\langle \\beta x \\rangle$\")\n", "ax[-1].set_xlabel(r\"$\\beta$\")\n", "\n", "for j, o in enumerate(orders):\n", " ax[j].annotate(\n", " \"O(%i) Extrapolation\" % (o), xy=(0.4, 0.7), xycoords=\"axes fraction\", fontsize=9\n", " )\n", "\n", "ax[0].set_ylim((-1.0, 4.0))\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(None)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "8", "metadata": {}, "outputs": [], "source": [] } ], "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": false } }, "nbformat": 4, "nbformat_minor": 5 }