{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# Qiskit Aer: Simulators\n",
    "\n",
    "---\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit import IBMQ\n",
    "# Loading your IBM Quantum account(s)\n",
    "provider = IBMQ.load_account()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<AccountProvider for IBMQ(hub='ibm-q', group='open', project='main')>]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "IBMQ.providers()    # List all available providers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we will show how to import the Qiskit Aer simulator backend and use it to run ideal (noise free) Qiskit Terra circuits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "# Import Qiskit\n",
    "from qiskit import QuantumCircuit\n",
    "from qiskit import Aer, transpile\n",
    "from qiskit.tools.visualization import plot_histogram, plot_state_city\n",
    "import qiskit.quantum_info as qi"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Aer provider contains a variety of high performance simulator backends for a variety of simulation methods. The available backends on the current system can be viewed using ``Aer.backends``"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<frozen importlib._bootstrap>:219: RuntimeWarning: scipy._lib.messagestream.MessageStream size changed, may indicate binary incompatibility. Expected 56 from C header, got 64 from PyObject\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[AerSimulator('aer_simulator'),\n",
       " AerSimulator('aer_simulator_statevector'),\n",
       " AerSimulator('aer_simulator_density_matrix'),\n",
       " AerSimulator('aer_simulator_stabilizer'),\n",
       " AerSimulator('aer_simulator_matrix_product_state'),\n",
       " AerSimulator('aer_simulator_extended_stabilizer'),\n",
       " AerSimulator('aer_simulator_unitary'),\n",
       " AerSimulator('aer_simulator_superop'),\n",
       " QasmSimulator('qasm_simulator'),\n",
       " StatevectorSimulator('statevector_simulator'),\n",
       " UnitarySimulator('unitary_simulator'),\n",
       " PulseSimulator('pulse_simulator')]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Aer.backends()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The main simulator backend of the Aer provider is the ``AerSimulator`` backend. A new simulator backend can be created using ``Aer.get_backend('aer_simulator')``."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "simulator = Aer.get_backend('aer_simulator')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The default behavior of the ``AerSimulator`` backend is to mimic the execution of an actual device. If a ``QuantumCircuit`` containing measurements is run it will return a count dictionary containing the final values of any classical registers in the circuit. The circuit may contain gates, measurements, resets, conditionals, and other custom simulator instructions "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create circuit\n",
    "circ = QuantumCircuit(2)\n",
    "circ.h(0)\n",
    "circ.cx(0, 1)\n",
    "circ.measure_all()\n",
    "\n",
    "# Transpile for simulator\n",
    "#simulator = Aer.get_backend('aer_simulator')\n",
    "circ = transpile(circ, simulator)\n",
    "\n",
    "# Run and get counts\n",
    "result = simulator.run(circ).result()\n",
    "counts = result.get_counts(circ)\n",
    "plot_histogram(counts, title='Bell-State counts')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['00', '11', '11', '00', '00', '11', '00', '00', '00', '11']\n"
     ]
    }
   ],
   "source": [
    "# Run and get memory (measurement outcomes for each individual shot)\n",
    "result = simulator.run(circ, shots=10, memory=True).result()\n",
    "memory = result.get_memory(circ)\n",
    "print(memory)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Simulation methods\n",
    "\n",
    "The AerSimulator supports a variety of simulation methods, each of which supports a different set of instructions. The method can be set manually using ``simulator.set_option(method=value)`` option, or a simulator backend with a preconfigured method can be obtained directly from the Aer provider using ``Aer.get_backend``.\n",
    "\n",
    "When simulating ideal circuits, changing the method between the exact simulation methods stabilizer, ``statevector``, ``density_matrix`` and ``matrix_product_state`` should not change the simulation result (other than usual variations from sampling probabilities for measurement outcomes)\n",
    "\n",
    "Each of these methods determines the internal representation of the quantum circuit and the algorithms used to process the quantum operations. They each have advantages and disadvantages, and choosing the best method is a matter of investigation. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7g1Z/9xxSLiY/cePHx904MAB5+XLl6dYI54vvvjicE3b9u/fv8sar0ENq1ETPlVdLCJ+AF4CEAhgJ4BbVNXcWte6Svl8EbkRxgs1/gCQC2NS96JFmf+KyDAA0wC8CuAAgKGqurmBD4eIiIisrKSkBI6Ojk0dhs1p9PmEVPU9VQ1TVWdV7W55AYeq9lXVvlXKJ6vqTarqpqrBqvqUquZVKbNUVa9QVSdV7aiqXzfS4RARETWpSZMmBbRq1aqru7t7TFhYWOdFixZ5zZ49O2DVqlU+bm5uMZGRkZ0AYObMmX5t27aNcnd3jwkJCeny5ptvtqha14svvhjg4+MTHRwc3OX999/3Na8fPHhw2NixY4Oqe/3g4OAuy5YtMwCAwWDo5ubmFuPm5hbj6uoaIyLdk5OTnQBg4cKFXldccUUng8HQLSYm5orNmze7WtYxadKkgA4dOnRyd3ePLSkpsfbbdNlr7C5dIiIispKkpCTnTz75pNWWLVv2hIWFlSQnJzuVlpbKmDFj0qt26fr7+5d+++23+zt27Fj0/fffe9x9993te/bsWdC7d+8CADhx4oRjdna2w/Hjx3esXbvW/e67725/zTXXnImOjq52rprq5OXlJZqfP/3008G///67R1hYWMnGjRtdn3rqqbClS5fu79Onz5n333/f76677orYv3//TldXVwWAr776yve7777bFxAQUMoWPuvjjOFERESXKHt7exQXF0tiYqJLUVGRREZGFkdFRVWboA0bNuxUVFRUkZ2dHQYOHJjfq1ev07/88ovlRZF45513jru6uurAgQPzr7vuulP/+c9/fKur63zmzp3r88033/iuWLHigLOzs7733nstH3jggazrr7/+jIODA8aMGXPC0dFR165d627eZ9SoURkRERElHh4enO+wATDhIyIiukR17ty5aMaMGUf+8Y9/BLVs2TL61ltvbZuamlpt89iSJUs8o6Ojr/Dy8upmMBi6rV+/3is7O7uip89gMJR6enqWm5dDQ0OLjx8/Xu+mto0bN7o+//zzrZcsWbI/KCioFACOHj3q9NFHH/kbDIZu5kdGRobj0aNHncz7tWnThv24DYgJHxER0SVs1KhROQkJCcmpqak7RETHjRsXIiKVWsnOnj0rDz30ULtx48ZlZGZmJuXl5SXGx8efsrz5Ql5ensPp06cr8oKjR486BQUF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zz33VOoms5bi4mJMmTIFCxcuPGfbzz//jLZt28LT07Nibi/L5BYAUlNT8eqrr1o9LsCYFD311FNYuXLlOds+/vhjXHPNNfDx8YG3tzdatmwJBwcHFBYWoqysDH379kVCQgIGDRqE22+/HQcPHqzXazs4OGDOnDno378/ysrK8OijjyIqKgovv/wy4uLicPvtt2PWrFlYsWIFHBwc4Ovri3nz5gEwTucxefLkii77l19+Gb6+vsjIyMDtt9+OoqIilJeX47rrrsOoUaMu+n1qjswD8i2dOnWq4nleXl6N++7bt6/Wup966ik89dRTFxwbYPxDYsGCBZXWWV58Ud14TTPzH2SW+vbte1FTxVh65ZVX8Morr1Rat2HDhorn5pb/6nz66af49NNPa9zeu3fvc6bCqY/ztV7n5eVh586d6Nu3LwDjWOTbb78dK1asQFxcHP75z39WlL3mmmsqjSlOSkpCaWkpundv0JlQLklJSUnOhw4dcurXr1++m5uburi4aFlZGfz9/UvXrVvnVFZWBnt7exQWFkpxcbFdq1atShwdHXXJkiWeGzdu9OzUqdNZAAgKCio9deqUw4kTJ+z9/PzKAOCRRx7JfOmll0LCwsJSOnToUHz8+HGHtWvXetx///0nAWDIkCGnnn766bCXX3456Lbbbss1J+n33HPPyalTpwb/61//8h0xYkQuAPz++++uBoOhPDY2tnDIkCHZ48ePD124cGFKSEhIybp169x79epVEBgYWGpnZ4c9e/Y4d+3atcj0GjkzZ84MuOOOO04FBgaWPv/888EDBw7M5bQtF8DcFXI5Prp3764N6b777lMRqVj29fVVX1/fiuX//ve/CuCcx8iRI8+pC4BOnDhRS0pKFICePXtWVVU//vhjNZ7G+nv++efV0dGxYjkiIkIjIiIqlv/8889q45syZco5ddnZ2ens2bMrlt94440LjktV9cMPP1Q/P7+K5ZtuuklvuummiuVDhw6piKi9vb3a29srALWzs9P58+efU5eHh4cuX75cy8rKFICWlJSoqurvv/+uzs7OFxwjEf1PSUmJhoeH68GDB7WoqEi7du2qO3furLF8fHy8/vHHH6qqeubMGc3Pz1dV1Z9++kmvvfbaSmVfeOEFffnllxsu+CoAbFWL34rExMRUVd3aHB+///77rs6dO59xc3Mr8/T0LO3bt+/JlJSUpLS0tO2xsbF5BoOhtGPHjmdUdeuMGTMO+fr6lnh4eJQOGjToxMCBA3PGjBlz3FzX3Xffne3l5VXq4eFRmpKSklRaWrr1lVdeOdKmTZtCNze3spCQkMKnnnoqzfL1hwwZkgVA161bt9tyfWJi4p/x8fEnvb29S7y8vEp79OhxeuPGjbtUdWteXl7CI488ktGyZctiDw+P0u7du+fl5eUlqOrWZ5555ri3t3eJh4dH6Zo1a/aUlpZuffbZZ4/5+/sXe3t7l9x+++0nMjMzt6vq1r/++msHAC0uLm7y89BcHqbParU5j+gFjnWxBXFxcVp1YLA1nTx5Ej4+Ppg1axaGDBmCwMBA/P3vf8eMGTOqLS8iGDlyJD766CMkJyejtLQUUVFRGDBgAH788ceKcUkODg64+eab8e233yIyMhL79++/oBaE/Px8GAwGLFq0CP369UOLFi0wc+ZMjBkzptryDg4OmDx5Ml555RUcPnwYZWVlCA8Px2OPPYb58+dXamUMCgqCo6NjRTdqfRUWFsJgMODnn39GbGwsWrZsiUWLFmHQoEHVlvf29sasWbPw4IMPIjs7G+Xl5WjVqhVef/11vPbaaxUtSK1bt8YzzzyDZ599FiNGjMAPP/yAo0ePXlCMRFTZd999h3HjxlW0fE+aNKlSy7elvn374q233kJcXBxSU1PRv39/2NnZITg4GJ988gnatGlTUbZt27b47rvvGm2Yg4gkqGqceTkpKSk1Ojo6u1FenOgiJCUltYiOjg6rbhu7dBuQ5XilsWPHVhqv1LlzZ2zcuLHGfdesWVPpisP333+/YtucOXMwevToinFOdZ24tirL8UqAcZyPebxSjx49ap34d/PmzbjnnnsAGBPBxYsXV9qelpZ2wXEBlccrqSr69u1bMV7p2muvPefODJb++usvXH/99RARuLu747vvvqvYtnDhQtxyyy146aWX4OrqilWrVl1wjERU2S233IJbbrml0rqahnVYdu2HhYUhOTm5xnrrO+yCiM7FFr4GbOEjIqJLD1v46FJVWwsfr9IlIiIisnFM+IiIiIhsHBM+IiIiIhvHhI+IiIjIxjHhIyIiIrJxTPiIiIiIbBwTPiIiIhsyePDgsLFjxwY1VP0RERFRK1euNDRU/Y1l+PDhrSdMmBDY1HE0Fk68TEREVE9/f+hUg97Y97X5XgkNWf/F2L9//y7z8/HjxwcdOHDAefny5SlNGZOlWbNm+c2fP79FQkJCzbN5A/jiiy8O17bd1jDhI6rJcmnqCGo3qPlOmj7y3aaOoHYvvj+lqUOo0cdX/62pQ6jVa/O9mjoEootWWloKB4fLKwVily4REdElbOPGja6dOnXq6O7uHjNw4MC2RUVFFb/tCxcu9Lriiis6GQyGbjExMVds3rzZ1bwtODi4y8svv+zfoUOHTgaDodvAgQPbFhQUCACkpaU5XHfddREGg6Gbl5dXt+7du0ea79keHBzcZdmyZYalS5d6zp49O2DVqlU+bm5uMZGRkZ3+/e9/+0RFRXW0jG/KlCn+N9xwQ7vajmHw4MFh999/f+s+ffq0d3Nzi4mNjb3i8OHDDo8++miop6dnt/Dw8KiNGzdWxD5x4sSA0NDQzu7u7jHt2rWL+uyzz7wBYNu2bS4TJkxok5iY6OHm5hZjMBi6meu/7777WsfHx0e4urrGrFy50mDZ9T1p0qSArl27XlFSUgIAeOONN1pGREREmd8PW8CEj4iI6BJVWFgoQ4YMiRg6dOiJnJycxLvvvjv3hx9+8AaMieBTTz0V9t577x3Kzc1NfPTRR7PuuuuuiLNnz1YkMd98843vTz/9tG///v1/7tmzx3XOnDktAGDatGn+gYGBxdnZ2UmZmZlJ06dPPyZSOfe5++67T48ZMyZ94MCBuQUFBduTk5N333vvvSePHj3qvG3bNhdzucWLF/s98MADJ853LKtWrfKZPn36sezs7EQnJ6fynj17doyNjS3IyclJvO2223LHjx8fai4bERFR9OuvvyafPn16+4svvnj8iSeeCD906JBjbGxs4ZtvvnmoW7du+QUFBdvz8vISzfusWLHCd9KkSWn5+fnbb7rppnzL13711VfTnZyc9IUXXgj6888/nadPnx48f/78g25ubs23K6WeLq/2zAbSnLuvmnPXFdC8u69eu6upIyBqhprzUIdmPMyhofzyyy/upaWlMnny5Ew7Ozs88sgjubNmzfIHgPfee6/lAw88kHX99defAYAxY8acePvttwPXrl3rPnDgwHwAGD16dEZYWFgJANx0002nEhMTXQHA0dFRMzIyHPft2+fUuXPnogEDBuTXFIMlV1dXvfXWW3M+/fRTv9jY2GNbt251OXbsmNPQoUNPnW/f/v37n7z22msLAOC22247+cknn7R8+umnTwDA/fffn/vpp5+2Mpd99NFHc83PR44cmfv2228H/vrrr+5t2rQ5WVP9N95448mbbrrpDABUTeTs7e2xYMGClKuuuqrTsmXLfJ566qn0Xr16na3LMV8q2MJHRER0iTpy5Ihjq1atSuzs/vdzHhISUgQAR48edfroo4/8DQZDN/MjIyPD8ejRo07mskFBQSXm525ubuVnzpyxB4BXXnklvW3btkUDBgzoEBIS0mXixIkBdY3p0UcfPfH111/7lpeX49///rffrbfemuvq6nrebLxVq1YVsbi6upa3aNGi1DK2s2fP2puX58yZ42fuqjYYDN3279/vmpWVVWsjVkhISElt2yMjI4uvvvrqvOPHjztPmDAh83zxXmqY8BEREV2igoODSzIzMx3Ly8sr1h07dszZvG3s2LFpeXl5iebH2bNntz/xxBM556vXx8enfO7cuUePHj365zfffLPvgw8+8F++fPk5U7GIyDmJ3A033HDG0dFRf/zxR49vvvnG96GHHjpvd2597N2712n8+PFtZs6ceTg3NzcxLy8vMSIi4qyqmmOqdr/qYrW0aNEir+3bt7v37Nnz9NNPPx1aW9lLERM+IiKiS9QNN9xwxt7eXqdPn96qqKhI5s+f771jxw43ABg1alTW/PnzW61du9a9vLwcp0+ftlu0aJFXbm7ueX/7Fy5c6LVz507n8vJy+Pj4lNnb26tlK6KZv79/6dGjR53MF3SYDR06NPuZZ55p7eDgoP37969Td3Bd5eXl2YkIAgICSgBg5syZfvv376+4oCMwMLAkPT3dqbCwsM7jD9LS0hzGjBnTZvbs2YcWLlyYsmbNGq/Fixfb1CXpHMNHRERUT81lnjwXFxddvHjxgSeeeCLs9ddfD+7bt++p/v37nwSAPn36FMyZMyd17NixrQ8dOuTs4uJSHhcXl9+/f/+889W7d+9e5+eee651Tk6Og6enZ9nDDz+cddttt52z34MPPpizePFiXx8fn24hISFFu3fv3gMAI0aMyHnzzTeDn3nmmTRrH3P37t0LH3/88Yw+ffp0tLOz08GDB5+IiYmpSCpvvfXWvDlz5pz19/ePtrOz09zc3KTz1fnQQw+16dev30nzWMM5c+akPv3002Hx8fG7AgICys63/6VAzE2gl6O4uDjdunXrRdfDizYuXPO+aMO7qUOoXTMe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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Increase shots to reduce sampling variance\n",
    "shots = 10000\n",
    "\n",
    "# Stabilizer simulation method\n",
    "sim_stabilizer = Aer.get_backend('aer_simulator_stabilizer')\n",
    "job_stabilizer = sim_stabilizer.run(circ, shots=shots)\n",
    "counts_stabilizer = job_stabilizer.result().get_counts(0)\n",
    "\n",
    "# Statevector simulation method\n",
    "sim_statevector = Aer.get_backend('aer_simulator_statevector')\n",
    "job_statevector = sim_statevector.run(circ, shots=shots)\n",
    "counts_statevector = job_statevector.result().get_counts(0)\n",
    "\n",
    "# Density Matrix simulation method\n",
    "sim_density = Aer.get_backend('aer_simulator_density_matrix')\n",
    "job_density = sim_density.run(circ, shots=shots)\n",
    "counts_density = job_density.result().get_counts(0)\n",
    "\n",
    "# Matrix Product State simulation method\n",
    "sim_mps = Aer.get_backend('aer_simulator_matrix_product_state')\n",
    "job_mps = sim_mps.run(circ, shots=shots)\n",
    "counts_mps = job_mps.result().get_counts(0)\n",
    "\n",
    "plot_histogram([counts_stabilizer, counts_statevector, counts_density, counts_mps],\n",
    "               title='Counts for different simulation methods',\n",
    "               legend=['stabilizer', 'statevector',\n",
    "                       'density_matrix', 'matrix_product_state'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The default simulation method is automatic which will automatically select a one of the other simulation methods for each circuit based on the instructions in those circuits. A fixed simulation method can be specified by by adding the method name when getting the backend, or by setting the method option on the backend."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### GPU simulation\n",
    "\n",
    "The statevector, density_matrix and unitary simulators support running on a NVidia GPUs. For these methods the simulation device can also be manually set to CPU or GPU using ``simulator.set_options(device='GPU')`` backend option. If a GPU device is not available setting this option will raise an exception."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit.providers.aer import AerError\n",
    "\n",
    "# Initialize a GPU backend\n",
    "# Note that the cloud instance for tutorials does not have a GPU\n",
    "# so this will raise an exception.\n",
    "try:\n",
    "    simulator_gpu = Aer.get_backend('aer_simulator')\n",
    "    simulator_gpu.set_options(device='GPU')\n",
    "except AerError as e:\n",
    "    print(e)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Aer provider will also contain preconfigured GPU simulator backends if Qiskit Aer was installed with GPU support on a compatible system:\n",
    "\n",
    "* ``aer_simulator_statevector_gpu``\n",
    "* ``aer_simulator_density_matrix_gpu``\n",
    "* ``aer_simulator_unitary_gpu``\n",
    "\n",
    "Note: The GPU version of Aer can be installed using ``pip install qiskit-aer-gpu``."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Simulation precision\n",
    "\n",
    "One of the available simulator options allows setting the float precision for the statevector, density_matrix unitary and superop methods. This is done using the ``set_precision=\"single\"`` or ``precision=\"double\" `` (default) option:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'00': 523, '11': 501}\n"
     ]
    }
   ],
   "source": [
    "# Configure a single-precision statevector simulator backend\n",
    "simulator = Aer.get_backend('aer_simulator_statevector')\n",
    "simulator.set_options(precision='single')\n",
    "\n",
    "# Run and get counts\n",
    "result = simulator.run(circ).result()\n",
    "counts = result.get_counts(circ)\n",
    "print(counts)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Setting the simulation precision applies to both CPU and GPU simulation devices. Single precision will halve the required memory and may provide performance improvements on certain systems."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Can we simulate noise?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Device backend noise model simulations\n",
    "\n",
    "We will now show how to use the Qiskit Aer noise module to automatically generate a basic noise model for an IBMQ hardware device, and use this model to do noisy simulations of QuantumCircuits to study the effects of errors which occur on real devices.\n",
    "\n",
    "Note, that these automatic models are only an approximation of the real errors that occur on actual devices, due to the fact that they must be build from a limited set of input parameters related to average error rates on gates. The study of quantum errors on real devices is an active area of research and we discuss the Qiskit Aer tools for configuring more detailed noise models in another notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit import IBMQ, transpile\n",
    "from qiskit import QuantumCircuit\n",
    "from qiskit.providers.aer import AerSimulator\n",
    "from qiskit.tools.visualization import plot_histogram"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Qiskit Aer device noise model automatically generates a simplified noise model for a real device. This model is generated using the calibration information reported in the ``BackendProperties`` of a device and takes into account\n",
    "\n",
    "* The gate_error probability of each basis gate on each qubit.\n",
    "* The gate_length of each basis gate on each qubit.\n",
    "* The T1, T2 relaxation time constants of each qubit.\n",
    "* The readout error probability of each qubit."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will use real noise data for an IBM Quantum device using the data stored in Qiskit Terra. Specifically, in this tutorial, the device is ``ibmq_vigo```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit.test.mock import FakeVigo\n",
    "device_backend = FakeVigo()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we construct a test circuit to compare the output of the real device with the noisy output simulated on the Qiskit Aer AerSimulator. Before running with noise or on the device we show the ideal expected output with no noise."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Construct quantum circuit\n",
    "circ = QuantumCircuit(3, 3)\n",
    "circ.h(0)\n",
    "circ.cx(0, 1)\n",
    "circ.cx(1, 2)\n",
    "circ.measure([0, 1, 2], [0, 1, 2])\n",
    "\n",
    "sim_ideal = AerSimulator()\n",
    "\n",
    "# Execute and get counts\n",
    "result = sim_ideal.run(transpile(circ, sim_ideal)).result()\n",
    "counts = result.get_counts(0)\n",
    "plot_histogram(counts, title='Ideal counts for 3-qubit GHZ state')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How to generate a simulator that mimics a device?\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We call ``from_backend`` to create a simulator for ``ibmq_vigo``"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "sim_vigo = AerSimulator.from_backend(device_backend)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By storing the device properties in ``vigo_simulator``, we ensure that the appropriate basis gates and coupling map are used when compiling circuits for simulation, thereby most closely mimicking the gates that will be executed on a real device. In addition ``vigo_simulator`` contains an approximate noise model consisting of:\n",
    "\n",
    "* Single-qubit gate errors consisting of a single qubit depolarizing error followed by a single qubit thermal relaxation error.\n",
    "* Two-qubit gate errors consisting of a two-qubit depolarizing error followed by single-qubit thermal relaxation errors on both qubits in the gate.\n",
    "* Single-qubit readout errors on the classical bit value obtained from measurements on individual qubits.\n",
    "\n",
    "For the gate errors the error parameter of the thermal relaxation errors is derived using the ``thermal_relaxation_error`` function from ``aer.noise.errors module``, along with the individual qubit T1 and T2 parameters, and the ``gate_time`` parameter from the device backend properties. The probability of the depolarizing error is then set so that the combined average gate infidelity from the depolarizing error followed by the thermal relaxation is equal to the ``gate_error`` value from the backend properties.\n",
    "\n",
    "For the readout errors the probability that the recorded classical bit value will be flipped from the true outcome after a measurement is given by the qubit ``readout_errors``."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Once we have created a noisy simulator backend based on a real device we can use it to run noisy simulations.\n",
    "\n",
    "Important: When running noisy simulations it is critical to transpile the circuit for the backend so that the circuit is transpiled to the correct noisy basis gate set for the backend."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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J9ZVrqSkxGu+tI1x0T2NXkWdHri6edcvItIScmVfaWYz3T1lhm+x5ll3/wKYCRyXNOs4Qi/aJmFmBhxE6GAkIiLSZFq6efYu4BEzmwG8CVwCdAfuBzCzPwO4+zk1C5jZwOjpLsDm6PUX7j4/mv9T4G1gYVTmSkLSTNkjV0REZFu1aNJ09wlm1gW4gXA95VzgJHf/ICqS6nrNfya9/gbwAVAYvd4N+D2hM9FnUflh7j6jSYMXEZHtXot3BHL3ccC4NPOGp5hm9azvGuCaJglORESkDhp7VkREJCYlTRERkZiUNEVERGJS0hQREYlJSVNERCQmJU0REZGYlDRFRERiUtIUERGJSUlTREQkJiVNERGRmJQ0RUREYlLSFBERiUlJU0REJCYlTRERkZiUNEVERGJS0hQREYlJSVNERCQmJU0REZGYlDRFRERiUtIUERGJSUlTREQkJiVNERGRmJQ0RUREYlLSFBERiUlJU0REJCYlTRERkZiUNEVERGJS0hQREYlJSVNERCQmJU0REZGYlDRFRERiUtIUERGJSUlTREQkJiVNERGRmJQ0RUREYlLSFBHJEZMmTaJv374UFRVx++23bzW/qqqKM844g6KiIgYPHszixYu3mP/hhx/SsWNH7rzzztpp559/Pl27dqV///7NHX6roKQpIpIDqqurueyyy3jxxReZP38+jz/+OPPnz9+izIMPPkinTp147733uOaaa7juuuu2mD969GhOPPHELaadd955TJo0qdnjby2UNEVEcsCMGTMoKiqid+/etG3bljPPPJOJEyduUWbixImce+65AJx22mlMnjwZdwfg2WefpVevXhQXF2+xzLBhw+jcuXPLbEQroKS5ndvW5p4ZM2YwcOBABg4cyIABA3jmmWe2WK66upqDDz6Yk08+uSU2Q6TVq6iooGfPnrWve/ToQUVFRdoy+fn57LrrrlRWVrJu3TruuOMOfvrTn7ZozK2RkuZ2rDHNPf3796esrIzZs2czadIkvve977Fp06ba5e69914OOOCAFt0eEUltzJgxXHPNNXTs2DHToeQ8Jc3tWGOae3bccUfy8/MB2LhxI2ZWu8zSpUt54YUXuPDCC1tuY0RauYKCApYsWVL7eunSpRQUFKQts2nTJj777DO6dOlCaWkpP/jBDygsLOSee+7h1ltvZezYsS0af2uhpLkda0xzD0BpaSnFxcUceOCB3H///bVJ9Oqrr+YXv/gFbdro6yXSVA499FAWLlxIeXk5X3zxBePHj2fkyJFblBk5ciQPP/wwAE899RTHHHMMZsYbb7zB4sWLWbx4MVdffTU/+tGPuPzyyzOxGTlPezXZZoMHD2bevHn84x//4LbbbmPjxo08//zzdO3alUMOOSTT4Ym0Kvn5+YwdO5YRI0ZwwAEHcPrpp1NcXMyNN97Ic889B8AFF1xAZWUlRUVF3HXXXSn7KSQbNWoUQ4YMYcGCBfTo0YMHH3ywuTclp+VnOgDJnIY09/To0WOL5p5EBxxwAB07dmTu3Lm8+eabPPfcc/ztb39j48aNrFmzhrPPPptHH320RbZJpDU76aSTOOmkk7aYdtNNN9U+b9++PU8++WSd6xgzZswWrx9//PEmi297oJrmdqwxzT3l5eW1HX8++OAD3nnnHQoLC7nttttYunQpixcvZvz48RxzzDFKmCLSaqimuR1LbO6prq7m/PPPr23uKSkpYeTIkVxwwQV897vfpaioiM6dOzN+/HgApk2bxu23384OO+xAmzZtGDduHLvvvnuGt0hEpHlZzYWv26OSkhIvKytr9HouuqfxsdTlgaubd/0i25NJkyZx1VVXUV1dzYUXXsj111+/xfyqqirOOeccZs6cSZcuXZgwYQKFhYVUVlZy2mmn8Y9//IPzzjtvi96nEyZM4JZbbqG6upqTTz6ZO+64o9niz+X9Ta7EbmYz3b0k1Tw1z4rIdqMx1ya3b9+en//851uM2wpQWVnJ97//fSZPnsy8efNYsWIFkydPbrFtkpalpCki243GXJu80047MXToUNq3b79F+UWLFtGnTx/22GMPAI499liefvrpltkgaXE6p7mdy5XmEpGmkOra5NLS0rRlEq9NTnfOvqioiAULFrB48WJ69OjBs88+yxdffNF8GyEZpaQpItIInTp14re//S1nnHEGbdq04fDDD+f999/PdFjSTNQ8K5IBjbkv4m233UZRURF9+/blpZdeqp1+9913U1xcTP/+/Rk1ahQbN25siU3JKY0Ziq4u3/jGNygtLWX69On07duX/fbbr+mDl6ygpCnSwhrTGWX+/PmMHz+eefPmMWnSJC699FKqq6upqKjgvvvuo6ysjLlz51JdXV17eZB8pTHXJtdl1apVAKxevZpx48Zp3OVWTElTclZz1Nag+W9r1pjOKBMnTuTMM8+kXbt29OrVi6KiImbMmAGEWtGGDRvYtGkT69evp3v37s0Sfy5r7FB0hYWFjB49moceeogePXrUHuxcddVV9OvXjyOOOILrr79eNc1WTOc0JSfV1NZeeeUVevTowaGHHsrIkSPp169fbZnE2tr48eO57rrrmDBhwha1tWXLlnHsscfy7rvvkpeXB3x1W7M1a9Y0S+yN6YxSUVHBYYcdtsWyFRUVDBkyhGuvvZa9996bDh06cPzxx3P88cc3S/yw7dc6QjhgefDBB8nLy+O+++5jxIgRbNy4kWHDhlFVVcWmTZs47bTT+NnPftYssTdmKLrEA69EGopu+6GapuSk5qqt5eptzVavXs3EiRMpLy9n2bJlfP755802fGFzNC+3a9eO1157jTlz5tTeo/Xtt99ulvhFGkM1TclJzVFbg69ua7Z27dpmi70xA+WnW/bVV1+lV69etdcKnnrqqbz11lucffbZTR5/4gELUHvAkljLnzhxYu3A4KeddhqXX355nQcsQ4YMqb1B8pdffsmXX35Z73nExmjOS610mVXrppqmSKSlbmvWmM4oI0eOZPz48VRVVVFeXs7ChQv52te+xt57783bb7/N+vXrcXcmT57MAQcc0CzxN+Y+rHUtW11dzcCBA+natSvHHXccgwcPbpb4RRpDSVNyUmMuHUi3bM1tzQoLCznzzDN57bXXmqWm1pjOKMXFxZx++un069ePE044gd/85jfk5eUxePBgTjvtNAYNGsSBBx7I5s2bufjii5s89uaUl5fH7NmzWbp0KTNmzGDu3LmZDklkK2qelZyUWFsrKChg/PjxPPbYY1uUqamtDRkyZKva2ne+8x1Gjx7NsmXLamtrQ4YM4bbbbgNgypQp3Hnnnc12XrAxnVF+/OMf8+Mf/3ir6T/72c+arfNMouZoXk602267cfTRRzNp0iT69+/fvBsj0kAtXtM0s0vNrNzMNprZTDM7sp7yR0XlNprZIjO7pLHrlNzXHLU1iac5mpc/+ugjPv30UwA2bNjAK6+8wv7779/SmyZSrxataZrZGcC9wKXAtOjvi2bWz90/TFG+F/A34I/A2cBQYJyZfeTuT2/LOqX1aI7aWo3hw4czfPjwJokznVwd97cx92FNPGDJz8+vPWBZvnw55557LtXV1WzevJnTTz+92a6T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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Transpile the circuit for the noisy basis gates\n",
    "tcirc = transpile(circ, sim_vigo)\n",
    "\n",
    "# Execute noisy simulation and get counts\n",
    "result_noise = sim_vigo.run(tcirc).result()\n",
    "counts_noise = result_noise.get_counts(0)\n",
    "plot_histogram(counts_noise,\n",
    "               title=\"Counts for 3-qubit GHZ state with device noise model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_noise=result_noise.data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'counts': {'0x2': 7,\n",
       "  '0x3': 15,\n",
       "  '0x7': 470,\n",
       "  '0x0': 438,\n",
       "  '0x6': 43,\n",
       "  '0x4': 5,\n",
       "  '0x1': 32,\n",
       "  '0x5': 14}}"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_noise"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You may also be interested in:\n",
    "* Building Noise Models https://qiskit.org/documentation/tutorials/simulators/3_building_noise_models.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Applying noise to custom unitary gates https://qiskit.org/documentation/tutorials/simulators/4_custom_gate_noise.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td><code>qiskit-terra</code></td><td>0.20.0</td></tr><tr><td><code>qiskit-aer</code></td><td>0.10.3</td></tr><tr><td><code>qiskit-ignis</code></td><td>0.7.0</td></tr><tr><td><code>qiskit-ibmq-provider</code></td><td>0.18.3</td></tr><tr><td><code>qiskit</code></td><td>0.35.0</td></tr><tr><td><code>qiskit-nature</code></td><td>0.3.2</td></tr><tr><td><code>qiskit-finance</code></td><td>0.3.1</td></tr><tr><td><code>qiskit-optimization</code></td><td>0.3.2</td></tr><tr><td><code>qiskit-machine-learning</code></td><td>0.4.0</td></tr><tr><th>System information</th></tr><tr><td>Python version</td><td>3.8.13</td></tr><tr><td>Python compiler</td><td>GCC 10.3.0</td></tr><tr><td>Python build</td><td>default, Mar 25 2022 06:04:10</td></tr><tr><td>OS</td><td>Linux</td></tr><tr><td>CPUs</td><td>8</td></tr><tr><td>Memory (Gb)</td><td>31.211315155029297</td></tr><tr><td colspan='2'>Thu Jun 09 08:46:05 2022 UTC</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2022.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [
    "7d_uf8JI12oJ",
    "Li9fj6uVzyFR",
    "9PBnSGwum9ZJ",
    "s0UwnaaJQkqa",
    "YqAqumfLri_P",
    "yWcE6S_Qp61P",
    "yhGcFXBa4aEM",
    "ZocPglAL6zRm",
    "58JawO_lFBGY",
    "iTzbCQzm67Uw",
    "EQ8dJq6v7NW-"
   ],
   "name": "Workshop.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Qiskit v0.35.0 (ipykernel)",
   "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.8.13"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {},
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
