diff --git a/docs/guides/qiskit-addons-sqd-get-started.ipynb b/docs/guides/qiskit-addons-sqd-get-started.ipynb index 9b3e3f14209..29a8280b4b0 100644 --- a/docs/guides/qiskit-addons-sqd-get-started.ipynb +++ b/docs/guides/qiskit-addons-sqd-get-started.ipynb @@ -2,7 +2,6 @@ "cells": [ { "cell_type": "markdown", - "id": "b8f25160-5130-4913-9330-648444d5c77f", "metadata": {}, "source": [ "# Getting started with Sample-based quantum diagonalization (SQD)\n", @@ -18,7 +17,6 @@ }, { "cell_type": "markdown", - "id": "db4db859-4190-42a5-b512-1128eeaf82db", "metadata": {}, "source": [ "\n", @@ -1649,7 +1647,6 @@ }, { "cell_type": "markdown", - "id": "bf007314-cc6b-4dcf-8678-5fd73df44b34", "metadata": {}, "source": [ "## Prepare molecule information\n", @@ -1660,7 +1657,6 @@ { "cell_type": "code", "execution_count": 1, - "id": "94d3f09d-324c-4eb3-a82a-3c88b9a11752", "metadata": { "tags": [ "remove-cell" @@ -1678,7 +1674,6 @@ { "cell_type": "code", "execution_count": 2, - "id": "a41617e6-bc0b-48a9-9fe6-de7cfd84f9f6", "metadata": {}, "outputs": [ { @@ -1715,7 +1710,6 @@ }, { "cell_type": "markdown", - "id": "0f6239eb-d7f5-40ff-9e7a-262cf4fbe613", "metadata": {}, "source": [ "## Obtain samples from an ansatz\n", @@ -1732,7 +1726,6 @@ { "cell_type": "code", "execution_count": 3, - "id": "004ea9de-413c-41d5-9208-a6981166f252", "metadata": {}, "outputs": [], "source": [ @@ -1752,17 +1745,12 @@ "rng = np.random.default_rng(24)\n", "counts = generate_counts_uniform(10_000, num_orbitals * 2, rand_seed=rng)\n", "\n", - "# rand_seed = 42\n", - "# counts = generate_counts_uniform(\n", - "# 10_000, num_orbitals * 2, rand_seed=rand_seed\n", - "# )\n", "# Convert counts into bitstring and probability arrays\n", "bitstring_matrix_full, probs_array_full = counts_to_arrays(counts)" ] }, { "cell_type": "markdown", - "id": "c36a8888-42fa-4c60-9290-45d35f585c4e", "metadata": {}, "source": [ "## Run configuration recovery loop\n", @@ -1780,7 +1768,6 @@ { "cell_type": "code", "execution_count": 4, - "id": "d10aeaee-c20f-421c-94d1-a1e829dcaab5", "metadata": {}, "outputs": [], "source": [ @@ -1788,14 +1775,13 @@ "ITERATIONS = 5\n", "\n", "# Eigenstate solver options\n", - "NUM_BATCHES = 10\n", - "SAMPLES_PER_BATCH = 300\n", + "NUM_BATCHES = 1\n", + "SAMPLES_PER_BATCH = 500\n", "MAX_DAVIDSON_CYCLES = 200" ] }, { "cell_type": "markdown", - "id": "d977f0e1-0e21-45d0-8971-92e1773f418b", "metadata": {}, "source": [ "Next, in order to plot the convergence, define arrays to store the approximation of the ground state energy, expectation value of the $\\langle S \\rangle ^2$, and the orbital occupancy of the molecule." @@ -1804,22 +1790,18 @@ { "cell_type": "code", "execution_count": 5, - "id": "a02aaca2-bca2-4531-b49a-3718a37de948", "metadata": {}, "outputs": [], "source": [ "# Self-consistent configuration recovery loop\n", "energy_hist = np.zeros((ITERATIONS, NUM_BATCHES)) # energy history\n", "spin_sq_hist = np.zeros((ITERATIONS, NUM_BATCHES)) # spin history\n", - "occupancy_hist = np.zeros((ITERATIONS, 2 * num_orbitals))\n", - "occupancies_bitwise = (\n", - " None # Orbital i corresponds to column i in bitstring matrix\n", - ")" + "occupancy_hist = []\n", + "avg_occupancy = None" ] }, { "cell_type": "markdown", - "id": "05823f66-cf57-43e0-bd9a-a77c6b6f8786", "metadata": {}, "source": [ "Now, run the configuration recovery loop. Each loop consists of three steps:\n", @@ -1834,35 +1816,22 @@ { "cell_type": "code", "execution_count": 6, - "id": "a6d492b5-d86b-43cd-9171-4add0903fe84", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Starting configuration recovery iteration 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Starting configuration recovery iteration 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Starting configuration recovery iteration 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Starting configuration recovery iteration 3\n" + "Starting configuration recovery iteration 0\n", + "Batch 0 subspace dimension: 6400\n", + "Starting configuration recovery iteration 1\n", + "Batch 0 subspace dimension: 555025\n", + "Starting configuration recovery iteration 2\n", + "Batch 0 subspace dimension: 552049\n", + "Starting configuration recovery iteration 3\n", + "Batch 0 subspace dimension: 562500\n", + "Starting configuration recovery iteration 4\n", + "Batch 0 subspace dimension: 586756\n" ] }, { @@ -1876,13 +1845,13 @@ "source": [ "from qiskit_addon_sqd.configuration_recovery import recover_configurations\n", "from qiskit_addon_sqd.subsampling import postselect_and_subsample\n", - "from qiskit_addon_sqd.fermion import flip_orbital_occupancies, solve_fermion\n", + "from qiskit_addon_sqd.fermion import bitstring_matrix_to_ci_strs, solve_fermion\n", "\n", "for i in range(ITERATIONS):\n", " print(f\"Starting configuration recovery iteration {i}\")\n", " # On the first iteration, we have no orbital occupancy information from the\n", " # solver, so we just post-select from the full bitstring set based on Hamming weight.\n", - " if occupancies_bitwise is None:\n", + " if avg_occupancy is None:\n", " bitstring_matrix_tmp = bitstring_matrix_full\n", " probs_array_tmp = probs_array_full\n", "\n", @@ -1891,7 +1860,7 @@ " bitstring_matrix_tmp, probs_array_tmp = recover_configurations(\n", " bitstring_matrix_full,\n", " probs_array_full,\n", - " occupancies_bitwise,\n", + " avg_occupancy,\n", " num_alpha,\n", " num_beta,\n", " rand_seed=rng,\n", @@ -1911,9 +1880,11 @@ " # Run eigenstate solvers in a loop. This loop should be parallelized for larger problems.\n", " e_tmp = np.zeros(NUM_BATCHES)\n", " s_tmp = np.zeros(NUM_BATCHES)\n", - " occs_tmp = np.zeros((NUM_BATCHES, 2 * num_orbitals))\n", + " occs_tmp = []\n", " coeffs = []\n", " for j in range(NUM_BATCHES):\n", + " ci_strs = bitstring_matrix_to_ci_strs(batches[j])\n", + " print(f\"Batch {j} subspace dimension: {len(ci_strs[0]) * len(ci_strs[1])}\")\n", " energy_sci, coeffs_sci, avg_occs, spin = solve_fermion(\n", " batches[j],\n", " core_hamiltonian,\n", @@ -1925,29 +1896,25 @@ " energy_sci += nuclear_repulsion_energy\n", " e_tmp[j] = energy_sci\n", " s_tmp[j] = spin\n", - " occs_tmp[j, :num_orbitals] = avg_occs[0]\n", - " occs_tmp[j, num_orbitals:] = avg_occs[1]\n", + " occs_tmp.append(avg_occs)\n", " coeffs.append(coeffs_sci)\n", "\n", " # Combine batch results\n", " avg_occupancy = np.mean(occs_tmp, axis=0)\n", - " # The occupancies from the solver should be flipped to match the bits in the bitstring matrix.\n", - " occupancies_bitwise = flip_orbital_occupancies(avg_occupancy)\n", "\n", " # Track optimization history\n", " energy_hist[i, :] = e_tmp\n", " spin_sq_hist[i, :] = s_tmp\n", - " occupancy_hist[i, :] = avg_occupancy" + " occupancy_hist.append(avg_occupancy)" ] }, { "cell_type": "markdown", - "id": "39b08afb-82f8-4622-b300-4509fd056917", "metadata": {}, "source": [ "### Visualize the results\n", "\n", - "Lastly, the results can be visualized by examining the approximated energy and average orbital occupancy at each iteration of the configuration recovery loop. The first plot shows that after a few iterations, the ground state energy is estimated to within approximately `200 mH` (chemical accuracy is typically accepted to be `1 kcal/mol` $\\approx$ `1.6 mH`). Recall that this demonstration used pure noise, and that the ability to approximate the energy to this degree comes from prior knowledge about the molecule and its electronic structure.\n", + "Lastly, the results can be visualized by examining the approximated energy and average orbital occupancy at each iteration of the configuration recovery loop. The first plot shows that after a few iterations, the ground state energy is estimated to within approximately `27 mH` (chemical accuracy is typically accepted to be `1 kcal/mol` $\\approx$ `1.6 mH`). Recall that this demonstration used pure noise, and that the ability to approximate the energy to this degree comes from prior knowledge about the molecule and its electronic structure.\n", "\n", "The second plot shows the average occupancy of each spatial orbital after the final iteration. Notice that both the spin-up and spin-down electrons occupy the first five orbitals with high probability in the solutions." ] @@ -1955,14 +1922,20 @@ { "cell_type": "code", "execution_count": 7, - "id": "dcd4ed70-89a0-44f4-b4b0-6270bbeb0c13", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exact energy: -109.04667 Ha\n", + "SQD energy: -109.07368 Ha\n", + "Absolute error: 0.02701 Ha\n" + ] + }, { "data": { - "image/svg+xml": [ - "" - ], + "image/png": "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JxGiCKPgUYmIiIiAk5MTFixYgPHjx+dbNyAgALt27SryLyZEVDF069YN165dy3VshGXLluGLL75AREREnoNfUun49NNPsW7dOnz//ff49NNPtR0OEVGZt3TpUnzxxRd49OjRW4/XWRa0bNkSL1680GhsJ21KT0+HnZ0dunTpoja+Z142btyIgQMH4sKFCwX2si0LJBIJAgMDi3UQdyIqOo4pRURUTuR8YtDt27dx+PBhtGzZUq2uEALr1q1DixYtmJAqA9asWYPOnTtjxIgRyvEtiIgoS87rW3JyMtasWQNXV9cKkZAqT/bu3Yvnz5+rDEhNRFSSOKYUEVE54ezsjICAADg7O+P+/ftYtWoV9PX1VcabS0xMxP79+3HixAlcvXoV+/bt02LElE0qlWo0lhkR0bvoww8/RLVq1eDj46Mc1/DGjRsaP3CG3t4///yDK1euYNasWahTp47ywTpERCWNSSkionKiffv22L59O54+fQqZTIZGjRphzpw5Kk9le/78OT7++GOYmZlhypQp+Q5ISUREVBb4+fnhhx9+wLZt25CRkQF3d3f89NNPak/qo5KzatUqbN26FT4+Pti4caO2wyGidwjHlCIiIiIiIiIiolLHMaWIiIiIiIiIiKjUMSlFRERERERERESljmNKFVJmZiaePHkCExMTSCQSbYdDREREpUAIgfj4eNjZ2UFHh7/pFQbbTkRERO8eTdtOTEoV0pMnT1C1alVth0FERERa8PDhQ1SpUkXbYZQrbDsRERG9uwpqOzEpVUgmJiYAsnasqamplqMhIiKi0hAXF4eqVasq2wGkObadiIiI3j2atp2YlCqk7G7npqambFgRERG9Y3j7WeGx7URERPTuKqjtxEERiIiIiIiIiIio1DEpRUREREREREREpe6dTEodPHgQNWvWhKurK3744QdthwMAyMgUOHs3GvuCH+Ps3WhkZApth0REREREREREVGLeuTGl0tPTMXbsWJw4cQIKhQL16tVD9+7dUalSJa3FdCQ0EjMPhCEyNllZZquQY3oXd7T3tNVaXEREhZGRkYG0tDRth0FUJHp6epBKpdoOg4iIiOid8s4lpc6fPw8PDw/Y29sDADp06ICjR4+iT58+WonnSGgkRmy9jJz9op7GJmPE1stY9UldJqaIqEwTQuDp06eIiYnRdihEb8XMzAw2NjYczJyI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AICeVAeLe3pDX1cHp249x/bzD7UdEhERERERERFVYExKkZJrZRNMeL8mAGD2oTA8iE7SckREREREREREVFExKaWhoKAguLu7w9fXV9uhlKhBTZ3QwNECSakZGL8rBJmZvI2PiIiIiIiIiIofk1IaCgwMRFhYGC5cuKDtUEqUVEeChT28Yagvxfnwl1h/JlzbIRERERERERFRBcSkFKmpVskQ/+vkDgCY/9tN3ImK13JERERERERERFTRMClFuerToCpa1LBCanomxv4cgrSMTG2HREREREREREQVCJNSlCuJRIJ5H3nBVK6LK49isfLEXW2HREREREREREQVCJNSlCcbhRyzunkCAJb/cRuhj2O1HBERERERERERVRRMSlG+unrboYOnDdIzBcb+HIzktAxth0REREREREREFQCTUpQviUSC2d08YWmsj1vPErDk91vaDomIiIiIiIiIKgAmpahAlYxlmPuhFwBg7Z/3cCHipZYjIiIiIiIiIqLyjkkp0kg798r4qG4VCAGM+zkEiSnp2g6JiIiIiIiIiMoxJqVIY9O7usNOIceDl0mY++t1bYdDREREREREROUYk1KkMVO5Hub7ewMAtp57gNO3nms5IiIiIiIiIiIqr5iUokJp6mqJ/o0cAAATd11B7Os0LUdEREREREREROURk1JUaJM6uMGxkiGexiVj5v5r2g6HiIiIiIiIiMohJqWo0Az1dbGopw90JMCefx/jSOhTbYdEREREREREROUMk1JUJPUczDGshQsA4KtfruJFQoqWIyIiIiIiIiKi8oRJKQ0FBQXB3d0dvr6+2g6lzBjT1hVuNiaITkzFV79chRBC2yERERERERERUTnBpJSGAgMDERYWhgsXLmg7lDJDpivFop7e0JNK8Nu1Z/jl38faDomIiOiddfr0aXTp0gV2dnaQSCTYu3dvvvUDAgIgkUjUXh4eHso6M2bMUJvu5uZWwltCRERE7wompeiteNgpMLqNKwBg+v5riIx9reWIiIiI3k2JiYnw9vZGUFCQRvWXLVuGyMhI5evhw4ewsLBAjx49VOp5eHio1Pvrr79KInwiIiJ6B+lqOwAq/4a3cMHv16MQ8jAGE3ddweZBDSCRSLQdFhER0TulQ4cO6NChg8b1FQoFFAqF8v3evXvx6tUrDBw4UKWerq4ubGxsii1OIiIiomzsKUVvTVeqg0U9vCHT1cGft19g6z8PtB0SERERFdK6devQtm1bODg4qJTfvn0bdnZ2cHZ2Rt++ffHgAa/zREREVDyYlKJiUd3aGF+2zxpjYs6h67gfnajliIiIiEhTT548wa+//opPP/1Upbxhw4bYuHEjjhw5glWrViE8PBzNmjVDfHx8nstKSUlBXFycyouIiIgoN0xKUbEJaOyI95wt8DotA+N+DkFGJp/GR0REVB5s2rQJZmZm6Natm0p5hw4d0KNHD3h5ecHPzw+HDx9GTEwMfv755zyXNXfuXOWtgQqFAlWrVi3h6ImIiKi8YlKKio2OjgQL/L1hLNPFxfuv8MOf97QdEhERERVACIH169ejX79+0NfXz7eumZkZatSogTt37uRZZ/LkyYiNjVW+Hj58WNwhExERUQXBpBQVq6oWhpjauRYAYNHRW7j5NO/u/URERKR9p06dwp07dzB48OAC6yYkJODu3buwtbXNs45MJoOpqanKi4iIiCg3TEpRsetZvypau1kjNSMTY38ORlpGprZDIiIiqvASEhIQHByM4OBgAEB4eDiCg4OVA5NPnjwZ/fv3V5tv3bp1aNiwITw9PdWmjR8/HqdOnUJERAT+/vtvdO/eHVKpFH369CnRbSEiIqJ3A5NSVOwkEgm+/bA2zAz1cO1JHJb/kXcXfyIiIioeFy9eRJ06dVCnTh0AwNixY1GnTh1MmzYNABAZGan25LzY2Fjs3r07z15Sjx49Qp8+fVCzZk307NkTlSpVwrlz52BlZVWyG0NERETvBF1tB0AVk7WpHLM+8MTn2/9F0Ik7aONmDe+qZtoOi4iIqMJq2bIlhMj7ISMbN25UK1MoFEhKSspznp9++qk4QiMiIiLKFXtKUYnp4m2Hzl62yMgUGLczBMlpGdoOiYiIiIiIiIjKCCalqETN+sATViYy3IlKwMLfbmo7HCIiIiIiIiIqI5iUohJlbqSPeR/VBgCsOxOOc/eitRwREREREREREZUFTEpRiWvtVhm96leFEMCEXSFISEnXdkhEREREREREpGVMSlGp+F/nWrA3M8DDl6/xzaHr2g6HiIiIiIiIiLSMSSkqFSZyPSzo4QUA2H7+AU7cjNJyRERERERERESkTUxKUalp7GKJgU0cAQBf7rqCmKRU7QZERERERERERFrDpBSVqol+bnC2NEJUfAqm77+m7XCIiIiIiIiISEuYlKJSZaAvxaKe3tCRAPuCn+Dw1Uhth0REREREREREWsCklIaCgoLg7u4OX19fbYdS7tWpZo7PWlYHAHz1y1VExSdrOSIiIiIiIiIiKm1MSmkoMDAQYWFhuHDhgrZDqRBGtXFFLVtTvEpKw5Q9oRBCaDskIiIiIiIiIipFTEqRVujr6mBxT2/oSSU4dv0Zdl16pO2QiIiIiIiIiKgUMSlFWlPL1hRftKsBAPj6QBgex7zWckREREREREREVFqYlCKtGtrMGXWqmSE+JR0TdoYgM5O38RERERERERG9C5iUIq3SlepgcU8fyPV08PfdaGw5d1/bIRERERERERFRKWBSirTOydIIkzvUAgDM/fU67j1P0HJERERERERERFTSmJSiMqHfew5oUr0SktMyMW5nCDJ4Gx8RERERERFRhcakFJUJOjoSzPf3holMF/8+iMGa03e1HRIRERERERERlSAmpajMsDczwLQu7gCAJb/fwvXIOC1HREREREREREQlhUkpKlP861VB21qVkZYhMPbnEKSmZ2o7JCIiIiIiIiIqAUxKUZkikUgw50NPmBvq4XpkHL47flvbIRERERERERFRCWBSisocaxM5vuleGwCw8uQd/PvglZYjIiIiIiIiIqLixqQUlUkda9viAx87ZApg3M8heJ2aoe2QiIiIiIiIiKgYMSlFZdbMrh6wNpHh3otEzP/thrbDISIiIiIiIqJixKQUlVlmhvqY5+8FANhwJgJ/332h5YiIiIiIiIiIqLgwKUVlWqua1ujToBoAYMLOK4hPTtNyRERERERERERUHJiUojLvq061UNXCAI9jXmP2wevaDoeIiIiIiIiIigGTUlTmGct0sdDfGxIJsOPiQ/xx45m2QyIiIiIiIiKit8SkFJULDZ0rYXATJwDAl7uv4lViqpYjIiIiIiIiIqK3waQUlRvj/WqiurUxnsenYOq+UG2HQ0RERERERERvgUkpKjfkelIs7ukNqY4EB69E4kDIE22HRERERERERERFxKQUlSteVcwQ2Ko6AGDqvlBExSVrOSIiIiIiIiIiKgompajc+bx1dXjYmSImKQ2T9lyFEELbIRERERERERFRITEpReWOnlQHi3v6QF+qgz9uROHniw+1HRIRERERERERFRKTUlQu1bQxwbj3awAAvj4Qhocvk7QcERERERER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ERERlRSOKUXvtD4NqqJlTSukpmdi7M8hSMvI1HZIRERERERERO8EJqXonSaRSDDvIy8oDPRw9XEsVp64q+2QiIiIiIiIiN4JTErRO6+yqRxff+ABAFj+x21cfRSr5YiIiIiIiIiIKj4mpYgAdPW2Q8faNkjPFBj7czCS0zigPREREREREVFJYlKKCFm38c3uVhuWxvq4HZWAJb/f0nZIRERERERERBUak1IaCgoKgru7O3x9fbUdCpUQCyN9zP3QCwCw9s97uBDxUssREREREREREVVcTEppKDAwEGFhYbhw4YK2Q6ES1M69MvzrVYEQwLifQ5CYkq7tkIiIiIiIiIgqJCaliHKY1sUd9mYGePAyCXN/va7tcIiIiIiIiIgqJCaliHIwlethvn/WbXxbzz3A6VvPtRwRERERERERUcXDpBRRLppUt8SARg4AgIm7riA2KU3LERERERERERFVLExKEeVhUodacLI0wtO4ZMw4cE3b4RARERERERFVKExKEeXBQF+KhT28oSMBfvn3MY6ERmo7JCIiIiIiIqIKg0kponzUczDHsBYuAICvfgnFi4QULUdEREREREREVDEwKaWhoKAguLu7w9fXV9uhUCkb09YVbjYmiE5MxZQ9VyGE0HZIREREREREROUek1IaCgwMRFhYGC5cuKDtUKiUyXSlWNzTB3pSCY6GPcMv/z7WdkhERERERERE5R6TUkQacLczxeg2rgCA6fuv4UnMay1HRERERERERFS+MSlFpKHhLVzgU9UM8cnp+HL3Fd7GR0RERERERPQWmJQi0pCuVAeLenpDpquDP2+/wNZ/Hmg7JCIiIiIiIqJyi0kpokJwsTLGl+3dAABzDl1HxItELUdEREREREREVD4xKUVUSAGNHdHIuRJep2Vg/M4QZGTyNj4iIiIiIiKiwmJSiqiQdHQkWNDDC8YyXVy8/wo//HlP2yERERERERERlTtMShEVQRVzQ0zr7A4AWHT0Fm4+jddyRERERERERETlC5NSREXUo34VtHazRmpGJsb+HIzU9Exth0RERERERERUbjAppaGgoCC4u7vD19dX26FQGSGRSPDth7VhZqiHa0/isOLEHW2HRERERERERFRuMCmlocDAQISFheHChQvaDoXKEGtTOWZ38wQABJ24g5CHMdoNiIiIiIiIiKicYFKK6C119rJDZy9b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AACA6WhKAQAAAAAAwHQ0pQAAAAAAAGA6mlIAAAAAAAAwHU0pAAAAAAAAmI6mFAAAAAAAAExHU6qQEhISFBYWpoiICFeXAgAAAAAAcNujKVVIVqtVqampSk5OdnUpAAAAAAAAtz2aUgAAAAAAADAdTSkAAAAAAACYjqYUAAAAAAAATEdTCgAAAAAAAKajKQUAAAAAAADT0ZQCAAAAAACA6WhKAQAAAAAAwHQ0pQAAAEqIhIQEhYSEyMvLS61bt9aWLVsKjJ07d67atGmjKlWqqEqVKurYsWOe+H79+slisdh9de7c2dmHAQAASgmaUgAAACXA0qVLFRsbq7i4OG3fvl3NmjVTVFSUjh07lm/8unXr1Lt3b61du1abNm1SrVq11KlTJx05csQurnPnzjp69Kjt66OPPjLjcAAAQClAUwoAAKAEeOuttzR48GD1799fYWFhmj17tsqXL6/58+fnG7948WINGzZM4eHhatiwod577z3l5uYqKSnJLs7T01MBAQG2rypVqphxOAAAoBSgKQUAAHCbu3TpkrZt26aOHTva1rm5ualjx47atGlTofZx4cIFXb58WVWrVrVbv27dOvn5+alBgwYaOnSoTp486dDaAQBA6VXG1QUAAADg1pw4cUI5OTny9/e3W+/v769ffvmlUPt48cUXFRQUZNfY6ty5s3r06KHQ0FDt27dPL7/8srp06aJNmzbJ3d093/1kZ2crOzvbtpyZmVmEIwIAAKUBTSkAAIBS7o033tCSJUu0bt06eXl52dZHR0fb/t2kSRM1bdpUdevW1bp169ShQ4d89xUfH69x48Y5vWYAAHD74/a9QkpISFBYWJgiIiJcXQoAAIAdX19fubu7KyMjw259RkaGAgICrvvaN998U2+88Ya++uorNW3a9LqxderUka+vr/bu3VtgzOjRo3X27Fnb16+//lr4AwEAAKUKTalCslqtSk1NVXJysqtLAQAAsOPh4aEWLVrYTVJ+ddLyyMjIAl83ZcoUTZgwQYmJiWrZsuUN8xw+fFgnT55UYGBggTGenp6qWLGi3RcAAEB+aEoBAACUALGxsZo7d64WLVqkn3/+WUOHDlVWVpb69+8vSerbt69Gjx5ti588ebLGjBmj+fPnKyQkROnp6UpPT9f58+clSefPn9eoUaP0/fff68CBA0pKStLDDz+sevXqKSoqyiXHCAAAShbmlAIAACgBevXqpePHj2vs2LFKT09XeHi4EhMTbZOfHzp0SG5u//s8ctasWbp06ZJ69uxpt5+4uDi99tprcnd3144dO7Ro0SKdOXNGQUFB6tSpkyZMmCBPT09Tjw0AAJRMNKUAAABKiOHDh2v48OH5blu3bp3d8oEDB667r3Llymn16tUOqgwAACAvbt8DAAAAAACA6WhKAQAAAAAAwHQ0pQAAAAAAAGA6mlIAAAAAAAAwHU0pAAAAAAAAmI6mFAAAAAAAAExHUwoAAAAAAACmoykFAAAAAAAA09GUAgAAAAAAgOloSgEAAAAAAMB0NKUAAAAAAABgOppSAAAAAAAAMB1NKQAAAAAAAJiOphQAAAAAAABMR1MKAAAAAAAApqMpBQAAAAAAANPRlAIAAAAAAIDpaEoVUkJCgsLCwhQREeHqUgAAAAAAAG57NKUKyWq1KjU1VcnJya4uBQAAAAAA4LZHUwoAAAAAAACmoykFAAAAAAAA09GUAgAAAAAAgOloSgEAAAAAAMB0NKUAAAAAAABgOppSAAAAAAAAMB1NKQAAAAAAAJiOphQAAAAAAABMR1MKAAAAAAAApqMpBQAAAAAAANPRlAIAAAAAAIDpaEoBAAAAAADAdDSlAAAAAAAAYDqaUgAAAAAAADAdTSkAAAAAAACYjqYUAAAAAAAATEdTCgAAAAAAAKajKQUAAAAAAADT0ZQCAAAAAACA6WhKAQAAAAAAwHRlXF0AAAAAABQHIS+tctq+D7zR1Wn7BoDbFVdKAQAAAAAAwHQ0pQAAAAAAAGA6mlIAAAAAAAAwHU0pAAAAAAAAmI6JzgEAAADARZw5ubrEBOsAijeulAIAAAAAAIDpaEoBAAAAAADAdDSlAAAAAAAAYLpS25S6cOGCgoODNXLkSFeXAgAAAAAAUOqU2qbU66+/rrvvvtvVZQAAADhMQkKCQkJC5OXlpdatW2vLli3Xjf/kk0/UsGFDeXl5qUmTJvriiy/sthuGobFjxyowMFDlypVTx44dtWfPHmceAgAAKEVKZVNqz549+uWXX9SlSxdXlwIAAOAQS5cuVWxsrOLi4rR9+3Y1a9ZMUVFROnbsWL7xGzduVO/evTVw4ED98MMP6t69u7p3765du3bZYqZMmaJ33nlHs2fP1ubNm+Xt7a2oqChdvHjRrMMCAAAlWBlXF/Bn3377raZOnapt27bp6NGjWr58ubp3724Xk5CQoKlTpyo9PV3NmjXTjBkz1KpVq0LnGDlypKZOnaqNGzc6uHoAAADXeOuttzR48GD1799fkjR79mytWrVK8+fP10svvZQnfvr06ercubNGjRolSZowYYLWrFmjmTNnavbs2TIMQ9OmTdOrr76qhx9+WJL0z3/+U/7+/lqxYoWio6PNOzgAAIqBkJdWOW3fB97o6rR9F2fFrimVlZWlZs2aacCAAerRo0ee7Vc/BZw9e7Zat26tadOmKSoqSrt375afn58kKTw8XFeuXMnz2q+++krJycm64447dMcdd9CUAgAAJcKlS5e0bds2jR492rbOzc1NHTt21KZNm/J9zaZNmxQbG2u3LioqSitWrJAkpaWlKT09XR07drRtr1Spklq3bq1NmzbRlAKA63BF88KZOV2Vt7Q2akqTYteU6tKly3VvqyvMp4ApKSkFvv7777/XkiVL9Mknn+j8+fO6fPmyKlasqLFjx+Ybn52drezsbNvy2bNnJUmZmZk3e2gAAOA2dfX3vmEYLq4kfydOnFBOTo78/f3t1vv7++uXX37J9zXp6en5xqenp9u2X11XUEx+zB475WZfcMp+ryqobmfmdUVOV+XlWF1zrI3jVjs1565xUfmud2ZeV+S8Xt7S8v+Ss/MWlLM0/Vxdday3qrBjp2LXlLqeonwK+Gfx8fGKj4+XJC1cuFC7du0qsCF1NX7cuHF51teqVesmqwcAALe7c+fOqVKlSq4uo1graWOnStNKR05X5eVYS2be0pLTVXk51pKZt6Qe643GTrdVU6oonwLeqtGjR9td2p6bm6tTp06pWrVqslgsDs2VmZmpWrVq6ddff1XFihUdum+Yj59nycPPtGTh51nyOPNnahiGzp07p6CgIIfu11F8fX3l7u6ujIwMu/UZGRkKCAjI9zUBAQHXjb/634yMDAUGBtrFhIeHF1iLmWOnm+WK972rzjUca8nL6aq8HGvJzMuxlrycrsybn8KOnW6rppSj9evX74Yxnp6e8vT0tFtXuXJl5xT0/1WsWNHl/wPBcfh5ljz8TEsWfp4lj7N+psX5CikPDw+1aNFCSUlJtgfE5ObmKikpScOHD8/3NZGRkUpKStKIESNs69asWaPIyEhJUmhoqAICApSUlGRrQmVmZmrz5s0aOnRogbW4Yux0s1zx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oTFnzhyn5zQMw1i9erUhydi9e7cp+TIzM43nnnvOqF27tuHl5WXUqVPHeOWVV4zs7Gyn5166dKlRp04dw8PDwwgICDCsVqtx5swZh+3/RueD3NxcY8yYMYa/v7/h6elpdOjQwSHf9xvlXbBgQb7b4+LinJIzLS2twPPU2rVrnXasv//+u/HXv/7VCAoKMjw8PIzAwEDjoYceMrZs2eK0nPkJDg423n777VvKeaO8Fy5cMDp16mRUr17dKFu2rBEcHGwMHjzYSE9Pv+W8zmAxDMO49dYWAAAAAAAAUHjMKQUAAAAAAADT0ZQCAAAAAACA6WhKAQAAAAAAwHQ0pQAAAAAAAGA6mlIAAAAAAAAwHU0pAAAAAAAAmI6mFAAAAAAAAExHUwoAAAAAAACmoykFoNRZt26dLBaL1q1b5+pSHOK1116TxWJxdRkAAKCY6devnypUqFCoWIvFotdee82h+du1a6d27do5dJ+F1a9fP4WEhLgkN4DCoykF4JYsXLhQFotFW7duta374osvHD6oKYp//OMfWrhwoavLsNOuXTs1btzY1WUAAIBi7KefftITTzyhGjVqyNPTU0FBQerTp49++ukn02rYuHGjXnvtNZ05c8bpuUJCQvSXv/zF6XkAFD80pQA43BdffKFx48a5uowCm1L333+/fv/9d91///3mFwUAAHAdy5Yt01133aWkpCT1799f//jHPzRw4ECtXbtWd911l5YvX+6UvL///rteffVV2/LGjRs1btw4U5pSAEqvMq4uAAAKwzAMXbx4UeXKlbvlfbm5ucnLy8sBVQEAADjOvn379OSTT6pOnTr69ttvVb16ddu25557Tm3atNGTTz6pHTt2qE6dOgXuJysrS97e3jeVm7ERAFfgSikADtWvXz8lJCRI+mNugqtfV+Xm5mratGlq1KiRvLy85O/vryFDhuj06dN2+7l6Gffq1avVsmVLlStXTu+++64kacGCBXrggQfk5+cnT09PhYWFadasWXle/9NPP2n9+vW2Gq7OaVDQnFKffPKJWrRooXLlysnX11dPPPGEjhw5kuf4KlSooCNHjqh79+6qUKGCqlevrpEjRyonJ6dI3zOLxaLhw4drxYoVaty4sTw9PdWoUSMlJibmid2wYYMiIiLk5eWlunXr2r4n+fnggw9sx1O1alVFR0fr119/tW1fsGCBLBaL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Zb77rVChgt3yyZMntXXrVklSamqqcnNz5ebGhbQAAJipUqVKCgwM1I4dO64bt2PHDtWoUSPPVc2OeEJxYZg5FnP0+OhmxqH79+/Xnj17JP0xrycA56ApBcDhrn3a3rXq1q2rr7/+Wvfee2+RB04rV65Udna2/v3vf9t9evbnW/+uV8efBQcHS/pjYvUHHnjAbtvu3btt212pevXqKleunG1wdK3du3fbLdetW1eGYSg0NNT2Sej1WK1WnTt3TvHx8Ro9erSmTZum2NhYh9UOAAAK5y9/+Yvmzp2rDRs25HmCniR99913OnDggIYMGVLofebm5mr//v12Y4L//ve/kv54WnFBChpH3cxYzNmujtEKOz4q7Dg0NzdX/fr1U8WKFTVixAhNmjRJPXv2VI8ePRxXPABJEh+FA3A4b29vSdKZM2fs1j/22GPKycnRhAkT8rzmypUreeLzc/UTs2s/ITt79qwWLFiQbx2F2WfLli3l5+en2bNnKzs727b+yy+/1M8//6yuXbvecB/O5u7urqioKK1YsUKHDh2yrf/555+1evVqu9gePXrI3d1d48aNy/NJomEYOnnypG35008/1dKlS/XGG2/opZdeUnR0tF599VXbYBUAAJhn1KhRKleunIYMGWL3+1qSTp06paefflrly5fXqFGjbmq/M2fOtP3bMAzNnDlTZcuWve4t+wWN525mLOZsgYGBCg8P16JFi+zmslqzZo1SU1PtYm9mHPrWW29p48aNmjNnjiZMmKB77rlHQ4cO1YkTJ5x2LEBpxZVSAByuRYsWkqRnn31WUVFRcnd3V3R0tNq2bashQ4YoPj5eKSkp6tSpk8qWLas9e/bok08+0fTp09WzZ8/r7rtTp07y8PBQt27dNGTIEJ0/f15z586Vn5+fjh49mqeOWbNmaeLEiapXr578/PzyXAkl/THH0uTJk9W/f3+1bdtWvXv3VkZGhqZPn66QkBA9//zzjvvm3IJx48YpMTFRbdq00bBhw3TlyhXNmDFDjRo1srvUv27dupo4caJGjx6tAwcOqHv37vLx8VFaWpqWL1+up556SiNHjtSxY8c0dOhQtW/f3jYB6syZM7V27Vr169dPGzZs4DY+AABMVL9+fS1atEh9+vRRkyZNNHDgQIWGhurAgQOaN2+eTpw4oY8++sju4Sg34uXlpcTERMXExKh169b68ssvtWrVKr388st5blm71tXx3CuvvKLo6GiVLVtW3bp1u6mxmBni4+PVtWtX3XfffRowYIBOnTplGx+dP3/eFlfYcejPP/+sMWPGqF+/furWrZskaeHChQoPD9ewYcP08ccfm36MQInmsuf+ASgRFixYYEgykpOTbeuuXLliPPPMM0b16tUNi8Vi/PlUM2fOHKNFixZGuXLlDB8fH6NJkybGCy+8YPz222+2mD8/Gvha//73v42mTZsaXl5eRkhIiDF58mRj/vz5eR5bnJ6ebnTt2tXw8fExJNkeSbx27VpDkrF27Vq7/S5dutRo3ry54enpaVStWtXo06ePcfjwYbuYmJgYw9vbO09NVx/HfCNt27Y1GjVqZLdOkmG1WvPEBgcHGzExMXbr1q9fb7Ro0cLw8PAw6tSpY8yePbvA3P/617+M++67z/D29ja8vb2Nhg0bGlar1di9e7dhGIbRo0cPw8fHxzhw4IDd664+bnny5Mk3PB4AAOB4O3bsMHr37m0EBgYaZcuWNQICAozevXsbO3fuzBN7dRxw/PjxPNuujlv27dtndOrUyShfvrzh7+9vxMXFGTk5OXaxkoy4uDi7dRMmTDBq1KhhuLm52Y2zCjsWa9u2rW38dT1/HvelpaUZkoypU6fmic2vzn/961/GnXfeaXh6ehphYWHGsmXLjJiYGCM4ODjP6683Dr1y5YoRERFh1KxZ0zhz5ozd66ZPn25IMpYuXXrD4wFQeBbDKMIscQAAAAAAAMAt4L4MAAAAAAAAmI6mFAAAAAAAAExHUwoAAAAAAACmoykFAAAAAAAA09GUAgAAAAAAgOloSgEAAAAAAMB0NKUAAAAAAABgOppSAAAAAAAAMB1NKQAAAAAAAJiOphQAAAAAAABMR1MKAAAAAAAApqMpBQAAAAAAANPRlAIAAAAAAIDp/h+ekOyJAsy40AAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -1974,19 +1947,18 @@ "source": [ "import matplotlib.pyplot as plt\n", "\n", + "# Chemical accuracy (+/- 1 milli-Hartree)\n", + "chem_accuracy = 0.001\n", + "exact_energy = -109.04667\n", + "\n", "# Data for energies plot\n", - "n2_exact = -109.10288938\n", "x1 = range(ITERATIONS)\n", - "# Here we plot the smallest energy obtained across all batches for each iteration\n", - "# of the configuration recovery loop.\n", - "e_diff = [abs(np.min(energies) - n2_exact) for energies in energy_hist]\n", + "min_e = [np.min(e) for e in energy_hist]\n", + "e_diff = [abs(e - exact_energy) for e in min_e]\n", "yt1 = [1.0, 1e-1, 1e-2, 1e-3, 1e-4]\n", "\n", - "# Chemical accuracy (+/- 1 milli-Hartree)\n", - "chem_accuracy = 0.001\n", - "\n", "# Data for avg spatial orbital occupancy\n", - "y2 = avg_occupancy[:num_orbitals] + avg_occupancy[num_orbitals:]\n", + "y2 = occupancy_hist[-1][0] + occupancy_hist[1][1]\n", "x2 = range(len(y2))\n", "\n", "fig, axs = plt.subplots(1, 2, figsize=(12, 6))\n", @@ -1999,13 +1971,8 @@ "axs[0].set_yticklabels(yt1)\n", "axs[0].set_yscale(\"log\")\n", "axs[0].set_ylim(1e-4)\n", - "axs[0].axhline(\n", - " y=chem_accuracy,\n", - " color=\"#BF5700\",\n", - " linestyle=\"--\",\n", - " label=\"chemical accuracy\",\n", - ")\n", - "axs[0].set_title(\"Approximated Ground State Energy vs SQD Iterations\")\n", + "axs[0].axhline(y=chem_accuracy, color=\"#BF5700\", linestyle=\"--\", label=\"chemical accuracy\")\n", + "axs[0].set_title(\"Approximated Ground State Energy Error vs SQD Iterations\")\n", "axs[0].set_xlabel(\"Iteration Index\", fontdict={\"fontsize\": 12})\n", "axs[0].set_ylabel(\"Energy Error (Ha)\", fontdict={\"fontsize\": 12})\n", "axs[0].legend()\n", @@ -2018,13 +1985,15 @@ "axs[1].set_xlabel(\"Orbital Index\", fontdict={\"fontsize\": 12})\n", "axs[1].set_ylabel(\"Avg Occupancy\", fontdict={\"fontsize\": 12})\n", "\n", + "print(f\"Exact energy: {exact_energy:.5f} Ha\")\n", + "print(f\"SQD energy: {min_e[-1]:.5f} Ha\")\n", + "print(f\"Absolute error: {e_diff[-1]:.5f} Ha\")\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", - "id": "339e2cea-b297-4191-badd-1f406ee7b21d", "metadata": {}, "source": [ "## Next steps\n", @@ -2038,7 +2007,7 @@ "metadata": { "description": "Get started with the SQD addon and how to post-process results", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -2052,10 +2021,10 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3" + "version": "3.12.4" }, "title": "Getting started with SQD" }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 }