{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "94b08b04", "metadata": {}, "source": [ "# Getting Started" ] }, { "attachments": {}, "cell_type": "markdown", "id": "620cea60", "metadata": {}, "source": [ "Install the latest version of QDFlow from the Python Package Index with the\n", "following command:\n", "```bash\n", "pip install qdflow\n", "```\n", "\n", "For this tutorial, you will also need the `tutorial_helper.py` file, which\n", "contains helper functions used to streamline plotting the results. This file is\n", "available from the [QDFlow GitHub repository](https://github.com/QDFlow/QDFlow-sim).\n", "Place this file in the same directory as this tutorial notebook." ] }, { "cell_type": "code", "execution_count": 1, "id": "5605fefe", "metadata": {}, "outputs": [], "source": [ "from qdflow import generate\n", "import tutorial_helper\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "attachments": {}, "cell_type": "markdown", "id": "94c12f9a", "metadata": {}, "source": [ "Generating a Charge Stability Diagram with QDFlow is simple.\n", "\n", "First, you will need to specify the physical parameters of the device you wish\n", "to simulate. This includes things like the Coulomb interaction strength, the\n", "gate positions and voltages, the locations of the sensors, and other physical\n", "properties of the device. This information is all stored in the `PhysicsParameters`\n", "dataclass.\n", "\n", "We can get a `PhysicsParameters` object with default values using `generate.default_physics()`." ] }, { "cell_type": "code", "execution_count": 2, "id": "ff029103", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Coulomb interaction strength: 5.00\n", "Number of sensors: 1\n", "Voltage of left plunger gate: 7.00\n" ] } ], "source": [ "# Create a default set of physical parameters\n", "phys = generate.default_physics(n_dots=2)\n", "\n", "# Print out some of the parameters \n", "print(\"Coulomb interaction strength: %0.2f\" % phys.K_0)\n", "print(\"Number of sensors: %i\" % len(phys.sensors))\n", "print(\"Voltage of left plunger gate: %0.2f\" % phys.gates[1].peak)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "882c9b8e", "metadata": {}, "source": [ "A CSD can now be generated with the function `generate.calc_2d_csd()` function." ] }, { "cell_type": "code", "execution_count": 3, "id": "6b73e893", "metadata": {}, "outputs": [], "source": [ "# Set ranges and resolution of plunger gate sweeps\n", "V_x = np.linspace(2., 14., 70)\n", "V_y = np.linspace(2., 14., 70)\n", "\n", "# Run the simulation, this may take ~ 15 seconds\n", "csd = generate.calc_2d_csd(phys, V_x, V_y)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "92314695", "metadata": {}, "source": [ "The CSD data is returned as a `CSDOutput` dataclass.\n", "\n", "This contains the sensor data, ground truth charge-state labels, and other\n", "metadata such as the physics parameters of the simulated device.\n", "\n", "You can obtain the sensor data as a numpy array with shape\n", "`(x_resolution, y_resolution, num_sensors)` by using `csd.sensor`.\n", "\n", "**WARNING!**\n", "\n", "QDFlow returns 2D data as a numpy array with shape `(x, y)`.\n", "This is opposite of the default behavior of `matplotlib.pyplot.pcolor()`, which\n", "expects shape `(y, x)`.\n", "When plotting data, ensure that the axes are labeled and plotted correctly." ] }, { "cell_type": "code", "execution_count": 4, "id": "9e35546c", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAboAAAGzCAYAAABZ+NJNAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAALQxJREFUeJzt3Qd0VEX7+PEntARCFURAARF4QaWqYP35iiKICCJWpKMiilJsGJqCBVERC0hTQX0VjgUQPYpSBRSlCYoiRRGQIlJMAkiAsP/zzP/sniRsYDdb7r2z38859yR7d7M79+7mPjszz8wk+Xw+nwAAYKlCThcAAIBYItABAKxGoAMAWI1ABwCwGoEOAGA1Ah0AwGoEOgCA1Qh0AACrEegAAFYj0AEArFbEyRdftGiRvPDCC7Jy5UrZuXOnzJgxQ9q1axf0sb169ZIJEybI6NGjpV+/fiG/xvHjx2XHjh1SqlQpSUpKimLpAQDxoDNVZmZmSpUqVaRQoULeCnQHDx6Uhg0bSo8ePaR9+/b5Pk4D4HfffWcOMlwa5KpWrRphSQEATtu2bZucddZZ3gp0rVq1MtvJbN++XR588EH58ssvpXXr1mG/htbk1D333CPFihWTaEnk2mH58uWtO3fBjsnpckZ6nhO5nKeddlrQ/ZG8p7Ga/96N5y+ccxoPGRkZpsLiv557KtCF0uzYuXNnefTRR+X8888P6W+ysrLM5qfVXaVBLjk5OWplc/oi6KSUlBTrzl3x4sVdV84SJUqIF6SmporblCxZ0jOBrqAX73grXbq000Uo8Pvn6mSUkSNHSpEiRaRPnz4h/82IESOkTJkygY1mSwBIbK4NdJqg8sorr8iUKVPCiuJpaWmSnp4e2LRNFwCQuFzbdLl48WLZvXu3VKtWLbAvOztbHn74YXn55Zfljz/+CPp32jwZzSZKNzRhuc2ePXuC7q9QoYLYJL+mqnh9HoKdZzeeYzd+Hvbu3RvyY50+p155n/cGOade6V90baDTvrnmzZvn2teyZUuzv3v37o6VCwDgLY4GugMHDsimTZsCtzdv3iyrV6822T1ak8v7baFo0aJSqVIlqVOnjgOlBQB4kaOBbsWKFdKsWbPA7Yceesj87Nq1q+mbAwDA04HuqquuCitlN79+OQAAPJd1CQCA1cko0bZv376ozozixqwo2J/55sYMRxvPqdPl9EqG416PlJMaHQDAagQ6AIDVCHQAAKsR6AAAVkuYZJR4JQWEKl7TSMWzYzjUaZec7ui3kRsTKmwrZzj/S5H+fwcbduWVc7c3n+uAk0kq1OgAAFYj0AEArEagAwBYjUAHALAayShx4OR6duGsyxVqZ3GkxxNOIo8bO9u9wivJC16Z7cWN61J65dw5PYsKNToAgNUIdAAAqxHoAABWI9ABAKxGoAMAWI2syzgIdRV1p7O6gmVFOZ29FelUa5GUP5yM1Wi/dqx4KUvPbVmjXsoWdtu5czoTkxodAMBqBDoAgNUIdAAAqxHoAABWIxkFVnRqh1P+YEk/sTgmEj8S9/PoxnLucWGZQk1QyczMjOg5qdEBAKxGoAMAWI1ABwCwGoEOAGA1klE8MGMJ7Ho/vJwUEK/1w2w8n+EkJ8XrM743n9l/3Pg+R4IaHQDAagQ6AIDVCHQAAKsR6AAAViMZBVYsexRp573TCQ1eSfzwSjmZlSYxEnxCRY0OAGA1Ah0AwGoEOgCA1Qh0AACrEegAAFYj69KhLD8v81JGm5d5JcPRS9NIeSWb0I3l3OPCMoWKGh0AwGoEOgCA1Qh0AACrEegAAFYjGaWASFBx//thY9KQlxI/vJJM45UkCzeWc48LyxQMNToAgNUIdAAAqxHoAABWI9ABAKyWMMko+/btk6JFi4qbubET18bkAxtngIn03McraccrnxGvJFm48TO6x4VlokYHALCao4Fu0aJF0qZNG6lSpYr5Rjlz5szAfUePHpUBAwZI/fr1JTU11TymS5cusmPHDieLDADwGEcD3cGDB6Vhw4YyduzYE+47dOiQrFq1SoYMGWJ+Tp8+XdavXy9t27Z1pKwAAG9ytI+uVatWZgumTJkyMmfOnFz7xowZI02bNpWtW7dKtWrVgv5dVlaW2fwyMjKiXGoAgJd4KhklPT3dNHGWLVs238eMGDFChg0bJjbNehELkSQAhJO4EOkxuTFRwSsz7Xgl8cMrs724McnCS8k0ex38PHomGeXw4cOmz65Dhw5SunTpfB+XlpZmAqJ/27ZtW1zLCQBwF0/U6DQx5bbbbjPfeseNG3fSxyYnJ5sNAABPBDp/kNuyZYvMnz//pLU5AAA8Fej8QW7jxo2yYMEC17XZAwDcz9FAd+DAAdm0aVPg9ubNm2X16tVy2mmnSeXKleWWW24xQws+++wzyc7Oll27dpnH6f3FihVzsOQAAK9I8uW3kFccLFy4UJo1a3bC/q5du8qTTz4pNWrUCPp3Wru76qqrQnoNHV6gQxVatmzp+inAvLKemtPZW8HkV9t38vxFep7iWXY3vqfBeKVVxyvns0IcyxlqqAlWpszMTBMPNMGwIN1XjtboNFid7OAdjMEAAEt4ZngBAAAFQaADAFiNQAcAsJqrhxfYwo0JJbaJdKqxWHTK5zdlVLDPg9NJFvmV1W1JFsHe50jLFItcADdOweWVac2ClUkz9CNBjQ4AYDUCHQDAagQ6AIDVCHQAAKuRjBJFJJ14l9PJA7FIsrDxPHmlTF5J/PD6OQ0VNToAgNUIdAAAqxHoAABWI9ABAKxGoAMAWI2sS1idPeZlXsl8c+PnwY1lsvF9rhCknG5cXo0aHQDAagQ6AIDVCHQAAKsR6AAAViMZJYry64RlajBEC0kW0T9/Tq8F6OUEFa+gRgcAsBqBDgBgNQIdAMBqBDoAgNVIRnEoSYUElcRN/IjF58EryQtuLGewtQBJUInsfySYSN7nSP8/qNEBAKxGoAMAWI1ABwCwGoEOAGC1hElG2bdvnxQpcvLDjVUHdKIknrgx0SCReeX9cONsL15OUPHS+1whTuWkRgcAsBqBDgBgNQIdAMBqBDoAgNUIdAAAqyVM1mVBM628xOlMq2DZpV7J/EuUaeLI0ov+9SEWU8JFyiv/d3viVE5qdAAAqxHoAABWI9ABAKxGoAMAWI1kFIsE69gNJ6Eh1CmOwnnOYI+NNOnH6amYQi1/OOV0epo4khc4d24RLDkn0oQdanQAAKsR6AAAViPQAQCsRqADAFiNZBSEnWTh9AwL8UpmiTRBJJxyOn1OgyFBJTHPnRvXAjx48GBEz0mNDgBgNQIdAMBqBDoAgNUcDXSLFi2SNm3aSJUqVUx/yMyZM08YJDh06FCpXLmyFC9eXJo3by4bN250rLwAAO9xNNBpB2PDhg1l7NixQe9//vnn5dVXX5Xx48fL999/L6mpqdKyZUs5fPhw3MsKAPCmJF8Yc6usW7dOpk2bJosXL5YtW7bIoUOH5PTTT5fGjRubAHTzzTdLcnJywQqSlCQzZsyQdu3amdtaLK3pPfzww/LII4+Yfenp6XLGGWfIlClT5I477gjpeTMyMqRMmTLSpEkTKVLE7iTTeE0j5cbssUQ5Tspk3/lzeko7L5w7rRS1aNHCxIDSpUvHpka3atUq02yoAW3JkiVy8cUXS79+/eSpp56STp06maA0aNAgE5hGjhwpWVlZEqnNmzfLrl27zOv6acDS1166dGm+f6evrcEt5wYASFwhVXG0pqa1qo8++kjKli2b7+M0AL3yyisyatQoGThwYEQF0yCntAaXk9723xfMiBEjZNiwYRG9NgAgwQLdhg0bpGjRoqd83KWXXmq2o0ePilPS0tLkoYceCtzWGl3VqlUdKw8AwFkhNV1qkBszZoz8888/IT1pKEHxVCpVqmR+/vXXX7n2623/fcFoH6G24ebcAACJK+TsDO2De+yxx0yyyN133y1XX311TAtWo0YNE9DmzZsnjRo1CtTONPvyvvvuk0Tn5Ppl+eUvOb2mWiLIb8omJ5MH3DiNlJem5go25ZUbE1T2uPDcRX14gfaLaZr/zp075dprrzWBSJNRtm3bVuAXP3DggKxevdps/gQU/X3r1q3moqkJL08//bTMmjVLfvrpJ+nSpYtJePFnZgIAELVApwO2NdAsWLDADNru3LmzvPnmmybgXXfddfLhhx+G3Te3YsUKk8mpm9K+Nf1dB4krrUE++OCD0rNnTzM8QAPj7NmzJSUlJazXAQAkrrDG0eWlfzp37lwzrk1nNdEB3bt37xY3sXUcnZPNhPk1q9jWdOmVZhm3lt/p1/dyOd3YdOnkuYvLOLr86IVNg4f+1KDnZLYlAADBFKiKo/1ykydPNjU57U+78sorZdKkSWa8HeyX3zprbvxmnChJFm5MHnD69b1cThJUHAp0R44ckenTp8tbb70l8+fPNxMtd+3aVXr06CHnnHNOlIsFAECcA52m+uvcljfccIN8+umnZm7LQoVY5QcAYEmgGzx4sMm01EmcAQCwLtDlnFbLT9P9jx8/nmsfM5EAADydjKKDuh944AFZuHBhrnXhNOtSsy+zs7OjXUYEEeqoENtS/uFtbkz88Eo5vZyg4vT5CzvQ+Zfl0aQUXUmACykAwM3CDnRr1qyRlStXSp06dWJTIgAAoijstEmdYSSS+S0BAHB1je6NN96QXr16yfbt26VevXonLMnToEGDaJYPAID4Brq///5bfvvtN+nevXtgn38KMJJRAACeD3Q6E4quMDB16lSSUSJgYxKPGzPV4H5uzNLzSjnzm47PK9mYFeJ07sIOdFu2bDHrw9WqVSs2JQIAwMlkFF1ZXDMvAQDwgrBrdG3atJH+/fubFb/r169/QjJK27Zto1k+AADiG+g041INHz78hPtIRgEAeD7Q5Z3bEkg0Xk66cWNChdfPsxvL6eXpwirE4Nyxzg4AwGohBbpp06aF/IQ6a8o333wTSZkAAIhvoBs3bpyce+658vzzz8u6detOuD89PV0+//xzufPOO+WCCy7Id2wHAACu7KP7+uuvzdi51157TdLS0iQ1NdUMFk9JSZH9+/fLrl27TLtqt27dZO3ateY+AADcIMkX6sJmOToPlyxZYgaO//vvvybA6UwpuhUq5L4uv4yMDClTpozUrFlTChcuLLZwurM7Uctu6zF5ufxeKbsby1nehQkqwRw6dEg6dOhgWg8Lsrh3kYK8We3atQv7hQAAcIL7qmAAAEQRgQ4AYDUCHQDAagQ6AIDVwkpGOXr0qNStW1c+++wzM64O7pvKyQtZYZGW3Y3Za26cBipReOXcu3H6tb0eWs8ubjU6Xang8OHDsSsNAABON1327t1bRo4cKceOHYt2WQAAiLqwx9EtX75c5s2bJ1999ZVZj05nSclp+vTp0SwfAADxDXRly5aVm2++ObJXBQDArVOAeY2tU4A5yY0d/TaW3+lyOv36iXJMkZQpnpfvCg6eu0inACvQ8ALtn5s7d65MmDBBMjMzzb4dO3bIgQMHCvJ0AAC4p+lSJ3O+7rrrZOvWrZKVlSXXXnutlCpVyiSo6O3x48fHpqQAABRA2DW6vn37ykUXXWSW5ylevHhg/0033WSSVAAA8HSNbvHixfLtt99KsWLFcu0/++yzZfv27dEsGwAA8Q90x48fl+zs7BP2//nnn6YJE3A7r8zM4nQ5nX79RJlFJViZ3DgzyR4XnruYNV22aNFCXn755cDtpKQkk4TyxBNPyPXXXx/t8gEAEN8a3ahRo6Rly5Zy3nnnmenA7rzzTtm4caOJ7FOnTo2sNAAAOB3ozjrrLFmzZo1MmzZNfvzxR1Obu+uuu6Rjx465klMAAPBkoDN/VKSIdOrUKfqlAQDA6UA3a9asoPu1ry4lJUVq1aolNWrUiEbZ4FJuXG4E7kse8Eoyi9PnKdTlc0hQiWOga9eunQlqeaee8e/Tn1dccYXMnDlTypUrF0HRAABwIOtyzpw50qRJE/NT5x3TTX+/+OKLzYKsixYtMt9GHnnkkSgUDwCAONfodGaUiRMnymWXXRbYd80115hmy549e8rPP/9shh/06NEjwqIBAOBAje63334LOnu07vv999/N77Vr1464fR4AAEcC3YUXXiiPPvqo/P3334F9+vtjjz1mmjSVjqurWrVqVAoIAEBcmy7ffPNNufHGG814On8w27Ztm5xzzjnyySefmNs6tm7w4MERFQxAYmfMOpkNSSamXZ+xsANdnTp15JdffpGvvvpKNmzYENiny/UUKlQokJkZDTqn5pNPPin/+9//ZNeuXVKlShXp1q2bCaKa3QkAQEwGjGtA0zXpdIslXeNu3Lhx8vbbb8v5558vK1askO7du5sVw/v06RPT1wYAJHCg03XndNu9e7dZzSCnt956K1plM8sBaTNp69atA0sB6Xyay5Yti9prAADsFnYyyrBhw8wKBhrotC1WF2DNuUWTDmHQ1/E3keocm0uWLJFWrVrl+ze6ynlGRkauDQCQuMKu0Y0fP16mTJkinTt3llh7/PHHTaCqW7euFC5c2PTZPfPMM2YC6fyMGDHCBGMgkRIVkJhJFsGmClNMFxZhje7IkSO5BovH0gcffCDvvfeevP/++7Jq1SrTV/fiiy+an/lJS0sLzNiim2aEAgASV9g1urvvvtsEniFDhkis6Xg9rdXdcccd5nb9+vVly5YtptbWtWvXoH+TnJxsNgAAChTodLFVnQJs7ty50qBBAylatGiu+1966aWondlDhw4Fhiz4aRNm3gQYAACiFuh0sdVGjRqZ39euXZvrvmiPbWvTpo3pk6tWrZoZXvDDDz+YQMo8mgCAUCX58q634yKZmZmmiXTGjBlmKIMOGO/QoYMMHTpUihUrFtJzaDKLjrurWbOmqQ0ivhIlScPrx+nl8rux7G4sU/ny5cULgp07bd3Ta7/mXQSbazkm4+jipVSpUmYlBN0AACiIsANds2bNTtpEOX/+/AIVBAAAVwQ6f/+c39GjR2X16tWmvy6/TEgAADwT6EaPHh10v06+rKsWAADgJlHro+vUqZM0bdrUDOgG4C2JMttLsNy7WKyEEux8RpoMEmk59waZRcWNCSrBzt2///4b35lR8rN06VJJSUmJ1tMBAOBMja59+/YnfEPauXOnWUInHrOlAAAQ00CnY9Jy0plLdOHV4cOHm1UNAADwdKCbPHlybEoCAEAMRK2PDgAAz9boypUrF3LG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sensor_num = 0 # which sensor to use (by default there's only one,\n", " # but you can add more by changing phys.sensors)\n", "\n", "# Obtain the sensor readout as a numpy array with shape (x_resolution, y_resolution)\n", "sensor_data = csd.sensor[:,:,sensor_num]\n", "\n", "# Plot the results\n", "fig, ax = plt.subplots()\n", "tutorial_helper.plot_csd_data(fig, ax, sensor_data, x_y_vals=(csd.V_x, csd.V_y))" ] }, { "attachments": {}, "cell_type": "markdown", "id": "ab75afeb", "metadata": {}, "source": [ "We can also obtain the ground-truth labels for the charge state of each pixel\n", "in the diagram.\n", "\n", "There are three seperate labels:\n", "\n", "* `csd.are_dots_occupied` gives a boolean numpy array with shape\n", "`(x_resolution, y_resolution, num_dots)`. For each pixel `(x, y)` in the CSD,\n", "this array tells whether a given dot has at least 1 charge.\n", "\n", "* `csd.are_dots_combined` gives a boolean numpy array with shape\n", "`(x_resolution, y_resolution, num_barriers)`. For each pixel `(x, y)`,\n", "this array tells whether or not the dots on both sides of a given barrier are\n", "combined together (the barrier voltage is too small).\n", "\n", "* `csd.dot_charges` gives an integer numpy array with shape\n", "`(x_resolution, y_resolution, num_dots)`. For each pixel `(x, y)`,\n", "this array gives the number of charges in each dot." ] }, { "cell_type": "code", "execution_count": 5, "id": "4981f82a", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Obtain dot occupation states\n", "is_left_dot_occupied = csd.are_dots_occupied[:,:,0]\n", "is_right_dot_occupied = csd.are_dots_occupied[:,:,1]\n", "\n", "# Obtain barrier state\n", "are_dots_combined = csd.are_dots_combined[:,:,0]\n", "\n", "# Plot the results, overlayed with the sensor data\n", "fig, ax = plt.subplots(1, 3, figsize=(10,3))\n", "for i in range(3):\n", " tutorial_helper.plot_csd_data(fig, ax[i], sensor_data, x_y_vals=(csd.V_x, csd.V_y))\n", "ax[0].set_title(\"Left dot state\")\n", "tutorial_helper.overlay_boolean_data(fig, ax[0], is_left_dot_occupied,\n", " x_y_vals=(csd.V_x, csd.V_y), labels=(\"Empty\", \"Occupied\"))\n", "ax[1].set_title(\"Right dot state\")\n", "tutorial_helper.overlay_boolean_data(fig, ax[1], is_right_dot_occupied,\n", " x_y_vals=(csd.V_x, csd.V_y), labels=(\"Empty\", \"Occupied\"))\n", "ax[2].set_title(\"Barrier state\")\n", "tutorial_helper.overlay_boolean_data(fig, ax[2], are_dots_combined,\n", " x_y_vals=(csd.V_x, csd.V_y), labels=(\"Seperate dots\", \"Combined dot\"))\n", "fig.tight_layout()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "8563a498", "metadata": {}, "source": [ "The transitions can be obtained from these charge states using\n", "`generate.calc_transitions()`." ] }, { "cell_type": "code", "execution_count": 6, "id": "cf9b6348", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Calculate transitions from charge states\n", "is_transition, is_transition_combined = generate.calc_transitions(\n", " csd.dot_charges, csd.are_dots_combined)\n", "\n", "\n", "# Vertical transitions occur when there is a transition\n", "# in the left dot but NOT the right dot\n", "vertical_transitions = is_transition[:,:,0] & ~is_transition[:,:,1]\n", "\n", "# Horizontal transitions occur when there is a transition\n", "# in the right dot but NOT the left dot\n", "horizontal_transitions = ~is_transition[:,:,0] & is_transition[:,:,1]\n", "\n", "# Interdot transitions occur when there is a transition\n", "# in both dots but they are NOT combined together\n", "interdot_transitions = (is_transition[:,:,0] & is_transition[:,:,1]\n", " & ~is_transition_combined[:,:,0])\n", "\n", "# Center transitions occur when there is a transition in a combined center dot\n", "center_transitions = is_transition_combined[:,:,0]\n", "\n", "\n", "# Plot the results, overlayed with the sensor data\n", "fig, ax = plt.subplots(1, 4, figsize=(10,2.5))\n", "for i in range(4):\n", " tutorial_helper.plot_csd_data(fig, ax[i], sensor_data, x_y_vals=(csd.V_x, csd.V_y))\n", "ax[0].set_title(\"Horizontal Transitions\")\n", "tutorial_helper.overlay_boolean_data(fig, ax[0], horizontal_transitions,\n", " x_y_vals=(csd.V_x, csd.V_y), colors=((0,0,0,0),(1,0,0,1)))\n", "ax[1].set_title(\"Vertical Transitions\")\n", "tutorial_helper.overlay_boolean_data(fig, ax[1], vertical_transitions,\n", " x_y_vals=(csd.V_x, csd.V_y), colors=((0,0,0,0),(0,0,1,1)))\n", "ax[2].set_title(\"Interdot Transitions\")\n", "tutorial_helper.overlay_boolean_data(fig, ax[2], interdot_transitions,\n", " x_y_vals=(csd.V_x, csd.V_y), colors=((0,0,0,0),(0,1,0,1)))\n", "ax[3].set_title(\"Center Transitions\")\n", "tutorial_helper.overlay_boolean_data(fig, ax[3], center_transitions,\n", " x_y_vals=(csd.V_x, csd.V_y), colors=((0,0,0,0),(1,0,1,1)))\n", "fig.tight_layout()" ] } ], "metadata": { "kernelspec": { "display_name": "qdflow_venv", "language": "python", "name": "qdflow_venv" }, "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.12.2" } }, "nbformat": 4, "nbformat_minor": 5 }