diff --git a/docs/getting_started.ipynb b/docs/getting_started.ipynb index 8917c093..849d8e3c 100644 --- a/docs/getting_started.ipynb +++ b/docs/getting_started.ipynb @@ -410,7 +410,7 @@ "source": [ "## Dynamical Decoupling\n", "\n", - "Dynamical decoupling (DD) is a way of modifying the noise power spectrum $S(\\omega)$ observed by qubits (see [this recent review](https://arxiv.org/abs/2207.03670)), and is typically implemented by a sequence of gates scheduled during a given qubit idle time that compose to the identity with specific delay times to fill the idle time in a calculated manner. Considerations for which sequences to use may involve decoherent error due to idle time versus single-qubit gate errors and/or crosstalk during two-qubit gates. Because the addition of gates is not always in the set of `basis_gates` defined by the backend, `add_pulse_cals=True` uses [Pulse Gates](https://qiskit.org/documentation/tutorials/circuits_advanced/05_pulse_gates.html) to add the correct implementation to the circuit with added DD." + "Dynamical decoupling (DD) is a way of modifying the noise power spectrum $S(\\omega)$ observed by qubits (see [this recent review](https://arxiv.org/abs/2207.03670)), and is typically implemented by a sequence of gates scheduled during a given qubit idle time that compose to the identity with specific delay times to fill the idle time in a calculated manner. Considerations for which sequences to use may involve decoherent error due to idle time versus single-qubit gate errors and/or crosstalk during two-qubit gates. Because the addition of gates is not always in the set of `basis_gates` defined by the backend, `add_pulse_cals=True` uses [Pulse Gates](https://docs.quantum.ibm.com/build/pulse) to add the correct implementation to the circuit with added DD." ] }, { diff --git a/docs/tutorial_quantum_sim/qsim-tight-binding-model.ipynb b/docs/tutorial_quantum_sim/qsim-tight-binding-model.ipynb index a9d5d48f..6baefa3a 100644 --- a/docs/tutorial_quantum_sim/qsim-tight-binding-model.ipynb +++ b/docs/tutorial_quantum_sim/qsim-tight-binding-model.ipynb @@ -118,7 +118,7 @@ "id": "a6b61705-78fa-4a6b-9e27-a192a00f1d20", "metadata": {}, "source": [ - "**Qiskit nature method.** If we want to start from fermionic operator form of the Hamiltonian $H = -\\tau \\sum_{i=(0,1,3)} \\left( c_{i}^{\\dagger} c_{i+1} + c_{i+1}^{\\dagger} c_{i} \\right) - \\tau_d \\left( c_{2}^{\\dagger} c_{3} + c_{3}^{\\dagger} c_{2} \\right) \\;,$ we can use functionality from [Qiskit nature](https://qiskit.org/documentation/nature/) to define the Hamiltonian in terms of fermionic second quantization operators and have qiskit do the Jordan-Wigner transformation to Pauli operators. This is shown below but not currently used in the notebook as FermionicOp does not currently support [Parameters](https://qiskit.org/documentation/stubs/qiskit.circuit.Parameter.html)." + "**Qiskit nature method.** If we want to start from fermionic operator form of the Hamiltonian $H = -\\tau \\sum_{i=(0,1,3)} \\left( c_{i}^{\\dagger} c_{i+1} + c_{i+1}^{\\dagger} c_{i} \\right) - \\tau_d \\left( c_{2}^{\\dagger} c_{3} + c_{3}^{\\dagger} c_{2} \\right) \\;,$ we can use functionality from [Qiskit nature](https://qiskit-community.github.io/qiskit-nature/) to define the Hamiltonian in terms of fermionic second quantization operators and have qiskit do the Jordan-Wigner transformation to Pauli operators. This is shown below but not currently used in the notebook as FermionicOp does not currently support [Parameters](https://docs.quantum.ibm.com/api/qiskit/qiskit.circuit.Parameter)." ] }, { @@ -190,7 +190,7 @@ "id": "4115fa2a-eb66-4c0b-ab90-25b90374cca1", "metadata": {}, "source": [ - "**Qiskit Opflow method.** If we want to start directly with the Pauli operator form of the Hamiltonian (doing the JW transform with \"pen and paper\") $H = -\\frac{\\tau}{2} \\sum_{i=(0,1,3)} \\left( X_i X_{i+1} + Y_i Y_{i+1} \\right) -\\frac{\\tau_d}{2} \\left( X_2 X_{3} + Y_2 Y_{3} \\right) \\;,$ then we directly use [Qiskit opflow](https://qiskit.org/documentation/apidoc/opflow.html)'s Pauli operators to string together the Hamiltonian terms. This is shown below and will be the method called later in the notebook as this method supports [Parameters](https://qiskit.org/documentation/stubs/qiskit.circuit.Parameter.html)." + "**Qiskit Opflow method.** If we want to start directly with the Pauli operator form of the Hamiltonian (doing the JW transform with \"pen and paper\") $H = -\\frac{\\tau}{2} \\sum_{i=(0,1,3)} \\left( X_i X_{i+1} + Y_i Y_{i+1} \\right) -\\frac{\\tau_d}{2} \\left( X_2 X_{3} + Y_2 Y_{3} \\right) \\;,$ then we directly use [Qiskit opflow](https://docs.quantum.ibm.com/api/qiskit/0.45/opflow)'s Pauli operators to string together the Hamiltonian terms. This is shown below and will be the method called later in the notebook as this method supports [Parameters](https://docs.quantum.ibm.com/api/qiskit/qiskit.circuit.Parameter)." ] }, { @@ -575,7 +575,7 @@ "\\end{equation}\n", "$$\n", "\n", - "Each pair of $XX$ and $YY$ interactions summed in the exponents do commute, so there could be further decomposition without need of trotterization. There is in fact efficient decompositions for such interactions (see the [qiskit circuit library](https://qiskit.org/documentation/apidoc/circuit_library.html)), but we will not go that here. It also depends on the type of gates we can/want to apply at the hardware level. We'll eventually work toward $R_{ZX}(\\theta)$ gates, so let's stay in terms of separating $XX$ and $YY$.\n", + "Each pair of $XX$ and $YY$ interactions summed in the exponents do commute, so there could be further decomposition without need of trotterization. There is in fact efficient decompositions for such interactions (see the [qiskit circuit library](https://docs.quantum.ibm.com/api/qiskit/circuit_library)), but we will not go that here. It also depends on the type of gates we can/want to apply at the hardware level. We'll eventually work toward $R_{ZX}(\\theta)$ gates, so let's stay in terms of separating $XX$ and $YY$.\n", "\n", "$$\n", "\\begin{align}\n", @@ -837,7 +837,7 @@ " Convert the U_trot ComposedOp object returned by compute_U_trot() to a bare quantum circuit.\n", "\n", " Tutorial on using PauliTrotterEvolution at\n", - " https://qiskit.org/documentation/tutorials/operators/01_operator_flow.html#Part-IV:-Converters\n", + " https://github.com/Qiskit/qiskit/blob/stable/0.46/docs/tutorials/operators/01_operator_flow.ipynb#\n", "\n", " Args:\n", " U_trot - OperatorBase (such as ComposedOp); Trotterized unitary time evolution operator to be written in terms of a quantum circuit.\n", @@ -1036,7 +1036,7 @@ "# backend = provider.get_backend(\"ibm_lagos\")\n", "\n", "# Simulated backend based on ibmq_lagos's device noise profile\n", - "# Use the line below for the latest error model. See: https://qiskit.org/documentation/apidoc/providers_fake_provider.html\n", + "# Use the line below for the latest error model. See: https://docs.quantum.ibm.com/api/qiskit/providers_fake_provider\n", "# sim_noisy_lagos = QasmSimulator.from_backend(provider.get_backend('ibm_lagos'))\n", "# A providerless noisy simulator, but may have an out-of-date noise model\n", "backend = FakeLagos()\n", @@ -1091,7 +1091,7 @@ "metadata": {}, "source": [ "### Generate quantum circuits for trotterized quantum simulation\n", - "Qiskit has functionality to directly [convert opflow objects into quantum circuits](https://qiskit.org/documentation/tutorials/operators/01_operator_flow.html#Part-IV:-Converters). This means we can use the U_trot method we made earlier to compute the unitary time evolution operator and then have it directly converted to a quantum circuit. Below, we'll use those functions defined earlier in the section." + "Qiskit has functionality to directly [convert opflow objects into quantum circuits](https://github.com/Qiskit/qiskit/blob/stable/0.46/docs/tutorials/operators/01_operator_flow.ipynb). This means we can use the U_trot method we made earlier to compute the unitary time evolution operator and then have it directly converted to a quantum circuit. Below, we'll use those functions defined earlier in the section." ] }, { @@ -1636,7 +1636,7 @@ "source": [ "### Measurement Error Mitigation\n", "\n", - "We directly follow the [mthree tutorial](https://qiskit.org/documentation/partners/mthree/basic.html) for scalable measurement error mitigation. For further examples, see the [Qiskit textbook's](https://qiskit.org/textbook/preface.html) tutorial on [measurement error mitigation](https://qiskit.org/textbook/ch-quantum-hardware/measurement-error-mitigation.html#version-information). Below, we first demonstrate this technique on a simple example of a GHZ state $\\left(|00000\\rangle + |11111\\rangle \\right)/ \\sqrt{2}$. We will use it for the quantum simulation at the very end." + "We directly follow the [mthree tutorial](https://qiskit.org/ecosystem/mthree/basic.html) for scalable measurement error mitigation. For further examples, see the Qiskit textbook's tutorial on [measurement error mitigation](https://github.com/Qiskit/platypus/blob/main/notebooks/v2/quantum-hardware/measurement-error-mitigation.ipynb). Below, we first demonstrate this technique on a simple example of a GHZ state $\\left(|00000\\rangle + |11111\\rangle \\right)/ \\sqrt{2}$. We will use it for the quantum simulation at the very end." ] }, { @@ -1794,7 +1794,7 @@ "metadata": {}, "source": [ "### $R_{ZX}(\\theta)$ Gate Optimization\n", - "Two-qubit gate errors are the main source of error for current (NISQ era) quantum computers. One way to get a significant reduction in two-qubit errors is to dive closer to the physics of the underlying qubits and use the native two-qubit gates instead of CNOT gates. Read the [paper](https://arxiv.org/abs/2209.02795) and references therein for more details. In short, we want to compose all two-qubit gates in terms of [$R_{ZX}(\\theta)$ gate operations](https://qiskit.org/documentation/stubs/qiskit.circuit.library.RZXGate.html).\n", + "Two-qubit gate errors are the main source of error for current (NISQ era) quantum computers. One way to get a significant reduction in two-qubit errors is to dive closer to the physics of the underlying qubits and use the native two-qubit gates instead of CNOT gates. Read the [paper](https://arxiv.org/abs/2209.02795) and references therein for more details. In short, we want to compose all two-qubit gates in terms of [$R_{ZX}(\\theta)$ gate operations](https://docs.quantum.ibm.com/api/qiskit/qiskit.circuit.library.RZXGate).\n", "\n", "Compose the circuit in terms of $R_{ZX}(\\theta)$ gate operations instead of CNOT gates." ]