From ae287092da3337a810d686998d30a06c941e7219 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Thu, 5 Oct 2023 18:13:43 -0400 Subject: [PATCH 01/65] first draft of initial state demo --- ...al_initial_state_preparation.metadata.json | 52 ++++++++ .../tutorial_initial_state_preparation.py | 111 ++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 demonstrations/tutorial_initial_state_preparation.metadata.json create mode 100644 demonstrations/tutorial_initial_state_preparation.py diff --git a/demonstrations/tutorial_initial_state_preparation.metadata.json b/demonstrations/tutorial_initial_state_preparation.metadata.json new file mode 100644 index 0000000000..e767d92cbe --- /dev/null +++ b/demonstrations/tutorial_initial_state_preparation.metadata.json @@ -0,0 +1,52 @@ +{ + "title": "Initial State Preparation for Quantum Chemistry", + "authors": [ + { + "id": "stepan_fomichev" + } + ], + "dateOfPublication": "2023-10-20T00:00:00+00:00", + "dateOfLastModification": "2023-10-20T00:00:00+00:00", + "categories": [ + "Quantum Chemistry" + ], + "tags": [], + "previewImages": [ + // { + // "type": "thumbnail", + // "uri": "/_images/thumbnail_tutorial_fermionic_operators.png" + // } + ], + "seoDescription": "Prepare initial states for quantum algorithms from output of traditional quantum chemistry methods.", + "doi": "", + "canonicalURL": "/qml/demos/tutorial_initial_state_preparation", + "references": [ + { + // "id": "surjan", + // "type": "book", + // "title": "Second Quantized Approach to Quantum Chemistry", + // "authors": "Peter R. Surjan", + // "year": "1989", + // "publisher": "Springer-Verlag", + // "url": "" + } + ], + "basedOnPapers": [ + { + // initial statep prep paper + } + ], + "referencedByPapers": [], + "relatedContent": [ + { + "type": "demonstration", + "id": "tutorial_quantum_chemistry", + "weight": 1.0 + }, + { + "type": "demonstration", + "id": "tutorial_vqe", + "weight": 1.0 + } + ] +} \ No newline at end of file diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py new file mode 100644 index 0000000000..e961d737b7 --- /dev/null +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -0,0 +1,111 @@ +r""" + +Initial state preparation for quantum chemistry +=============================================== + +.. meta:: + :property="og:description": Understand the concept of the initial state, and learn how to prepare it with PennyLane + :property="og:image": https://pennylane.ai/qml/_images/thumbnail_tutorial_initial_state_preparation.png + +.. related:: + tutorial_quantum_chemistry Building molecular Hamiltonians + tutorial_vqe A brief overview of VQE + +*Author: Stepan Fomichev — Posted: 20 October 2023. Last updated: 20 October 2023.* + +It was 1968, the height of the Cold War, and on a routine surveillance mission the +US submarine Scorpion goes missing. Stakes are high -- a nuclear sub is lost at sea! -- +but despite the round-the-clock efforts of dozens of ships and aircraft, after a week +the search is called off. The search area -- "somewhere off the Eastern Seaboard" -- +is simply too big to comb through by brute force. + +But then a group of statisticians gets involved. Combining information from underwater +sonar listening stations and averaging insights from a variety of experts, they are +able to zero in on the a few most promising search quadrants -- and soon after, the sub +is found in one of them. + +Much like searching the oceanic floor for a sunken ship, searching for the ground state +in the gigantic Hilbert space of a typical molecule requires expert guidance -- an +initial guess for what the state could be. In this demo, you will learn about different +strategies for preparing such initial states, and specifically how to do that in +PennyLane. + +How do initial states affect quantum algorithms? +------------------------------------------------ +From the variational quantum eigensolver (VQE) to quantum phase estimation (QPE), to even +the recent ISQ-era algorithms like the Lin-Tong approach, many quantum algorithms for +obtaining the ground state of a chemical system require a good initial state to be +useful. (add three images here) + + 1. In the case of VQE, as we will see later in this demo, a good initial state + directly translates into fewer optimization steps. + 2. In QPE, the probability of measuring the ground-state energy is directly + proportional to the overlap squared $|c_0|^2$ of the initial and ground states + +.. math:: + + \ket{\psi_{\text{in}}} = c_0 \ket{\psi_0} + c_1 \ket{\psi_1} + ... + + 3. Finally, in Lin-Tong the overlap with the ground-state affects the size of the + step in the cumulative distribution function, the bigger step making it easier to + detect the jump and thus resolve the position of the ground-state energy. + +We see that in all these cases, having a high-quality initial state can seriously +reduce the runtime of the algorithm. By high-quality, we just mean that the prepared +state in some sense minimizes the effort of the quantum algorithm. + +Where do I get good initial states? +----------------------------------- +Much like when searching for a sunken submarine, there are a lot of things you might try +to prepare a good guess for the ground-state. + + 1. The adiabatic principle tells us that the eigenstates of Hamiltonians smoothly + evolving with some parameter :math:`\lambda` are This is the reasoning behind the adiabatic approach: + + +""" + +from pennylane import FermiC, FermiA + +a0_dag = FermiC(0) +a1 = FermiA(1) + +############################################################################## +# We used the compact notations ``a0_dag`` to denote a creation operator applied to +# the :math:`0\text{th}` orbital and ``a1`` to denote an annihilation operator applied to the +# :math:`1\text{st}` orbital. Once created, these operators can be multiplied or added to each other +# to create new operators. A product of fermionic operators will be called a *Fermi word* and a +# linear combination of Fermi words will be called a *Fermi sentence*. + +fermi_word = a0_dag * a1 +fermi_sentence = 1.3 * a0_dag * a1 + 2.4 * a1 +fermi_sentence + +############################################################################## +# In this simple example, we first created the operator :math:`a^{\dagger}_0 a_1` and then created +# the linear combination :math:`1.3 a^{\dagger}_0 a_1 + 2.4 a_1`. We can also perform +# arithmetic operations between Fermi words and Fermi sentences. + +fermi_sentence = fermi_sentence * fermi_word + 2.3 * fermi_word +fermi_sentence + +############################################################################## +# Summary +# ------- +# This demo explains how to create and manipulate fermionic operators in PennyLane, which is as +# easy as writing the operators on paper. PennyLane supports several arithmetic operations between +# fermionic operators and provides tools for mapping them to the qubit basis. This makes it easy and +# intuitive to construct complicated fermionic Hamiltonians such as +# `molecular Hamiltonians `_. +# +# References +# ---------- +# +# .. [#surjan] +# +# Peter R. Surjan, "Second Quantized Approach to Quantum Chemistry". Springer-Verlag, 1989. +# +# +# About the author +# ---------------- +# .. include:: ../_static/authors/soran_jahangiri.txt From 0224d750573ad788525dad8f3f2d19daed8e742b Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Thu, 5 Oct 2023 19:06:20 -0400 Subject: [PATCH 02/65] very rough draft of the initial state demo --- .../tutorial_initial_state_preparation.py | 209 ++++++++++++++++-- 1 file changed, 185 insertions(+), 24 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index e961d737b7..4b58b52360 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -59,44 +59,205 @@ Much like when searching for a sunken submarine, there are a lot of things you might try to prepare a good guess for the ground-state. - 1. The adiabatic principle tells us that the eigenstates of Hamiltonians smoothly - evolving with some parameter :math:`\lambda` are This is the reasoning behind the adiabatic approach: +Seeing as we are already using a quantum computer, we could turn to a quantum algorithm +to do the job. One idea is based on the **adiabatic principle** that tells us that the +eigenstates of Hamiltonians smoothly evolving with some parameter :math:`\lambda` +are smoothly evolving also. If we start from a simple Hamiltonian :math:`H(\lambda=0)` +whose ground state is easy to prepare, then evolve to the Hamiltonian +:math:`H(\lambda=1)` of interest, we should end up with the ground state of the final +Hamiltonian, or at least something close to it. In practice, the speed of state prep + (how quickly we can evolve :math:`lambda`) depends on the spectral gap +:math:`\Delta` between the ground and first excited states: and this gap turns out to +be quite small precisely in interesting molecules. There are other ideas like +quantum imaginary-time evolution and variational methods (like VQE itself), but they are +similarly limited by long runtimes or the need for expensive classical optimization. +On the other hand, we could rely on traditional computational chemistry techniques to +get us most of the way to an initial state. We could run a method like configuration +interaction with singles and doubles (CISD), or coupled cluster (CCSD), take the result +and implement it on the quantum computer. It won't not be the ground-state itself, but +it will certainly be better than the computational basis state :math:`\ket{0}^{\otimes N}`. +It is this second approach that we focus on in this demo. +Importing initial states into PennyLane +--------------------------------------- +The current version of PennyLane can import initial states from the following methods + + 1. Configuration interaction with singles and doubles (CISD) from PySCF + The first line of attack for state prep, CISD is unsophisticated but fast. + It won't be much help for strongly correlated molecules, but it is better + than Hartree-Fock. + 2. Coupled cluster with singles and doubles (CCSD) from PySCF + In our implementation, we reconstruct the CCSD wavefunction to second order, + making it a marginal improvement on the CISD approach. + 3. Density-matrix renormalization grourp (DMRG), from the Block2 library + A powerful method based on matrix-product states, DMRG is considered state of the + art for quantum chemistry simulations, capable of handling reasonably large + systems and correlated molecules. + 4. Semistochastic heat-bath configuration interaction (SHCI), from the Dice library + A member of the selective configuration interaction family of methods, SHCI is + right there with DMRG in terms of accuracy and speed, and often used alongside it + as a cross-check. + +These methods are incredibly diverse in terms of their outputs, not always returning an +object that can be turned into a PennyLane statevector. We have done this hard work: all +that you need to do is run these methods and pass their outputs to PennyLane's +`import_state`. + +Here is how to do this for CISD / CCSD methods via PySCF: we show the version based on +the restricted Hartree-Fock orbitals, but the unrestricted versions are available too. """ -from pennylane import FermiC, FermiA +from pyscf import gto, scf, ci +from pennylane import import_state +mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,0.71)]], basis='sto6g', symmetry='d2h') +myhf = scf.RHF(mol).run() +myci = ci.CISD(myhf).run() +wf_cisd = import_state(myci, tol=1e-1) +print(wf_cisd) + +# [pennylane output] + +############################################################################## +# The general function `import_state` can automatically detect the input type and apply +# the appropriate conversion protocol. It works similarly for CCSD + +from pyscf import cc +mycc = cc.CCSD(myhf).run() +wf_ccsd = import_state(mycc, tol=1e-1) + +############################################################################## +# The second attribute tol specifies the cutoff beyond which contributions to the +# wavefunctions are neglected. Internally, wavefunctions are stored in their Slater +# determinant representation, and if their prefactor coefficient is below `tol`, those +# determinants are dropped from the expression. + +############################################################################## +# The next two examples involve running external libraries Block2 and Dice, whose +# installation can require some care. We recommend the install guide in our internal +# package `Overlapper` for best performance. +# +# To obtain an initial state from a DMRG calculation using Block2, the following is sufficient + +from pyscf import mcscf +from pyblock2.driver.core import DMRGDriver, SymmetryTypes +from pyblock2._pyscf.ao2mo import integrals as itg +mc = mcscf.CASCI(mf, 2, 2) +ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = itg.get_rhf_integrals(mf, mc.ncore, mc.ncas, g2e_symm=8) +driver = DMRGDriver(scratch="./tmp", symm_type=SymmetryTypes.SU2) +driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) +mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore) +ket = driver.get_random_mps(tag="GS") +driver.dmrg('add some attributes here') +wavefunction = driver.get_csf_coefficients(ket) +wf_dmrg = import_state(wavefunction, tol=1e-1) + +############################################################################## +# For Dice, the following does the trick + +from pyscf.shciscf import shci +import numpy as np +mol = gto.M(atom=[['Li', (0, 0, 0)], ['Li', (0,0,0.71)]], basis='sto6g', symmetry="d2h") +myhf = scf.RHF(mol).run() +ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 +myshci = mcscf.CASCI(myhf, ncas, (nelecas_a, nelecas_b)) +output_file = f"shci_output.out" +myshci.fcisolver = shci.SHCI(myhf.mol) +myshci.fcisolver.outputFile = output_file +e_tot, e_ci, ss, mo_coeff, mo_energies = myshci.kernel(verbose=5) +(dets, coeffs) = [post-process shci_output.out to get tuple of + dets (list of strs) and coeffs (list of floats)] +wf_shci = import_state((dets, coeffs), tol=1e-1) + +# If you are interested in a library that wraps all these methods and makes it easy to +# generate initial states from them, you might be interested in trying out Overlapper +# package. + +############################################################################## +# Let us now demonstrate how the choice of a better initial state shortens the runtime +# of VQE for obtaining the ground-state energy of a molecule. Start by setting up the VQE +# calculation for our molecule. + +dev = qml.device("default.qubit", wires=qubits) + +def circuit_VQE(theta, wires, initstate): + qml.QubitStateVector(initstate, wires=wires) + qml.DoubleExcitation(theta, wires=wires) + +@qml.qnode(dev, interface="autograd") +def cost_fn(theta): + circuit_VQE(theta, wires=wires) + return qml.expval(H) + +stepsize = 0.4 +max_iterations = 30 +opt = qml.GradientDescentOptimizer(stepsize=stepsize) +theta = np.array(0.0, requires_grad=True) + +############################################################################## +# Next, run VQE with the bad basis state + +delta_E = 10 +conv_tol = 1e-8 +iteration = 0 +while abs(delta_E) > conv_tol and iteration < max_iterations: + theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=hf_state) + samples = cost_fn(theta) + delta_E = samples - prev_energy + print(f"theta = {theta:.5f}, prev energy = {prev_energy:.5f}, de = {delta_E:.5f}") + iteration += 1 + +energy_VQE = cost_fn(theta) +theta_opt = theta + +print("VQE energy: %.4f" % (energy_VQE)) +print(f"Optimal parameters: {theta_opt:.5f}") +print(f"Convergence achieved in {iteration} iterations") + +############################################################################## +# Now notice how the runtime is shortened to merely a handlful of iterations with the DMRG state + +delta_E = 10 +conv_tol = 1e-8 +iteration = 0 +while abs(delta_E) > conv_tol and iteration < max_iterations: + theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=wf_dmrg) + samples = cost_fn(theta) + delta_E = samples - prev_energy + print(f"theta = {theta:.5f}, prev energy = {prev_energy:.5f}, de = {delta_E:.5f}") + iteration += 1 + +energy_VQE = cost_fn(theta) +theta_opt = theta -a0_dag = FermiC(0) -a1 = FermiA(1) +print("VQE energy: %.4f" % (energy_VQE)) +print(f"Optimal parameters: {theta_opt:.5f}") +print(f"Convergence achieved in {iteration} iterations") ############################################################################## -# We used the compact notations ``a0_dag`` to denote a creation operator applied to -# the :math:`0\text{th}` orbital and ``a1`` to denote an annihilation operator applied to the -# :math:`1\text{st}` orbital. Once created, these operators can be multiplied or added to each other -# to create new operators. A product of fermionic operators will be called a *Fermi word* and a -# linear combination of Fermi words will be called a *Fermi sentence*. +# We can also consider what happens when you make the molecule more correlated. Simpler +# methods like CISD / CCSD will begin to faulter, whiler SHCI and DMRG will continue to +# perform at a high level -fermi_word = a0_dag * a1 -fermi_sentence = 1.3 * a0_dag * a1 + 2.4 * a1 -fermi_sentence +### show example ### ############################################################################## -# In this simple example, we first created the operator :math:`a^{\dagger}_0 a_1` and then created -# the linear combination :math:`1.3 a^{\dagger}_0 a_1 + 2.4 a_1`. We can also perform -# arithmetic operations between Fermi words and Fermi sentences. +# Finally, it is straightforward to compare the initial states through overlap -- the main +# metric of success for initial states in quantum algorithms. Because in PennyLane these +# are statevectors, computing an overlap is as easy as computing a dot product -fermi_sentence = fermi_sentence * fermi_word + 2.3 * fermi_word -fermi_sentence +ovlp = np.dot(wf_dmrg, wf_shci) ############################################################################## # Summary # ------- -# This demo explains how to create and manipulate fermionic operators in PennyLane, which is as -# easy as writing the operators on paper. PennyLane supports several arithmetic operations between -# fermionic operators and provides tools for mapping them to the qubit basis. This makes it easy and -# intuitive to construct complicated fermionic Hamiltonians such as -# `molecular Hamiltonians `_. +# This demo explains the concept of the initial state for quantum algorithms. Using the +# example of VQE, it demonstrates how a better choice of state -- obtained, for example +# from a sophisticated computational chemistry method like CCSD, SHCI or DMRG -- can lead +# to much better algorithmic performance. It also shows simple workflows for how to run +# these computational chemistry methods, from libraries such as PySCF, Block2 and Dice, +# to generate outputs that can then be converted to PennyLane's statevector format +# with a single line of code. # # References # ---------- @@ -108,4 +269,4 @@ # # About the author # ---------------- -# .. include:: ../_static/authors/soran_jahangiri.txt +# .. include:: ../_static/authors/stepan_fomichev.txt From c6adb66c83c9abff4c86568961ce7fd21bca87ce Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 11:19:59 -0400 Subject: [PATCH 03/65] wip on the VQE part of demo --- .../tutorial_initial_state_preparation.py | 284 ++++++++++-------- 1 file changed, 167 insertions(+), 117 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 4b58b52360..a2514b70c2 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -13,23 +13,6 @@ *Author: Stepan Fomichev — Posted: 20 October 2023. Last updated: 20 October 2023.* -It was 1968, the height of the Cold War, and on a routine surveillance mission the -US submarine Scorpion goes missing. Stakes are high -- a nuclear sub is lost at sea! -- -but despite the round-the-clock efforts of dozens of ships and aircraft, after a week -the search is called off. The search area -- "somewhere off the Eastern Seaboard" -- -is simply too big to comb through by brute force. - -But then a group of statisticians gets involved. Combining information from underwater -sonar listening stations and averaging insights from a variety of experts, they are -able to zero in on the a few most promising search quadrants -- and soon after, the sub -is found in one of them. - -Much like searching the oceanic floor for a sunken ship, searching for the ground state -in the gigantic Hilbert space of a typical molecule requires expert guidance -- an -initial guess for what the state could be. In this demo, you will learn about different -strategies for preparing such initial states, and specifically how to do that in -PennyLane. - How do initial states affect quantum algorithms? ------------------------------------------------ From the variational quantum eigensolver (VQE) to quantum phase estimation (QPE), to even @@ -37,46 +20,46 @@ obtaining the ground state of a chemical system require a good initial state to be useful. (add three images here) - 1. In the case of VQE, as we will see later in this demo, a good initial state - directly translates into fewer optimization steps. - 2. In QPE, the probability of measuring the ground-state energy is directly - proportional to the overlap squared $|c_0|^2$ of the initial and ground states +In the case of VQE, as we will see later in this demo, a good initial state directly +translates into fewer optimization steps. In QPE, for an initial state +:math:`\ket{\psi_{\text{in}}}` written in terms of the eigenstates $\{\ket{\psi_n}\}$ +of the system Hamiltonian .. math:: \ket{\psi_{\text{in}}} = c_0 \ket{\psi_0} + c_1 \ket{\psi_1} + ... - 3. Finally, in Lin-Tong the overlap with the ground-state affects the size of the - step in the cumulative distribution function, the bigger step making it easier to - detect the jump and thus resolve the position of the ground-state energy. +the probability of measuring the ground-state energy is directly proportional to the +overlap squared $|c_0|^2$ of the initial and ground states. Finally, in Lin-Tong, the +overlap with the ground-state affects the size of the step in the cumulative +distribution function. A bigger step makes it easier to detect the jump with fewer +circuit samples, and thus resolve the position of the ground-state energy. Even beyond +quantum phase estimation, good initial guesses are important for algorithms like +quantum approximate optimization (QAOA) and Grover search. -We see that in all these cases, having a high-quality initial state can seriously -reduce the runtime of the algorithm. By high-quality, we just mean that the prepared +To summarize, having a high-quality initial state can seriously reduce the runtime +of many quantum algorithms. By high-quality, we just mean that the prepared state in some sense minimizes the effort of the quantum algorithm. -Where do I get good initial states? +Where to get good initial states? ----------------------------------- -Much like when searching for a sunken submarine, there are a lot of things you might try +Much like searching for a sunken submarine, there are a lot of things you might try to prepare a good guess for the ground-state. Seeing as we are already using a quantum computer, we could turn to a quantum algorithm -to do the job. One idea is based on the **adiabatic principle** that tells us that the -eigenstates of Hamiltonians smoothly evolving with some parameter :math:`\lambda` -are smoothly evolving also. If we start from a simple Hamiltonian :math:`H(\lambda=0)` -whose ground state is easy to prepare, then evolve to the Hamiltonian -:math:`H(\lambda=1)` of interest, we should end up with the ground state of the final -Hamiltonian, or at least something close to it. In practice, the speed of state prep - (how quickly we can evolve :math:`lambda`) depends on the spectral gap -:math:`\Delta` between the ground and first excited states: and this gap turns out to -be quite small precisely in interesting molecules. There are other ideas like -quantum imaginary-time evolution and variational methods (like VQE itself), but they are -similarly limited by long runtimes or the need for expensive classical optimization. +to do the job -- this is the domain of quantum heuristics. The most famous idea is the +adiabatic state preparation approach, but there are others like quantum imaginary-time +evolution (QITE) and variational methods (for example, VQE), but they are typically +similarly limited by a) long runtimes, or b) the need for expensive classical optimization, +and c) provide no performance guarantees. On the other hand, we could rely on traditional computational chemistry techniques to -get us most of the way to an initial state. We could run a method like configuration +get us _most of the way_ to an initial state. We could run a method like configuration interaction with singles and doubles (CISD), or coupled cluster (CCSD), take the result -and implement it on the quantum computer. It won't not be the ground-state itself, but -it will certainly be better than the computational basis state :math:`\ket{0}^{\otimes N}`. +and implement it on the quantum computer. Such an initial state will not be the +ground-state, but it will certainly be better than the standard guess of a computational +basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. + It is this second approach that we focus on in this demo. Importing initial states into PennyLane @@ -85,98 +68,183 @@ 1. Configuration interaction with singles and doubles (CISD) from PySCF The first line of attack for state prep, CISD is unsophisticated but fast. - It won't be much help for strongly correlated molecules, but it is better + It will not be much help for strongly correlated molecules, but it is better than Hartree-Fock. 2. Coupled cluster with singles and doubles (CCSD) from PySCF In our implementation, we reconstruct the CCSD wavefunction to second order, making it a marginal improvement on the CISD approach. - 3. Density-matrix renormalization grourp (DMRG), from the Block2 library + 3. Density-matrix renormalization group (DMRG), from the Block2 library A powerful method based on matrix-product states, DMRG is considered state of the art for quantum chemistry simulations, capable of handling reasonably large - systems and correlated molecules. + systems (100-140 spin orbitals) and strongly correlated molecules. 4. Semistochastic heat-bath configuration interaction (SHCI), from the Dice library A member of the selective configuration interaction family of methods, SHCI is right there with DMRG in terms of accuracy and speed, and often used alongside it as a cross-check. These methods are incredibly diverse in terms of their outputs, not always returning an -object that can be turned into a PennyLane statevector. We have done this hard work: all -that you need to do is run these methods and pass their outputs to PennyLane's -`import_state`. +object that can be turned into a PennyLane statevector. We have already done this hard +work of conversion: all that you need to do is run these methods and pass their outputs +to PennyLane's `import_state`. Here is how to do this for CISD / CCSD methods via PySCF: we show the version based on the restricted Hartree-Fock orbitals, but the unrestricted versions are available too. """ from pyscf import gto, scf, ci -from pennylane import import_state -mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,0.71)]], basis='sto6g', symmetry='d2h') +from pennylane.qchem import import_state +R = 0.71 +mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,R)]], basis='sto6g', symmetry='d2h') myhf = scf.RHF(mol).run() myci = ci.CISD(myhf).run() wf_cisd = import_state(myci, tol=1e-1) print(wf_cisd) -# [pennylane output] +# [ 0. +0.j 0. +0.j 0. +0.j 0.1066467 +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# -0.99429698+0.j 0. +0.j 0. +0.j 0. +0.j] ############################################################################## -# The general function `import_state` can automatically detect the input type and apply -# the appropriate conversion protocol. It works similarly for CCSD +# The final object, PennyLane's statevector `wf_cisd`, is ready to be used as an +# initial state in a quantum circuit in PennyLane -- we will showcase this below for VQE. +# Conversion for CISD is straightforward: simply assign the PySCF-stored CI coefficients +# to appropriate determinants. +# +# The function `import_state` is general, and can automatically detect the input type +# and apply the appropriate conversion protocol. It works similarly to the above for CCSD from pyscf import cc mycc = cc.CCSD(myhf).run() wf_ccsd = import_state(mycc, tol=1e-1) +print(wf_ccsd) + +# [-0. +0.j -0. +0.j -0. +0.j 0.1066474-0.j +# -0. +0.j -0. +0.j -0. +0.j -0. +0.j +# -0. +0.j -0. +0.j -0. +0.j -0. +0.j +# -0.9942969+0.j -0. +0.j -0. +0.j -0. +0.j] + +# For CCSD conversion, the exponential form is expanded and terms are collected to +# second order to obtain the CI coefficients. ############################################################################## -# The second attribute tol specifies the cutoff beyond which contributions to the +# The second attribute `tol` specifies the cutoff beyond which contributions to the # wavefunctions are neglected. Internally, wavefunctions are stored in their Slater # determinant representation, and if their prefactor coefficient is below `tol`, those # determinants are dropped from the expression. ############################################################################## # The next two examples involve running external libraries Block2 and Dice, whose -# installation can require some care. We recommend the install guide in our internal -# package `Overlapper` for best performance. +# installation can require some care. While Block2 can be installed with `pip`, for +# Dice we recommend the install guide in our internal package `Overlapper`. # -# To obtain an initial state from a DMRG calculation using Block2, the following is sufficient +# To install the Block2 library with functionality needed for this demo, execute + +""" +.. code:: + +pip install block2==0.5.2rc10 --extra-index-url=https://block-hczhai.github.io/block2-preview/pypi/ +""" + +# The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, +# stored in `myhf` object, which we can re-use from before. from pyscf import mcscf from pyblock2.driver.core import DMRGDriver, SymmetryTypes from pyblock2._pyscf.ao2mo import integrals as itg -mc = mcscf.CASCI(mf, 2, 2) -ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = itg.get_rhf_integrals(mf, mc.ncore, mc.ncas, g2e_symm=8) -driver = DMRGDriver(scratch="./tmp", symm_type=SymmetryTypes.SU2) +mc = mcscf.CASCI(myhf, 2, 2) +ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = \ + itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) +driver = DMRGDriver(scratch="./dmrg_temp", symm_type=SymmetryTypes.SZ) driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore) ket = driver.get_random_mps(tag="GS") -driver.dmrg('add some attributes here') -wavefunction = driver.get_csf_coefficients(ket) -wf_dmrg = import_state(wavefunction, tol=1e-1) +driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ + noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) +dets, coeffs = driver.get_csf_coefficients(ket) +dets = dets.tolist() +wf_dmrg = import_state((dets, coeffs), tol=1e-1) +print(wf_dmrg) + +# The crucial part is calling `get_csf_coefficients()` on the solution stored in +# MPS form in the `ket`. This triggers an internal reconstruction calculation that +# converts the MPS to the sum of Slater determinants form, returning the output +# as a tuple `(list([int]), array(float])). The first element expresses a given Slater +# determinant using Fock occupation vectors of length equal to the number of spatial +# orbitals in Block2 notation, where `0` is unoccupied, `1` is occupied with spin-up +# electron, `2` is occupied with spin-down, and `3` is doubly occupied. The first +# element must be converted to `list` for `import_state` to accept it. The second +# element stores the CI coefficients. +# +# In principle, this functionality can be used to generate any initial state, provided +# the user specifies a list of Slater determinants and their coefficients in this form. ############################################################################## -# For Dice, the following does the trick +# For Dice, the installation process is more complicated (see the Overlapper install +# guide), but the execution process is similar -from pyscf.shciscf import shci import numpy as np -mol = gto.M(atom=[['Li', (0, 0, 0)], ['Li', (0,0,0.71)]], basis='sto6g', symmetry="d2h") -myhf = scf.RHF(mol).run() +def get_dets_coeffs_output(output_file, state=0): + ''' + Get CI coeff of SHCI from output file and parse them. + ''' + coeffs = [] + dets = [] + + with open(output_file) as fp: + line = fp.readline() + cnt = 1 + while line: + search = line.strip() + while search[:5] == 'State' and search[-1:] == str(state): + line = fp.readline() + cnt += 1 + try: + num = int(line.strip()[0]) + data = line.strip().split(' ') + coeffs.append(float(data[3])) + data_dets = '' + for i in np.arange(4, len(data)): + data_dets += data[i] + dets.append(data_dets) + except: + search = line.strip() + line = fp.readline() + cnt += 1 + + return dets, coeffs + +from pyscf.shciscf import shci ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 myshci = mcscf.CASCI(myhf, ncas, (nelecas_a, nelecas_b)) output_file = f"shci_output.out" myshci.fcisolver = shci.SHCI(myhf.mol) myshci.fcisolver.outputFile = output_file -e_tot, e_ci, ss, mo_coeff, mo_energies = myshci.kernel(verbose=5) -(dets, coeffs) = [post-process shci_output.out to get tuple of - dets (list of strs) and coeffs (list of floats)] -wf_shci = import_state((dets, coeffs), tol=1e-1) +# e_tot, e_ci, ss, mo_coeff, mo_energies = +myshci.kernel(verbose=5) +# wavefunction = get_dets_coeffs_output(output_file) +# print(type(wavefunction[0][0])) +# print(dets, coeffs) +# (dets, coeffs) = [post-process shci_output.out to get tuple of +# dets (list of strs) and coeffs (list of floats)] +# wf_shci = import_state((dets, coeffs), tol=1e-1) +# print(wf_shci) # If you are interested in a library that wraps all these methods and makes it easy to -# generate initial states from them, you might be interested in trying out Overlapper -# package. +# generate initial states from them, you should try Overlapper, our internal +# package built specifically for using traditional quantum chemistry methods +# to contrust initial states. ############################################################################## # Let us now demonstrate how the choice of a better initial state shortens the runtime -# of VQE for obtaining the ground-state energy of a molecule. Start by setting up the VQE -# calculation for our molecule. +# of VQE for obtaining the ground-state energy of a molecule. As a first step, create a +# molecule, a device and a simple VQE circuit with double excitations + +import pennylane as qml +from pennylane import qchem +from pennylane import numpy as np +H, qubits = qchem.molecular_hamiltonian(["H", "H"],\ + np.array([0,0,0,0,0,R/0.529]),basis="sto-3g") dev = qml.device("default.qubit", wires=qubits) @@ -185,54 +253,36 @@ def circuit_VQE(theta, wires, initstate): qml.DoubleExcitation(theta, wires=wires) @qml.qnode(dev, interface="autograd") -def cost_fn(theta): - circuit_VQE(theta, wires=wires) +def cost_fn(theta, initstate): + circuit_VQE(theta, wires=list(range(qubits)), initstate=initstate) return qml.expval(H) -stepsize = 0.4 -max_iterations = 30 -opt = qml.GradientDescentOptimizer(stepsize=stepsize) -theta = np.array(0.0, requires_grad=True) +# The `initstate` variable is where we can insert different initial states. ############################################################################## -# Next, run VQE with the bad basis state - -delta_E = 10 -conv_tol = 1e-8 -iteration = 0 -while abs(delta_E) > conv_tol and iteration < max_iterations: - theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=hf_state) - samples = cost_fn(theta) - delta_E = samples - prev_energy - print(f"theta = {theta:.5f}, prev energy = {prev_energy:.5f}, de = {delta_E:.5f}") - iteration += 1 - -energy_VQE = cost_fn(theta) -theta_opt = theta - -print("VQE energy: %.4f" % (energy_VQE)) -print(f"Optimal parameters: {theta_opt:.5f}") -print(f"Convergence achieved in {iteration} iterations") +# Next, create a function to execute VQE + +def run_VQE(initstate, conv_tol=1e-8, max_iterations=30): + opt = qml.GradientDescentOptimizer(stepsize=0.4) + theta = np.array(0.0, requires_grad=True) + delta_E, iteration = 10, 0 + while abs(delta_E) > conv_tol and iteration < max_iterations: + theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=initstate) + new_energy = cost_fn(theta) + delta_E = new_energy - prev_energy + print(f"theta = {theta:.5f}, prev energy = {prev_energy:.5f}, de = {delta_E:.5f}") + iteration += 1 + energy_VQE = cost_fn(theta) + theta_opt = theta + return energy_VQE, theta_opt ############################################################################## -# Now notice how the runtime is shortened to merely a handlful of iterations with the DMRG state - -delta_E = 10 -conv_tol = 1e-8 -iteration = 0 -while abs(delta_E) > conv_tol and iteration < max_iterations: - theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=wf_dmrg) - samples = cost_fn(theta) - delta_E = samples - prev_energy - print(f"theta = {theta:.5f}, prev energy = {prev_energy:.5f}, de = {delta_E:.5f}") - iteration += 1 - -energy_VQE = cost_fn(theta) -theta_opt = theta +# Let's compare the number of iterations to convergence for the Hartree-Fock state +# versus the DMRG state -print("VQE energy: %.4f" % (energy_VQE)) -print(f"Optimal parameters: {theta_opt:.5f}") -print(f"Convergence achieved in {iteration} iterations") +wf_hf = qchem.hf_state(2, 2) +energy_hf, theta_hf = run_VQE(wf_hf) +energy_dmrg, theta_dmrg = run_VQE(wf_dmrg) ############################################################################## # We can also consider what happens when you make the molecule more correlated. Simpler @@ -246,7 +296,7 @@ def cost_fn(theta): # metric of success for initial states in quantum algorithms. Because in PennyLane these # are statevectors, computing an overlap is as easy as computing a dot product -ovlp = np.dot(wf_dmrg, wf_shci) +# ovlp = np.dot(wf_dmrg, wf_shci) ############################################################################## # Summary From ab25ec1cd50b0159fa11a2fc0753054593e7a219 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 12:40:00 -0400 Subject: [PATCH 04/65] new draft of initial state demo --- .../hf_vs_ccsd_for_vqe.png | Bin 0 -> 50932 bytes .../hf_vs_ccsd_for_vqe_stretched.png | Bin 0 -> 18518 bytes .../tutorial_initial_state_preparation.py | 155 ++++++++---------- 3 files changed, 64 insertions(+), 91 deletions(-) create mode 100644 demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe.png create mode 100644 demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe_stretched.png diff --git a/demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe.png b/demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe.png new file mode 100644 index 0000000000000000000000000000000000000000..daef7db18423b771660aa239385f9d0a8525afb0 GIT binary patch literal 50932 zcmcG0cQl+`)UOmNWROG`MDnKSC5GrddN+C(y(MZ8q#;q$ln_L(ql7W~B*aLF&Zt8~ z)G`^QBhSV(e67?gTK$-)3ETTqPh?O{da8I zh5G>&750Uus*=eA+g1E&`zdEi=ce!LZd={-!Z7^_1JhQzEk$BSs5(G=<%RriEqK{V-N7P1X_FWcj|`7p1$b zU}CBd#%knF=pT>tR9R0zze0-t&%Y`~B}gR7US#R;Bp7L14i1N#+Sm~F)JMXmct4yN z85tShULGR;UCc%o7vDUz1`mDkHDs8KJfsk7hxD$-=lB=%kzy3~KUXxZNo#9qef;u8 zbq;wNP}QnR#!ypJ2mO3;VIdXwU`+JT zR}oGvZEfOPW4-Flxz3n7@#nGq7K~V*=FK}9QvQXy?{5z%uz=~8I85Tlf@i|LzrN%l z4QdMyd^(Y-J#P1g84UBN^}4K>z?8~kk!U@2QD*RTxZxbdzU^q=0*?Lv``vrCG9k@> zlh#sCGnpyH%*v((1IVFTy7EkP+j7VDhtV1SlJe>XLhNc}od0S9b;jz`0;#$O#?^?E zp2)(w>95Yv(=^c2YD`LDL$r1Z5B|_Lt!`Qb&2`hR)=8#}`Py3Br^;?eQMOB@NXuQ; zW#tt+mCz&sTy3nO1#Q1Sw1@@gQ3#Y|(q^ozRb#_2j@e{vuZ_kk!_Fs8B6X}O4m~z= zh;EZNf9>RqfFHo24eM26RjD*Kv-9N^>_Z*)TKldGO*no|m)4GttNw5OB?E`F-gaVK zR~d06go8M4LGbQvR6d*lvnnoLj?Wn_sVG4gxs;_XYUI5rtAw=)hg8SJ*^{+`K$h~Uy!4oE)i@H8PgCMMi-AuIM|mKT*Kb6 zX4~>hb1wKY`Dc|eZipT{qIko;?_x`DRlMqC_=856mi|3&Vg~=q55Lcdoh^Pt5cVYb?=A`{sRXq&7M_H z=ns%tfAlKo;PF-bl|BSK&~y%sq{rbJTsTh*U0jWcNkaLq!oOo(it4=~Qe1iBbIgoX z5?k)v9Sb2R)yC0tdY+E|7O?frS8|hK9^%PL_ZC zIA~;S?EUNOD+%W=#!1)gZ~@zjXm~9ww-tGdiq`dq)o%GUW4hgR`ND-M}`z7;lU@bBE=4Nc&yd@uB zcd6<8|N#eL`HY#Lmq2Y&#iOJo-z`z5za&3DB z0cqVZI2}RuCX;6l*D7}RxB4cZP}5HB#Ky&;qxq?eo10~=FcB?1X`=01;oF8y#Jb7V ztgy9eu&zE_xrLMGXhmQrjK0jQvTnXRwP|CwjaGQf?%+2|6QQEX`jP752eD|qq2%Oh zAnS6Zam%L7d1~h8i68AU#m9xD@5W=8fFhl{DIiDL9um6D`)7Z4=7*GQjE z(ASd44&uHN8zXscaXR)%iU%O5p9Lu)5* z#LLSY^y`)SM0F<@;rNH+Y|>l~=fdw8S%0DyLn@gX8O|*vzQRIsjuhsD;39`kO#T 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 z%0D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 a%oPI@I!_TV)De&mT+>j|RxVYv4*fsK4=Tz4 literal 0 HcmV?d00001 diff --git a/demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe_stretched.png b/demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe_stretched.png new file mode 100644 index 0000000000000000000000000000000000000000..14c964139948149dc7d3c23ec1a27103e6df3c23 GIT binary patch literal 18518 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 literal 0 HcmV?d00001 diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index a2514b70c2..1bc8fca534 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -43,15 +43,15 @@ Where to get good initial states? ----------------------------------- -Much like searching for a sunken submarine, there are a lot of things you might try -to prepare a good guess for the ground-state. +Much like searching for a needle in a haystack, there are a lot of things you might try +to prepare a good guess for the ground-state in the large-dimensional Hilbert space. Seeing as we are already using a quantum computer, we could turn to a quantum algorithm to do the job -- this is the domain of quantum heuristics. The most famous idea is the adiabatic state preparation approach, but there are others like quantum imaginary-time -evolution (QITE) and variational methods (for example, VQE), but they are typically -similarly limited by a) long runtimes, or b) the need for expensive classical optimization, -and c) provide no performance guarantees. +evolution (QITE) and variational methods (for example, VQE). Unfortunately, these +methods are typically similarly limited by a) long runtimes, or b) the need for +expensive classical optimization, and c) provide no performance guarantees. On the other hand, we could rely on traditional computational chemistry techniques to get us _most of the way_ to an initial state. We could run a method like configuration @@ -98,12 +98,7 @@ myhf = scf.RHF(mol).run() myci = ci.CISD(myhf).run() wf_cisd = import_state(myci, tol=1e-1) -print(wf_cisd) - -# [ 0. +0.j 0. +0.j 0. +0.j 0.1066467 +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# -0.99429698+0.j 0. +0.j 0. +0.j 0. +0.j] +print(f"CISD-based statevector\n{wf_cisd}") ############################################################################## # The final object, PennyLane's statevector `wf_cisd`, is ready to be used as an @@ -117,12 +112,7 @@ from pyscf import cc mycc = cc.CCSD(myhf).run() wf_ccsd = import_state(mycc, tol=1e-1) -print(wf_ccsd) - -# [-0. +0.j -0. +0.j -0. +0.j 0.1066474-0.j -# -0. +0.j -0. +0.j -0. +0.j -0. +0.j -# -0. +0.j -0. +0.j -0. +0.j -0. +0.j -# -0.9942969+0.j -0. +0.j -0. +0.j -0. +0.j] +print(f"CCSD-based statevector\n{wf_ccsd}") # For CCSD conversion, the exponential form is expanded and terms are collected to # second order to obtain the CI coefficients. @@ -157,14 +147,14 @@ itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) driver = DMRGDriver(scratch="./dmrg_temp", symm_type=SymmetryTypes.SZ) driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) -mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore) +mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore, iprint=0) ket = driver.get_random_mps(tag="GS") driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) -dets, coeffs = driver.get_csf_coefficients(ket) +dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) dets = dets.tolist() wf_dmrg = import_state((dets, coeffs), tol=1e-1) -print(wf_dmrg) +print(f"DMRG-based statevector\n{wf_dmrg}") # The crucial part is calling `get_csf_coefficients()` on the solution stored in # MPS form in the `ket`. This triggers an internal reconstruction calculation that @@ -181,59 +171,31 @@ ############################################################################## # For Dice, the installation process is more complicated (see the Overlapper install -# guide), but the execution process is similar - -import numpy as np -def get_dets_coeffs_output(output_file, state=0): - ''' - Get CI coeff of SHCI from output file and parse them. - ''' - coeffs = [] - dets = [] - - with open(output_file) as fp: - line = fp.readline() - cnt = 1 - while line: - search = line.strip() - while search[:5] == 'State' and search[-1:] == str(state): - line = fp.readline() - cnt += 1 - try: - num = int(line.strip()[0]) - data = line.strip().split(' ') - coeffs.append(float(data[3])) - data_dets = '' - for i in np.arange(4, len(data)): - data_dets += data[i] - dets.append(data_dets) - except: - search = line.strip() - line = fp.readline() - cnt += 1 - - return dets, coeffs - -from pyscf.shciscf import shci -ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 -myshci = mcscf.CASCI(myhf, ncas, (nelecas_a, nelecas_b)) -output_file = f"shci_output.out" -myshci.fcisolver = shci.SHCI(myhf.mol) -myshci.fcisolver.outputFile = output_file -# e_tot, e_ci, ss, mo_coeff, mo_energies = -myshci.kernel(verbose=5) -# wavefunction = get_dets_coeffs_output(output_file) -# print(type(wavefunction[0][0])) -# print(dets, coeffs) -# (dets, coeffs) = [post-process shci_output.out to get tuple of -# dets (list of strs) and coeffs (list of floats)] -# wf_shci = import_state((dets, coeffs), tol=1e-1) -# print(wf_shci) +# guide), but the execution process is similar: + +# .. note:: +# +# .. code-block:: python +# >>> from pyscf.shciscf import shci +# >>> ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 +# >>> myshci = mcscf.CASCI(myhf, ncas, (nelecas_a, nelecas_b)) +# >>> output_file = f"shci_output.out" +# >>> myshci.fcisolver = shci.SHCI(myhf.mol) +# >>> myshci.fcisolver.outputFile = output_file +# >>> e_tot, e_ci, ss, mo_coeff, mo_energies = +# >>> myshci.kernel(verbose=5) +# >>> wavefunction = get_dets_coeffs_output(output_file) +# >>> print(type(wavefunction[0][0])) +# >>> print(dets, coeffs) +# >>> (dets, coeffs) = [post-process shci_output.out to get tuple of +# >>> dets (list of strs) and coeffs (list of floats)] +# >>> wf_shci = import_state((dets, coeffs), tol=1e-1) +# >>> print(f"SHCI-based statevector\n{wf_shci}") # If you are interested in a library that wraps all these methods and makes it easy to # generate initial states from them, you should try Overlapper, our internal # package built specifically for using traditional quantum chemistry methods -# to contrust initial states. +# to construct initial states. ############################################################################## # Let us now demonstrate how the choice of a better initial state shortens the runtime @@ -243,7 +205,7 @@ def get_dets_coeffs_output(output_file, state=0): import pennylane as qml from pennylane import qchem from pennylane import numpy as np -H, qubits = qchem.molecular_hamiltonian(["H", "H"],\ +H2mol, qubits = qchem.molecular_hamiltonian(["H", "H"],\ np.array([0,0,0,0,0,R/0.529]),basis="sto-3g") dev = qml.device("default.qubit", wires=qubits) @@ -253,50 +215,69 @@ def circuit_VQE(theta, wires, initstate): qml.DoubleExcitation(theta, wires=wires) @qml.qnode(dev, interface="autograd") -def cost_fn(theta, initstate): +def cost_fn(theta, initstate=None, ham=H2mol): circuit_VQE(theta, wires=list(range(qubits)), initstate=initstate) - return qml.expval(H) + return qml.expval(ham) # The `initstate` variable is where we can insert different initial states. ############################################################################## # Next, create a function to execute VQE -def run_VQE(initstate, conv_tol=1e-8, max_iterations=30): +def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): opt = qml.GradientDescentOptimizer(stepsize=0.4) theta = np.array(0.0, requires_grad=True) delta_E, iteration = 10, 0 while abs(delta_E) > conv_tol and iteration < max_iterations: - theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=initstate) - new_energy = cost_fn(theta) + theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=initstate, ham=ham) + new_energy = cost_fn(theta, initstate=initstate, ham=ham) delta_E = new_energy - prev_energy print(f"theta = {theta:.5f}, prev energy = {prev_energy:.5f}, de = {delta_E:.5f}") iteration += 1 - energy_VQE = cost_fn(theta) + energy_VQE = cost_fn(theta, initstate=initstate, ham=ham) theta_opt = theta return energy_VQE, theta_opt ############################################################################## -# Let's compare the number of iterations to convergence for the Hartree-Fock state -# versus the DMRG state +# Now let's compare the number of iterations to convergence for the Hartree-Fock state +# versus the CCSD state -wf_hf = qchem.hf_state(2, 2) +wf_hf = np.zeros(2**qubits) +wf_hf[3] = 1. energy_hf, theta_hf = run_VQE(wf_hf) -energy_dmrg, theta_dmrg = run_VQE(wf_dmrg) +energy_ccsd, theta_ccsd = run_VQE(wf_ccsd) + +""" +.. figure:: ../demonstrations/initial_state/hf_vs_ccsd_on_vqe.png + :scale: 65% + :alt: Comparing HF and CCSD initial states for VQE on H2 molecule. + :align: center +""" ############################################################################## # We can also consider what happens when you make the molecule more correlated. Simpler -# methods like CISD / CCSD will begin to faulter, whiler SHCI and DMRG will continue to +# methods like HF will begin to faulter, whiler SHCI and DMRG will continue to # perform at a high level -### show example ### +H2mol_corr, qubits = qchem.molecular_hamiltonian(["H", "H"],\ + np.array([0,0,0,0,0,R*2/0.529]),basis="sto-3g") +energy_hf, theta_hf = run_VQE(wf_hf, ham=H2mol_corr) +energy_ccsd, theta_ccsd = run_VQE(wf_ccsd, ham=H2mol_corr) +energy_dmrg, theta_dmrg = run_VQE(wf_dmrg, ham=H2mol_corr) + +""" +.. figure:: ../demonstrations/initial_state/hf_vs_ccsd_on_vqe_stretched.png + :scale: 65% + :alt: Comparing HF and CCSD initial states for VQE on stretched H2 molecule. + :align: center +""" ############################################################################## # Finally, it is straightforward to compare the initial states through overlap -- the main # metric of success for initial states in quantum algorithms. Because in PennyLane these # are statevectors, computing an overlap is as easy as computing a dot product -# ovlp = np.dot(wf_dmrg, wf_shci) +ovlp = np.dot(wf_dmrg, wf_hf) ############################################################################## # Summary @@ -309,14 +290,6 @@ def run_VQE(initstate, conv_tol=1e-8, max_iterations=30): # to generate outputs that can then be converted to PennyLane's statevector format # with a single line of code. # -# References -# ---------- -# -# .. [#surjan] -# -# Peter R. Surjan, "Second Quantized Approach to Quantum Chemistry". Springer-Verlag, 1989. -# -# # About the author # ---------------- # .. include:: ../_static/authors/stepan_fomichev.txt From 4bd11b659c0bbcdf9127f9e4094f2849e4172d9a Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 12:41:18 -0400 Subject: [PATCH 05/65] add header for vqe section --- demonstrations/tutorial_initial_state_preparation.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 1bc8fca534..d58822993e 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -197,6 +197,11 @@ # package built specifically for using traditional quantum chemistry methods # to construct initial states. +""" +Application: speed up VQE +------------------------- +""" + ############################################################################## # Let us now demonstrate how the choice of a better initial state shortens the runtime # of VQE for obtaining the ground-state energy of a molecule. As a first step, create a From a04ff4b698a5079615bf5ab1bf6751236f9cac96 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 12:44:15 -0400 Subject: [PATCH 06/65] [skip ci] text edits --- demonstrations/tutorial_initial_state_preparation.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index d58822993e..ff0b4301c2 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -260,9 +260,9 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): """ ############################################################################## -# We can also consider what happens when you make the molecule more correlated. Simpler -# methods like HF will begin to faulter, whiler SHCI and DMRG will continue to -# perform at a high level +# We can also consider what happens when you make the molecule more correlated, for example +# by stretching its bonds. Simpler methods like HF will require even more VQE iterations, +# while SHCI and DMRG will continue to provide good starting points for the algorithm. H2mol_corr, qubits = qchem.molecular_hamiltonian(["H", "H"],\ np.array([0,0,0,0,0,R*2/0.529]),basis="sto-3g") From b24b4e77082a442d1f4f9dd5afa15f0ed2a10ecd Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 12:47:35 -0400 Subject: [PATCH 07/65] trigger build From f532439050c0171a99a9e845d7e0f93687658e66 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 12:56:03 -0400 Subject: [PATCH 08/65] fixes to metadata --- ...orial_initial_state_preparation.metadata.json | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.metadata.json b/demonstrations/tutorial_initial_state_preparation.metadata.json index e767d92cbe..d1546fdf80 100644 --- a/demonstrations/tutorial_initial_state_preparation.metadata.json +++ b/demonstrations/tutorial_initial_state_preparation.metadata.json @@ -12,29 +12,13 @@ ], "tags": [], "previewImages": [ - // { - // "type": "thumbnail", - // "uri": "/_images/thumbnail_tutorial_fermionic_operators.png" - // } ], "seoDescription": "Prepare initial states for quantum algorithms from output of traditional quantum chemistry methods.", "doi": "", "canonicalURL": "/qml/demos/tutorial_initial_state_preparation", "references": [ - { - // "id": "surjan", - // "type": "book", - // "title": "Second Quantized Approach to Quantum Chemistry", - // "authors": "Peter R. Surjan", - // "year": "1989", - // "publisher": "Springer-Verlag", - // "url": "" - } ], "basedOnPapers": [ - { - // initial statep prep paper - } ], "referencedByPapers": [], "relatedContent": [ From f8179185542c512a32e4d00f7d8122d0c1eb14d4 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 13:00:05 -0400 Subject: [PATCH 09/65] fixes to metadata --- .../tutorial_initial_state_preparation.metadata.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.metadata.json b/demonstrations/tutorial_initial_state_preparation.metadata.json index d1546fdf80..e178175367 100644 --- a/demonstrations/tutorial_initial_state_preparation.metadata.json +++ b/demonstrations/tutorial_initial_state_preparation.metadata.json @@ -11,15 +11,13 @@ "Quantum Chemistry" ], "tags": [], - "previewImages": [ - ], + "previewImages": [], "seoDescription": "Prepare initial states for quantum algorithms from output of traditional quantum chemistry methods.", "doi": "", "canonicalURL": "/qml/demos/tutorial_initial_state_preparation", "references": [ ], - "basedOnPapers": [ - ], + "basedOnPapers": [], "referencedByPapers": [], "relatedContent": [ { From 6345c4791501280534086002b745e456bc2e6e4f Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 13:10:06 -0400 Subject: [PATCH 10/65] fix metadata and add author data --- _static/authors/stepan_fomichev.jpg | Bin 0 -> 187269 bytes _static/authors/stepan_fomichev.txt | 5 +++++ .../initial_state_preparation/stub.png | Bin 0 -> 86747 bytes ...ial_initial_state_preparation.metadata.json | 7 ++++++- 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 _static/authors/stepan_fomichev.jpg create mode 100644 _static/authors/stepan_fomichev.txt create mode 100644 demonstrations/initial_state_preparation/stub.png diff --git a/_static/authors/stepan_fomichev.jpg b/_static/authors/stepan_fomichev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eee48b91bb02c5b738af4c0f5347999088ad2886 GIT binary patch literal 187269 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

o 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 literal 0 HcmV?d00001 diff --git a/_static/authors/stepan_fomichev.txt b/_static/authors/stepan_fomichev.txt new file mode 100644 index 0000000000..c34c30d37e --- /dev/null +++ b/_static/authors/stepan_fomichev.txt @@ -0,0 +1,5 @@ +.. bio:: Stepan Fomichev + :photo: ../_static/authors/stepan_fomichev.jpg + + + Stepan Fomichev is a quantum scientist working at Xanadu. His background is in condesned matter physics, with a focus on lattice vibrations and electron-phonon coupling. As part of the Algorithms team, he focuses on researching and developing prospective applications for quantum algorithms. \ No newline at end of file diff --git a/demonstrations/initial_state_preparation/stub.png b/demonstrations/initial_state_preparation/stub.png new file mode 100644 index 0000000000000000000000000000000000000000..1a53d1886a750905d2890172a6a32439730e678b GIT binary patch literal 86747 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%0Dad%$N4-V!A^Q^tM%hqp6eQMG*@8@_$_I?7) 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

nEt!r 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 Date: Fri, 13 Oct 2023 13:25:39 -0400 Subject: [PATCH 11/65] turn dmrg part into a note to avoid dependency --- .../tutorial_initial_state_preparation.py | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index ff0b4301c2..e6167b2892 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -139,22 +139,24 @@ # The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, # stored in `myhf` object, which we can re-use from before. -from pyscf import mcscf -from pyblock2.driver.core import DMRGDriver, SymmetryTypes -from pyblock2._pyscf.ao2mo import integrals as itg -mc = mcscf.CASCI(myhf, 2, 2) -ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = \ - itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) -driver = DMRGDriver(scratch="./dmrg_temp", symm_type=SymmetryTypes.SZ) -driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) -mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore, iprint=0) -ket = driver.get_random_mps(tag="GS") -driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ - noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) -dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) -dets = dets.tolist() -wf_dmrg = import_state((dets, coeffs), tol=1e-1) -print(f"DMRG-based statevector\n{wf_dmrg}") +# .. note:: +# .. code-block::python +# >>> from pyscf import mcscf +# >>> from pyblock2.driver.core import DMRGDriver, SymmetryTypes +# >>> from pyblock2._pyscf.ao2mo import integrals as itg +# >>> mc = mcscf.CASCI(myhf, 2, 2) +# >>> ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = \ +# >>> itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) +# >>> driver = DMRGDriver(scratch="./dmrg_temp", symm_type=SymmetryTypes.SZ) +# >>> driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) +# >>> mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore, iprint=0) +# >>> ket = driver.get_random_mps(tag="GS") +# >>> driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ +# >>> noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) +# >>> dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) +# >>> dets = dets.tolist() +# >>> wf_dmrg = import_state((dets, coeffs), tol=1e-1) +# >>> print(f"DMRG-based statevector\n{wf_dmrg}") # The crucial part is calling `get_csf_coefficients()` on the solution stored in # MPS form in the `ket`. This triggers an internal reconstruction calculation that @@ -175,7 +177,7 @@ # .. note:: # -# .. code-block:: python +# .. code-block::python # >>> from pyscf.shciscf import shci # >>> ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 # >>> myshci = mcscf.CASCI(myhf, ncas, (nelecas_a, nelecas_b)) @@ -282,7 +284,7 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): # metric of success for initial states in quantum algorithms. Because in PennyLane these # are statevectors, computing an overlap is as easy as computing a dot product -ovlp = np.dot(wf_dmrg, wf_hf) +ovlp = np.dot(wf_ccsd, wf_hf) ############################################################################## # Summary From 2a2c17c77a83c6336e2ae2d1066c79c84f4326bb Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 13:43:40 -0400 Subject: [PATCH 12/65] final dmrg reference removed --- demonstrations/tutorial_initial_state_preparation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index e6167b2892..59f62e8bf4 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -270,7 +270,7 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): np.array([0,0,0,0,0,R*2/0.529]),basis="sto-3g") energy_hf, theta_hf = run_VQE(wf_hf, ham=H2mol_corr) energy_ccsd, theta_ccsd = run_VQE(wf_ccsd, ham=H2mol_corr) -energy_dmrg, theta_dmrg = run_VQE(wf_dmrg, ham=H2mol_corr) +# energy_dmrg, theta_dmrg = run_VQE(wf_dmrg, ham=H2mol_corr) """ .. figure:: ../demonstrations/initial_state/hf_vs_ccsd_on_vqe_stretched.png From cb01d13afc0760f54f797d6e2bf292e5c15baa72 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 13:57:59 -0400 Subject: [PATCH 13/65] fix previewimage metadata --- demonstrations/tutorial_initial_state_preparation.metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demonstrations/tutorial_initial_state_preparation.metadata.json b/demonstrations/tutorial_initial_state_preparation.metadata.json index 690d7821a1..01abf8d6aa 100644 --- a/demonstrations/tutorial_initial_state_preparation.metadata.json +++ b/demonstrations/tutorial_initial_state_preparation.metadata.json @@ -14,7 +14,7 @@ "previewImages": [ { "type": "thumbnail", - "uri": "/_images/stub.png" + "uri": "/_images/NOON.png" } ], "seoDescription": "Prepare initial states for quantum algorithms from output of traditional quantum chemistry methods.", From 9fc415dbbb53f3835fda5632179cf6784773d8c8 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 14:38:18 -0400 Subject: [PATCH 14/65] remove printing from vqe execution and fix images not showing up --- demonstrations/tutorial_initial_state_preparation.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 59f62e8bf4..496532e856 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -199,12 +199,12 @@ # package built specifically for using traditional quantum chemistry methods # to construct initial states. +############################################################################## """ Application: speed up VQE ------------------------- """ -############################################################################## # Let us now demonstrate how the choice of a better initial state shortens the runtime # of VQE for obtaining the ground-state energy of a molecule. As a first step, create a # molecule, a device and a simple VQE circuit with double excitations @@ -239,7 +239,6 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=initstate, ham=ham) new_energy = cost_fn(theta, initstate=initstate, ham=ham) delta_E = new_energy - prev_energy - print(f"theta = {theta:.5f}, prev energy = {prev_energy:.5f}, de = {delta_E:.5f}") iteration += 1 energy_VQE = cost_fn(theta, initstate=initstate, ham=ham) theta_opt = theta @@ -254,6 +253,7 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): energy_hf, theta_hf = run_VQE(wf_hf) energy_ccsd, theta_ccsd = run_VQE(wf_ccsd) +############################################################################## """ .. figure:: ../demonstrations/initial_state/hf_vs_ccsd_on_vqe.png :scale: 65% @@ -272,6 +272,7 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): energy_ccsd, theta_ccsd = run_VQE(wf_ccsd, ham=H2mol_corr) # energy_dmrg, theta_dmrg = run_VQE(wf_dmrg, ham=H2mol_corr) +############################################################################## """ .. figure:: ../demonstrations/initial_state/hf_vs_ccsd_on_vqe_stretched.png :scale: 65% From eacbc995ca103906db866c14395c5c6ab8465872 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 15:48:30 -0400 Subject: [PATCH 15/65] update demos qchem rst file --- demos_quantum-chemistry.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/demos_quantum-chemistry.rst b/demos_quantum-chemistry.rst index 314bb42c4c..3802eac025 100644 --- a/demos_quantum-chemistry.rst +++ b/demos_quantum-chemistry.rst @@ -105,6 +105,12 @@ Quantum chemistry is one of the leading application areas of quantum computers. :description: :doc:`demos/tutorial_fermionic_operators` :tags: chemistry +.. gallery-item:: + :tooltip: Initial State Preparation for Quantum Chemistry + :figure: demonstrations/resource_estimation/resource_estimation.jpeg + :description: :doc:`demos/tutorial_initial_state_preparation` + :tags: chemistry + :html:`

` From df9dcb2f68a202c0a5cdb653a489681f1096d7da Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 13 Oct 2023 15:50:21 -0400 Subject: [PATCH 16/65] update demos qchem rst file --- demos_quantum-chemistry.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/demos_quantum-chemistry.rst b/demos_quantum-chemistry.rst index 3802eac025..010f009200 100644 --- a/demos_quantum-chemistry.rst +++ b/demos_quantum-chemistry.rst @@ -133,4 +133,5 @@ Quantum chemistry is one of the leading application areas of quantum computers. demos/tutorial_classically_boosted_vqe demos/tutorial_qchem_external demos/tutorial_resource_estimation + demos/tutorial_initial_state_preparation From b93c67551671e0f9fce7d9603cf1bd3aac6f6693 Mon Sep 17 00:00:00 2001 From: soranjh Date: Fri, 13 Oct 2023 16:24:32 -0400 Subject: [PATCH 17/65] rearrange text and code --- .../tutorial_initial_state_preparation.py | 254 +++++++----------- 1 file changed, 94 insertions(+), 160 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 496532e856..f6e26f50bc 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -13,82 +13,38 @@ *Author: Stepan Fomichev — Posted: 20 October 2023. Last updated: 20 October 2023.* -How do initial states affect quantum algorithms? ------------------------------------------------- -From the variational quantum eigensolver (VQE) to quantum phase estimation (QPE), to even -the recent ISQ-era algorithms like the Lin-Tong approach, many quantum algorithms for -obtaining the ground state of a chemical system require a good initial state to be -useful. (add three images here) +A high-quality initial state can significantly reduce the runtime of many quantum algorithms. From +the variational quantum eigensolver (VQE) to quantum phase estimation (QPE), to even the recent +intermediate-scale quantum (ISQ) algorithms, obtaining the ground state of a chemical system require +a good initial state. For instance, in the case of VQE, a good initial state directly translates into fewer +optimization steps. In QPE, the probability of measuring the ground-state energy is directly +proportional to the overlap of the initial and ground states. Even beyond quantum phase estimation, +good initial guesses are important for algorithms like quantum approximate optimization (QAOA) +and Grover search. -In the case of VQE, as we will see later in this demo, a good initial state directly -translates into fewer optimization steps. In QPE, for an initial state -:math:`\ket{\psi_{\text{in}}}` written in terms of the eigenstates $\{\ket{\psi_n}\}$ -of the system Hamiltonian - -.. math:: - - \ket{\psi_{\text{in}}} = c_0 \ket{\psi_0} + c_1 \ket{\psi_1} + ... - -the probability of measuring the ground-state energy is directly proportional to the -overlap squared $|c_0|^2$ of the initial and ground states. Finally, in Lin-Tong, the -overlap with the ground-state affects the size of the step in the cumulative -distribution function. A bigger step makes it easier to detect the jump with fewer -circuit samples, and thus resolve the position of the ground-state energy. Even beyond -quantum phase estimation, good initial guesses are important for algorithms like -quantum approximate optimization (QAOA) and Grover search. - -To summarize, having a high-quality initial state can seriously reduce the runtime -of many quantum algorithms. By high-quality, we just mean that the prepared -state in some sense minimizes the effort of the quantum algorithm. - -Where to get good initial states? ------------------------------------ Much like searching for a needle in a haystack, there are a lot of things you might try -to prepare a good guess for the ground-state in the large-dimensional Hilbert space. - -Seeing as we are already using a quantum computer, we could turn to a quantum algorithm -to do the job -- this is the domain of quantum heuristics. The most famous idea is the -adiabatic state preparation approach, but there are others like quantum imaginary-time -evolution (QITE) and variational methods (for example, VQE). Unfortunately, these -methods are typically similarly limited by a) long runtimes, or b) the need for -expensive classical optimization, and c) provide no performance guarantees. - -On the other hand, we could rely on traditional computational chemistry techniques to -get us _most of the way_ to an initial state. We could run a method like configuration -interaction with singles and doubles (CISD), or coupled cluster (CCSD), take the result -and implement it on the quantum computer. Such an initial state will not be the +to prepare a good guess for the ground-state in the large-dimensional Hilbert space. In this +tutorial, we show how to use traditional computational chemistry techniques to +get us _most of the way_ to an initial state. Such an initial state will not be the ground-state, but it will certainly be better than the standard guess of a computational -basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. - -It is this second approach that we focus on in this demo. - -Importing initial states into PennyLane ---------------------------------------- -The current version of PennyLane can import initial states from the following methods - - 1. Configuration interaction with singles and doubles (CISD) from PySCF - The first line of attack for state prep, CISD is unsophisticated but fast. - It will not be much help for strongly correlated molecules, but it is better - than Hartree-Fock. - 2. Coupled cluster with singles and doubles (CCSD) from PySCF - In our implementation, we reconstruct the CCSD wavefunction to second order, - making it a marginal improvement on the CISD approach. - 3. Density-matrix renormalization group (DMRG), from the Block2 library - A powerful method based on matrix-product states, DMRG is considered state of the - art for quantum chemistry simulations, capable of handling reasonably large - systems (100-140 spin orbitals) and strongly correlated molecules. - 4. Semistochastic heat-bath configuration interaction (SHCI), from the Dice library - A member of the selective configuration interaction family of methods, SHCI is - right there with DMRG in terms of accuracy and speed, and often used alongside it - as a cross-check. - -These methods are incredibly diverse in terms of their outputs, not always returning an -object that can be turned into a PennyLane statevector. We have already done this hard -work of conversion: all that you need to do is run these methods and pass their outputs -to PennyLane's `import_state`. - -Here is how to do this for CISD / CCSD methods via PySCF: we show the version based on -the restricted Hartree-Fock orbitals, but the unrestricted versions are available too. +basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. + +Importing initial states +------------------------ +We can import initial states obtained from several post-Hartree-Fock quantum chemistry calculations +to PennyLane. These methods are incredibly diverse in terms of their outputs, not always returning +an object that can be turned into a PennyLane statevector. We have already done this hard +work of conversion: all that you need to do is run these methods and pass their outputs +to PennyLane's :func:`~.pennylane.qchem.import_state` function. The currently supported methods are +configuration interaction with singles and doubles (CISD), coupled cluster (CCSD), Density-matrix +renormalization group (DMRG) and Semistochastic heat-bath configuration interaction (SHCI). + +CISD states +^^^^^^^^^^^ +The first line of attack for initial state preparation is CISD calculations performed with the PySCF +library.It is unsophisticated but fast. It will not be much help for strongly correlated molecules, +but it is better than Hartree-Fock. Here is the code example based on the restricted Hartree-Fock +orbitals, but the unrestricted version is available too. """ from pyscf import gto, scf, ci @@ -106,58 +62,56 @@ # Conversion for CISD is straightforward: simply assign the PySCF-stored CI coefficients # to appropriate determinants. # -# The function `import_state` is general, and can automatically detect the input type -# and apply the appropriate conversion protocol. It works similarly to the above for CCSD +# CCSD states +# ^^^^^^^^^^^ +# The function `import_state` is general, and can automatically detect the input type +# and apply the appropriate conversion protocol. It works similarly to the above for CCSD. from pyscf import cc mycc = cc.CCSD(myhf).run() wf_ccsd = import_state(mycc, tol=1e-1) print(f"CCSD-based statevector\n{wf_ccsd}") +############################################################################## # For CCSD conversion, the exponential form is expanded and terms are collected to # second order to obtain the CI coefficients. - -############################################################################## +# # The second attribute `tol` specifies the cutoff beyond which contributions to the # wavefunctions are neglected. Internally, wavefunctions are stored in their Slater # determinant representation, and if their prefactor coefficient is below `tol`, those # determinants are dropped from the expression. - -############################################################################## -# The next two examples involve running external libraries Block2 and Dice, whose -# installation can require some care. While Block2 can be installed with `pip`, for -# Dice we recommend the install guide in our internal package `Overlapper`. -# -# To install the Block2 library with functionality needed for this demo, execute - -""" -.. code:: - -pip install block2==0.5.2rc10 --extra-index-url=https://block-hczhai.github.io/block2-preview/pypi/ -""" - +# +# DMRG states +# ^^^^^^^^^^^ +# The DMRG calculations involve running the library Block2. To install the Block2 library with +# functionality needed for this demo, execute +# +# .. code-block:: bash +# +# pip install block2==0.5.2rc10 --extra-index-url=https://block-hczhai.github.io/block2-preview/pypi/ +# # The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, # stored in `myhf` object, which we can re-use from before. - -# .. note:: -# .. code-block::python -# >>> from pyscf import mcscf -# >>> from pyblock2.driver.core import DMRGDriver, SymmetryTypes -# >>> from pyblock2._pyscf.ao2mo import integrals as itg -# >>> mc = mcscf.CASCI(myhf, 2, 2) -# >>> ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = \ -# >>> itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) -# >>> driver = DMRGDriver(scratch="./dmrg_temp", symm_type=SymmetryTypes.SZ) -# >>> driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) -# >>> mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore, iprint=0) -# >>> ket = driver.get_random_mps(tag="GS") -# >>> driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ -# >>> noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) -# >>> dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) -# >>> dets = dets.tolist() -# >>> wf_dmrg = import_state((dets, coeffs), tol=1e-1) -# >>> print(f"DMRG-based statevector\n{wf_dmrg}") - +# +# .. code-block::python +# +# from pyscf import mcscf +# from pyblock2.driver.core import DMRGDriver, SymmetryTypes +# from pyblock2._pyscf.ao2mo import integrals as itg +# mc = mcscf.CASCI(myhf, 2, 2) +# ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = \ +# itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) +# driver = DMRGDriver(scratch="./dmrg_temp", symm_type=SymmetryTypes.SZ) +# driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) +# mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore, iprint=0) +# ket = driver.get_random_mps(tag="GS") +# driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ +# noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) +# dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) +# dets = dets.tolist() +# wf_dmrg = import_state((dets, coeffs), tol=1e-1) +# print(f"DMRG-based statevector\n{wf_dmrg}") +# # The crucial part is calling `get_csf_coefficients()` on the solution stored in # MPS form in the `ket`. This triggers an internal reconstruction calculation that # converts the MPS to the sum of Slater determinants form, returning the output @@ -170,41 +124,38 @@ # # In principle, this functionality can be used to generate any initial state, provided # the user specifies a list of Slater determinants and their coefficients in this form. - -############################################################################## -# For Dice, the installation process is more complicated (see the Overlapper install -# guide), but the execution process is similar: - -# .. note:: # -# .. code-block::python -# >>> from pyscf.shciscf import shci -# >>> ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 -# >>> myshci = mcscf.CASCI(myhf, ncas, (nelecas_a, nelecas_b)) -# >>> output_file = f"shci_output.out" -# >>> myshci.fcisolver = shci.SHCI(myhf.mol) -# >>> myshci.fcisolver.outputFile = output_file -# >>> e_tot, e_ci, ss, mo_coeff, mo_energies = -# >>> myshci.kernel(verbose=5) -# >>> wavefunction = get_dets_coeffs_output(output_file) -# >>> print(type(wavefunction[0][0])) -# >>> print(dets, coeffs) -# >>> (dets, coeffs) = [post-process shci_output.out to get tuple of -# >>> dets (list of strs) and coeffs (list of floats)] -# >>> wf_shci = import_state((dets, coeffs), tol=1e-1) -# >>> print(f"SHCI-based statevector\n{wf_shci}") - +# SHCI states +# ^^^^^^^^^^^ +# The SHCI calculations involve running the library Dice. For Dice, the installation process is more +# complicated but the execution process is similar: +# +# .. code-block:: bash +# +# from pyscf.shciscf import shci +# ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 +# myshci = mcscf.CASCI(myhf, ncas, (nelecas_a, nelecas_b)) +# output_file = f"shci_output.out" +# myshci.fcisolver = shci.SHCI(myhf.mol) +# myshci.fcisolver.outputFile = output_file +# e_tot, e_ci, ss, mo_coeff, mo_energies = +# myshci.kernel(verbose=5) +# wavefunction = get_dets_coeffs_output(output_file) +# print(type(wavefunction[0][0])) +# print(dets, coeffs) +# (dets, coeffs) = [post-process shci_output.out to get tuple of +# dets (list of strs) and coeffs (list of floats)] +# wf_shci = import_state((dets, coeffs), tol=1e-1) +# print(f"SHCI-based statevector\n{wf_shci}") +# # If you are interested in a library that wraps all these methods and makes it easy to # generate initial states from them, you should try Overlapper, our internal # package built specifically for using traditional quantum chemistry methods # to construct initial states. - -############################################################################## -""" -Application: speed up VQE -------------------------- -""" - +# +# Application: speed up VQE +# ------------------------- +# # Let us now demonstrate how the choice of a better initial state shortens the runtime # of VQE for obtaining the ground-state energy of a molecule. As a first step, create a # molecule, a device and a simple VQE circuit with double excitations @@ -226,10 +177,9 @@ def cost_fn(theta, initstate=None, ham=H2mol): circuit_VQE(theta, wires=list(range(qubits)), initstate=initstate) return qml.expval(ham) -# The `initstate` variable is where we can insert different initial states. - ############################################################################## -# Next, create a function to execute VQE +# The `initstate` variable is where we can insert different initial states. Next, create a +# function to execute VQE def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): opt = qml.GradientDescentOptimizer(stepsize=0.4) @@ -253,14 +203,6 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): energy_hf, theta_hf = run_VQE(wf_hf) energy_ccsd, theta_ccsd = run_VQE(wf_ccsd) -############################################################################## -""" -.. figure:: ../demonstrations/initial_state/hf_vs_ccsd_on_vqe.png - :scale: 65% - :alt: Comparing HF and CCSD initial states for VQE on H2 molecule. - :align: center -""" - ############################################################################## # We can also consider what happens when you make the molecule more correlated, for example # by stretching its bonds. Simpler methods like HF will require even more VQE iterations, @@ -272,14 +214,6 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): energy_ccsd, theta_ccsd = run_VQE(wf_ccsd, ham=H2mol_corr) # energy_dmrg, theta_dmrg = run_VQE(wf_dmrg, ham=H2mol_corr) -############################################################################## -""" -.. figure:: ../demonstrations/initial_state/hf_vs_ccsd_on_vqe_stretched.png - :scale: 65% - :alt: Comparing HF and CCSD initial states for VQE on stretched H2 molecule. - :align: center -""" - ############################################################################## # Finally, it is straightforward to compare the initial states through overlap -- the main # metric of success for initial states in quantum algorithms. Because in PennyLane these From 19b7b7e8ca9a16b0b2f0bfdb261cbd198b41344c Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 10:09:17 -0400 Subject: [PATCH 18/65] Update _static/authors/stepan_fomichev.txt Co-authored-by: soranjh <40344468+soranjh@users.noreply.github.com> --- _static/authors/stepan_fomichev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_static/authors/stepan_fomichev.txt b/_static/authors/stepan_fomichev.txt index c34c30d37e..0f66a7326c 100644 --- a/_static/authors/stepan_fomichev.txt +++ b/_static/authors/stepan_fomichev.txt @@ -2,4 +2,4 @@ :photo: ../_static/authors/stepan_fomichev.jpg - Stepan Fomichev is a quantum scientist working at Xanadu. His background is in condesned matter physics, with a focus on lattice vibrations and electron-phonon coupling. As part of the Algorithms team, he focuses on researching and developing prospective applications for quantum algorithms. \ No newline at end of file + Stepan Fomichev is a quantum scientist working at Xanadu. His background is in condensed matter physics, with a focus on lattice vibrations and electron-phonon coupling. As part of the Algorithms team, he focuses on researching and developing prospective applications for quantum algorithms. \ No newline at end of file From 270d8761ca3c7b3e881b37c40976b39188719330 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 10:11:48 -0400 Subject: [PATCH 19/65] typos --- _static/authors/stepan_fomichev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_static/authors/stepan_fomichev.txt b/_static/authors/stepan_fomichev.txt index c34c30d37e..0f66a7326c 100644 --- a/_static/authors/stepan_fomichev.txt +++ b/_static/authors/stepan_fomichev.txt @@ -2,4 +2,4 @@ :photo: ../_static/authors/stepan_fomichev.jpg - Stepan Fomichev is a quantum scientist working at Xanadu. His background is in condesned matter physics, with a focus on lattice vibrations and electron-phonon coupling. As part of the Algorithms team, he focuses on researching and developing prospective applications for quantum algorithms. \ No newline at end of file + Stepan Fomichev is a quantum scientist working at Xanadu. His background is in condensed matter physics, with a focus on lattice vibrations and electron-phonon coupling. As part of the Algorithms team, he focuses on researching and developing prospective applications for quantum algorithms. \ No newline at end of file From 13d4faa5f7a08a7974108f90118c8e6a8640f95c Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 10:13:15 -0400 Subject: [PATCH 20/65] typos and use StatePrep --- .../tutorial_initial_state_preparation.py | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index f6e26f50bc..19485c72e0 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -15,10 +15,10 @@ A high-quality initial state can significantly reduce the runtime of many quantum algorithms. From the variational quantum eigensolver (VQE) to quantum phase estimation (QPE), to even the recent -intermediate-scale quantum (ISQ) algorithms, obtaining the ground state of a chemical system require +intermediate-scale quantum (ISQ) algorithms, obtaining the ground state of a chemical system requires a good initial state. For instance, in the case of VQE, a good initial state directly translates into fewer optimization steps. In QPE, the probability of measuring the ground-state energy is directly -proportional to the overlap of the initial and ground states. Even beyond quantum phase estimation, +proportional to the overlap squared of the initial and ground states. Even beyond quantum phase estimation, good initial guesses are important for algorithms like quantum approximate optimization (QAOA) and Grover search. @@ -36,13 +36,13 @@ an object that can be turned into a PennyLane statevector. We have already done this hard work of conversion: all that you need to do is run these methods and pass their outputs to PennyLane's :func:`~.pennylane.qchem.import_state` function. The currently supported methods are -configuration interaction with singles and doubles (CISD), coupled cluster (CCSD), Density-matrix -renormalization group (DMRG) and Semistochastic heat-bath configuration interaction (SHCI). +configuration interaction with singles and doubles (CISD), coupled cluster (CCSD), density-matrix +renormalization group (DMRG) and semistochastic heat-bath configuration interaction (SHCI). CISD states ^^^^^^^^^^^ -The first line of attack for initial state preparation is CISD calculations performed with the PySCF -library.It is unsophisticated but fast. It will not be much help for strongly correlated molecules, +The first line of attack for initial state preparation are CISD calculations performed with the PySCF +library. CISD is unsophisticated, but fast. It will not be much help for strongly correlated molecules, but it is better than Hartree-Fock. Here is the code example based on the restricted Hartree-Fock orbitals, but the unrestricted version is available too. """ @@ -107,10 +107,10 @@ # ket = driver.get_random_mps(tag="GS") # driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ # noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) -# dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) -# dets = dets.tolist() -# wf_dmrg = import_state((dets, coeffs), tol=1e-1) -# print(f"DMRG-based statevector\n{wf_dmrg}") +# dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) +# dets = dets.tolist() +# wf_dmrg = import_state((dets, coeffs), tol=1e-1) +# print(f"DMRG-based statevector\n{wf_dmrg}") # # The crucial part is calling `get_csf_coefficients()` on the solution stored in # MPS form in the `ket`. This triggers an internal reconstruction calculation that @@ -169,7 +169,7 @@ dev = qml.device("default.qubit", wires=qubits) def circuit_VQE(theta, wires, initstate): - qml.QubitStateVector(initstate, wires=wires) + qml.StatePrep(initstate, wires=wires) qml.DoubleExcitation(theta, wires=wires) @qml.qnode(dev, interface="autograd") @@ -215,7 +215,7 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): # energy_dmrg, theta_dmrg = run_VQE(wf_dmrg, ham=H2mol_corr) ############################################################################## -# Finally, it is straightforward to compare the initial states through overlap -- the main +# Finally, it is straightforward to compare the initial states through overlap -- a traditional # metric of success for initial states in quantum algorithms. Because in PennyLane these # are statevectors, computing an overlap is as easy as computing a dot product From 7582f2df0d157876f8013e8480683686836fecea Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 10:14:27 -0400 Subject: [PATCH 21/65] fix italicize --- demonstrations/tutorial_initial_state_preparation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 19485c72e0..a10aa26f76 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -25,7 +25,7 @@ Much like searching for a needle in a haystack, there are a lot of things you might try to prepare a good guess for the ground-state in the large-dimensional Hilbert space. In this tutorial, we show how to use traditional computational chemistry techniques to -get us _most of the way_ to an initial state. Such an initial state will not be the +get us *most of the way* to an initial state. Such an initial state will not be the ground-state, but it will certainly be better than the standard guess of a computational basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. From 220891d23273e2c7d96bdfa2774310c11065095e Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 10:22:13 -0400 Subject: [PATCH 22/65] update block2 install, new release has all funcs we need --- demonstrations/tutorial_initial_state_preparation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index a10aa26f76..f48b084e57 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -41,7 +41,7 @@ CISD states ^^^^^^^^^^^ -The first line of attack for initial state preparation are CISD calculations performed with the PySCF +The first line of attack for initial state preparation are CISD calculations performed with the `PySCF `_ library. CISD is unsophisticated, but fast. It will not be much help for strongly correlated molecules, but it is better than Hartree-Fock. Here is the code example based on the restricted Hartree-Fock orbitals, but the unrestricted version is available too. @@ -88,7 +88,7 @@ # # .. code-block:: bash # -# pip install block2==0.5.2rc10 --extra-index-url=https://block-hczhai.github.io/block2-preview/pypi/ +# pip install block2 # # The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, # stored in `myhf` object, which we can re-use from before. From fa4a97b0a685123d461f52aceb24fdec8cf8a633 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 10:25:21 -0400 Subject: [PATCH 23/65] visual edits --- .../tutorial_initial_state_preparation.py | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index f48b084e57..de4014daa6 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -57,14 +57,14 @@ print(f"CISD-based statevector\n{wf_cisd}") ############################################################################## -# The final object, PennyLane's statevector `wf_cisd`, is ready to be used as an +# The final object, PennyLane's statevector ``wf_cisd``, is ready to be used as an # initial state in a quantum circuit in PennyLane -- we will showcase this below for VQE. # Conversion for CISD is straightforward: simply assign the PySCF-stored CI coefficients # to appropriate determinants. # # CCSD states # ^^^^^^^^^^^ -# The function `import_state` is general, and can automatically detect the input type +# The function :func:`~.pennylane.qchem.import_state` is general, and can automatically detect the input type # and apply the appropriate conversion protocol. It works similarly to the above for CCSD. from pyscf import cc @@ -76,22 +76,22 @@ # For CCSD conversion, the exponential form is expanded and terms are collected to # second order to obtain the CI coefficients. # -# The second attribute `tol` specifies the cutoff beyond which contributions to the +# The second attribute ``tol`` specifies the cutoff beyond which contributions to the # wavefunctions are neglected. Internally, wavefunctions are stored in their Slater -# determinant representation, and if their prefactor coefficient is below `tol`, those +# determinant representation, and if their prefactor coefficient is below ``tol``, those # determinants are dropped from the expression. # # DMRG states # ^^^^^^^^^^^ -# The DMRG calculations involve running the library Block2. To install the Block2 library with -# functionality needed for this demo, execute +# The DMRG calculations involve running the library `Block2 `_. +# Block2 installs simply from ``pip`` # # .. code-block:: bash # # pip install block2 # # The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, -# stored in `myhf` object, which we can re-use from before. +# stored in ``myhf`` object, which we can re-use from before. # # .. code-block::python # @@ -112,14 +112,14 @@ # wf_dmrg = import_state((dets, coeffs), tol=1e-1) # print(f"DMRG-based statevector\n{wf_dmrg}") # -# The crucial part is calling `get_csf_coefficients()` on the solution stored in -# MPS form in the `ket`. This triggers an internal reconstruction calculation that +# The crucial part is calling ``get_csf_coefficients()`` on the solution stored in +# MPS form in the ``ket``. This triggers an internal reconstruction calculation that # converts the MPS to the sum of Slater determinants form, returning the output -# as a tuple `(list([int]), array(float])). The first element expresses a given Slater +# as a tuple ``(list([int]), array(float]))``. The first element expresses a given Slater # determinant using Fock occupation vectors of length equal to the number of spatial -# orbitals in Block2 notation, where `0` is unoccupied, `1` is occupied with spin-up -# electron, `2` is occupied with spin-down, and `3` is doubly occupied. The first -# element must be converted to `list` for `import_state` to accept it. The second +# orbitals in Block2 notation, where ``0`` is unoccupied, ``1`` is occupied with spin-up +# electron, ``2`` is occupied with spin-down, and ``3`` is doubly occupied. The first +# element must be converted to ``list`` for ``import_state`` to accept it. The second # element stores the CI coefficients. # # In principle, this functionality can be used to generate any initial state, provided @@ -178,7 +178,7 @@ def cost_fn(theta, initstate=None, ham=H2mol): return qml.expval(ham) ############################################################################## -# The `initstate` variable is where we can insert different initial states. Next, create a +# The ``initstate`` variable is where we can insert different initial states. Next, create a # function to execute VQE def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): From 25c4657a163334c379a2fa9c518f091b2cb9abd6 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 10:30:58 -0400 Subject: [PATCH 24/65] links for all external packages --- .../tutorial_initial_state_preparation.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index de4014daa6..139b3c9db5 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -127,8 +127,9 @@ # # SHCI states # ^^^^^^^^^^^ -# The SHCI calculations involve running the library Dice. For Dice, the installation process is more -# complicated but the execution process is similar: +# The SHCI calculations involve running the library `Dice `_, run +# using PySCF together with the interface module `SHCI-SCF `_. +# For Dice, the installation process is more complicated but the execution process is similar: # # .. code-block:: bash # @@ -141,10 +142,8 @@ # e_tot, e_ci, ss, mo_coeff, mo_energies = # myshci.kernel(verbose=5) # wavefunction = get_dets_coeffs_output(output_file) -# print(type(wavefunction[0][0])) -# print(dets, coeffs) # (dets, coeffs) = [post-process shci_output.out to get tuple of -# dets (list of strs) and coeffs (list of floats)] +# dets (list([str])) and coeffs (array([float]))] # wf_shci = import_state((dets, coeffs), tol=1e-1) # print(f"SHCI-based statevector\n{wf_shci}") # @@ -228,9 +227,10 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): # example of VQE, it demonstrates how a better choice of state -- obtained, for example # from a sophisticated computational chemistry method like CCSD, SHCI or DMRG -- can lead # to much better algorithmic performance. It also shows simple workflows for how to run -# these computational chemistry methods, from libraries such as PySCF, Block2 and Dice, -# to generate outputs that can then be converted to PennyLane's statevector format -# with a single line of code. +# these computational chemistry methods, from libraries such as `PySCF `_, +# `Block2 `_ and +# `Dice `_, to generate outputs that can then be +# converted to PennyLane's statevector format with a single line of code. # # About the author # ---------------- From 88dbacfaa1214087b13841e77ff5d0bdd5906460 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 10:39:50 -0400 Subject: [PATCH 25/65] improve the overlap section --- .../tutorial_initial_state_preparation.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 139b3c9db5..0aa4b39132 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -216,9 +216,18 @@ def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): ############################################################################## # Finally, it is straightforward to compare the initial states through overlap -- a traditional # metric of success for initial states in quantum algorithms. Because in PennyLane these -# are statevectors, computing an overlap is as easy as computing a dot product +# are regular arrays, computing an overlap is as easy as computing a dot product -ovlp = np.dot(wf_ccsd, wf_hf) +np.dot(wf_cisd, wf_hf) +np.dot(wf_ccsd, wf_hf) +# np.dot(wf_dmrg, wf_hf) +# np.dot(wf_shci, wf_hf) + +############################################################################## +# The magnitudes of overlaps show that that the more multireference methods DMRG and SHCI +# are farther away from the Hartree-Fock state, allowing them to perform better in more +# correlated molecules. If a ground state was known, the overlap to it could tell us directly +# the quality of the initial state. ############################################################################## # Summary From cb3576ef42b5ec276df941b2ff29d0db5740bd83 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Mon, 16 Oct 2023 22:31:29 -0400 Subject: [PATCH 26/65] light style edits and changed to h3+ example with printing --- .../tutorial_initial_state_preparation.py | 106 ++++++++++-------- 1 file changed, 60 insertions(+), 46 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 0aa4b39132..aaf2b5ca20 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -15,7 +15,7 @@ A high-quality initial state can significantly reduce the runtime of many quantum algorithms. From the variational quantum eigensolver (VQE) to quantum phase estimation (QPE), to even the recent -intermediate-scale quantum (ISQ) algorithms, obtaining the ground state of a chemical system requires +`intermediate-scale quantum (ISQ) `_ algorithms, obtaining the ground state of a chemical system requires a good initial state. For instance, in the case of VQE, a good initial state directly translates into fewer optimization steps. In QPE, the probability of measuring the ground-state energy is directly proportional to the overlap squared of the initial and ground states. Even beyond quantum phase estimation, @@ -50,7 +50,8 @@ from pyscf import gto, scf, ci from pennylane.qchem import import_state R = 0.71 -mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,R)]], basis='sto6g', symmetry='d2h') +mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,R)], ['H', (0,0,2*R)]],\ + charge=1, basis='sto-3g') myhf = scf.RHF(mol).run() myci = ci.CISD(myhf).run() wf_cisd = import_state(myci, tol=1e-1) @@ -93,7 +94,7 @@ # The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, # stored in ``myhf`` object, which we can re-use from before. # -# .. code-block::python +# .. code-block:: python # # from pyscf import mcscf # from pyblock2.driver.core import DMRGDriver, SymmetryTypes @@ -124,14 +125,20 @@ # # In principle, this functionality can be used to generate any initial state, provided # the user specifies a list of Slater determinants and their coefficients in this form. -# +# Let's take this opportunity to create the Hartree-Fock initial state, to compare the +# other states against it. + +from pennylane import numpy as np +hf_primer = ( [ [3, 0, 0] ], np.array([1.]) ) +wf_hf = import_state(hf_primer) + # SHCI states # ^^^^^^^^^^^ # The SHCI calculations involve running the library `Dice `_, run # using PySCF together with the interface module `SHCI-SCF `_. # For Dice, the installation process is more complicated but the execution process is similar: # -# .. code-block:: bash +# .. code-block:: python # # from pyscf.shciscf import shci # ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 @@ -162,56 +169,63 @@ import pennylane as qml from pennylane import qchem from pennylane import numpy as np -H2mol, qubits = qchem.molecular_hamiltonian(["H", "H"],\ - np.array([0,0,0,0,0,R/0.529]),basis="sto-3g") - +H2mol, qubits = qchem.molecular_hamiltonian(["H", "H", "H"],\ + np.array([0,0,0,0,0,R/0.529, 0,0,2*R/0.529]),\ + charge=1,basis="sto-3g") +wires = list(range(qubits)) dev = qml.device("default.qubit", wires=qubits) -def circuit_VQE(theta, wires, initstate): - qml.StatePrep(initstate, wires=wires) - qml.DoubleExcitation(theta, wires=wires) +from pennylane import qchem +singles, doubles = qchem.excitations(2, qubits) +excitations = singles + doubles + +############################################################################## +# Now let's run VQE with the Hartree-Fock initial state @qml.qnode(dev, interface="autograd") -def cost_fn(theta, initstate=None, ham=H2mol): - circuit_VQE(theta, wires=list(range(qubits)), initstate=initstate) - return qml.expval(ham) +def circuit_VQE(theta): + qml.StatePrep(wf_hf, wires=wires) + for i, excitation in enumerate(excitations): + if len(excitation) == 4: + qml.DoubleExcitation(theta[i], wires=excitation) + else: + qml.SingleExcitation(theta[i], wires=excitation) + return qml.expval(H2mol) -############################################################################## -# The ``initstate`` variable is where we can insert different initial states. Next, create a -# function to execute VQE - -def run_VQE(initstate, ham=H2mol, conv_tol=1e-4, max_iterations=30): - opt = qml.GradientDescentOptimizer(stepsize=0.4) - theta = np.array(0.0, requires_grad=True) - delta_E, iteration = 10, 0 - while abs(delta_E) > conv_tol and iteration < max_iterations: - theta, prev_energy = opt.step_and_cost(cost_fn, theta, initstate=initstate, ham=ham) - new_energy = cost_fn(theta, initstate=initstate, ham=ham) - delta_E = new_energy - prev_energy - iteration += 1 - energy_VQE = cost_fn(theta, initstate=initstate, ham=ham) - theta_opt = theta - return energy_VQE, theta_opt +opt = qml.GradientDescentOptimizer(stepsize=0.4) +theta = np.array(np.zeros(len(excitations)), requires_grad=True) +delta_E, iteration = 10, 0 +while abs(delta_E) > 1e-5: + theta, prev_energy = opt.step_and_cost(circuit_VQE, theta) + new_energy = circuit_VQE(theta) + delta_E = new_energy - prev_energy + print(prev_energy, new_energy, delta_E) + iteration += 1 +print(f"Took {iteration} iterations until convergence.") ############################################################################## -# Now let's compare the number of iterations to convergence for the Hartree-Fock state -# versus the CCSD state +# And compare with how things go when you run it with the CISD initial state -wf_hf = np.zeros(2**qubits) -wf_hf[3] = 1. -energy_hf, theta_hf = run_VQE(wf_hf) -energy_ccsd, theta_ccsd = run_VQE(wf_ccsd) +@qml.qnode(dev, interface="autograd") +def circuit_VQE(theta): + qml.StatePrep(wf_cisd, wires=wires) + for i, excitation in enumerate(excitations): + if len(excitation) == 4: + qml.DoubleExcitation(theta[i], wires=excitation) + else: + qml.SingleExcitation(theta[i], wires=excitation) + return qml.expval(H2mol) -############################################################################## -# We can also consider what happens when you make the molecule more correlated, for example -# by stretching its bonds. Simpler methods like HF will require even more VQE iterations, -# while SHCI and DMRG will continue to provide good starting points for the algorithm. - -H2mol_corr, qubits = qchem.molecular_hamiltonian(["H", "H"],\ - np.array([0,0,0,0,0,R*2/0.529]),basis="sto-3g") -energy_hf, theta_hf = run_VQE(wf_hf, ham=H2mol_corr) -energy_ccsd, theta_ccsd = run_VQE(wf_ccsd, ham=H2mol_corr) -# energy_dmrg, theta_dmrg = run_VQE(wf_dmrg, ham=H2mol_corr) +opt = qml.GradientDescentOptimizer(stepsize=0.4) +theta = np.array(np.zeros(len(excitations)), requires_grad=True) +delta_E, iteration = 10, 0 +while abs(delta_E) > 1e-5: + theta, prev_energy = opt.step_and_cost(circuit_VQE, theta) + new_energy = circuit_VQE(theta) + delta_E = new_energy - prev_energy + print(prev_energy, new_energy, delta_E) + iteration += 1 +print(f"Took {iteration} iterations until convergence.") ############################################################################## # Finally, it is straightforward to compare the initial states through overlap -- a traditional From 8da48591b1473f76d1b52972420049f728c6a9db Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 08:20:34 -0400 Subject: [PATCH 27/65] style edits --- .../tutorial_initial_state_preparation.py | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index aaf2b5ca20..919751b414 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -14,7 +14,7 @@ *Author: Stepan Fomichev — Posted: 20 October 2023. Last updated: 20 October 2023.* A high-quality initial state can significantly reduce the runtime of many quantum algorithms. From -the variational quantum eigensolver (VQE) to quantum phase estimation (QPE), to even the recent +the variational quantum eigensolver (VQE) to quantum phase estimation (QPE) and even the recent `intermediate-scale quantum (ISQ) `_ algorithms, obtaining the ground state of a chemical system requires a good initial state. For instance, in the case of VQE, a good initial state directly translates into fewer optimization steps. In QPE, the probability of measuring the ground-state energy is directly @@ -23,17 +23,17 @@ and Grover search. Much like searching for a needle in a haystack, there are a lot of things you might try -to prepare a good guess for the ground-state in the large-dimensional Hilbert space. In this +to prepare a good guess for the ground state in the large-dimensional Hilbert space. In this tutorial, we show how to use traditional computational chemistry techniques to get us *most of the way* to an initial state. Such an initial state will not be the -ground-state, but it will certainly be better than the standard guess of a computational +ground state, but it will certainly be better than the standard guess of a computational basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. Importing initial states ------------------------ We can import initial states obtained from several post-Hartree-Fock quantum chemistry calculations to PennyLane. These methods are incredibly diverse in terms of their outputs, not always returning -an object that can be turned into a PennyLane statevector. We have already done this hard +an object that can be turned into a PennyLane state vector. We have already done this hard work of conversion: all that you need to do is run these methods and pass their outputs to PennyLane's :func:`~.pennylane.qchem.import_state` function. The currently supported methods are configuration interaction with singles and doubles (CISD), coupled cluster (CCSD), density-matrix @@ -49,16 +49,19 @@ from pyscf import gto, scf, ci from pennylane.qchem import import_state + R = 0.71 +# create the H3+ molecule mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,R)], ['H', (0,0,2*R)]],\ - charge=1, basis='sto-3g') + charge=1, basis='sto-3g') +# perfrom restricted Hartree-Fock and then CISD myhf = scf.RHF(mol).run() myci = ci.CISD(myhf).run() wf_cisd = import_state(myci, tol=1e-1) -print(f"CISD-based statevector\n{wf_cisd}") +print(f"CISD-based state vector\n{wf_cisd}") ############################################################################## -# The final object, PennyLane's statevector ``wf_cisd``, is ready to be used as an +# The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an # initial state in a quantum circuit in PennyLane -- we will showcase this below for VQE. # Conversion for CISD is straightforward: simply assign the PySCF-stored CI coefficients # to appropriate determinants. @@ -71,7 +74,7 @@ from pyscf import cc mycc = cc.CCSD(myhf).run() wf_ccsd = import_state(mycc, tol=1e-1) -print(f"CCSD-based statevector\n{wf_ccsd}") +print(f"CCSD-based state vector\n{wf_ccsd}") ############################################################################## # For CCSD conversion, the exponential form is expanded and terms are collected to @@ -111,7 +114,7 @@ # dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) # dets = dets.tolist() # wf_dmrg = import_state((dets, coeffs), tol=1e-1) -# print(f"DMRG-based statevector\n{wf_dmrg}") +# print(f"DMRG-based state vector\n{wf_dmrg}") # # The crucial part is calling ``get_csf_coefficients()`` on the solution stored in # MPS form in the ``ket``. This triggers an internal reconstruction calculation that @@ -132,6 +135,7 @@ hf_primer = ( [ [3, 0, 0] ], np.array([1.]) ) wf_hf = import_state(hf_primer) +############################################################################## # SHCI states # ^^^^^^^^^^^ # The SHCI calculations involve running the library `Dice `_, run @@ -152,13 +156,14 @@ # (dets, coeffs) = [post-process shci_output.out to get tuple of # dets (list([str])) and coeffs (array([float]))] # wf_shci = import_state((dets, coeffs), tol=1e-1) -# print(f"SHCI-based statevector\n{wf_shci}") +# print(f"SHCI-based state vector\n{wf_shci}") # # If you are interested in a library that wraps all these methods and makes it easy to # generate initial states from them, you should try Overlapper, our internal # package built specifically for using traditional quantum chemistry methods # to construct initial states. # +############################################################################## # Application: speed up VQE # ------------------------- # @@ -216,7 +221,6 @@ def circuit_VQE(theta): qml.SingleExcitation(theta[i], wires=excitation) return qml.expval(H2mol) -opt = qml.GradientDescentOptimizer(stepsize=0.4) theta = np.array(np.zeros(len(excitations)), requires_grad=True) delta_E, iteration = 10, 0 while abs(delta_E) > 1e-5: @@ -253,7 +257,7 @@ def circuit_VQE(theta): # these computational chemistry methods, from libraries such as `PySCF `_, # `Block2 `_ and # `Dice `_, to generate outputs that can then be -# converted to PennyLane's statevector format with a single line of code. +# converted to PennyLane's state vector format with a single line of code. # # About the author # ---------------- From 4c3ab865d80637d11a77c8fa06a938923d1aa199 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 08:22:59 -0400 Subject: [PATCH 28/65] move tol description higher --- .../tutorial_initial_state_preparation.py | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 919751b414..cba2dfd156 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -34,7 +34,7 @@ We can import initial states obtained from several post-Hartree-Fock quantum chemistry calculations to PennyLane. These methods are incredibly diverse in terms of their outputs, not always returning an object that can be turned into a PennyLane state vector. We have already done this hard -work of conversion: all that you need to do is run these methods and pass their outputs +conversion work: all that you need to do is run these methods and pass their outputs to PennyLane's :func:`~.pennylane.qchem.import_state` function. The currently supported methods are configuration interaction with singles and doubles (CISD), coupled cluster (CCSD), density-matrix renormalization group (DMRG) and semistochastic heat-bath configuration interaction (SHCI). @@ -42,7 +42,7 @@ CISD states ^^^^^^^^^^^ The first line of attack for initial state preparation are CISD calculations performed with the `PySCF `_ -library. CISD is unsophisticated, but fast. It will not be much help for strongly correlated molecules, +library. CISD is unsophisticated, but fast. It will not be of much help for strongly correlated molecules, but it is better than Hartree-Fock. Here is the code example based on the restricted Hartree-Fock orbitals, but the unrestricted version is available too. """ @@ -62,10 +62,16 @@ ############################################################################## # The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an -# initial state in a quantum circuit in PennyLane -- we will showcase this below for VQE. +# initial state in a quantum circuit in PennyLane--we will showcase this below for VQE. # Conversion for CISD is straightforward: simply assign the PySCF-stored CI coefficients # to appropriate determinants. # +# The second attribute, ``tol``, specifies the cutoff beyond which contributions to the +# wavefunctions are neglected. Internally, wavefunctions are stored in their Slater +# determinant representation, and if their prefactor coefficient is below ``tol``, those +# determinants are dropped from the expression. +# +# # CCSD states # ^^^^^^^^^^^ # The function :func:`~.pennylane.qchem.import_state` is general, and can automatically detect the input type @@ -80,11 +86,6 @@ # For CCSD conversion, the exponential form is expanded and terms are collected to # second order to obtain the CI coefficients. # -# The second attribute ``tol`` specifies the cutoff beyond which contributions to the -# wavefunctions are neglected. Internally, wavefunctions are stored in their Slater -# determinant representation, and if their prefactor coefficient is below ``tol``, those -# determinants are dropped from the expression. -# # DMRG states # ^^^^^^^^^^^ # The DMRG calculations involve running the library `Block2 `_. @@ -232,7 +233,7 @@ def circuit_VQE(theta): print(f"Took {iteration} iterations until convergence.") ############################################################################## -# Finally, it is straightforward to compare the initial states through overlap -- a traditional +# Finally, it is straightforward to compare the initial states through overlap--a traditional # metric of success for initial states in quantum algorithms. Because in PennyLane these # are regular arrays, computing an overlap is as easy as computing a dot product @@ -251,8 +252,8 @@ def circuit_VQE(theta): # Summary # ------- # This demo explains the concept of the initial state for quantum algorithms. Using the -# example of VQE, it demonstrates how a better choice of state -- obtained, for example -# from a sophisticated computational chemistry method like CCSD, SHCI or DMRG -- can lead +# example of VQE, it demonstrates how a better choice of state--obtained, for example +# from a sophisticated computational chemistry method like CCSD, SHCI or DMRG--can lead # to much better algorithmic performance. It also shows simple workflows for how to run # these computational chemistry methods, from libraries such as `PySCF `_, # `Block2 `_ and From 0c231dec35aef8a1bad18451b9780f0114664dd2 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 08:24:17 -0400 Subject: [PATCH 29/65] style edits --- demonstrations/tutorial_initial_state_preparation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index cba2dfd156..d5f9130880 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -88,8 +88,8 @@ # # DMRG states # ^^^^^^^^^^^ -# The DMRG calculations involve running the library `Block2 `_. -# Block2 installs simply from ``pip`` +# The DMRG calculations involve running the library `Block2 `_, +# which is installed from ``pip`` # # .. code-block:: bash # From 696808afc6379ee5e7b15a1832419369b9ef38d7 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 08:27:49 -0400 Subject: [PATCH 30/65] style edits from code review Co-authored-by: Alvaro Ballon <91897656+alvaro-at-xanadu@users.noreply.github.com> --- demonstrations/tutorial_initial_state_preparation.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index d5f9130880..fe1587870c 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -96,7 +96,8 @@ # pip install block2 # # The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, -# stored in ``myhf`` object, which we can re-use from before. +# stored in the ``myhf`` object, which we can reuse from before. + # # .. code-block:: python # @@ -139,7 +140,8 @@ ############################################################################## # SHCI states # ^^^^^^^^^^^ -# The SHCI calculations involve running the library `Dice `_, run +# The SHCI calculations utilize the library `Dice `_, run + # using PySCF together with the interface module `SHCI-SCF `_. # For Dice, the installation process is more complicated but the execution process is similar: # @@ -170,7 +172,8 @@ # # Let us now demonstrate how the choice of a better initial state shortens the runtime # of VQE for obtaining the ground-state energy of a molecule. As a first step, create a -# molecule, a device and a simple VQE circuit with double excitations +# molecule, a device, and a simple VQE circuit with double excitations + import pennylane as qml from pennylane import qchem From 4d711a491b73ae637c56479f0db34fa5e5f45e6c Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 08:36:34 -0400 Subject: [PATCH 31/65] clarify dmrg code block --- .../tutorial_initial_state_preparation.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index fe1587870c..559b595119 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -97,27 +97,37 @@ # # The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, # stored in the ``myhf`` object, which we can reuse from before. - +# # # .. code-block:: python # # from pyscf import mcscf # from pyblock2.driver.core import DMRGDriver, SymmetryTypes # from pyblock2._pyscf.ao2mo import integrals as itg +# +# # obtain molecular integrals and other parameters for DMRG # mc = mcscf.CASCI(myhf, 2, 2) # ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = \ # itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) +# +# # initialize the DMRG solver, Hamiltonian (as matrix-product operator, MPO) and +# # state (as matrix-product state, MPS) # driver = DMRGDriver(scratch="./dmrg_temp", symm_type=SymmetryTypes.SZ) # driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) # mpo = driver.get_qc_mpo(h1e=h1e, g2e=g2e, ecore=ecore, iprint=0) # ket = driver.get_random_mps(tag="GS") +# +# # execute DMRG by modifying the ket state in-place to minimize the energy # driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ # noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) + +# # post-process the MPS to get an initial state # dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) # dets = dets.tolist() # wf_dmrg = import_state((dets, coeffs), tol=1e-1) # print(f"DMRG-based state vector\n{wf_dmrg}") # +# # The crucial part is calling ``get_csf_coefficients()`` on the solution stored in # MPS form in the ``ket``. This triggers an internal reconstruction calculation that # converts the MPS to the sum of Slater determinants form, returning the output @@ -140,10 +150,9 @@ ############################################################################## # SHCI states # ^^^^^^^^^^^ -# The SHCI calculations utilize the library `Dice `_, run - -# using PySCF together with the interface module `SHCI-SCF `_. -# For Dice, the installation process is more complicated but the execution process is similar: +# The SHCI calculations utilize the library `Dice `_, and can be run +# using PySCF through the interface module `SHCI-SCF `_. +# For Dice, the installation process is more complicated than for Block2, but the execution process is similar: # # .. code-block:: python # From 7204149c9856bb7bf902dba077729455248b3470 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 08:51:48 -0400 Subject: [PATCH 32/65] add dmrg and shci output as text --- .../tutorial_initial_state_preparation.py | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 559b595119..81db1ab9e0 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -106,7 +106,7 @@ # from pyblock2._pyscf.ao2mo import integrals as itg # # # obtain molecular integrals and other parameters for DMRG -# mc = mcscf.CASCI(myhf, 2, 2) +# mc = mcscf.CASCI(myhf, mol.nao, mol.nelectron) # ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = \ # itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) # @@ -127,6 +127,25 @@ # wf_dmrg = import_state((dets, coeffs), tol=1e-1) # print(f"DMRG-based state vector\n{wf_dmrg}") # +# .. note:: +# +# DMRG-based state vector +# [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0.12657926+0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# -0.9919565 +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j] # # The crucial part is calling ``get_csf_coefficients()`` on the solution stored in # MPS form in the ``ket``. This triggers an internal reconstruction calculation that @@ -157,19 +176,45 @@ # .. code-block:: python # # from pyscf.shciscf import shci +# +# # prepare PySCF CASCI object, whose solver will be the SHCI method # ncas, nelecas_a, nelecas_b = mol.nao, mol.nelectron // 2, mol.nelectron // 2 # myshci = mcscf.CASCI(myhf, ncas, (nelecas_a, nelecas_b)) +# +# # set up essentials for the SHCI solver # output_file = f"shci_output.out" # myshci.fcisolver = shci.SHCI(myhf.mol) # myshci.fcisolver.outputFile = output_file -# e_tot, e_ci, ss, mo_coeff, mo_energies = -# myshci.kernel(verbose=5) -# wavefunction = get_dets_coeffs_output(output_file) +# +# # execute SHCI through the PySCF interface +# e_tot, e_ci, ss, mo_coeff, mo_energies = myshci.kernel(verbose=5) +# +# # post-process the result to get an initial state # (dets, coeffs) = [post-process shci_output.out to get tuple of # dets (list([str])) and coeffs (array([float]))] # wf_shci = import_state((dets, coeffs), tol=1e-1) # print(f"SHCI-based state vector\n{wf_shci}") # +# .. note:: +# +# SHCI-based state vector +# [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# -0.12657926+0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0.9919565 +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j] +# # If you are interested in a library that wraps all these methods and makes it easy to # generate initial states from them, you should try Overlapper, our internal # package built specifically for using traditional quantum chemistry methods From 561824c5ad9186d1a80a772e58ab89d89a19c891 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 08:59:38 -0400 Subject: [PATCH 33/65] added text output for shci and dmrg --- .../tutorial_initial_state_preparation.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 81db1ab9e0..29fc4cff5f 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -50,7 +50,7 @@ from pyscf import gto, scf, ci from pennylane.qchem import import_state -R = 0.71 +R = 1.6 # create the H3+ molecule mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,R)], ['H', (0,0,2*R)]],\ charge=1, basis='sto-3g') @@ -228,7 +228,6 @@ # of VQE for obtaining the ground-state energy of a molecule. As a first step, create a # molecule, a device, and a simple VQE circuit with double excitations - import pennylane as qml from pennylane import qchem from pennylane import numpy as np @@ -294,11 +293,17 @@ def circuit_VQE(theta): # metric of success for initial states in quantum algorithms. Because in PennyLane these # are regular arrays, computing an overlap is as easy as computing a dot product -np.dot(wf_cisd, wf_hf) -np.dot(wf_ccsd, wf_hf) -# np.dot(wf_dmrg, wf_hf) -# np.dot(wf_shci, wf_hf) - +print(np.dot(wf_cisd, wf_hf)) +print(np.dot(wf_ccsd, wf_hf)) +# +# .. code-block:: python +# print(np.dot(wf_dmrg, wf_hf)) +# print(np.dot(wf_shci, wf_hf)) +# +# .. note:: +# (0.9386992209037608+0j) +# (-0.9386992208899297+0j) +# ############################################################################## # The magnitudes of overlaps show that that the more multireference methods DMRG and SHCI # are farther away from the Hartree-Fock state, allowing them to perform better in more From f458913c228377ea9ac74b12e94443e6514f86e0 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 09:13:32 -0400 Subject: [PATCH 34/65] final stylistic edits and finish h3+ --- .../tutorial_initial_state_preparation.py | 67 +++++++++---------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 29fc4cff5f..9ffb469ee6 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -50,7 +50,7 @@ from pyscf import gto, scf, ci from pennylane.qchem import import_state -R = 1.6 +R = 1.2 # create the H3+ molecule mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,R)], ['H', (0,0,2*R)]],\ charge=1, basis='sto-3g') @@ -98,7 +98,6 @@ # The DMRG calculation is run on top of the molecular orbitals obtained by Hartree-Fock, # stored in the ``myhf`` object, which we can reuse from before. # -# # .. code-block:: python # # from pyscf import mcscf @@ -127,25 +126,25 @@ # wf_dmrg = import_state((dets, coeffs), tol=1e-1) # print(f"DMRG-based state vector\n{wf_dmrg}") # -# .. note:: +# .. note:: # # DMRG-based state vector # [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0.12657926+0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# -0.9919565 +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j] +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# -0.22425623+0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0.9745302 +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j] # # The crucial part is calling ``get_csf_coefficients()`` on the solution stored in # MPS form in the ``ket``. This triggers an internal reconstruction calculation that @@ -200,20 +199,20 @@ # SHCI-based state vector # [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j # 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# -0.12657926+0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0.9919565 +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j] +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0.22425623+0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# -0.97453022+0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j +# 0. +0.j 0. +0.j 0. +0.j 0. +0.j] # # If you are interested in a library that wraps all these methods and makes it easy to # generate initial states from them, you should try Overlapper, our internal @@ -301,8 +300,8 @@ def circuit_VQE(theta): # print(np.dot(wf_shci, wf_hf)) # # .. note:: -# (0.9386992209037608+0j) -# (-0.9386992208899297+0j) +# (0.9745302156335056+0j) +# (-0.9745302156443371+0j) # ############################################################################## # The magnitudes of overlaps show that that the more multireference methods DMRG and SHCI From f2be96f4bc97df1d30ac742ca2411f740a4b20d8 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 09:25:48 -0400 Subject: [PATCH 35/65] print tot iterations and generate figure --- .../tutorial_initial_state_preparation.py | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 9ffb469ee6..a67b59ed12 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -230,19 +230,22 @@ import pennylane as qml from pennylane import qchem from pennylane import numpy as np + +# generate the molecular Hamiltonian for H3+ H2mol, qubits = qchem.molecular_hamiltonian(["H", "H", "H"],\ np.array([0,0,0,0,0,R/0.529, 0,0,2*R/0.529]),\ charge=1,basis="sto-3g") wires = list(range(qubits)) dev = qml.device("default.qubit", wires=qubits) -from pennylane import qchem +# create all possible excitations in H3+ singles, doubles = qchem.excitations(2, qubits) excitations = singles + doubles ############################################################################## # Now let's run VQE with the Hartree-Fock initial state +# VQE circuit with wf_hf as initial state and all possible excitations @qml.qnode(dev, interface="autograd") def circuit_VQE(theta): qml.StatePrep(wf_hf, wires=wires) @@ -253,20 +256,24 @@ def circuit_VQE(theta): qml.SingleExcitation(theta[i], wires=excitation) return qml.expval(H2mol) +# create the VQE optimizer, initialize the variational parameters, set start params opt = qml.GradientDescentOptimizer(stepsize=0.4) theta = np.array(np.zeros(len(excitations)), requires_grad=True) delta_E, iteration = 10, 0 +results_hf = [] + +# run the VQE optimization loop until convergence threshold is reached while abs(delta_E) > 1e-5: theta, prev_energy = opt.step_and_cost(circuit_VQE, theta) new_energy = circuit_VQE(theta) delta_E = new_energy - prev_energy - print(prev_energy, new_energy, delta_E) - iteration += 1 -print(f"Took {iteration} iterations until convergence.") + results_hf.append(new_energy) +print(f"Starting with HF state took {len(results_hf)} iterations until convergence.") ############################################################################## # And compare with how things go when you run it with the CISD initial state +# re-create VQE circuit with wf_cisd as initial state @qml.qnode(dev, interface="autograd") def circuit_VQE(theta): qml.StatePrep(wf_cisd, wires=wires) @@ -279,13 +286,26 @@ def circuit_VQE(theta): theta = np.array(np.zeros(len(excitations)), requires_grad=True) delta_E, iteration = 10, 0 +results_cisd = [] + while abs(delta_E) > 1e-5: theta, prev_energy = opt.step_and_cost(circuit_VQE, theta) new_energy = circuit_VQE(theta) delta_E = new_energy - prev_energy - print(prev_energy, new_energy, delta_E) - iteration += 1 -print(f"Took {iteration} iterations until convergence.") + results_cisd.append(new_energy) +print(f"Starting with CISD state took {len(results_cisd)} iterations until convergence.") + +# plot the results +import matplotlib.pyplot as plt +fig, ax = plt.subplots() +ax.plot(range(len(results_hf)), results_hf, color="r", marker="o", label="HF") +ax.plot(range(len(results_cisd)), results_cisd, color="b", marker="o", label="CISD") +ax.legend(fontsize=16) +ax.tick_params(axis="both", labelsize=16) +ax.set_xlabel("Iteration", fontsize=20) +ax.set_ylabel("Energy, Ha", fontsize=20) +plt.tight_layout() +plt.show() ############################################################################## # Finally, it is straightforward to compare the initial states through overlap--a traditional From 7250f50243939be60f2b22cf8fc274a3046829ce Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 09:28:29 -0400 Subject: [PATCH 36/65] modify overlap section to reflect new example --- demonstrations/tutorial_initial_state_preparation.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index a67b59ed12..5322da2b67 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -324,10 +324,11 @@ def circuit_VQE(theta): # (-0.9745302156443371+0j) # ############################################################################## -# The magnitudes of overlaps show that that the more multireference methods DMRG and SHCI -# are farther away from the Hartree-Fock state, allowing them to perform better in more -# correlated molecules. If a ground state was known, the overlap to it could tell us directly -# the quality of the initial state. +# In this particular case, even CISD gives the exact wavefunction, hence all overlaps +# are identical. In more correlated molecules, overlaps will show that the more +# multireference methods DMRG and SHCI are farther away from the Hartree-Fock state, +# allowing them to perform better. If a ground state in such a case was known, the +# overlap to it could tell us directly the quality of the initial state. ############################################################################## # Summary From 3aa940ca4afe8301071f40303c8266e4d5c57e3d Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 09:29:41 -0400 Subject: [PATCH 37/65] remove pre-computed figures --- .../hf_vs_ccsd_for_vqe.png | Bin 50932 -> 0 bytes .../hf_vs_ccsd_for_vqe_stretched.png | Bin 18518 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe.png delete mode 100644 demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe_stretched.png diff --git a/demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe.png b/demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe.png deleted file mode 100644 index daef7db18423b771660aa239385f9d0a8525afb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50932 zcmcG0cQl+`)UOmNWROG`MDnKSC5GrddN+C(y(MZ8q#;q$ln_L(ql7W~B*aLF&Zt8~ z)G`^QBhSV(e67?gTK$-)3ETTqPh?O{da8I zh5G>&750Uus*=eA+g1E&`zdEi=ce!LZd={-!Z7^_1JhQzEk$BSs5(G=<%RriEqK{V-N7P1X_FWcj|`7p1$b zU}CBd#%knF=pT>tR9R0zze0-t&%Y`~B}gR7US#R;Bp7L14i1N#+Sm~F)JMXmct4yN z85tShULGR;UCc%o7vDUz1`mDkHDs8KJfsk7hxD$-=lB=%kzy3~KUXxZNo#9qef;u8 zbq;wNP}QnR#!ypJ2mO3;VIdXwU`+JT zR}oGvZEfOPW4-Flxz3n7@#nGq7K~V*=FK}9QvQXy?{5z%uz=~8I85Tlf@i|LzrN%l z4QdMyd^(Y-J#P1g84UBN^}4K>z?8~kk!U@2QD*RTxZxbdzU^q=0*?Lv``vrCG9k@> zlh#sCGnpyH%*v((1IVFTy7EkP+j7VDhtV1SlJe>XLhNc}od0S9b;jz`0;#$O#?^?E zp2)(w>95Yv(=^c2YD`LDL$r1Z5B|_Lt!`Qb&2`hR)=8#}`Py3Br^;?eQMOB@NXuQ; zW#tt+mCz&sTy3nO1#Q1Sw1@@gQ3#Y|(q^ozRb#_2j@e{vuZ_kk!_Fs8B6X}O4m~z= zh;EZNf9>RqfFHo24eM26RjD*Kv-9N^>_Z*)TKldGO*no|m)4GttNw5OB?E`F-gaVK zR~d06go8M4LGbQvR6d*lvnnoLj?Wn_sVG4gxs;_XYUI5rtAw=)hg8SJ*^{+`K$h~Uy!4oE)i@H8PgCMMi-AuIM|mKT*Kb6 zX4~>hb1wKY`Dc|eZipT{qIko;?_x`DRlMqC_=856mi|3&Vg~=q55Lcdoh^Pt5cVYb?=A`{sRXq&7M_H z=ns%tfAlKo;PF-bl|BSK&~y%sq{rbJTsTh*U0jWcNkaLq!oOo(it4=~Qe1iBbIgoX z5?k)v9Sb2R)yC0tdY+E|7O?frS8|hK9^%PL_ZC zIA~;S?EUNOD+%W=#!1)gZ~@zjXm~9ww-tGdiq`dq)o%GUW4hgR`ND-M}`z7;lU@bBE=4Nc&yd@uB zcd6<8|N#eL`HY#Lmq2Y&#iOJo-z`z5za&3DB z0cqVZI2}RuCX;6l*D7}RxB4cZP}5HB#Ky&;qxq?eo10~=FcB?1X`=01;oF8y#Jb7V ztgy9eu&zE_xrLMGXhmQrjK0jQvTnXRwP|CwjaGQf?%+2|6QQEX`jP752eD|qq2%Oh zAnS6Zam%L7d1~h8i68AU#m9xD@5W=8fFhl{DIiDL9um6D`)7Z4=7*GQjE z(ASd44&uHN8zXscaXR)%iU%O5p9Lu)5* z#LLSY^y`)SM0F<@;rNH+Y|>l~=fdw8S%0DyLn@gX8O|*vzQRIsjuhsD;39`kO#T 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 z%0D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 a%oPI@I!_TV)De&mT+>j|RxVYv4*fsK4=Tz4 diff --git a/demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe_stretched.png b/demonstrations/initial_state_preparation/hf_vs_ccsd_for_vqe_stretched.png deleted file mode 100644 index 14c964139948149dc7d3c23ec1a27103e6df3c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18518 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 From 4c0debd3f4e7ec7c25b77b37c58800c1c5890f97 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 10:05:58 -0400 Subject: [PATCH 38/65] replace header image --- .../qchem_input_states.png | Bin 0 -> 13796 bytes .../initial_state_preparation/stub.png | Bin 86747 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 demonstrations/initial_state_preparation/qchem_input_states.png delete mode 100644 demonstrations/initial_state_preparation/stub.png diff --git a/demonstrations/initial_state_preparation/qchem_input_states.png b/demonstrations/initial_state_preparation/qchem_input_states.png new file mode 100644 index 0000000000000000000000000000000000000000..4185bdb7bf803e0d7508276ad905a73f5c3ef47d GIT binary patch literal 13796 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 DFdo9n literal 0 HcmV?d00001 diff --git a/demonstrations/initial_state_preparation/stub.png b/demonstrations/initial_state_preparation/stub.png deleted file mode 100644 index 1a53d1886a750905d2890172a6a32439730e678b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86747 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%0Dad%$N4-V!A^Q^tM%hqp6eQMG*@8@_$_I?7) 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

nEt!r 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 Date: Tue, 17 Oct 2023 10:06:17 -0400 Subject: [PATCH 39/65] point to new image --- demos_quantum-chemistry.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos_quantum-chemistry.rst b/demos_quantum-chemistry.rst index 010f009200..cf08d43e6f 100644 --- a/demos_quantum-chemistry.rst +++ b/demos_quantum-chemistry.rst @@ -107,7 +107,7 @@ Quantum chemistry is one of the leading application areas of quantum computers. .. gallery-item:: :tooltip: Initial State Preparation for Quantum Chemistry - :figure: demonstrations/resource_estimation/resource_estimation.jpeg + :figure: demonstrations/initial_state_preparation/qchem_input_states.png :description: :doc:`demos/tutorial_initial_state_preparation` :tags: chemistry From f8f5e1830cd55c21a687d2297a60e609a6d125ec Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 10:11:23 -0400 Subject: [PATCH 40/65] stylistic edits --- .../tutorial_initial_state_preparation.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 5322da2b67..209d1425a8 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -119,7 +119,7 @@ # # execute DMRG by modifying the ket state in-place to minimize the energy # driver.dmrg(mpo, ket, n_sweeps=30,bond_dims=[100,200],\ # noises=[1e-3,1e-5],thrds=[1e-6,1e-7],tol=1e-6) - +# # # post-process the MPS to get an initial state # dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) # dets = dets.tolist() @@ -145,7 +145,8 @@ # 0. +0.j 0. +0.j 0. +0.j 0. +0.j # 0. +0.j 0. +0.j 0. +0.j 0. +0.j # 0. +0.j 0. +0.j 0. +0.j 0. +0.j] -# + +############################################################################## # The crucial part is calling ``get_csf_coefficients()`` on the solution stored in # MPS form in the ``ket``. This triggers an internal reconstruction calculation that # converts the MPS to the sum of Slater determinants form, returning the output @@ -165,7 +166,8 @@ hf_primer = ( [ [3, 0, 0] ], np.array([1.]) ) wf_hf = import_state(hf_primer) -############################################################################## +# +# # SHCI states # ^^^^^^^^^^^ # The SHCI calculations utilize the library `Dice `_, and can be run @@ -219,7 +221,7 @@ # package built specifically for using traditional quantum chemistry methods # to construct initial states. # -############################################################################## +# # Application: speed up VQE # ------------------------- # @@ -295,7 +297,9 @@ def circuit_VQE(theta): results_cisd.append(new_energy) print(f"Starting with CISD state took {len(results_cisd)} iterations until convergence.") -# plot the results +############################################################################## +# Let's visualize the comparison between the two initial states + import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.plot(range(len(results_hf)), results_hf, color="r", marker="o", label="HF") @@ -314,7 +318,7 @@ def circuit_VQE(theta): print(np.dot(wf_cisd, wf_hf)) print(np.dot(wf_ccsd, wf_hf)) -# + # .. code-block:: python # print(np.dot(wf_dmrg, wf_hf)) # print(np.dot(wf_shci, wf_hf)) From addba50e9166a543c83acf6d93f014269a88b306 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 10:28:47 -0400 Subject: [PATCH 41/65] style edits --- demonstrations/tutorial_initial_state_preparation.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 209d1425a8..1b3c1337bc 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -126,7 +126,7 @@ # wf_dmrg = import_state((dets, coeffs), tol=1e-1) # print(f"DMRG-based state vector\n{wf_dmrg}") # -# .. note:: +# .. code-block:: bash # # DMRG-based state vector # [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j @@ -166,7 +166,7 @@ hf_primer = ( [ [3, 0, 0] ], np.array([1.]) ) wf_hf = import_state(hf_primer) -# +############################################################################## # # SHCI states # ^^^^^^^^^^^ @@ -196,7 +196,7 @@ # wf_shci = import_state((dets, coeffs), tol=1e-1) # print(f"SHCI-based state vector\n{wf_shci}") # -# .. note:: +# .. code-block:: bash # # SHCI-based state vector # [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j @@ -222,6 +222,8 @@ # to construct initial states. # # +############################################################################## +# # Application: speed up VQE # ------------------------- # From c2408fa72771f88e386aad1664538730c813f949 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 10:52:02 -0400 Subject: [PATCH 42/65] style edits --- demonstrations/tutorial_initial_state_preparation.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 1b3c1337bc..c9b2d34723 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -167,9 +167,9 @@ wf_hf = import_state(hf_primer) ############################################################################## -# # SHCI states # ^^^^^^^^^^^ +# # The SHCI calculations utilize the library `Dice `_, and can be run # using PySCF through the interface module `SHCI-SCF `_. # For Dice, the installation process is more complicated than for Block2, but the execution process is similar: @@ -220,10 +220,8 @@ # generate initial states from them, you should try Overlapper, our internal # package built specifically for using traditional quantum chemistry methods # to construct initial states. -# -# + ############################################################################## -# # Application: speed up VQE # ------------------------- # From 55a63a6fa4ff17375748e3b9b1a4d7c41782da4a Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 11:13:16 -0400 Subject: [PATCH 43/65] style edits to overlap output --- demonstrations/tutorial_initial_state_preparation.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index c9b2d34723..f7e36ca97b 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -319,14 +319,12 @@ def circuit_VQE(theta): print(np.dot(wf_cisd, wf_hf)) print(np.dot(wf_ccsd, wf_hf)) -# .. code-block:: python +# .. code-block:: bash # print(np.dot(wf_dmrg, wf_hf)) # print(np.dot(wf_shci, wf_hf)) -# -# .. note:: -# (0.9745302156335056+0j) -# (-0.9745302156443371+0j) -# +# >>> (0.9745302156335056+0j) +# >>> (-0.9745302156443371+0j) + ############################################################################## # In this particular case, even CISD gives the exact wavefunction, hence all overlaps # are identical. In more correlated molecules, overlaps will show that the more From acb039fe4424202e14c017a3c23fce2b3f978032 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 12:15:13 -0400 Subject: [PATCH 44/65] style edits --- demonstrations/tutorial_initial_state_preparation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index f7e36ca97b..4827026196 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -319,6 +319,7 @@ def circuit_VQE(theta): print(np.dot(wf_cisd, wf_hf)) print(np.dot(wf_ccsd, wf_hf)) +############################################################################## # .. code-block:: bash # print(np.dot(wf_dmrg, wf_hf)) # print(np.dot(wf_shci, wf_hf)) From 905eeee6eef451244bac66f1ce95b48b36d29628 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 15:11:46 -0400 Subject: [PATCH 45/65] final stylistic changes --- .../tutorial_initial_state_preparation.py | 100 +++++++----------- 1 file changed, 39 insertions(+), 61 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 4827026196..eeec329a16 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -58,7 +58,7 @@ myhf = scf.RHF(mol).run() myci = ci.CISD(myhf).run() wf_cisd = import_state(myci, tol=1e-1) -print(f"CISD-based state vector\n{wf_cisd}") +print(f"CISD-based state vector: \n {wf_cisd.real}") ############################################################################## # The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an @@ -80,7 +80,7 @@ from pyscf import cc mycc = cc.CCSD(myhf).run() wf_ccsd = import_state(mycc, tol=1e-1) -print(f"CCSD-based state vector\n{wf_ccsd}") +print(f"CCSD-based state vector: \n {wf_ccsd.real}") ############################################################################## # For CCSD conversion, the exponential form is expanded and terms are collected to @@ -128,23 +128,18 @@ # # .. code-block:: bash # -# DMRG-based state vector -# [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# -0.22425623+0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0.9745302 +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j] +# DMRG-based state vector +# [ 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# -0.22425623 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0.97453022 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. ] ############################################################################## # The crucial part is calling ``get_csf_coefficients()`` on the solution stored in @@ -199,28 +194,19 @@ # .. code-block:: bash # # SHCI-based state vector -# [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0.22425623+0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# -0.97453022+0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j -# 0. +0.j 0. +0.j 0. +0.j 0. +0.j] +# [ 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0.22425623 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# -0.97453022 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. ] +# # -# If you are interested in a library that wraps all these methods and makes it easy to -# generate initial states from them, you should try Overlapper, our internal -# package built specifically for using traditional quantum chemistry methods -# to construct initial states. - ############################################################################## # Application: speed up VQE # ------------------------- @@ -249,8 +235,8 @@ # VQE circuit with wf_hf as initial state and all possible excitations @qml.qnode(dev, interface="autograd") -def circuit_VQE(theta): - qml.StatePrep(wf_hf, wires=wires) +def circuit_VQE(theta, initial_state): + qml.StatePrep(initial_state, wires=wires) for i, excitation in enumerate(excitations): if len(excitation) == 4: qml.DoubleExcitation(theta[i], wires=excitation) @@ -266,35 +252,26 @@ def circuit_VQE(theta): # run the VQE optimization loop until convergence threshold is reached while abs(delta_E) > 1e-5: - theta, prev_energy = opt.step_and_cost(circuit_VQE, theta) - new_energy = circuit_VQE(theta) + theta, prev_energy = opt.step_and_cost(circuit_VQE, theta, initial_state = wf_hf) + new_energy = circuit_VQE(theta, initial_state = wf_hf) delta_E = new_energy - prev_energy results_hf.append(new_energy) + print(f"Step = {len(results_hf)}, Energy = {new_energy:.6f} Ha, dE = {delta_E} Ha") print(f"Starting with HF state took {len(results_hf)} iterations until convergence.") ############################################################################## # And compare with how things go when you run it with the CISD initial state -# re-create VQE circuit with wf_cisd as initial state -@qml.qnode(dev, interface="autograd") -def circuit_VQE(theta): - qml.StatePrep(wf_cisd, wires=wires) - for i, excitation in enumerate(excitations): - if len(excitation) == 4: - qml.DoubleExcitation(theta[i], wires=excitation) - else: - qml.SingleExcitation(theta[i], wires=excitation) - return qml.expval(H2mol) - theta = np.array(np.zeros(len(excitations)), requires_grad=True) delta_E, iteration = 10, 0 results_cisd = [] while abs(delta_E) > 1e-5: - theta, prev_energy = opt.step_and_cost(circuit_VQE, theta) - new_energy = circuit_VQE(theta) + theta, prev_energy = opt.step_and_cost(circuit_VQE, theta, initial_state = wf_cisd) + new_energy = circuit_VQE(theta, initial_state = wf_cisd) delta_E = new_energy - prev_energy results_cisd.append(new_energy) + print(f"Step = {len(results_cisd)}, Energy = {new_energy:.6f} Ha, dE = {delta_E} Ha") print(f"Starting with CISD state took {len(results_cisd)} iterations until convergence.") ############################################################################## @@ -316,15 +293,16 @@ def circuit_VQE(theta): # metric of success for initial states in quantum algorithms. Because in PennyLane these # are regular arrays, computing an overlap is as easy as computing a dot product -print(np.dot(wf_cisd, wf_hf)) -print(np.dot(wf_ccsd, wf_hf)) +print(np.dot(wf_cisd, wf_hf).real) +print(np.dot(wf_ccsd, wf_hf).real) ############################################################################## # .. code-block:: bash +# # print(np.dot(wf_dmrg, wf_hf)) # print(np.dot(wf_shci, wf_hf)) -# >>> (0.9745302156335056+0j) -# >>> (-0.9745302156443371+0j) +# >>> 0.9745302156335067 +# >>> 0.9745302156443371 ############################################################################## # In this particular case, even CISD gives the exact wavefunction, hence all overlaps From b58315587ae45e6fec34508dfa0eff4a05fe78ca Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Tue, 17 Oct 2023 16:51:47 -0400 Subject: [PATCH 46/65] Apply suggestions from code review Co-authored-by: Guillermo Alonso-Linaje <65235481+KetpuntoG@users.noreply.github.com> --- .../tutorial_initial_state_preparation.py | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index eeec329a16..8a45904db8 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -29,6 +29,11 @@ ground state, but it will certainly be better than the standard guess of a computational basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. +.. figure:: ../demonstrations/initial_state_preparation/qchem_input_states.png + :align: center + :width: 50% + :target: javascript:void(0) + Importing initial states ------------------------ We can import initial states obtained from several post-Hartree-Fock quantum chemistry calculations @@ -40,7 +45,7 @@ renormalization group (DMRG) and semistochastic heat-bath configuration interaction (SHCI). CISD states -^^^^^^^^^^^ +~~~~~~~~~~ The first line of attack for initial state preparation are CISD calculations performed with the `PySCF `_ library. CISD is unsophisticated, but fast. It will not be of much help for strongly correlated molecules, but it is better than Hartree-Fock. Here is the code example based on the restricted Hartree-Fock @@ -73,7 +78,7 @@ # # # CCSD states -# ^^^^^^^^^^^ +# ~~~~~~~~~ # The function :func:`~.pennylane.qchem.import_state` is general, and can automatically detect the input type # and apply the appropriate conversion protocol. It works similarly to the above for CCSD. @@ -87,9 +92,10 @@ # second order to obtain the CI coefficients. # # DMRG states -# ^^^^^^^^^^^ +# ~~~~~~~~~ # The DMRG calculations involve running the library `Block2 `_, -# which is installed from ``pip`` +# which is installed from ``pip``: + # # .. code-block:: bash # @@ -163,7 +169,7 @@ ############################################################################## # SHCI states -# ^^^^^^^^^^^ +# ~~~~~~~~~~~~~~ # # The SHCI calculations utilize the library `Dice `_, and can be run # using PySCF through the interface module `SHCI-SCF `_. @@ -231,7 +237,7 @@ excitations = singles + doubles ############################################################################## -# Now let's run VQE with the Hartree-Fock initial state +# Now let's run VQE with the Hartree-Fock initial state: # VQE circuit with wf_hf as initial state and all possible excitations @qml.qnode(dev, interface="autograd") @@ -260,7 +266,7 @@ def circuit_VQE(theta, initial_state): print(f"Starting with HF state took {len(results_hf)} iterations until convergence.") ############################################################################## -# And compare with how things go when you run it with the CISD initial state +# And compare with how things go when you run it with the CISD initial state: theta = np.array(np.zeros(len(excitations)), requires_grad=True) delta_E, iteration = 10, 0 @@ -312,8 +318,8 @@ def circuit_VQE(theta, initial_state): # overlap to it could tell us directly the quality of the initial state. ############################################################################## -# Summary -# ------- +# Conclusion +# ----------- # This demo explains the concept of the initial state for quantum algorithms. Using the # example of VQE, it demonstrates how a better choice of state--obtained, for example # from a sophisticated computational chemistry method like CCSD, SHCI or DMRG--can lead From f50d1dbcebd210d74b4fa641102506e4832ab048 Mon Sep 17 00:00:00 2001 From: Guillermo Alonso-Linaje <65235481+KetpuntoG@users.noreply.github.com> Date: Wed, 18 Oct 2023 10:35:49 -0400 Subject: [PATCH 47/65] Update demonstrations/tutorial_initial_state_preparation.py --- demonstrations/tutorial_initial_state_preparation.py | 1 - 1 file changed, 1 deletion(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 8a45904db8..ef39b9ebac 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -95,7 +95,6 @@ # ~~~~~~~~~ # The DMRG calculations involve running the library `Block2 `_, # which is installed from ``pip``: - # # .. code-block:: bash # From f8c5e20427be5b1c864b669e2c78193672be1233 Mon Sep 17 00:00:00 2001 From: KetpuntoG <65235481+KetpuntoG@users.noreply.github.com> Date: Wed, 18 Oct 2023 10:52:32 -0400 Subject: [PATCH 48/65] thumbnails + black --- ...mbnail_large_initial_state_preparation.png | Bin 0 -> 89980 bytes .../thumbnail_ initial_state_preparation.png | Bin 0 -> 23078 bytes ...al_initial_state_preparation.metadata.json | 6 +- .../tutorial_initial_state_preparation.py | 109 +++++++++--------- demos_quantum-chemistry.rst | 2 +- 5 files changed, 60 insertions(+), 57 deletions(-) create mode 100644 _static/large_demo_thumbnails/thumbnail_large_initial_state_preparation.png create mode 100644 demonstrations/initial_state_preparation/thumbnail_ initial_state_preparation.png diff --git a/_static/large_demo_thumbnails/thumbnail_large_initial_state_preparation.png b/_static/large_demo_thumbnails/thumbnail_large_initial_state_preparation.png new file mode 100644 index 0000000000000000000000000000000000000000..503fe0d1a856d74f6dd9c29b0788573df1832b36 GIT binary patch literal 89980 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 E5BYfbr~m)} literal 0 HcmV?d00001 diff --git a/demonstrations/initial_state_preparation/thumbnail_ initial_state_preparation.png b/demonstrations/initial_state_preparation/thumbnail_ initial_state_preparation.png new file mode 100644 index 0000000000000000000000000000000000000000..497d7085960bbf0798b51d09177d645bb2ef59de GIT binary patch literal 23078 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 algorithms, obtaining the ground state of a chemical system requires @@ -31,7 +21,7 @@ .. figure:: ../demonstrations/initial_state_preparation/qchem_input_states.png :align: center - :width: 50% + :width: 65% :target: javascript:void(0) Importing initial states @@ -57,8 +47,9 @@ R = 1.2 # create the H3+ molecule -mol = gto.M(atom=[['H', (0, 0, 0)], ['H', (0,0,R)], ['H', (0,0,2*R)]],\ - charge=1, basis='sto-3g') +mol = gto.M( + atom=[["H", (0, 0, 0)], ["H", (0, 0, R)], ["H", (0, 0, 2 * R)]], charge=1, basis="sto-3g" +) # perfrom restricted Hartree-Fock and then CISD myhf = scf.RHF(mol).run() myci = ci.CISD(myhf).run() @@ -66,14 +57,14 @@ print(f"CISD-based state vector: \n {wf_cisd.real}") ############################################################################## -# The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an +# The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an # initial state in a quantum circuit in PennyLane--we will showcase this below for VQE. -# Conversion for CISD is straightforward: simply assign the PySCF-stored CI coefficients +# Conversion for CISD is straightforward: simply assign the PySCF-stored CI coefficients # to appropriate determinants. # -# The second attribute, ``tol``, specifies the cutoff beyond which contributions to the -# wavefunctions are neglected. Internally, wavefunctions are stored in their Slater -# determinant representation, and if their prefactor coefficient is below ``tol``, those +# The second attribute, ``tol``, specifies the cutoff beyond which contributions to the +# wavefunctions are neglected. Internally, wavefunctions are stored in their Slater +# determinant representation, and if their prefactor coefficient is below ``tol``, those # determinants are dropped from the expression. # # @@ -83,17 +74,18 @@ # and apply the appropriate conversion protocol. It works similarly to the above for CCSD. from pyscf import cc + mycc = cc.CCSD(myhf).run() wf_ccsd = import_state(mycc, tol=1e-1) print(f"CCSD-based state vector: \n {wf_ccsd.real}") ############################################################################## -# For CCSD conversion, the exponential form is expanded and terms are collected to -# second order to obtain the CI coefficients. +# For CCSD conversion, the exponential form is expanded and terms are collected to +# second order to obtain the CI coefficients. # # DMRG states # ~~~~~~~~~ -# The DMRG calculations involve running the library `Block2 `_, +# The DMRG calculations involve running the library `Block2 `_, # which is installed from ``pip``: # @@ -115,7 +107,7 @@ # ncas, n_elec, spin, ecore, h1e, g2e, orb_sym = \ # itg.get_rhf_integrals(myhf, mc.ncore, mc.ncas, g2e_symm=8) # -# # initialize the DMRG solver, Hamiltonian (as matrix-product operator, MPO) and +# # initialize the DMRG solver, Hamiltonian (as matrix-product operator, MPO) and # # state (as matrix-product state, MPS) # driver = DMRGDriver(scratch="./dmrg_temp", symm_type=SymmetryTypes.SZ) # driver.initialize_system(n_sites=ncas, n_elec=n_elec, spin=spin, orb_sym=orb_sym) @@ -148,30 +140,31 @@ # 0. 0. 0. 0. ] ############################################################################## -# The crucial part is calling ``get_csf_coefficients()`` on the solution stored in +# The crucial part is calling ``get_csf_coefficients()`` on the solution stored in # MPS form in the ``ket``. This triggers an internal reconstruction calculation that -# converts the MPS to the sum of Slater determinants form, returning the output +# converts the MPS to the sum of Slater determinants form, returning the output # as a tuple ``(list([int]), array(float]))``. The first element expresses a given Slater # determinant using Fock occupation vectors of length equal to the number of spatial -# orbitals in Block2 notation, where ``0`` is unoccupied, ``1`` is occupied with spin-up -# electron, ``2`` is occupied with spin-down, and ``3`` is doubly occupied. The first -# element must be converted to ``list`` for ``import_state`` to accept it. The second -# element stores the CI coefficients. +# orbitals in Block2 notation, where ``0`` is unoccupied, ``1`` is occupied with spin-up +# electron, ``2`` is occupied with spin-down, and ``3`` is doubly occupied. The first +# element must be converted to ``list`` for ``import_state`` to accept it. The second +# element stores the CI coefficients. # -# In principle, this functionality can be used to generate any initial state, provided -# the user specifies a list of Slater determinants and their coefficients in this form. -# Let's take this opportunity to create the Hartree-Fock initial state, to compare the +# In principle, this functionality can be used to generate any initial state, provided +# the user specifies a list of Slater determinants and their coefficients in this form. +# Let's take this opportunity to create the Hartree-Fock initial state, to compare the # other states against it. from pennylane import numpy as np -hf_primer = ( [ [3, 0, 0] ], np.array([1.]) ) + +hf_primer = ([[3, 0, 0]], np.array([1.0])) wf_hf = import_state(hf_primer) ############################################################################## # SHCI states # ~~~~~~~~~~~~~~ # -# The SHCI calculations utilize the library `Dice `_, and can be run +# The SHCI calculations utilize the library `Dice `_, and can be run # using PySCF through the interface module `SHCI-SCF `_. # For Dice, the installation process is more complicated than for Block2, but the execution process is similar: # @@ -198,7 +191,7 @@ # print(f"SHCI-based state vector\n{wf_shci}") # # .. code-block:: bash -# +# # SHCI-based state vector # [ 0. 0. 0. 0. 0. 0. # 0. 0. 0. 0. 0. 0. @@ -217,18 +210,21 @@ # Application: speed up VQE # ------------------------- # -# Let us now demonstrate how the choice of a better initial state shortens the runtime +# Let us now demonstrate how the choice of a better initial state shortens the runtime # of VQE for obtaining the ground-state energy of a molecule. As a first step, create a -# molecule, a device, and a simple VQE circuit with double excitations +# molecule, a device, and a simple VQE circuit with double excitations: import pennylane as qml from pennylane import qchem from pennylane import numpy as np # generate the molecular Hamiltonian for H3+ -H2mol, qubits = qchem.molecular_hamiltonian(["H", "H", "H"],\ - np.array([0,0,0,0,0,R/0.529, 0,0,2*R/0.529]),\ - charge=1,basis="sto-3g") +H2mol, qubits = qchem.molecular_hamiltonian( + ["H", "H", "H"], + np.array([0, 0, 0, 0, 0, R / 0.529, 0, 0, 2 * R / 0.529]), + charge=1, + basis="sto-3g", +) wires = list(range(qubits)) dev = qml.device("default.qubit", wires=qubits) @@ -239,6 +235,7 @@ ############################################################################## # Now let's run VQE with the Hartree-Fock initial state: + # VQE circuit with wf_hf as initial state and all possible excitations @qml.qnode(dev, interface="autograd") def circuit_VQE(theta, initial_state): @@ -250,6 +247,7 @@ def circuit_VQE(theta, initial_state): qml.SingleExcitation(theta[i], wires=excitation) return qml.expval(H2mol) + # create the VQE optimizer, initialize the variational parameters, set start params opt = qml.GradientDescentOptimizer(stepsize=0.4) theta = np.array(np.zeros(len(excitations)), requires_grad=True) @@ -258,8 +256,8 @@ def circuit_VQE(theta, initial_state): # run the VQE optimization loop until convergence threshold is reached while abs(delta_E) > 1e-5: - theta, prev_energy = opt.step_and_cost(circuit_VQE, theta, initial_state = wf_hf) - new_energy = circuit_VQE(theta, initial_state = wf_hf) + theta, prev_energy = opt.step_and_cost(circuit_VQE, theta, initial_state=wf_hf) + new_energy = circuit_VQE(theta, initial_state=wf_hf) delta_E = new_energy - prev_energy results_hf.append(new_energy) print(f"Step = {len(results_hf)}, Energy = {new_energy:.6f} Ha, dE = {delta_E} Ha") @@ -273,8 +271,8 @@ def circuit_VQE(theta, initial_state): results_cisd = [] while abs(delta_E) > 1e-5: - theta, prev_energy = opt.step_and_cost(circuit_VQE, theta, initial_state = wf_cisd) - new_energy = circuit_VQE(theta, initial_state = wf_cisd) + theta, prev_energy = opt.step_and_cost(circuit_VQE, theta, initial_state=wf_cisd) + new_energy = circuit_VQE(theta, initial_state=wf_cisd) delta_E = new_energy - prev_energy results_cisd.append(new_energy) print(f"Step = {len(results_cisd)}, Energy = {new_energy:.6f} Ha, dE = {delta_E} Ha") @@ -284,6 +282,7 @@ def circuit_VQE(theta, initial_state): # Let's visualize the comparison between the two initial states import matplotlib.pyplot as plt + fig, ax = plt.subplots() ax.plot(range(len(results_hf)), results_hf, color="r", marker="o", label="HF") ax.plot(range(len(results_cisd)), results_cisd, color="b", marker="o", label="CISD") @@ -296,7 +295,7 @@ def circuit_VQE(theta, initial_state): ############################################################################## # Finally, it is straightforward to compare the initial states through overlap--a traditional -# metric of success for initial states in quantum algorithms. Because in PennyLane these +# metric of success for initial states in quantum algorithms. Because in PennyLane these # are regular arrays, computing an overlap is as easy as computing a dot product print(np.dot(wf_cisd, wf_hf).real) @@ -311,22 +310,22 @@ def circuit_VQE(theta, initial_state): # >>> 0.9745302156443371 ############################################################################## -# In this particular case, even CISD gives the exact wavefunction, hence all overlaps -# are identical. In more correlated molecules, overlaps will show that the more -# multireference methods DMRG and SHCI are farther away from the Hartree-Fock state, -# allowing them to perform better. If a ground state in such a case was known, the +# In this particular case, even CISD gives the exact wavefunction, hence all overlaps +# are identical. In more correlated molecules, overlaps will show that the more +# multireference methods DMRG and SHCI are farther away from the Hartree-Fock state, +# allowing them to perform better. If a ground state in such a case was known, the # overlap to it could tell us directly the quality of the initial state. ############################################################################## -# Conclusion +# Conclusion # ----------- -# This demo explains the concept of the initial state for quantum algorithms. Using the -# example of VQE, it demonstrates how a better choice of state--obtained, for example +# This demo explains the concept of the initial state for quantum algorithms. Using the +# example of VQE, it demonstrates how a better choice of state--obtained, for example # from a sophisticated computational chemistry method like CCSD, SHCI or DMRG--can lead -# to much better algorithmic performance. It also shows simple workflows for how to run -# these computational chemistry methods, from libraries such as `PySCF `_, -# `Block2 `_ and -# `Dice `_, to generate outputs that can then be +# to much better algorithmic performance. It also shows simple workflows for how to run +# these computational chemistry methods, from libraries such as `PySCF `_, +# `Block2 `_ and +# `Dice `_, to generate outputs that can then be # converted to PennyLane's state vector format with a single line of code. # # About the author diff --git a/demos_quantum-chemistry.rst b/demos_quantum-chemistry.rst index cf08d43e6f..4cd38701a9 100644 --- a/demos_quantum-chemistry.rst +++ b/demos_quantum-chemistry.rst @@ -107,7 +107,7 @@ Quantum chemistry is one of the leading application areas of quantum computers. .. gallery-item:: :tooltip: Initial State Preparation for Quantum Chemistry - :figure: demonstrations/initial_state_preparation/qchem_input_states.png + :figure: demonstrations/initial_state_preparation/thumbnail_initial_state_preparation.png :description: :doc:`demos/tutorial_initial_state_preparation` :tags: chemistry From fb01731dd064aa3e8522c198327b1eb482be4844 Mon Sep 17 00:00:00 2001 From: KetpuntoG <65235481+KetpuntoG@users.noreply.github.com> Date: Wed, 18 Oct 2023 11:36:06 -0400 Subject: [PATCH 49/65] random space in the name --- ....png => thumbnail_initial_state_preparation.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename demonstrations/initial_state_preparation/{thumbnail_ initial_state_preparation.png => thumbnail_initial_state_preparation.png} (100%) diff --git a/demonstrations/initial_state_preparation/thumbnail_ initial_state_preparation.png b/demonstrations/initial_state_preparation/thumbnail_initial_state_preparation.png similarity index 100% rename from demonstrations/initial_state_preparation/thumbnail_ initial_state_preparation.png rename to demonstrations/initial_state_preparation/thumbnail_initial_state_preparation.png From afcd9b553e0d91894430fadc8ed82872951c5be9 Mon Sep 17 00:00:00 2001 From: KetpuntoG <65235481+KetpuntoG@users.noreply.github.com> Date: Wed, 18 Oct 2023 11:52:58 -0400 Subject: [PATCH 50/65] fixing uri --- demonstrations/tutorial_initial_state_preparation.metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demonstrations/tutorial_initial_state_preparation.metadata.json b/demonstrations/tutorial_initial_state_preparation.metadata.json index 763c056886..8eb05c187d 100644 --- a/demonstrations/tutorial_initial_state_preparation.metadata.json +++ b/demonstrations/tutorial_initial_state_preparation.metadata.json @@ -14,7 +14,7 @@ "previewImages": [ { "type": "thumbnail", - "uri": "/_images/thumbnail_tutorial_initial_state_preparation.png" + "uri": "/_images/thumbnail_initial_state_preparation.png" }, { "type": "large_thumbnail", From 75e909dd3772f0605b0a5d48e387feba026d0d80 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Wed, 18 Oct 2023 13:48:00 -0400 Subject: [PATCH 51/65] stylistic edits --- .../tutorial_initial_state_preparation.py | 53 +++++++++---------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index eeec329a16..42205e5548 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -3,16 +3,6 @@ Initial state preparation for quantum chemistry =============================================== -.. meta:: - :property="og:description": Understand the concept of the initial state, and learn how to prepare it with PennyLane - :property="og:image": https://pennylane.ai/qml/_images/thumbnail_tutorial_initial_state_preparation.png - -.. related:: - tutorial_quantum_chemistry Building molecular Hamiltonians - tutorial_vqe A brief overview of VQE - -*Author: Stepan Fomichev — Posted: 20 October 2023. Last updated: 20 October 2023.* - A high-quality initial state can significantly reduce the runtime of many quantum algorithms. From the variational quantum eigensolver (VQE) to quantum phase estimation (QPE) and even the recent `intermediate-scale quantum (ISQ) `_ algorithms, obtaining the ground state of a chemical system requires @@ -23,21 +13,25 @@ and Grover search. Much like searching for a needle in a haystack, there are a lot of things you might try -to prepare a good guess for the ground state in the large-dimensional Hilbert space. In this -tutorial, we show how to use traditional computational chemistry techniques to +to prepare a good guess for the ground state in the high-dimensional Hilbert space. In this +tutorial, we show how to *use traditional computational chemistry techniques* to get us *most of the way* to an initial state. Such an initial state will not be the ground state, but it will certainly be better than the standard guess of a computational basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. Importing initial states ------------------------ -We can import initial states obtained from several post-Hartree-Fock quantum chemistry calculations +We can import initial states obtained from several post-Hartree-Fock quantum chemistry methods to PennyLane. These methods are incredibly diverse in terms of their outputs, not always returning -an object that can be turned into a PennyLane state vector. We have already done this hard -conversion work: all that you need to do is run these methods and pass their outputs -to PennyLane's :func:`~.pennylane.qchem.import_state` function. The currently supported methods are -configuration interaction with singles and doubles (CISD), coupled cluster (CCSD), density-matrix -renormalization group (DMRG) and semistochastic heat-bath configuration interaction (SHCI). +an object that is easy to turn into a PennyLane state vector. + +We have already done this hard conversion work: all that you need to do is run these methods and +pass their outputs to PennyLane's :func:`~.pennylane.qchem.import_state` function. The currently +supported methods are configuration interaction with singles and doubles (CISD), coupled cluster +(CCSD), density-matrix renormalization group (DMRG) and semistochastic heat-bath configuration +interaction (SHCI). + +We now show how this works on the example of the H:math:`_3^+` molecule. CISD states ^^^^^^^^^^^ @@ -63,13 +57,13 @@ ############################################################################## # The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an # initial state in a quantum circuit in PennyLane--we will showcase this below for VQE. -# Conversion for CISD is straightforward: simply assign the PySCF-stored CI coefficients -# to appropriate determinants. +# Conversion for CISD to a state vector is straightforward: simply assign the PySCF-stored +# CI coefficients to appropriate determinants. # -# The second attribute, ``tol``, specifies the cutoff beyond which contributions to the -# wavefunctions are neglected. Internally, wavefunctions are stored in their Slater -# determinant representation, and if their prefactor coefficient is below ``tol``, those -# determinants are dropped from the expression. +# The second attribute passed to ``import_state()``, ``tol``, specifies the cutoff beyond +# which contributions to the wavefunctions are neglected. Internally, wavefunctions are +# stored in their Slater determinant representation, and if their prefactor coefficient +# is below ``tol``, those determinants are dropped from the expression. # # # CCSD states @@ -83,8 +77,8 @@ print(f"CCSD-based state vector: \n {wf_ccsd.real}") ############################################################################## -# For CCSD conversion, the exponential form is expanded and terms are collected to -# second order to obtain the CI coefficients. +# For CCSD conversion, the exponential form is expanded and terms are collected *to +# second order* to obtain the CI coefficients. # # DMRG states # ^^^^^^^^^^^ @@ -145,7 +139,7 @@ # The crucial part is calling ``get_csf_coefficients()`` on the solution stored in # MPS form in the ``ket``. This triggers an internal reconstruction calculation that # converts the MPS to the sum of Slater determinants form, returning the output -# as a tuple ``(list([int]), array(float]))``. The first element expresses a given Slater +# as a tuple ``(array([int]), array(float]))``. The first element expresses a given Slater # determinant using Fock occupation vectors of length equal to the number of spatial # orbitals in Block2 notation, where ``0`` is unoccupied, ``1`` is occupied with spin-up # electron, ``2`` is occupied with spin-down, and ``3`` is doubly occupied. The first @@ -162,6 +156,7 @@ wf_hf = import_state(hf_primer) ############################################################################## +# # SHCI states # ^^^^^^^^^^^ # @@ -206,7 +201,6 @@ # 0. 0. 0. 0. 0. 0. # 0. 0. 0. 0. ] # -# ############################################################################## # Application: speed up VQE # ------------------------- @@ -275,7 +269,8 @@ def circuit_VQE(theta, initial_state): print(f"Starting with CISD state took {len(results_cisd)} iterations until convergence.") ############################################################################## -# Let's visualize the comparison between the two initial states +# Let's visualize the comparison between the two initial states, and see that indeed +# we get to the ground state much faster with a better initial state. import matplotlib.pyplot as plt fig, ax = plt.subplots() From fa4f1b928a11fe29cc34eeaa0e080f5ba5bc9ed7 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Wed, 18 Oct 2023 13:54:50 -0400 Subject: [PATCH 52/65] comments on best initial state options --- .../tutorial_initial_state_preparation.py | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 89df6f1290..598e5f950b 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -89,7 +89,8 @@ # # DMRG states # ~~~~~~~~~ -# The DMRG calculations involve running the library `Block2 `_, +# Generally, for more complex or more correlated molecules, initial states from DMRG or +# SHCI will be the best options. DMRG calculations involve running the library `Block2 `_, # which is installed from ``pip``: # # .. code-block:: bash @@ -305,20 +306,13 @@ def circuit_VQE(theta, initial_state): print(np.dot(wf_cisd, wf_hf).real) print(np.dot(wf_ccsd, wf_hf).real) -############################################################################## -# .. code-block:: bash -# -# print(np.dot(wf_dmrg, wf_hf)) -# print(np.dot(wf_shci, wf_hf)) -# >>> 0.9745302156335067 -# >>> 0.9745302156443371 - ############################################################################## # In this particular case, even CISD gives the exact wavefunction, hence all overlaps # are identical. In more correlated molecules, overlaps will show that the more # multireference methods DMRG and SHCI are farther away from the Hartree-Fock state, -# allowing them to perform better. If a ground state in such a case was known, the -# overlap to it could tell us directly the quality of the initial state. +# allowing them to perform better (you can check this by printing the overlaps with +# DMRG and SHCI in a tougher molecule). If a ground state in such a case was known, +# the overlap to it could tell us directly the quality of the initial state. ############################################################################## # Conclusion @@ -326,8 +320,10 @@ def circuit_VQE(theta, initial_state): # This demo explains the concept of the initial state for quantum algorithms. Using the # example of VQE, it demonstrates how a better choice of state--obtained, for example # from a sophisticated computational chemistry method like CCSD, SHCI or DMRG--can lead -# to much better algorithmic performance. It also shows simple workflows for how to run -# these computational chemistry methods, from libraries such as `PySCF `_, +# to much better algorithmic performance. For best results, especially in more correlated +# molecules, we generally recommend DMRG or SHCI initial states. Here we showcased +# simple workflows for how to run these post-Hartree-Fock computational chemistry methods, +# from libraries such as `PySCF `_, # `Block2 `_ and # `Dice `_, to generate outputs that can then be # converted to PennyLane's state vector format with a single line of code. From cd9c23998ccdaaa3f4e270985400a3ba4e353ec1 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Wed, 18 Oct 2023 14:14:43 -0400 Subject: [PATCH 53/65] shci and application:vqe headers style edit --- demonstrations/tutorial_initial_state_preparation.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 598e5f950b..47765ca9e3 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -165,9 +165,8 @@ wf_hf = import_state(hf_primer) ############################################################################## -# # SHCI states -# ~~~~~~~~~~~~~~ +# ~~~~~~~~~~~ # # The SHCI calculations utilize the library `Dice `_, and can be run # using PySCF through the interface module `SHCI-SCF `_. @@ -209,7 +208,7 @@ # -0.97453022 0. 0. 0. 0. 0. # 0. 0. 0. 0. 0. 0. # 0. 0. 0. 0. ] -# + ############################################################################## # Application: speed up VQE # ------------------------- From 5bae116270fbadb6fab851ba8e60cc3f6171f41b Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Wed, 18 Oct 2023 16:36:19 -0400 Subject: [PATCH 54/65] bold text edit --- demonstrations/tutorial_initial_state_preparation.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 47765ca9e3..308176a663 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -14,7 +14,7 @@ Much like searching for a needle in a haystack, there are a lot of things you might try to prepare a good guess for the ground state in the high-dimensional Hilbert space. In this -tutorial, we show how to *use traditional computational chemistry techniques* to +tutorial, we show how to **use traditional computational chemistry techniques** to get us *most of the way* to an initial state. Such an initial state will not be the ground state, but it will certainly be better than the standard guess of a computational basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. @@ -84,8 +84,8 @@ print(f"CCSD-based state vector: \n {wf_ccsd.real}") ############################################################################## -# For CCSD conversion, the exponential form is expanded and terms are collected *to -# second order* to obtain the CI coefficients. +# For CCSD conversion, the exponential form is expanded and terms are collected **to +# second order** to obtain the CI coefficients. # # DMRG states # ~~~~~~~~~ From 1d1e118db554af67aebecf4f1ea2bf282434617a Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Wed, 18 Oct 2023 17:38:51 -0400 Subject: [PATCH 55/65] final style edits --- .../tutorial_initial_state_preparation.py | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 308176a663..64be3cc2ad 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -40,10 +40,10 @@ CISD states ~~~~~~~~~~ -The first line of attack for initial state preparation are CISD calculations performed with the `PySCF `_ +The first line of attack for initial state preparation is often a CISD calculation, performed with the `PySCF `_ library. CISD is unsophisticated, but fast. It will not be of much help for strongly correlated molecules, -but it is better than Hartree-Fock. Here is the code example based on the restricted Hartree-Fock -orbitals, but the unrestricted version is available too. +but it is better than Hartree-Fock. Here is the code example using the restricted Hartree-Fock +orbitals (it also works for unrestricted orbitals too). """ from pyscf import gto, scf, ci @@ -170,7 +170,7 @@ # # The SHCI calculations utilize the library `Dice `_, and can be run # using PySCF through the interface module `SHCI-SCF `_. -# For Dice, the installation process is more complicated than for Block2, but the execution process is similar: +# For Dice, the execution process is similar: # # .. code-block:: python # @@ -188,10 +188,10 @@ # # execute SHCI through the PySCF interface # e_tot, e_ci, ss, mo_coeff, mo_energies = myshci.kernel(verbose=5) # -# # post-process the result to get an initial state -# (dets, coeffs) = [post-process shci_output.out to get tuple of -# dets (list([str])) and coeffs (array([float]))] -# wf_shci = import_state((dets, coeffs), tol=1e-1) +# # post-process the shci_output.out to extract the wave function +# # results and create the tuple of dets (list([str])) and coeffs (array([float])) +# # shci_data = (dets, coeffs) +# wf_shci = import_state(shci_data, tol=1e-1) # print(f"SHCI-based state vector\n{wf_shci}") # # .. code-block:: bash @@ -209,6 +209,14 @@ # 0. 0. 0. 0. 0. 0. # 0. 0. 0. 0. ] +############################################################################## +# The Dice output file prints determinants using symbols ``0`` (unoccupied orbital), +# ``a`` and ``b`` (orbital occupied with spin-up and spin-down electron, respectively), +# and ``2`` (doubly occupied orbital). These determinant outputs, and corresponding +# coefficients, should be extracted and arranged as ``(list([str]), array(float]))``, +# where each string combines all the determinant symbols ``0, a, b, 2`` for a single +# determinant. + ############################################################################## # Application: speed up VQE # ------------------------- @@ -239,8 +247,7 @@ # Now let's run VQE with the Hartree-Fock initial state: -# VQE circuit with wf_hf as initial state and all possible excitations -@qml.qnode(dev, interface="autograd") +@qml.qnode(dev) def circuit_VQE(theta, initial_state): qml.StatePrep(initial_state, wires=wires) for i, excitation in enumerate(excitations): @@ -283,13 +290,13 @@ def circuit_VQE(theta, initial_state): ############################################################################## # Let's visualize the comparison between the two initial states, and see that indeed -# we get to the ground state much faster with a better initial state. +# we get to the ground state much faster by starting with the CISD state. import matplotlib.pyplot as plt fig, ax = plt.subplots() -ax.plot(range(len(results_hf)), results_hf, color="r", marker="o", label="HF") -ax.plot(range(len(results_cisd)), results_cisd, color="b", marker="o", label="CISD") +ax.plot(range(len(results_hf)), results_hf, color="r", marker="o", label="wf_hf") +ax.plot(range(len(results_cisd)), results_cisd, color="b", marker="o", label="wf_cisd") ax.legend(fontsize=16) ax.tick_params(axis="both", labelsize=16) ax.set_xlabel("Iteration", fontsize=20) @@ -299,7 +306,7 @@ def circuit_VQE(theta, initial_state): ############################################################################## # Finally, it is straightforward to compare the initial states through overlap--a traditional -# metric of success for initial states in quantum algorithms. Because in PennyLane these +# metric of success for initial states in quantum algorithms. Because in our examples these # are regular arrays, computing an overlap is as easy as computing a dot product print(np.dot(wf_cisd, wf_hf).real) @@ -310,18 +317,19 @@ def circuit_VQE(theta, initial_state): # are identical. In more correlated molecules, overlaps will show that the more # multireference methods DMRG and SHCI are farther away from the Hartree-Fock state, # allowing them to perform better (you can check this by printing the overlaps with -# DMRG and SHCI in a tougher molecule). If a ground state in such a case was known, +# DMRG and SHCI in a more correlated molecule). If a ground state in such a case was known, # the overlap to it could tell us directly the quality of the initial state. ############################################################################## # Conclusion # ----------- -# This demo explains the concept of the initial state for quantum algorithms. Using the -# example of VQE, it demonstrates how a better choice of state--obtained, for example -# from a sophisticated computational chemistry method like CCSD, SHCI or DMRG--can lead -# to much better algorithmic performance. For best results, especially in more correlated -# molecules, we generally recommend DMRG or SHCI initial states. Here we showcased -# simple workflows for how to run these post-Hartree-Fock computational chemistry methods, +# This demo shows how to import initial states from traditional quantum chemistry methods +# for use in PennyLane-based algorithms. Using the example of VQE, it demonstrates how +# a better choice of state--obtained, for example from a sophisticated computational +# chemistry method like CCSD, SHCI or DMRG--can lead to much better algorithmic +# performance. Especially in more correlated molecules, generally DMRG and SHCI initial +# states perform best. Here we showcased simple workflows for how to +# run these post-Hartree-Fock computational chemistry methods, # from libraries such as `PySCF `_, # `Block2 `_ and # `Dice `_, to generate outputs that can then be From 6cf7cc409aae702b2c8f49542a37dffc1f0a9da8 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Wed, 18 Oct 2023 17:39:18 -0400 Subject: [PATCH 56/65] Apply suggestions from code review Co-authored-by: soranjh <40344468+soranjh@users.noreply.github.com> --- demonstrations/tutorial_initial_state_preparation.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 308176a663..4ebb684cff 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -41,7 +41,8 @@ CISD states ~~~~~~~~~~ The first line of attack for initial state preparation are CISD calculations performed with the `PySCF `_ -library. CISD is unsophisticated, but fast. It will not be of much help for strongly correlated molecules, +library. The CISD method is unsophisticated but it is fast. It will not be of much help for strongly correlated molecules + but it is better than Hartree-Fock. Here is the code example based on the restricted Hartree-Fock orbitals, but the unrestricted version is available too. """ @@ -74,8 +75,8 @@ # # CCSD states # ~~~~~~~~~ -# The function :func:`~.pennylane.qchem.import_state` is general, and can automatically detect the input type -# and apply the appropriate conversion protocol. It works similarly to the above for CCSD. +# The function :func:`~.pennylane.qchem.import_state` is general and works similarly for CCSD. It can +# automatically detect the input type and apply the appropriate conversion protocol. from pyscf import cc From 04fa37dbf6334095422b1948470570b4b7a5215b Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Wed, 18 Oct 2023 18:14:22 -0400 Subject: [PATCH 57/65] Apply suggestions from code review Co-authored-by: soranjh <40344468+soranjh@users.noreply.github.com> --- .../tutorial_initial_state_preparation.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 534ce467dd..27cb306c20 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -36,7 +36,8 @@ (CCSD), density-matrix renormalization group (DMRG) and semistochastic heat-bath configuration interaction (SHCI). -We now show how this works on the example of the H:math:`_3^+` molecule. +We now show how this works on :math:`\text{H}_3^+` molecule as an example. + CISD states ~~~~~~~~~~ @@ -68,7 +69,8 @@ # # The second attribute passed to ``import_state()``, ``tol``, specifies the cutoff beyond # which contributions to the wavefunctions are neglected. Internally, wavefunctions are -# stored in their Slater determinant representation, and if their prefactor coefficient +# stored in their Slater determinant representation. If their prefactor coefficient + # is below ``tol``, those determinants are dropped from the expression. # # @@ -89,9 +91,12 @@ # # DMRG states # ~~~~~~~~~ -# Generally, for more complex or more correlated molecules, initial states from DMRG or -# SHCI will be the best options. DMRG calculations involve running the library `Block2 `_, -# which is installed from ``pip``: +# For more complex or more correlated molecules, initial states from DMRG or + +# SHCI will be better options. DMRG calculations involve running the library `Block2 `_, + +# which can be installed with ``pip``: + # # .. code-block:: bash # @@ -151,7 +156,8 @@ # determinant using Fock occupation vectors of length equal to the number of spatial # orbitals in Block2 notation, where ``0`` is unoccupied, ``1`` is occupied with spin-up # electron, ``2`` is occupied with spin-down, and ``3`` is doubly occupied. The first -# element must be converted to ``list`` for ``import_state`` to accept it. The second +# element must be converted to ``list`` for :func:`~.pennylane.qchem.import_state` to accept it. The second + # element stores the CI coefficients. # # In principle, this functionality can be used to generate any initial state, provided From 6583bac669986e127f7e33f36925c261090e28d1 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Wed, 18 Oct 2023 18:14:53 -0400 Subject: [PATCH 58/65] final visual edits --- .../tutorial_initial_state_preparation.py | 70 +++++++++---------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 534ce467dd..c943b956fa 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -48,28 +48,29 @@ from pyscf import gto, scf, ci from pennylane.qchem import import_state +from pennylane import numpy as np R = 1.2 # create the H3+ molecule -mol = gto.M( - atom=[["H", (0, 0, 0)], ["H", (0, 0, R)], ["H", (0, 0, 2 * R)]], charge=1, basis="sto-3g" -) +mol = gto.M(atom=[["H", (0, 0, 0)], + ["H", (0, 0, R)], + ["H", (0, 0, 2 * R)]], charge=1) # perfrom restricted Hartree-Fock and then CISD myhf = scf.RHF(mol).run() myci = ci.CISD(myhf).run() wf_cisd = import_state(myci, tol=1e-1) -print(f"CISD-based state vector: \n {wf_cisd.real}") +print(f"CISD-based state vector: \n {np.round(wf_cisd.real, 4)}") ############################################################################## # The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an # initial state in a quantum circuit in PennyLane--we will showcase this below for VQE. +# # Conversion for CISD to a state vector is straightforward: simply assign the PySCF-stored -# CI coefficients to appropriate determinants. -# -# The second attribute passed to ``import_state()``, ``tol``, specifies the cutoff beyond -# which contributions to the wavefunctions are neglected. Internally, wavefunctions are -# stored in their Slater determinant representation, and if their prefactor coefficient -# is below ``tol``, those determinants are dropped from the expression. +# CI coefficients to appropriate determinants. The second attribute passed to +# ``import_state()``, ``tol``, specifies the cutoff beyond which contributions to the +# wavefunctions are neglected. Internally, wavefunctions are stored in their Slater +# determinant representation, and if their prefactor coefficient is below ``tol``, +# those determinants are dropped from the expression. # # # CCSD states @@ -81,7 +82,7 @@ mycc = cc.CCSD(myhf).run() wf_ccsd = import_state(mycc, tol=1e-1) -print(f"CCSD-based state vector: \n {wf_ccsd.real}") +print(f"CCSD-based state vector: \n {np.round(wf_ccsd.real, 4)}") ############################################################################## # For CCSD conversion, the exponential form is expanded and terms are collected **to @@ -126,22 +127,19 @@ # dets, coeffs = driver.get_csf_coefficients(ket, iprint=0) # dets = dets.tolist() # wf_dmrg = import_state((dets, coeffs), tol=1e-1) -# print(f"DMRG-based state vector\n{wf_dmrg}") +# print(f"DMRG-based state vector: \n {np.round(wf_dmrg, 4)}") # # .. code-block:: bash # # DMRG-based state vector -# [ 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# -0.22425623 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0.97453022 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. ] +# [ 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. 0. 0. -0.2243 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0.9745 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. ] ############################################################################## # The crucial part is calling ``get_csf_coefficients()`` on the solution stored in @@ -197,17 +195,14 @@ # .. code-block:: bash # # SHCI-based state vector -# [ 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0.22425623 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# -0.97453022 0. 0. 0. 0. 0. -# 0. 0. 0. 0. 0. 0. -# 0. 0. 0. 0. ] +# [ 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0.2243 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. 0. 0. -0.9745 0. 0. 0. 0. 0. +# 0. 0. 0. 0. 0. 0. 0. 0. 0. +# 0. ] ############################################################################## # The Dice output file prints determinants using symbols ``0`` (unoccupied orbital), @@ -227,7 +222,6 @@ import pennylane as qml from pennylane import qchem -from pennylane import numpy as np # generate the molecular Hamiltonian for H3+ H2mol, qubits = qchem.molecular_hamiltonian( @@ -270,7 +264,8 @@ def circuit_VQE(theta, initial_state): new_energy = circuit_VQE(theta, initial_state=wf_hf) delta_E = new_energy - prev_energy results_hf.append(new_energy) - print(f"Step = {len(results_hf)}, Energy = {new_energy:.6f} Ha, dE = {delta_E} Ha") + if len(results_hf) % 5 == 0: + print(f"Step = {len(results_hf)}, Energy = {new_energy:.6f} Ha") print(f"Starting with HF state took {len(results_hf)} iterations until convergence.") ############################################################################## @@ -285,7 +280,8 @@ def circuit_VQE(theta, initial_state): new_energy = circuit_VQE(theta, initial_state=wf_cisd) delta_E = new_energy - prev_energy results_cisd.append(new_energy) - print(f"Step = {len(results_cisd)}, Energy = {new_energy:.6f} Ha, dE = {delta_E} Ha") + if len(results_cisd) % 5 == 0: + print(f"Step = {len(results_cisd)}, Energy = {new_energy:.6f} Ha, dE = {delta_E} Ha") print(f"Starting with CISD state took {len(results_cisd)} iterations until convergence.") ############################################################################## From 4bb9e26cb97b8ba449de8860085e57f86f49c475 Mon Sep 17 00:00:00 2001 From: soranjh Date: Wed, 18 Oct 2023 22:24:10 -0400 Subject: [PATCH 59/65] remove blank lines --- .../tutorial_initial_state_preparation.py | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index e4753939ec..49d583725f 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -28,9 +28,9 @@ ------------------------ We can import initial states obtained from several post-Hartree-Fock quantum chemistry methods to PennyLane. These methods are incredibly diverse in terms of their outputs, not always returning -an object that is easy to turn into a PennyLane state vector. +an object that is easy to turn into a PennyLane state vector. -We have already done this hard conversion work: all that you need to do is run these methods and +We have already done this hard conversion work: all that you need to do is run these methods and pass their outputs to PennyLane's :func:`~.pennylane.qchem.import_state` function. The currently supported methods are configuration interaction with singles and doubles (CISD), coupled cluster (CCSD), density-matrix renormalization group (DMRG) and semistochastic heat-bath configuration @@ -40,7 +40,7 @@ CISD states -~~~~~~~~~~ +~~~~~~~~~~~ The first line of attack for initial state preparation is often a CISD calculation, performed with the `PySCF `_ library. CISD is unsophisticated, but fast. It will not be of much help for strongly correlated molecules, but it is better than Hartree-Fock. Here is the code example using the restricted Hartree-Fock @@ -65,19 +65,17 @@ ############################################################################## # The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an # initial state in a quantum circuit in PennyLane--we will showcase this below for VQE. -# + # Conversion for CISD to a state vector is straightforward: simply assign the PySCF-stored # CI coefficients to appropriate determinants. -# -# The second attribute passed to ``import_state()``, ``tol``, specifies the cutoff beyond +# The second attribute passed to ``import_state()``, ``tol``, specifies the cutoff beyond # which contributions to the wavefunctions are neglected. Internally, wavefunctions are -# stored in their Slater determinant representation. If their prefactor coefficient -# +# stored in their Slater determinant representation. If their prefactor coefficient # is below ``tol``, those determinants are dropped from the expression. # # # CCSD states -# ~~~~~~~~~ +# ~~~~~~~~~~~ # The function :func:`~.pennylane.qchem.import_state` is general and works similarly for CCSD. It can # automatically detect the input type and apply the appropriate conversion protocol. @@ -92,13 +90,10 @@ # second order** to obtain the CI coefficients. # # DMRG states -# ~~~~~~~~~ -# For more complex or more correlated molecules, initial states from DMRG or - +# ~~~~~~~~~~~ +# For more complex or more correlated molecules, initial states from DMRG or # SHCI will be better options. DMRG calculations involve running the library `Block2 `_, - # which can be installed with ``pip``: - # # .. code-block:: bash # @@ -155,9 +150,8 @@ # determinant using Fock occupation vectors of length equal to the number of spatial # orbitals in Block2 notation, where ``0`` is unoccupied, ``1`` is occupied with spin-up # electron, ``2`` is occupied with spin-down, and ``3`` is doubly occupied. The first -# element must be converted to ``list`` for :func:`~.pennylane.qchem.import_state` to accept it. The second - -# element stores the CI coefficients. +# element must be converted to ``list`` for :func:`~.pennylane.qchem.import_state` to accept it. +# The second element stores the CI coefficients. # # In principle, this functionality can be used to generate any initial state, provided # the user specifies a list of Slater determinants and their coefficients in this form. @@ -222,7 +216,6 @@ ############################################################################## # Application: speed up VQE # ------------------------- -# # Let us now demonstrate how the choice of a better initial state shortens the runtime # of VQE for obtaining the ground-state energy of a molecule. As a first step, create a # molecule, a device, and a simple VQE circuit with double excitations: @@ -288,7 +281,7 @@ def circuit_VQE(theta, initial_state): delta_E = new_energy - prev_energy results_cisd.append(new_energy) if len(results_cisd) % 5 == 0: - print(f"Step = {len(results_cisd)}, Energy = {new_energy:.6f} Ha, dE = {delta_E} Ha") + print(f"Step = {len(results_cisd)}, Energy = {new_energy:.6f} Ha") print(f"Starting with CISD state took {len(results_cisd)} iterations until convergence.") ############################################################################## From b0793f187d9772fd535509a795f1c15720ddd3eb Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Thu, 19 Oct 2023 09:37:54 -0400 Subject: [PATCH 60/65] style edits --- .../tutorial_initial_state_preparation.py | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index e4753939ec..f968dda292 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -231,12 +231,10 @@ from pennylane import qchem # generate the molecular Hamiltonian for H3+ -H2mol, qubits = qchem.molecular_hamiltonian( - ["H", "H", "H"], - np.array([0, 0, 0, 0, 0, R / 0.529, 0, 0, 2 * R / 0.529]), - charge=1, - basis="sto-3g", -) +symbols = ["H", "H", "H"] +geometry = np.array([[0, 0, 0], [0, 0, R/0.529], [0, 0, 2*R/0.529]]) + +H2mol, qubits = qchem.molecular_hamiltonian(symbols, geometry, charge=1) wires = list(range(qubits)) dev = qml.device("default.qubit", wires=qubits) @@ -326,17 +324,17 @@ def circuit_VQE(theta, initial_state): ############################################################################## # Conclusion # ----------- -# This demo shows how to import initial states from traditional quantum chemistry methods -# for use in PennyLane-based algorithms. Using the example of VQE, it demonstrates how -# a better choice of state--obtained, for example from a sophisticated computational -# chemistry method like CCSD, SHCI or DMRG--can lead to much better algorithmic -# performance. Especially in more correlated molecules, generally DMRG and SHCI initial -# states perform best. Here we showcased simple workflows for how to -# run these post-Hartree-Fock computational chemistry methods, -# from libraries such as `PySCF `_, +# This demo shows how to import initial states from outputs of traditional quantum chemistry methods +# for use in PennyLane-based algorithms. We showcased simple workflows for how to run +# a variety of state-of-the-art post-Hartree-Fock methods, from libraries such as +# `PySCF `_, # `Block2 `_ and # `Dice `_, to generate outputs that can then be -# converted to PennyLane's state vector format with a single line of code. +# converted to PennyLane's state vector format with a single line of code. With these +# initial states, we use the example of VQE to demonstrate how a better choice +# of initial state can lead to improved algorithmic performance. For the molecule +# used in our example, the CISD state was sufficient: however, in more correlated +# molecules, DMRG and SHCI initial states typically provide the best speed-ups. # # About the author # ---------------- From 3fb43dbd8788caa9bfeafe873d8ee49b1a2f7719 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Thu, 19 Oct 2023 09:39:41 -0400 Subject: [PATCH 61/65] remove bold font --- demonstrations/tutorial_initial_state_preparation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 9eb1923285..8258b88186 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -14,7 +14,7 @@ Much like searching for a needle in a haystack, there are a lot of things you might try to prepare a good guess for the ground state in the high-dimensional Hilbert space. In this -tutorial, we show how to **use traditional computational chemistry techniques** to +tutorial, we show how to use traditional computational chemistry techniques to get us *most of the way* to an initial state. Such an initial state will not be the ground state, but it will certainly be better than the standard guess of a computational basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. From bb2679a662b9e0c40a57f2b56f7e2375f402e5de Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Thu, 19 Oct 2023 10:35:38 -0400 Subject: [PATCH 62/65] CCSD header fix --- demonstrations/tutorial_initial_state_preparation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 8258b88186..6d121e577b 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -72,8 +72,8 @@ # which contributions to the wavefunctions are neglected. Internally, wavefunctions are # stored in their Slater determinant representation. If their prefactor coefficient # is below ``tol``, those determinants are dropped from the expression. -# -# + +############################################################################## # CCSD states # ~~~~~~~~~~~ # The function :func:`~.pennylane.qchem.import_state` is general and works similarly for CCSD. It can From a884e30cf68ee5df3c9095d8a3e12a4b9aef4f60 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Thu, 19 Oct 2023 15:35:49 -0400 Subject: [PATCH 63/65] cisd paragraph render error --- demonstrations/tutorial_initial_state_preparation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 6d121e577b..da48e8ef65 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -65,7 +65,7 @@ ############################################################################## # The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an # initial state in a quantum circuit in PennyLane--we will showcase this below for VQE. - +# # Conversion for CISD to a state vector is straightforward: simply assign the PySCF-stored # CI coefficients to appropriate determinants. # The second attribute passed to ``import_state()``, ``tol``, specifies the cutoff beyond From 145c7b3c92ab1961756a5269561842639c660762 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 20 Oct 2023 10:15:46 -0400 Subject: [PATCH 64/65] split big VQE codeblock --- demonstrations/tutorial_initial_state_preparation.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index da48e8ef65..031a38d535 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -236,7 +236,7 @@ excitations = singles + doubles ############################################################################## -# Now let's run VQE with the Hartree-Fock initial state: +# Now let's run VQE with the Hartree-Fock initial state. We first build the VQE circuit: @qml.qnode(dev) @@ -249,8 +249,9 @@ def circuit_VQE(theta, initial_state): qml.SingleExcitation(theta[i], wires=excitation) return qml.expval(H2mol) +############################################################################## +# Now, we create the VQE optimizer, initialize the variational parameters and run the VQE optimization. -# create the VQE optimizer, initialize the variational parameters, set start params opt = qml.GradientDescentOptimizer(stepsize=0.4) theta = np.array(np.zeros(len(excitations)), requires_grad=True) delta_E, iteration = 10, 0 From 0620b9099dd3e93531805eb8c6afa59571219a04 Mon Sep 17 00:00:00 2001 From: Stepan Fomichev Date: Fri, 20 Oct 2023 13:50:54 -0400 Subject: [PATCH 65/65] final text edits and typo fixes --- .../tutorial_initial_state_preparation.py | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/demonstrations/tutorial_initial_state_preparation.py b/demonstrations/tutorial_initial_state_preparation.py index 031a38d535..87d66f2aa6 100644 --- a/demonstrations/tutorial_initial_state_preparation.py +++ b/demonstrations/tutorial_initial_state_preparation.py @@ -8,15 +8,15 @@ `intermediate-scale quantum (ISQ) `_ algorithms, obtaining the ground state of a chemical system requires a good initial state. For instance, in the case of VQE, a good initial state directly translates into fewer optimization steps. In QPE, the probability of measuring the ground-state energy is directly -proportional to the overlap squared of the initial and ground states. Even beyond quantum phase estimation, +proportional to the overlap squared of the initial and ground states. Even beyond quantum chemistry, good initial guesses are important for algorithms like quantum approximate optimization (QAOA) and Grover search. Much like searching for a needle in a haystack, there are a lot of things you might try to prepare a good guess for the ground state in the high-dimensional Hilbert space. In this tutorial, we show how to use traditional computational chemistry techniques to -get us *most of the way* to an initial state. Such an initial state will not be the -ground state, but it will certainly be better than the standard guess of a computational +get a good initial state. Such an initial state will not be exactly +the ground state, but it will certainly be better than the standard guess of a computational basis state :math:`\ket{0}^{\otimes N}` or the Hartree-Fock state. .. figure:: ../demonstrations/initial_state_preparation/qchem_input_states.png @@ -36,15 +36,15 @@ (CCSD), density-matrix renormalization group (DMRG) and semistochastic heat-bath configuration interaction (SHCI). -We now show how this works on :math:`\text{H}_3^+` molecule as an example. +We now show how this works on the linear :math:`\text{H}_3^+` molecule as an example. CISD states ~~~~~~~~~~~ The first line of attack for initial state preparation is often a CISD calculation, performed with the `PySCF `_ -library. CISD is unsophisticated, but fast. It will not be of much help for strongly correlated molecules, +library. CISD is unsophisticated, but it is fast. It will not be of much help for strongly correlated molecules, but it is better than Hartree-Fock. Here is the code example using the restricted Hartree-Fock -orbitals (it also works for unrestricted orbitals too). +orbitals (:func:`~.pennylane.qchem.import_state` works for unrestricted orbitals, too). """ from pyscf import gto, scf, ci @@ -60,14 +60,14 @@ myhf = scf.RHF(mol).run() myci = ci.CISD(myhf).run() wf_cisd = import_state(myci, tol=1e-1) -print(f"CISD-based state vector: \n {np.round(wf_cisd.real, 4)}") +print(f"CISD-based state vector: \n{np.round(wf_cisd.real, 4)}") ############################################################################## # The final object, PennyLane's state vector ``wf_cisd``, is ready to be used as an # initial state in a quantum circuit in PennyLane--we will showcase this below for VQE. # # Conversion for CISD to a state vector is straightforward: simply assign the PySCF-stored -# CI coefficients to appropriate determinants. +# CI coefficients to appropriate entries in the state vector based on the determinant they correspond to. # The second attribute passed to ``import_state()``, ``tol``, specifies the cutoff beyond # which contributions to the wavefunctions are neglected. Internally, wavefunctions are # stored in their Slater determinant representation. If their prefactor coefficient @@ -83,16 +83,16 @@ mycc = cc.CCSD(myhf).run() wf_ccsd = import_state(mycc, tol=1e-1) -print(f"CCSD-based state vector: \n {np.round(wf_ccsd.real, 4)}") +print(f"CCSD-based state vector: \n{np.round(wf_ccsd.real, 4)}") ############################################################################## -# For CCSD conversion, the exponential form is expanded and terms are collected **to +# For CCSD conversion, at present the exponential form is expanded and terms are collected **to # second order** to obtain the CI coefficients. # # DMRG states # ~~~~~~~~~~~ # For more complex or more correlated molecules, initial states from DMRG or -# SHCI will be better options. DMRG calculations involve running the library `Block2 `_, +# SHCI will be better options. DMRG calculations involve using the library `Block2 `_, # which can be installed with ``pip``: # # .. code-block:: bash @@ -148,15 +148,16 @@ # converts the MPS to the sum of Slater determinants form, returning the output # as a tuple ``(array([int]), array(float]))``. The first element expresses a given Slater # determinant using Fock occupation vectors of length equal to the number of spatial -# orbitals in Block2 notation, where ``0`` is unoccupied, ``1`` is occupied with spin-up -# electron, ``2`` is occupied with spin-down, and ``3`` is doubly occupied. The first -# element must be converted to ``list`` for :func:`~.pennylane.qchem.import_state` to accept it. +# orbitals. In Block2 notation, the entries can be ``0`` (orbital unoccupied), ``1`` (orbital occupied with spin-up +# electron), ``2`` (occupied with spin-down), and ``3`` (doubly occupied). The first +# element, ``array([int])``, must be converted to ``list`` +# for :func:`~.pennylane.qchem.import_state` to accept it. # The second element stores the CI coefficients. # # In principle, this functionality can be used to generate any initial state, provided # the user specifies a list of Slater determinants and their coefficients in this form. # Let's take this opportunity to create the Hartree-Fock initial state, to compare the -# other states against it. +# other states against it later on. from pennylane import numpy as np @@ -169,7 +170,7 @@ # # The SHCI calculations utilize the library `Dice `_, and can be run # using PySCF through the interface module `SHCI-SCF `_. -# For Dice, the execution process is similar: +# For Dice, the execution process is similar to that of DMRG: # # .. code-block:: python # @@ -211,14 +212,15 @@ # and ``2`` (doubly occupied orbital). These determinant outputs, and corresponding # coefficients, should be extracted and arranged as ``(list([str]), array(float]))``, # where each string combines all the determinant symbols ``0, a, b, 2`` for a single -# determinant. +# determinant with no spaces. For example, for the HF state we created in the DMRG section, +# the SHCI output should read ``([["200"]], np.array([1.]))`` ############################################################################## # Application: speed up VQE # ------------------------- # Let us now demonstrate how the choice of a better initial state shortens the runtime -# of VQE for obtaining the ground-state energy of a molecule. As a first step, create a -# molecule, a device, and a simple VQE circuit with double excitations: +# of VQE for obtaining the ground-state energy of a molecule. As a first step, create our +# linear :math:`\text{H}_3^+` molecule, a device, and a simple VQE circuit with single and double excitations: import pennylane as qml from pennylane import qchem @@ -250,7 +252,7 @@ def circuit_VQE(theta, initial_state): return qml.expval(H2mol) ############################################################################## -# Now, we create the VQE optimizer, initialize the variational parameters and run the VQE optimization. +# Next, we create the VQE optimizer, initialize the variational parameters and run the VQE optimization. opt = qml.GradientDescentOptimizer(stepsize=0.4) theta = np.array(np.zeros(len(excitations)), requires_grad=True) @@ -300,16 +302,20 @@ def circuit_VQE(theta, initial_state): plt.show() ############################################################################## -# Finally, it is straightforward to compare the initial states through overlap--a traditional -# metric of success for initial states in quantum algorithms. Because in our examples these -# are regular arrays, computing an overlap is as easy as computing a dot product +# Indeed, the CISD state significantly shortens the VQE runtime. +# +# It is sometimes possible to foresee the extent of this speed-up of a particular initial state +# by computing its overlap with the ground state--a traditional metric of success for initial +# states in quantum algorithms. Because in our examples the states are regular arrays, computing an +# overlap between different states is as easy as computing a dot product print(np.dot(wf_cisd, wf_hf).real) print(np.dot(wf_ccsd, wf_hf).real) +print(np.dot(wf_cisd, wf_ccsd).real) ############################################################################## -# In this particular case, even CISD gives the exact wavefunction, hence all overlaps -# are identical. In more correlated molecules, overlaps will show that the more +# In this particular case of :math:`\text{H}_3^+`, even CISD gives the exact wavefunction, hence both overlaps +# with the HF state are identical. In more correlated molecules, overlaps will show that the more # multireference methods DMRG and SHCI are farther away from the Hartree-Fock state, # allowing them to perform better (you can check this by printing the overlaps with # DMRG and SHCI in a more correlated molecule). If a ground state in such a case was known, @@ -319,7 +325,7 @@ def circuit_VQE(theta, initial_state): # Conclusion # ----------- # This demo shows how to import initial states from outputs of traditional quantum chemistry methods -# for use in PennyLane-based algorithms. We showcased simple workflows for how to run +# for use in PennyLane. We showcased simple workflows for how to run # a variety of state-of-the-art post-Hartree-Fock methods, from libraries such as # `PySCF `_, # `Block2 `_ and