{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true, "pycharm": { "name": "#%% md\n" } }, "source": [ "# Arithmetic with Pulse Templates\n", "\n", "Pulse templates support some simple arithmetic operations that make it nearly a vector space. It is implemented via\n", "the two classes `ArithmeticPulseTemplate` and `ArithmeticAtomicPulseTemplate`. This notebook demonstrates the direct\n", "and indirect (via invoking operators) usage of these two pulse template classes. We start by defining some building\n", "blocks." ] }, { "cell_type": "code", "execution_count": 1, "outputs": [ { "data": { "text/plain": "
", "image/png": "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\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import math\n", "from qupulse.pulses import TablePT, FunctionPT, RepetitionPT, AtomicMultiChannelPT, plotting\n", "\n", "# define some building blocks\n", "sin_pt = FunctionPT('sin(omega*t)', 't_duration', channel='X')\n", "cos_pt = FunctionPT('sin(omega*t)', 't_duration', channel='Y')\n", "exp_pt = AtomicMultiChannelPT(sin_pt, cos_pt)\n", "tpt = TablePT({'X': [(0, 0), (3., 4.), ('t_duration', 2., 'linear')],\n", " 'Y': [(0, 1.), ('t_y', 5.), ('t_duration', 0., 'linear')]})\n", "\n", "complex_pt = RepetitionPT(tpt, 5) @ exp_pt\n", "\n", "parameters = dict(t_duration=10, omega=math.pi*2/10, t_y=3.4)\n", "_ = plotting.plot(complex_pt, parameters, show=False)" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n", "is_executing": false } } }, { "cell_type": "markdown", "source": [ "### Operations with pulse templates and scalars\n", "Operations between a pulse template and a scalar are implemented via `ArithmeticAtomicPulseTemplate`.\n", "\n", "#### Scale\n", "Given an arbitrary pulse template $P$ and a scalar $\\alpha$ we can scale the amplitude of all channels by multiplying\n", "$P$ with $\\alpha$. Multiplying with $\\alpha^{-1}$ (some people call it dividing by $\\alpha$) is also implemented. " ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 2, "outputs": [ { "data": { "text/plain": "
", "image/png": "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\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from qupulse.expressions import Expression\n", "\n", "scaled = 'alpha' * complex_pt\n", "\n", "# casts alpha implicitly to ExpressionScalar\n", "multiplied = complex_pt * 'x + y'\n", "divided = complex_pt / 4.4\n", "\n", "_ = plotting.plot(scaled, {**parameters, 'alpha': 2}, show=False)" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n", "is_executing": false } } }, { "cell_type": "markdown", "source": [ "#### Offset\n", "You can add and subtract expression like objects to/from arbitrary pulse templates.\n", " " ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 3, "outputs": [], "source": [ "offset_pt = scaled + 'offset * alpha'\n", "\n", "diff_pt = 4 - complex_pt" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n", "is_executing": false } } }, { "cell_type": "markdown", "source": [ "#### Channel specific operands\n", "If you only want to apply an operation to a specific subset of a pulse template's channels you can do this by using a\n", "dictionary as the other operand. Channels not in the dictionary are treated as if the dictionary contains the neutral\n", "element of the operation i.e. 0 for addition and subtraction and 1 for multiplication and division." ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 4, "outputs": [], "source": [ "scaled_x = {'X': 'x_scale'} * complex_pt\n", "scaled_x_y = {'X': 'x_scale', 'Y': 2} * complex_pt\n", "\n", "offset_x = complex_pt + {'X': 2}\n" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n", "is_executing": false } } }, { "cell_type": "markdown", "source": [ "### Adding and subtracting pulse templates\n", "Addition and subtraction of pulse templates returns an atomic pulse template, the `ArithmeticAtomicPulseTemplate`\n", " - Both have the same length\n", " - Both are atomic. Otherwise they are interpreted as atomic.\n", " - Channels defined in only one of the two operands are implicitly defined as 0 in the other" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 5, "outputs": [ { "data": { "text/plain": "
", "image/png": "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\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEGCAYAAABsLkJ6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAcxElEQVR4nO3dfZRU1ZX38e8GGVsyoiIoCCJtAkJDI2IJKq74giMoCCaDGo0mMJMQH5Mx+jiOCisRY8gYNU/Ik3Ec8AXjivElqGGCGo3GGcRk0MZRETDiC5gGVIQJRAUF3fNHVcOl6aquqq5bt+69v89arO566Xt3AX32Ofuce665OyIikj6dog5ARESioQQgIpJSSgAiIimlBCAiklJKACIiKbVX1AGUokePHt6/f/+owxARiZWlS5e+5+49Wz8fqwTQv39/mpqaog5DRCRWzGxNW8+rBCQiklJKACIiKaUEICKSUrGaAxCR5Ni+fTvNzc1s27Yt6lASo66ujr59+9KlS5ei3q8EICKRaG5uZt9996V///6YWdThxJ67s3HjRpqbm6mvry/qZ1QCEpFIbNu2jQMPPFCNf4WYGQceeGBJIyolABGJjBr/yir171MJQEQkpZQAREQCpkyZwvz58yM59+rVqxk6dOhuz23bto1BgwaxbNmync/dcMMNXHTRRR0+nyaBRURqWF1dHbNnz+biiy9m0aJFrFu3jjlz5lRkVwSNAEQkte666y6GDRvGkUceyYUXXrjz+UWLFnH88cdz+OGH7xwNvP/++4wZM4YRI0bQ2NjIggULgGyvffDgwXz9619nyJAhnHbaaWzduhWAk046iSuvvJKRI0cycOBAnn76aQA++eQTrrjiCo455hiGDRvGnDlzCsY5btw4evfuzV133cVll13GzJkzOeCAAzr8+TUCEJHIXfvr5axYt6Wix2w4pBvXnDkk7+vLly9n1qxZPPPMM/To0YNNmzbtfG39+vUsXryYV155hYkTJzJ58mTq6up46KGH6NatG++99x7HHnssEydOBGDVqlXcc8893HrrrZxzzjk88MADXHDBBQDs2LGDZ599lkceeYRrr72WJ554gttvv5399tuP5557jo8++ojRo0dz2mmnFZzEnT17NiNHjmTAgAG7JauOUAIQkVT63e9+x+TJk+nRowcA3bt33/naWWedRadOnWhoaOCdd94Bsuvsp0+fzqJFi+jUqRNr167d+Vp9fT3Dhw8H4Oijj2b16tU7j/XFL35xj+cff/xxXnrppZ2ji82bN7Nq1SoGDhyYN95DDjmEU045hQkTJlTmL4CIE4CZ3QFMAN5196HtvV9EkqlQTz0s7p63x7333nvv9j6Au+++mw0bNrB06VK6dOlC//79d665D76/c+fOO0tAwdc6d+7Mjh07dh7zpz/9KWPHjt3tvMHE0ZZOnTrRqVPlKvdRzwHcCYyLOAYRSaExY8Zw//33s3HjRoDdSkBt2bx5MwcddBBdunThqaeeYs2aNndYLsrYsWO55ZZb2L59OwCvvvoqH3zwQdnHK1ekIwB3X2Rm/aOMQdrQNA+WBZbBNU6GzNTo4hEJwZAhQ5gxYwYnnnginTt35qijjuLOO+/M+/4vf/nLnHnmmWQyGYYPH86gQYPKPvfXvvY1Vq9ezYgRI3B3evbsya9+9auyj1cuaxneRCWXABbmKwGZ2TRgGkC/fv2O7kjWFfZs3NuyZnH262En7P59IUoSUqKVK1cyePDgqMNInLb+Xs1sqbtnWr+35ieB3X0uMBcgk8lEm63iJF9DX0yDftgJuxr0YhPGmsW73qdkIBILNZ8ApATBxjpfQx9s3IuRmdr+e4PnfXvZrp8TkZqmBBB3+Rr9Uhv6jggmiXnjwz+fiFRE1MtA7wFOAnqYWTNwjbvfHmVMsVALjb6IxF7Uq4DOi/L8saJGX0QqTCWgWqZGX0RCFPWFYFLIsvm7JlUPOwEmzIapD2f/qPEXCUWtbQcN0NTUxNChQ/n4448BeP311zn88MPZsqVj+ydpBFBrWq+o6dWYbfBFJLUymQyf//znuemmm5g+fTrf/OY3mTVrFt26devQcTUCqAVN87KrZ+aNh4WX7ir39GrMlnpEJBRx2Q4a4Ac/+AG33XYbN9xwA9u3b+e88zo+haoRQC1oKfX0alR9X9Lp0at2lTsrpVcjnH593pfjth30/vvvz5VXXsnFF1/MihUrKvJXpAQQFZV6RCIVt+2gAR599FEOPvhgVqxYwRFHHNHhvwMlgGrKt6pHpR5JuwI99bDEbTvohQsXsnnzZh577DG+8IUvMHbsWLp27VrCJ96T5gCqSat6RGpGnLaD3rp1K5dffjk333wzjY2NTJo0iVmzZpV9/hYaAYRNpR6RmhSn7aCvu+46zjrrLBoaGgCYOXMmw4cPZ8qUKQwYMKDsOCLfDroUmUzGm5qaog6jNPPG72r4IfkTvC17ASnJSTu0HXQ4ErUddCyp1y8iMaA5gDAEa/2a4BWRGqURQKWo1y9SskIrcaR0pZb0NQKoFPX6RUpSV1fHxo0bS260pG3uzsaNG6mrqyv6ZzQCKFfrWyWq1y9Skr59+9Lc3MyGDRuiDiUx6urq6Nu3b9HvVwIoV3D7BlCvX6REXbp0ob6+PuowUk0JoBSq84tIgmgOoBSq84tIgmgE0B71+kUkoTQCaI96/SKSUBoBtEW9fhFJAY0A2qJev4ikgEYALdTrF5GU0QighXr9IpIy6R4BqNcvIimW7hGAev0ikmKRjgDMbBzwE6AzcJu7h39jUPX6RUSACEcAZtYZuBk4HWgAzjOzhtBPrF6/iAgQ7QhgJPCau78BYGb3ApOAFaGfWb1+EZFIE0Af4E+Bx83AqFDO9OhVu3r9wR08U+gXS95iwQtrK37cScP7cP6ofhU/rojAtb9eDsA1Zw6p6HGjTABt3QZojztDmNk0YBpAv34VaGBSUvbJ19AveXMTAKPqu1fsXEve3MSSNzex4IW1fHfjZgC+N+cPO19XchDpmBXrtoRy3CgTQDNwaOBxX2Bd6ze5+1xgLkAmkynv1kGnhz+3XAuCjX6+hn5UffeKN8iFRhXB5ABKBiK1JMoE8BwwwMzqgbXAl4DzI4wnlvI1+mE09PmcP6rfrvPM2w+A+6Ye12Z8SgYitSOyBODuO8zsW8BjZJeB3uHuy6OKJ05qodEvVjA5KBmIFKf1qHrF+i009O5W8fNEeh2Auz8CPBJlDHERp0Y/n3zJYMX6LTtfFxFY8MLa3Rr9ht7dmDS8T8XPk+6tIGpcEhr9fILJ4NzAhLGIZDX07sZ93zgu1HMoAdSwYC8gCY2+iNQWJYAa07o0Uo1egIikkxJADchX6gmr7icitaetzl/YlABqgEo9IhJsB6rV+VMCiIhKPSLSWrXbASWAKlKpR0RqiRJAFanUIyK1RAkgZCr1iEg+UUz8BqX7lpBV0NLrh/Cu5hOReIq6fdAIIATq9YtIsaJsHzQCCEHUWV1EpBgaAVSIev0iEjdKABUSxUUcIhI/UU/8BikBlCnfft3q9YtIIbXUWVQCKFO19usWkeSplc6iEkAJVOcXkSTRKqASaHWPiCRJuyMAM+sEHAkcAmwFlrv7O2EHVivU6xeRjqqlid+gvAnAzD4LXAmcCqwCNgB1wEAz+xCYA/zM3T+tRqBRqaUJGxGJp1ptRwqNAL4P3AJ8w909+IKZHQScD1wI/Cy88KKhXr+IVFottiN5E4C7n1fgtXeB2aFEVANqNVuLiFRSWauAzKyXu79d6WCipF6/iKRNuctAbwfGVzKQqKnXLyKVVKsTv0FlJQB3T0Tjr16/iIQlDp3KYpaBtnnLKnd/q/LhVFcc/oFEJL5qvVNZzAjgYcABI7sMtB74IzAkxLiqptb/gUREwtJuAnD3xuBjMxsBfKMjJzWzs4GZwGBgpLs3deR4pYhDXU5E4ilu7UvJW0G4+/PAMR0878vAF4FFHTxOybSdg4iEJW7tSzFzAP838LATMILsVcFlc/eVuWN35DBFu/bXy1mxLvuPosleEQlTnNqXYuYA9g18v4PsnMAD4YSzJzObBkwD6NevzfnoksQhK4uIVEMxcwDXlnNgM3sC6NXGSzPcfUGxx3H3ucBcgEwm4+28vU3XnJmI+WoRkYoq90rgabmGOS93P7W8kERE4iNuE79B5d4PoDrFexGRGhe3id+gcq8EntORk5rZF4CfAj2Bh83sBXcf25FjiohEJU4Tv0FFJQAzG0/2wq+6lufc/XvlntTdHwIeKvfnRUSk44pZBvpvQFfgZOA2YDLwbMhxiYjUrDjX/YOKmQM43t2/AvxPbkXQccCh4YYlIlK74lz3DyqmBLQ19/VDMzsE2Eh2PyARkdSKa90/qJgEsNDM9gduBJ4nuzHcraFGJSIioSvmQrDrct8+YGYLgTp33xxuWCIiEra8CcDMTnD3xcHn3P0j4KPc692Afu7+crghiohELykTv0GFRgB/a2Y3AL8BlpLdAK4O+BzZFUGHAZeHHqGISA1I4g2k8iYAd7/MzA4gu+zzbKA32QnhlcCc1qMDEZGkS8LEb1DBOQB3/x+yE76a9BURSZiytoIQEUmDJNb9g8rdDE5EJPGScsFXPhoBiIgUkLS6f1C7IwAz62pm3zGzW3OPB5jZhPBDExGRMBVTAppHdu1/SwpsBr4fWkQiIlIVxZSAPuvu55rZeQDuvtWqdTd3EZEqS/rEb1AxI4CPzWwfsnsAYWafJXc1sIhI0iR94jeomBHANWSvBj7UzO4GRgNTwgxKRCRKSZ74DSpmM7jfmtnzwLFk7wX8bXd/L/TIREQkVMXcEWxE7tv1ua/9zGw/YI277wgtMhGRKklT3T+omBLQvwIjgJfIjgCG5r4/0MwucvfHQ4xPRCR0SdzorRjFJIDVwN+7+3IAM2sArgCuAx4ElABEJPbSUvcPKmYV0KCWxh/A3VcAR7n7G+GFJSIiYStmBPBHM7sFuDf3+FzgVTPbG9geWmQiIiFKa90/qJgRwBTgNeBS4DLgjdxz28neGEZEJHbStN4/n2KWgW4FfpT709r7FY9IRKRK0lj3DypmGegA4J+BBrK3hATA3Q8PMS4REQlZMXMA88heDfxjsiWfqWSXg5bNzG4EzgQ+Bl4Hprr7nztyTBGR9qjuv7ti5gD2cfcnAXP3Ne4+Ezilg+f9LTDU3YcBrwJXd/B4IiLtUt1/d8WMALaZWSdglZl9C1gLHNSRk7a6eOy/yN54XkQkdLGs+z96Vfbr6ddX9LDFjAAuBboClwBHAxcAX6lgDH8HPJrvRTObZmZNZta0YcOGCp5WRCQm3l6W/VNhxYwA+rv7c2RX/EwFMLOzgSWFfsjMngB6tfHSDHdfkHvPDGAHcHe+47j7XGAuQCaT8SLiFRHZSXX//IpJAFcDvyziud24+6mFXjezrwITgDHuroZdREIRy31+mubBsvm7Hr+9DHo1Vvw0eROAmZ0OnAH0MbP/H3ipG9lee9nMbBxwJXCiu3/YkWOJiLQndnX/ZfN3b/R7NUJj5adKC40A1gFLgYm5ry3+QvaK4I74F2Bv4Le5u0v+l7tf1MFjiogkR69GmPpwqKfImwDc/UXgRTP7eaX3/Xf3z1XyeCIiQbGs+wfLPiGVfForVAJaxq77AO/xem4Nv4hIzYll3T9Y9gmp5NNaoRLQhNDPLiISktjV/aEqZZ+gQiWgNS3fm9nBwDG5h8+6+7thByYiUopYln0i1u6FYGZ2DvAscDZwDrDEzHTlrojUlFhu89A0D+aNz/4J4UKv9hRzHcAM4JiWXr+Z9QSeAOYX/CkRkSqLXdkngrp/UDEJoFOrks9GittCQkRE2lPlun9QMQngN2b2GHBP7vG5wCPhhSQiUpxY1v0jWO6ZT7s9eXe/ApgDDAOOBOa6+5VhByYi0p5Y1v1byj4QSdknqNB1AP8C/MLdf+/uDwIPVi8sEZHixK7uD5GWfYIKlYBWAT8ys97AfcA97v5CdcISEWmbyj6Vk7cE5O4/cffjgBOBTcA8M1tpZt81s4FVi1BEJEBln8ppdxI4d0HYD4EfmtlRwB1k7xHcOeTYRETapLJPZbSbAMysCzAO+BIwBvhP4NqQ4xIRibcaLfsEFZoE/hvgPGA82SuB7wWmufsHVYpNRASIad0/4ou8ilFoBDAd+AXwj+6+qUrxiIjsIZa7e0JNln2CCm0Gd3I1AxERKSQWdf8YlH2CirkSWESk6lT2CZ8SgIjUJJV9wqcEICI1S2WfcCkBiEjNUNmnupQARKRmqOxTXUoAIlJTVPapHiUAEYlMsOQDKvtUmxKAiEQmWPKBGG3uBrEt+wQpAYhIVbU10VvzJR9ITNknSPf2FZGqiuV2zlCzWzp3RCQjADO7DpgEfAq8C0xx93VRxCIi1RfrXn/Myz5BUZWAbnT37wCY2SXAd4GLIopFREIWy/X9kJjJ3nwiSQDuviXw8DOARxGHiFRHbNf3Q+J6/UGRTQKb2SzgK8BmIO/Oo2Y2DZgG0K9fv+oEJ+EIDqcDvrtxM8/sczIQg5KAFE2TvbXP3MPpfJvZE0CvNl6a4e4LAu+7Gqhz92vaO2Ymk/GmpqYKRikVN298/l+aNYuzXw87objnW2ucDJmpHY9RquLcOX/YrdwzaXgfzh8Vg05c6//DCfh/Z2ZL3T3T+vnQRgDufmqRb/0F8DDZ+wxL3BWqkR52Qpu/THN//B1Gb32KIYWOu2Zx9k8bI4gk/IImVWx6/a0luOwTFNUqoAHuvir3cCLwShRxSAgyU0tujJ/segZPdj2D+6YWaCjylI/2SAxKBpGK7WRviso+QVHNAVxvZkeQXQa6Bq0AkvbkSyzBX1yNEiIX28nehK/2ySeqVUB/G8V5JYGCiUGjhEgkarI3BWWfIG0FIclRzihByaDD1OuPLyUASb58owQlg7Kp158MSgCSLkoGFaFefzIoAUh6KRmUJLa9/tZS3usPUgIQgfzJoGX3RyWA+Pb6U7rEsxhKACKtBZNBy1Wh88ZnH6dsNJCIXr/KPnkpAYgUEmwsUlIaCjb6S97cBMCo+u7x7/Wr7LMHJQCRQlI4TxAs9Yyq7x6fPXyC1OsvihKASLESnAwSUepRr79kSgAi5UhAMkhEqSdIvf6SKQGIdFRMVxAlotSjXn+HKAGIVFKNryBKXKkneC8J9fpLpgQgEpZCK4haXq9CQkh0qSfPPSakOEoAImEptFNpyHMF+Rp9lXokSAlApBpa71QawsRx4hr9IE3whkIJQCQKFVpFlOhGX73+0CkBiEStiGTwzl+2seCT43my6xm7/WiiG31N8IZOCUCklgSSwZJf/oi/XvUQrN/MkI+XMY0mRm99CoBn9jmZJ7ueEf9Gv625Ecg2+prgDZ0SgEjEgmWcoCVvDgKuZlR9d8Z8+AiTOv+eIfvWwZrF2YSw//PZN3aeDMSokczXy2/5qka/apQARKogXyMPu5dxgnbv3QfW6heaMwiqpYY0X6OvBj9SSgAiFZS/N992I9/yXEllnELLS1vUwpYUavRrnhKASBlKbehDq9W3Xl7aothRQlApjXK+xBOkRr/mKQGIFFAzDX2pihklBBWbJILvh121+7ao0a95SgAixLihL0a+UUJQMUkiSI17IigBSKokuqHviGKShCSOEoAkXr6rZYNS09CLBESaAMzsH4EbgZ7u/l6UsUiyJHqLBJEKiSwBmNmhwN8Ab0UVgySLGn2R0kQ5Avgx8E/AgghjkJhToy9SvkgSgJlNBNa6+4tm1t57pwHTAPr10y+zqNEXqZTQEoCZPQH0auOlGcB04LRijuPuc4G5AJlMxisWoMSKGn2RygstAbj7qW09b2aNQD3Q0vvvCzxvZiPd/e2w4pH4UaMvEq6ql4DcfRlwUMtjM1sNZLQKSECNvkg16ToAqSkLXljLivVbaOjdTY2+SMgiTwDu3j/qGCR6K9Zv4dw5f9jZ+N/3jePa/yER6ZDIE4DIpOF9dn7f0Lvbbo9FJDxKABK580f1U5lHJAKdog5ARESioQQgIpJSSgAiIimlBCAiklJKACIiKaUEICKSUkoAIiIppQQgIpJSSgAiIimlBCAiklJKACIiKaUEICKSUkoAIiIppQQgIpJSSgAiIimlBCAiklLm7lHHUDQz2wCsKfPHewBpu/G8PnM66DOnQ0c+82Hu3rP1k7FKAB1hZk3unok6jmrSZ04HfeZ0COMzqwQkIpJSSgAiIimVpgQwN+oAIqDPnA76zOlQ8c+cmjkAERHZXZpGACIiEqAEICKSUqlIAGY2zsz+aGavmdlVUccTNjM71MyeMrOVZrbczL4ddUzVYGadzey/zWxh1LFUg5ntb2bzzeyV3L/1cVHHFDYzuyz3f/plM7vHzOqijqnSzOwOM3vXzF4OPNfdzH5rZqtyXw+oxLkSnwDMrDNwM3A60ACcZ2YN0UYVuh3A5e4+GDgW+GYKPjPAt4GVUQdRRT8BfuPug4AjSfhnN7M+wCVAxt2HAp2BL0UbVSjuBMa1eu4q4El3HwA8mXvcYYlPAMBI4DV3f8PdPwbuBSZFHFOo3H29uz+f+/4vZBuGPtFGFS4z6wuMB26LOpZqMLNuwOeB2wHc/WN3/3O0UVXFXsA+ZrYX0BVYF3E8Fefui4BNrZ6eBPws9/3PgLMqca40JIA+wJ8Cj5tJeGMYZGb9gaOAJdFGErrZwD8Bn0YdSJUcDmwA5uXKXreZ2WeiDipM7r4WuAl4C1gPbHb3x6ONqmoOdvf1kO3gAQdV4qBpSADWxnOpWPtqZn8NPABc6u5boo4nLGY2AXjX3ZdGHUsV7QWMAG5x96OAD6hQWaBW5erek4B64BDgM2Z2QbRRxVsaEkAzcGjgcV8SOGxszcy6kG3873b3B6OOJ2SjgYlmtppsie8UM/t5tCGFrhlodveWkd18sgkhyU4F3nT3De6+HXgQOD7imKrlHTPrDZD7+m4lDpqGBPAcMMDM6s3sr8hOGv17xDGFysyMbG14pbv/v6jjCZu7X+3ufd29P9l/39+5e6J7hu7+NvAnMzsi99QYYEWEIVXDW8CxZtY19398DAmf+A74d+Crue+/CiyoxEH3qsRBapm77zCzbwGPkV01cIe7L484rLCNBi4ElpnZC7nnprv7IxHGJJX3D8DduY7NG8DUiOMJlbsvMbP5wPNkV7r9NwncEsLM7gFOAnqYWTNwDXA9cL+Z/T3ZRHh2Rc6lrSBERNIpDSUgERFpgxKAiEhKKQGIiKSUEoCISEopAYiIpJQSgKSGmR1oZi/k/rxtZmsDj38f0jmPMrOy9icys3vNbEClYxJpoWWgkkpmNhN4391vCvk8vwS+7+4vlvGzJwIXuPvXKx+ZiEYAIgCY2fu5ryeZ2X+a2f1m9qqZXW9mXzazZ81smZl9Nve+nmb2gJk9l/szuo1j7gsMa2n8zWxmbq/3/zCzN8zsktzznzGzh83sxdw+9+fmDvE0cGpu50uRitN/LJE9HQkMJrsl7xvAbe4+MndjnX8ALiW7F/+P3X2xmfUje6X54FbHyQAvt3puEHAysC/wRzO7heze7+vcfTyAme0H4O6fmtlruXjStNGdVIkSgMienmvZetfMXgdathxeRrbxhuzGZA3ZLWkA6GZm++buv9CiN9ktm4MedvePgI/M7F3g4NxxbzKzHwIL3f3pwPvfJbvzpRKAVJwSgMiePgp8/2ng8afs+p3pBBzn7lsLHGcr0PqWhcFjfwLs5e6vmtnRwBnAP5vZ4+7+vdx76nLHEak4zQGIlOdx4FstD8xseBvvWQl8rr0DmdkhwIfu/nOyNzwJbus8EEj65oUSEY0ARMpzCXCzmb1E9vdoEXBR8A3u/oqZ7ddGaai1RuBGM/sU2A78HwAzOxjY2lKOEqk0LQMVCZGZXQb8xd1LvhYg97Nb3P32ykcmohKQSNhuYfe6fyn+zK4bgYtUnEYAIiIppRGAiEhKKQGIiKSUEoCISEopAYiIpJQSgIhISv0viCncV4mrWdkAAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "_ = plotting.plot(exp_pt + tpt, parameters, show=False)\n", "_ = plotting.plot(exp_pt - tpt, parameters, show=False)\n", "\n", "combined = exp_pt + tpt" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n", "is_executing": false } } }, { "cell_type": "markdown", "source": [ "### Manual creation\n", "For exact control what is needed we can use the classes directly instead of implicitly via the operators" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 6, "outputs": [ { "name": "stderr", "text": [ "C:\\Users\\humpohl\\Documents\\git\\qupulse\\qupulse\\pulses\\arithmetic_pulse_template.py:60: ImplicitAtomicityInArithmeticPT: ArithmeticAtomicPulseTemplate treats all operands as if they are atomic. You can silence this warning by passing `silent_atomic=True` or by ignoring this category.\n", " category=ImplicitAtomicityInArithmeticPT)\n" ], "output_type": "stream" } ], "source": [ "from qupulse.pulses import ArithmeticPT, ArithmeticAtomicPT\n", "\n", "scaled_x = ArithmeticPT({'X': 'x_scale'}, '*', complex_pt, identifier='scaled_x')\n", "\n", "# this raises a warning because complex_pt is treated as atomic\n", "complex_added_1 = ArithmeticAtomicPT(complex_pt, '+', complex_pt)\n", "\n", "# this raises a warning because complex_pt is treated as atomic\n", "complex_added_2 = ArithmeticAtomicPT(complex_pt, '+', complex_pt, silent_atomic=True)" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n", "is_executing": false } } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" }, "pycharm": { "stem_cell": { "cell_type": "raw", "source": [], "metadata": { "collapsed": false } } } }, "nbformat": 4, "nbformat_minor": 0 }