From 4fde813370595ab4cb608d44bff32f4acb8caff7 Mon Sep 17 00:00:00 2001 From: James Nelson Date: Tue, 21 Apr 2026 16:21:25 +0100 Subject: [PATCH] update --- docs/use-cases/adiabatic.ipynb | 44 ++++++++++++++++++++++++---------- qse/signal/signal.py | 5 +++- qse/signal/signals.py | 5 +++- qse/vis/signal.py | 16 +++++++++++-- 4 files changed, 53 insertions(+), 17 deletions(-) diff --git a/docs/use-cases/adiabatic.ipynb b/docs/use-cases/adiabatic.ipynb index ef65c9c..b649a50 100644 --- a/docs/use-cases/adiabatic.ipynb +++ b/docs/use-cases/adiabatic.ipynb @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -55,9 +55,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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y5ZZvkSUGeHC6n+8ERDHjRsnb7zxhtx4440h3Tenuuqqq3yP0YOD9yUnJ0e1Cs8//3wxOwbAELrrrrtUFlVf0NUzWLhAPPLII+J2u4fkghzI/R81atRJGYlVVVW+nwXL6fxNON7oAt23b59qpZgJusVxR66PqYbvg3l8AwnZxBMnTpSysjKxGn3McfyRBarh+xkzZohVZWdnq88a3hMGQOpTamqq2oZKUVGRJCUlDVlrJJD7P2/ePDVVAhmJGE+Ajz/+WK01NnnyZAmW0/mbcLwxrqb330zQOj3jjDPk008/9WUGY/FnfP/v//7vYkXo3ke3209+8hOxGnQZIgji+OuAh/FuZIN+W6a3mR04cECNAfoHdTNjC9AiMNhfV1envmIsBxdbyM3NlWHDhsl7772n7h7POussNccLwePxxx+Xu+++W6yw/xdeeKEKdLiYIT0c4yD33XefSuoxY3cixjhwsTr33HPV+BO+v+OOO+Taa69VNx1mhC7b6667TmbPnq2SpJ5++mnVTX799deLFeCzjDlp6PY8dOiQms6BVu3VV18tZg3Q/q1TJL7gc48x46ysLLn99tvl0Ucflby8PBUQMYSBBB+zTF36tr8BG8Zhr7jiChXMcTNyzz33qHMaCWyWEOo0VOofpBvj7eq5ff755+rn77//vjFjxgxj2LBhRnx8vEoXX7FihUp1t8L+w759+4wFCxYYsbGxRkpKinHXXXcZ7e3thhlt3LjRmDt3rprSERMTYxQUFBiPP/640draapjZs88+a2RlZRlRUVFqWsSaNWsMq/jxj39sZGRkqH0fPXq0+r6srMwwK3y2e/vM41zQUyF+9atfGenp6Wr6w/nnn2+UlJQYVvkbmpubjQsvvNBITU01IiMj1bSgm266qdtUJrPjckhERORInAdIRESOxABIRESOxABIRESOxABIRESOxABIRESOxABIRESOxABIRESOxABIRESOxABIZDMvvviiKi031D744ANVxxI1RYmsiAGQyEZaW1tVTUnUyQzGWnCRkZHyxz/+ccj/L6KhwABIZCNvvfWWWkHju9/9blD+Pywd9cwzzwTl/yIKNAZAIhOqqalRFfaxooeGVeexrBGW0DmV119/Xa2Y4O+cc85RKw/4w4oD/usejh8/Xq1M8NOf/lStzoEVF/7617+q/fjRj36knsNipxs2bOj2e/B/4TmsBEBkNQyARCaENQlfeuklefDBB1WAaWxsVEtFYe2+vhYa/eqrr9RyR4Px29/+VrUcN2/eLJdccon6/xAQscTTpk2b1Erf+N4wsCBAFyzrk56eLn//+98H9X8ShRIDIJFJXXzxxXLTTTfJNddcI7fccovEx8fLsmXLTvn6hoYGOXbsmFpTbrD/380336zWp7v//vvVAq1z5syRK6+8Uq28/otf/EKKi4tPWlUe/9/+/fsH9X8ShRIDIJGJPfnkk9LR0SFvvvmmSjbpa3HglpYW9RULIg8Gujg1tOpg2rRpJz1XXV3d7d/FxsZKc3PzoP5PolBiACQyMYytYfVzTDXYt29fn69NTk4Wl8sl9fX13/p7Ozs7T3oOGZ0afs+pnus57aGurk512RJZDQMgkUm1tbWp8bcf//jH8sgjj8i//uu/ntT68ocEmcmTJ8vOnTtP+lnPbss9e/YEbNoFgvTMmTMD8vuIgokBkMik/uM//kON6WGaAcbfMA53ww039Plv5s+frxJhevrLX/4if/7zn1Wweuyxx1SQxLjdwYMHT2sf16xZo7pl582bd1q/hygUGACJTOiLL76Qp59+Wv7whz+oeX1hYWHqMbItX3jhhVP+uxtvvFFWrlypAqc/ZHU+8cQTqoW4atUqef7552XdunXqd56O1157TSXpxMXFndbvIQoFl+Gf00xEloeszVmzZsnSpUt98wBRsgwBNZCOHj0q+fn5aprGhAkTAvq7iYKBLUAim1m+fLmauD7UkJSDliSDH1kVW4BENjdULUAiq2MAJCIiR2IXKBERORIDIBERORIDIBERORIDIBERORIDIBERORIDIBERORIDIBERORIDIBERiRP9/wWHXnN4jPlyAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "delta_initial = -2.0\n", "omega_final = 2.0\n", @@ -69,20 +80,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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14vhGJmmL+PZBvKvSfmXe/v27R3+qZE6dAlBMkQj10aua0PyuvXw8Gh0naV+SmoBGl5nGfJpGDrlGsqblQz7GI5p+BiGY5z99S+vxerqal5nMxk1apR6LUqvm+EmNYJSv2L4nK9ny5BlSQ4dOqSWM7GL942LLremC5o+LzOa5s+fr2Yz3XHHHWr6fMOKefrjzA+ZVik3edm+9tpr6vOjR48ap8/LNVy+fLk+PT1dP3ny5HNOn+/Xr59+8+bN+o0bN6qZJA2nz8vsBpk+/+c//1lNY5bnSaZrOsv0+bvvvlstQfDDDz80mgZbUVHRaBqsTKlfv369mgY7ZMgQdTt7GuyYMWPUFHyZ2hoaGnrOabCPPPKImj3y7rvvOt30+ccff1zNxsvMzFSvV/laZjB+99136n5eZ8toOGuM19l8HnroIfW+Ia/nX375RU2Dl+nvMvPUHq4zg5CVyBoI8sKQ9YRkOr2sbUNN27BhgwpAZ99uvPFG4xT6p556SgUZCZmjRo1S67M0dOrUKRV8/Pz81LTMm2++WQWshmQNossuu0w9RnR0tApYzuJc11dusraQgQTLe+65R031ljelqVOnqrDU0JEjR/Tjx49XazDJm6G8SdbW1v7h+UxOTlav/7i4uEY/wxnccsst+k6dOqnfX97w5fVqCEGC17ltghCvs3nINPbIyEj1epb3Tfn64MGDdnOdXeQ/F9+vRERERGR/WCNERERETotBiIiIiJwWgxARERE5LQYhIiIicloMQkREROS0GISIiIjIaTEIERERkdNiECIiIiKnxSBERDbtpptuwpQpU6z28//85z/j+eefN8tjyeaTnTt3xtatW83yeER08biyNBFZjYuLS7P3P/PMM3jwwQfVhrCyo3Vb27FjB6644gocPXoUfn5+ZnnMd955R21se/YGkkRkHQxCRGQ1ubm5xs+//PJLPP3002pnagMJH+YKIBfitttug7u7O95//32zPebp06cRERGB1NRU9OnTx2yPS0QXhkNjRGQ1EggMt8DAQNVD1LBNQtDZQ2MjRozA/fffjwceeADt27dHeHg4/v3vf6O8vBw333wz/P390a1bN6xevbrRz9q1axfGjx+vHlO+R4a8CgoKmjy3+vp6LFq0CFdddVWjdhnakqGyW265Rf2sjh074sMPP2w0/HXfffchMjIS3t7e6NSpE+bNm2e8X8750ksvxYIFC8x0FYnoYjAIEZHd+eSTTxASEoItW7aoUHT33Xdj5syZGDp0qOppGTNmjAo6FRUV6viioiI1xNWvXz9Vn7NmzRrk5eXh6quvbvJnpKeno7i4GAMGDPjDfa+++qpq3759O+655x718w09WW+99RZWrFiBhQsXqrbPPvtMhaeGBg0ahJ9//tns14WIWo9BiIjsTlJSEp588kl0794dc+bMUT0vEoxuv/121SZDbKdOnVJhxlCXIyFIenLi4+PV5x999BE2bNiA/fv3n/NnSF2Qm5sbwsLC/nDfhAkTVACSnqfHHntM/Wx5LHHs2DF1DpdddpnqDZKP1157baPvj4qKUo9PRNbHIEREdicxMdH4uYSVDh06ICEhwdgmQ18iPz/fWPQsQcVQcyQ3CUTi0KFD5/wZlZWV8PLyOmdBd8OfbxjOM/wsGcpLS0tDz5498Ze//AXffffdH77fx8fH2FtFRNblbuWfT0TUah4eHo2+ljDSsM0QXnQ6nfpYVlaman1efPHFPzyW1PKci/TySFiRmh9PT8/z/nzDz0pJSUFmZqaqUVq7dq0afhs9erSqNzIoLCxEaGgon3kiG8AgREQOT8LJ4sWLVa2OzAJrieTkZPVxz549xs9bKiAgALNmzVK3GTNmYNy4cSr8BAcHGwu3ZXiOiKyPQ2NE5PDuvfdeFUSkVuf3339Xw2HffvutmmUms8PORXpsJEBt3LixVT/rtddewxdffIF9+/ap+qOvvvpKDZ01XAdJCqWloJuIrI9BiIgcnhQn//LLLyr0SACReiKZfi/hxNXVtdl1hGTWV2vIlPqXXnpJzSobOHAgjhw5glWrVhl/zqZNm9RsNOkpIiLr44KKRERNkIJpKXqWxR6HDBliluskw2Uy6+2JJ57gdSeyAewRIiJqgszu+vTTT5tdeLE1pPBaeqNk2xAisg3sESIiIiKnxR4hIiIicloMQkREROS0GISIiIjIaTEIERERkdNiECIiIiKnxSBERERETotBiIiIiJwWgxARERE5LQYhIiIigrP6/7fIttE/u+DiAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "duration = 5000 # ns\n", - "amplitude = qse.Signal(np.linspace(0, omega_final, duration))\n", - "detuning = qse.Signal(np.linspace(delta_initial, 0, duration))\n", - "\n", - "plt.plot(amplitude.values, label=\"Amplitude\")\n", - "plt.plot(detuning.values, label=\"Detuning\")\n", - "plt.xlabel(\"Time (ns)\")\n", - "plt.ylabel(\"Signal (rad/µs)\")\n", + "amplitude = qse.Signal(np.linspace(0, omega_final, duration), name=\"Amplitude\")\n", + "detuning = qse.Signal(np.linspace(delta_initial, 0, duration), name=\"Detuning\")\n", + "fig = qse.vis.draw_signal([amplitude, detuning], \"ns\", \"rad/µs\")\n", "plt.axhline(y=0, ls=\"--\", c=\"k\")\n", - "plt.legend()\n", + "\n", "plt.show()" ] }, diff --git a/qse/signal/signal.py b/qse/signal/signal.py index 3432661..f4a0182 100644 --- a/qse/signal/signal.py +++ b/qse/signal/signal.py @@ -18,6 +18,8 @@ class Signal: duration : int Duration of the signal. Defaults to the length of the passed values. + name : str, optional + The name of the signal. Examples -------- @@ -55,9 +57,10 @@ class Signal: """ - def __init__(self, values, duration=None) -> None: + def __init__(self, values, duration=None, name=None) -> None: self.values = np.asarray(values, dtype=float) self.duration = len(self.values) if duration is None else int(duration) + self.name = name def __iter__(self): """ diff --git a/qse/signal/signals.py b/qse/signal/signals.py index 082afad..5c0fe18 100644 --- a/qse/signal/signals.py +++ b/qse/signal/signals.py @@ -15,6 +15,8 @@ class Signals: ---------- signals : list[qse.Signal], optional The signals. + name : str, optional + The name of the signal. Examples -------- @@ -36,13 +38,14 @@ class Signals: As shown above, one can also create Signals by adding two signals. """ - def __init__(self, signals=None): + def __init__(self, signals=None, name=None): if signals is None: signals = [] else: if not isinstance(signals, list) or not isinstance(signals[0], Signal): raise Exception("signals must be a list of Signal objects.") self._signals = signals + self.name = name def __add__(self, other): if isinstance(other, Signal): diff --git a/qse/vis/signal.py b/qse/vis/signal.py index 617213f..c41701b 100644 --- a/qse/vis/signal.py +++ b/qse/vis/signal.py @@ -7,6 +7,9 @@ def draw_signal(signal, time_units=None, signal_units=None, title=None): Parameters ---------- + signal : qse.Signal | qse.Signals | list[qse.Signal] | list[qse.Signals] + The signal to be drawn. To view a single signal pass a qse.Signal or qse.Signals object. + To view multiple signals pass a list of qse.Signal or qse.Signals objects. time_units : str, optional The units of the duration. signal_units : str, optional @@ -15,10 +18,19 @@ def draw_signal(signal, time_units=None, signal_units=None, title=None): A title for the plot. """ fig = plt.figure() - y = signal.expand() - plt.plot(y) + + if not isinstance(signal, list): + signal = [signal] + + for s in signal: + plt.plot(s.expand(), label=s.name) + plt.xlabel(f"Time ({time_units})" if time_units is not None else "Time") plt.ylabel(f"Signal ({signal_units})" if signal_units is not None else "Signal") + + if len([s.name for s in signal if s.name]) > 0: + plt.legend() + if title: plt.title(title) return fig