{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "cca79436", "metadata": {}, "source": [ "# Generating Datasets" ] }, { "attachments": {}, "cell_type": "markdown", "id": "b5891f30", "metadata": {}, "source": [ "QDFlow is capable of generating large, diverse datasets. To do this, we need to\n", "generate many sets of randomized physics parameters. This is accomplished\n", "through the `PhysicsRandomization` dataclass, which defines distributions from\n", "which each physics parameter is drawn." ] }, { "cell_type": "code", "execution_count": 1, "id": "065ac0b4", "metadata": {}, "outputs": [], "source": [ "from qdflow import generate\n", "import tutorial_helper\n", "from qdflow.util import distribution\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "id": "0a308691", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Screening Length: distribution.LogUniform(75, 150)\n", "Gate Radius: distribution.Uniform(10, 20)\n" ] } ], "source": [ "# Create a randomization object with default distributions for each parameter\n", "phys_rand = generate.PhysicsRandomization.default()\n", "\n", "# Print out some of the default distributions\n", "print(\"Screening Length: %s\" % str(phys_rand.screening_length))\n", "print(\"Gate Radius: %s\" % str(phys_rand.rho))" ] }, { "attachments": {}, "cell_type": "markdown", "id": "b48e3699", "metadata": {}, "source": [ "Variable ranges can be adjusted by setting a parameter to a new distribution,\n", "or to a specific value if no randomization is desired." ] }, { "cell_type": "code", "execution_count": 3, "id": "8713d898", "metadata": {}, "outputs": [], "source": [ "# Change the distribution from which the screening length is drawn\n", "phys_rand.screening_length = distribution.Normal(100, 20)\n", "\n", "# Set the gate radius to a constant (will not be randomized)\n", "phys_rand.rho = 15" ] }, { "attachments": {}, "cell_type": "markdown", "id": "f8810677", "metadata": {}, "source": [ "Now randomized sets of physics parameters can be drawn as desired from these\n", "distributions." ] }, { "cell_type": "code", "execution_count": 4, "id": "c981d9b6", "metadata": {}, "outputs": [], "source": [ "generate.set_rng_seed(1) # Rng seed set for reproducibility\n", "\n", "n_devices = 6 # How many randomized parameter sets to generate\n", "\n", "# Generate a list of randomized sets of physics parameters\n", "phys_params = generate.random_physics(phys_rand, n_devices)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "2daafc00", "metadata": {}, "source": [ "Then, all that is required is to run the simulation with each of the physics\n", "parameter sets." ] }, { "cell_type": "code", "execution_count": 5, "id": "a93e95d2", "metadata": {}, "outputs": [], "source": [ "# Smaller ranges and resolution used for the sake of time\n", "V_x = np.linspace(3., 11., 50)\n", "V_y = np.linspace(3., 11., 50)\n", "\n", "# Run the simulation, this may take ~ 40 seconds\n", "csds = [generate.calc_2d_csd(phys, V_x, V_y) for phys in phys_params]" ] }, { "cell_type": "code", "execution_count": 6, "id": "e5cb9801", "metadata": {}, "outputs": [ { "data": { "image/png": "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uh/NmDFD6tatK7169bL0PnWZbPny5eXuD79p1qyZ/oEaP6N9+/bpSgLlfUY5OTly5plnxr1HXQZV9/3+ucJZYY0HUYkJxAPYLawxIQrxIDAxwfZhykjJ//zP/8Q++eST2IYNG2Kff/55rEePHrHatWvHdu7cqZ8fMGBA7IEHHih5vXpNpUqVYk888URs1apVugJBdnZ2bPny5b7d42o0fOPGjWP3339/qefM2zd27NjYP/7xj9j69etjX331Vez666+P5ebmxr777ruYX+zfvz/2zTff6Jv66UycOFH/e+PGjfr5P/7xj7GaNWvG3n777diyZctiffr0iTVr1ix2+PDhkmVcdNFFsWeffbbk/uzZs3WVgZkzZ8ZWrlwZu/322/Uytm/f7sk2whtRiAdhiwnEAzgpCjEhTPEgDDGBDoFHrrvuulh+fn4sJycn1qBBA31/3bp1Jc9feOGFsYEDB8a95/XXX4+1atVKv+e0006L/f3vf4/5mfrxqh/F6tWrSz1n3r5hw4bpwKC27dRTT41dfvnlsa+//jrmJx9//LHeHvOteDtUWbGRI0fq9qsfcPfu3Utte5MmTXSgNlI//uJtVyXGvvjiC1e3C96LQjwIW0wgHsBJUYgJYYoHYYgJWeo/9l93AAAAABAEjCEAAAAAIowOAQAAABBhdAgAAACACKNDAAAAAEQYHQIAAAAgwugQAAAAABFGhwAAAACIMDoEAAAAQITRIQgANXfc7bffLieffLJkZWXJt99+a9uyf/WrX8mwYcMk6FavXi316tWT/fv3O76u999/Xzp16iRFRUWOrwsoCzEhOWICooJ4kBzxIDk6BC4YNGiQ9O3bN6MD0JkzZ8rf/vY32bZtm5x++um6YzB37tyk71WvK77l5eXJ+eefLx999JGEzfDhw+V3v/udVK9ePe1ltG/fXu64444yn/vTn/4klStXlt27d8ull14q2dnZ8tprr2XQYkQZMcF5xAQEBfHAecSD5OgQBMD69eslPz9funbtqs+CV6pUydL7Z8yYoTsSn3/+udSuXVuuuOIK+f777yVojh07VubjmzZt0p0lFVQzccstt8js2bPl8OHDZe7DK6+8Uu8/Ra3rmWeeyWh9QLqICf9BTACIB8WIB5mhQ+ADK1askMsuu0yqVasmp556qgwYMECfiS4+8FRnvtVBrzrL37RpU31T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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the results\n", "fig, ax = plt.subplots(2, 3, figsize=(8,5))\n", "ax = ax.flatten()\n", "for i in range(6):\n", " tutorial_helper.plot_csd_data(fig, ax[i], csds[i].sensor[:,:,0], x_y_vals=(csds[i].V_x, csds[i].V_y))\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 }