{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Optimization of an X-Gate for a Transmon Qubit" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "attributes": { "classes": [], "id": "", "n": "1" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "qutip 4.3.1\n", "numpy 1.15.4\n", "scipy 1.1.0\n", "matplotlib 3.0.2\n", "matplotlib.pylab 1.15.4\n", "krotov 0.0.1\n", "CPython 3.6.7\n", "IPython 7.2.0\n" ] } ], "source": [ "# NBVAL_IGNORE_OUTPUT\n", "%load_ext watermark\n", "import qutip\n", "import numpy as np\n", "import scipy\n", "import matplotlib\n", "import matplotlib.pylab as plt\n", "import krotov\n", "%watermark -v --iversions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\newcommand{tr}[0]{\\operatorname{tr}}\n", "\\newcommand{diag}[0]{\\operatorname{diag}}\n", "\\newcommand{abs}[0]{\\operatorname{abs}}\n", "\\newcommand{pop}[0]{\\operatorname{pop}}\n", "\\newcommand{aux}[0]{\\text{aux}}\n", "\\newcommand{opt}[0]{\\text{opt}}\n", "\\newcommand{tgt}[0]{\\text{tgt}}\n", "\\newcommand{init}[0]{\\text{init}}\n", "\\newcommand{lab}[0]{\\text{lab}}\n", "\\newcommand{rwa}[0]{\\text{rwa}}\n", "\\newcommand{bra}[1]{\\langle#1\\vert}\n", "\\newcommand{ket}[1]{\\vert#1\\rangle}\n", "\\newcommand{Bra}[1]{\\left\\langle#1\\right\\vert}\n", "\\newcommand{Ket}[1]{\\left\\vert#1\\right\\rangle}\n", "\\newcommand{Braket}[2]{\\left\\langle #1\\vphantom{#2} \\mid #2\\vphantom{#1}\\right\\rangle}\n", "\\newcommand{op}[1]{\\hat{#1}}\n", "\\newcommand{Op}[1]{\\hat{#1}}\n", "\\newcommand{dd}[0]{\\,\\text{d}}\n", "\\newcommand{Liouville}[0]{\\mathcal{L}}\n", "\\newcommand{DynMap}[0]{\\mathcal{E}}\n", "\\newcommand{identity}[0]{\\mathbf{1}}\n", "\\newcommand{Norm}[1]{\\lVert#1\\rVert}\n", "\\newcommand{Abs}[1]{\\left\\vert#1\\right\\vert}\n", "\\newcommand{avg}[1]{\\langle#1\\rangle}\n", "\\newcommand{Avg}[1]{\\left\\langle#1\\right\\rangle}\n", "\\newcommand{AbsSq}[1]{\\left\\vert#1\\right\\vert^2}\n", "\\newcommand{Re}[0]{\\operatorname{Re}}\n", "\\newcommand{Im}[0]{\\operatorname{Im}}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define the Hamiltonian" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The effective Hamiltonian of a single transmon depends on the capacitive energy $E_C=e^2/2C$ and the Josephson energy $E_J$, an energy due to the Josephson junction working as a nonlinear inductor periodic with the flux $\\Phi$. In the so-called transmon limit the ratio between these two energies lie around $E_J / E_C \\approx 45$. The time-independent Hamiltonian can be described then as\n", "\n", "\\begin{equation*}\n", "\\op{H}_{0} = 4 E_C (\\hat{n}-n_g)^2 - E_J \\cos(\\hat{\\Phi})\n", "\\end{equation*}\n", "\n", "where $\\hat{n}$ is the number operator, which count how many Cooper pairs cross the junction, and $n_g$ being the effective offset charge measured in Cooper pair charge units. The aforementioned equation can be written in a truncated charge basis defined by the number operator $\\op{n} \\ket{n} = n \\ket{n}$ such that\n", "\n", "\\begin{equation*}\n", "\\op{H}_{0} = 4 E_C \\sum_{j=-N} ^N (j-n_g)^2 |j \\rangle \\langle j| - \\frac{E_J}{2} \\sum_{j=-N} ^{N-1} ( |j+1\\rangle\\langle j| + |j\\rangle\\langle j+1|).\n", "\\end{equation*}\n", "\n", "If we apply a potential $V(t)$ to the qubit the complete Hamiltonian is changed to \n", "\n", "\\begin{equation*}\n", "\\op{H} = \\op{H}_{0} + V(t) \\cdot \\op{H}_{1}\n", "\\end{equation*}\n", "\n", "The interaction Hamiltonian $\\op{H}_1$ is then equivalent to the charge operator $\\op{q}$, which in the truncated charge basis can be written as \n", "\n", "\\begin{equation*}\n", "\\op{H}_1 = \\op{q} = \\sum_{j=-N} ^N -2n \\ket{n} \\bra{n}.\n", "\\end{equation*}\n", "\n", "Note that the -2 coefficient is just indicating that the charge carriers here are Cooper pairs, each with a charge of $-2e$. \n", "\n", "We define the logic states $\\ket{0_l}$ and $\\ket{1_l}$ (not to be confused with the charge states $\\ket{n=0}$ and $\\ket{n=1}$) as the eigenstates of the free Hamiltonian $\\op{H}_0$ with the lowest energy. The problem to solve is find a potential $V_{opt}(t)$ such that after a given final time $T$ can \n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "attributes": { "classes": [], "id": "", "n": "2" } }, "outputs": [], "source": [ "def transmon_ham_and_states(Ec=0.386, EjEc=45, nstates=8, ng=0.0, T=10.0, steps=1000):\n", " \"\"\"Transmon Hamiltonian\"\"\"\n", " # Ec : capacitive energy\n", " # EjEc : ratio Ej / Ec\n", " # nstates : defines the maximum and minimum states for the basis. The truncated basis \n", " # will have a total of 2*nstates + 1 states \n", " \n", " Ej = EjEc * Ec\n", " n = np.arange(-nstates, nstates+1)\n", " up = np.diag(np.ones(2*nstates),k=-1)\n", " do = up.T\n", " H0 = qutip.Qobj(np.diag(4*Ec*(n - ng)**2) - Ej*(up+do)/2.0)\n", " H1 = qutip.Qobj(-2*np.diag(n))\n", " \n", " eigenvals, eigenvecs = scipy.linalg.eig(H0.full())\n", " ndx = np.argsort(eigenvals.real)\n", " E = eigenvals[ndx].real\n", " V = eigenvecs[:,ndx]\n", " w01 = E[1]-E[0] # Transition energy between states\n", " \n", " psi0 = qutip.Qobj(V[:, 0])\n", " psi1 = qutip.Qobj(V[:, 1]) \n", " \n", " profile = lambda t: np.exp(-40.0*(t/T - 0.5)**2)\n", " eps0 = lambda t, args: 0.5 * profile(t) * np.cos(8*np.pi*w01*t)\n", " return ([H0, [H1, eps0]], psi0, psi1)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "attributes": { "classes": [], "id": "", "n": "3" } }, "outputs": [], "source": [ "H, psi0, psi1 = transmon_ham_and_states()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We introduce the projectors $P_i = \\ket{\\psi _i}\\bra{\\psi _i}$ for the logic states $\\ket{\\psi _i} \\in \\{\\ket{0_l}, \\ket{1_l}\\}$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "attributes": { "classes": [], "id": "", "n": "4" } }, "outputs": [], "source": [ "proj0 = psi0 * psi0.dag()\n", "proj1 = psi1 * psi1.dag()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We choose our X-gate to be defined during a time interval starting at $t_{0} = 0$ and ending at $T = 10$, with a total of $nt = 1000$ time steps. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "attributes": { "classes": [], "id": "", "n": "5" } }, "outputs": [], "source": [ "tlist = np.linspace(0, 10, 1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We make use of the $\\sigma _{x}$ operator included in QuTiP to define our objective:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "attributes": { "classes": [], "id": "", "n": "11" } }, "outputs": [], "source": [ "objectives = krotov.gate_objectives(\n", " basis_states=[psi0, psi1], gate=qutip.operators.sigmax(), H=H)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the desired shape of the pulse and the update factor $\\lambda _a$" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "attributes": { "classes": [], "id": "", "n": "16" } }, "outputs": [], "source": [ "def S(t):\n", " \"\"\"Shape function for the pulse update\"\"\"\n", " dt = tlist[1] - tlist[0]\n", " steps = len(tlist)\n", " return np.exp(-40.0*(t/((steps-1)*dt)-0.5)**2)\n", "\n", "pulse_options = {\n", " H[1][1]: krotov.PulseOptions(lambda_a=1, shape=S)\n", "}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It may be useful to check the fidelity after each iteration. To achieve this, we define a simple function that will be used by the main routine" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def print_fidelity(**args): \n", " F_re = np.average(np.array(args['tau_vals']).real)\n", " print(\"Iteration %d: \\tF = %f\" % (args['iteration'], F_re))\n", " return F_re" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulate dynamics of the guess pulse" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "attributes": { "classes": [], "id": "", "n": "17" } }, "outputs": [], "source": [ "def plot_pulse(pulse, tlist):\n", " fig, ax = plt.subplots()\n", " if callable(pulse):\n", " pulse = np.array([pulse(t, None) for t in tlist])\n", " ax.plot(tlist, pulse)\n", " ax.set_xlabel('time')\n", " ax.set_ylabel('pulse amplitude')\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "attributes": { "classes": [], "id": "", "n": "18" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pulse(H[1][1], tlist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once we are sure to have obtained the desired guess pulse, the dynamics for the initial guess can be found easily" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "attributes": { "classes": [], "id": "", "n": "19" } }, "outputs": [], "source": [ "guess_dynamics = [objectives[x].mesolve(tlist, e_ops=[proj0, proj1]) for x in [0,1]]\n", "# using initial state psi0 = objectives[0].initial_state" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "attributes": { "classes": [], "id": "", "n": "20" } }, "outputs": [], "source": [ "def plot_population(result):\n", " fig, ax = plt.subplots()\n", " ax.plot(result.times, result.expect[0], label='0')\n", " ax.plot(result.times, result.expect[1], label='1')\n", " ax.legend()\n", " ax.set_xlabel('time')\n", " ax.set_ylabel('population')\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "attributes": { "classes": [], "id": "", "n": "21" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(guess_dynamics[0])\n", "plot_population(guess_dynamics[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is obvioius that our initial guess is not even near the pulse that we are trying to achieve. However we will still use it and try to see what results that we can obtain. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimize" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now use all the information that we have gathered to initialize\n", "the optimization routine. That is: \n", "\n", "* The `objectives`: creating an X-gate in the given basis. \n", "\n", "* The `pulse_options`: initial pulses and their shapes restrictions. \n", "\n", "* The `tlist`: time grid used for the propagation. \n", "\n", "* The `propagator`: propagation method that will be used.\n", "\n", "* The `chi_constructor`: the optimization functional to use. \n", "\n", "* The `info_hook`: the subroutines to be called and data to be analized inbetween iterations.\n", "\n", "* The `iter_stop`: the number of iterations to perform the optimization." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "attributes": { "classes": [], "id": "", "n": "23" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration 0: \tF = -0.000000\n", "Iteration 1: \tF = 0.107476\n", "Iteration 2: \tF = 0.410731\n", "Iteration 3: \tF = 0.694585\n", "Iteration 4: \tF = 0.757263\n", "Iteration 5: \tF = 0.773342\n", "Iteration 6: \tF = 0.785125\n", "Iteration 7: \tF = 0.794793\n", "Iteration 8: \tF = 0.802604\n", "Iteration 9: \tF = 0.808889\n", "Iteration 10: \tF = 0.813965\n", "Iteration 11: \tF = 0.818103\n", "Iteration 12: \tF = 0.821519\n", "Iteration 13: \tF = 0.824384\n", "Iteration 14: \tF = 0.826826\n", "Iteration 15: \tF = 0.828944\n", "Iteration 16: \tF = 0.830808\n", "Iteration 17: \tF = 0.832474\n", "Iteration 18: \tF = 0.833983\n", "Iteration 19: \tF = 0.835364\n", "Iteration 20: \tF = 0.836644\n" ] } ], "source": [ "oct_result = krotov.optimize_pulses(\n", " objectives, pulse_options, tlist,\n", " propagator=krotov.propagators.expm,\n", " chi_constructor=krotov.functionals.chis_re,\n", " info_hook=print_fidelity, iter_stop=20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulate dynamics of the optimized pulse" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to see how much the results have improved after the optimization. " ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "attributes": { "classes": [], "id": "", "n": "27" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pulse(oct_result.optimized_controls[0], tlist)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "attributes": { "classes": [], "id": "", "n": "28" } }, "outputs": [], "source": [ "opt_dynamics = [oct_result.optimized_objectives[x].mesolve(\n", " tlist, e_ops=[proj0, proj1]) for x in [0,1]]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "opt_states = [oct_result.optimized_objectives[x].mesolve(tlist) for x in [0,1]]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "attributes": { "classes": [], "id": "", "n": "29" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(opt_dynamics[0])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(opt_dynamics[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case we do not only care about the expected value for the states, but since we want to implement a gate it is necessary to check whether we are performing a coherent control. We are then interested in the phase difference that we obtain after propagating the states from the logic basis. " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "def plot_gate(result):\n", " \n", " num = len(result[0].states)\n", " overlap_0 = np.vectorize(lambda i: np.angle(result[0].states[i].overlap(psi1)))\n", " overlap_1 = np.vectorize(lambda i: np.angle(result[1].states[i].overlap(psi0)))\n", " \n", " rel_phase = (overlap_0(np.arange(num))- overlap_1(np.arange(num)))%(2*np.pi)\n", " \n", " fig, ax = plt.subplots()\n", " ax.plot(result[0].times, rel_phase/np.pi)\n", " ax.set_xlabel('time')\n", " ax.set_ylabel('relative phase (π)')\n", " plt.show(fig)\n", " print('Final relative phase = %.2e' % rel_phase[-1])" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Final relative phase = 7.06e-02\n" ] } ], "source": [ "plot_gate(opt_states)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We may also propagate the optimization result using the same propagator that was\n", "used in the optimization (instead of `qutip.mesolve`). The main difference\n", "between the two propagations is that `mesolve` assumes piecewise constant pulses\n", "that switch between two points in `tlist`, whereas `propagate` assumes that\n", "pulses are constant on the intervals of `tlist`, and thus switches *on* the\n", "points in `tlist`." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "attributes": { "classes": [], "id": "", "n": "30" } }, "outputs": [], "source": [ "opt_dynamics2 = [oct_result.optimized_objectives[x].propagate(\n", " tlist, e_ops=[proj0, proj1], propagator=krotov.propagators.expm) for x in [0,1]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The difference between the two propagations gives an indication of the \"time\n", "discretization error\". If this error were unacceptably large, we would need a\n", "smaller time step." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "attributes": { "classes": [], "id": "", "n": "31" } }, "outputs": [ { "data": { "text/plain": [ "'1.40e-04'" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"%.2e\" % abs(opt_dynamics2[0].expect[1][-1] - opt_dynamics[0].expect[1][-1])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }