|
43 | 43 | }, |
44 | 44 | "source": [ |
45 | 45 | "### Loading pulse backend\n", |
46 | | - "To run OpenPulse experiment, at first we need to load a backend object of your quantum computing system with `open_pulse = True` in the configuration. `PulseChannelSpec` class creates a system configuration from backend. You can extract all information from the instanse to create pulse schedule object.\n", |
| 46 | + "To run an OpenPulse experiment, at first we need to load a backend object of your quantum computing system with `open_pulse = True` in the configuration. The `PulseChannelSpec` class creates a system configuration from backend. You can extract all information from the instance to create pulse schedule objects.\n", |
47 | 47 | "\n", |
48 | 48 | "- `system.drives` : Returns a list of drive channels.\n", |
49 | 49 | "- `system.controls` : Returns a list of control channels.\n", |
|
52 | 52 | "- `system.registers` : Returns a list of registers.\n", |
53 | 53 | "- `system.memoryslots` : Returns a list of memory slots.\n", |
54 | 54 | "\n", |
55 | | - "Mapping between these channels and qubits is automatically created in the `PulseChannelSpec` instanse.\n", |
| 55 | + "Mapping between these channels and qubits is automatically created in the `PulseChannelSpec` instance.\n", |
56 | 56 | "\n", |
57 | 57 | "- `system.qubits` : Returns a list of qubit object.\n", |
58 | 58 | "\n", |
|
113 | 113 | } |
114 | 114 | }, |
115 | 115 | "source": [ |
116 | | - "User defined pulse can be created by using `pulse.function` decorator. A python function which returns an `array_like` object can be used to create user defined pulses. The first argument of the function should be `duration` specifing number of data points. You are also able to get standard pulse templates from `pulse_lib`, and able to find calibrated pulses provided by backend via `CmdDef`. In this notebook, we use a Gaussian pulse template from `pulse_lib.gaussian` and default measurement pulses from `CmdDef`." |
| 116 | + "User defined pulses can be created by using the `pulse.function` decorator. A python function which returns an `array_like` object can be used to create user defined pulses. The first argument of the function should be `duration` specifying the number of data points. You are also able to get standard with pulse templates from `pulse_lib`, and able to find calibrated pulses provided by backend via `CmdDef`. In this notebook, we use a Gaussian pulse template from `pulse_lib.gaussian` and default measurement pulses from `CmdDef`." |
117 | 117 | ] |
118 | 118 | }, |
119 | 119 | { |
|
172 | 172 | } |
173 | 173 | }, |
174 | 174 | "source": [ |
175 | | - "In this experiment, we apply Rabi drive pulse to qubit0 and measure a signal from the qubit by changing the amplitude of the pulse (`drive_amps`) from 0 to 0.05. Returned signal is integrated and averaged over 512 shot. A `boxcar` kernel is used to process measurement data (**note**: currently the hardware overrides this specification, to be implemented in future versions). The result is stored in `memory_slot[0]`." |
| 175 | + "In this experiment, we apply a Rabi drive pulse to qubit0 and measure a signal from the qubit by changing the amplitude of the pulse (`drive_amps`) from 0 to 0.05. The returned signal is integrated and averaged over 512 shot. A `boxcar` kernel is used to process measurement data (**note**: currently the hardware overrides this specification, to be implemented in future versions). The result is stored in `memory_slot[0]`." |
176 | 176 | ] |
177 | 177 | }, |
178 | 178 | { |
|
209 | 209 | } |
210 | 210 | }, |
211 | 211 | "source": [ |
212 | | - "Pulses commands are registered to `Schedule`s with information of `channel` and `start_time`. The chanel information is provided by `PulseChannelSpec`. You can create your `Schedule` by using syntax sugers: \n", |
| 212 | + "Pulse commands are registered to `Schedule`s with information of `channel` and `start_time`. The channel information is provided by `PulseChannelSpec`. You can create your `Schedule` by using syntax sugar: \n", |
213 | 213 | "\n", |
214 | 214 | "- `|` (`union`): combine two `Schedule`s in parallel.\n", |
215 | 215 | "- `+` (`append`): add a `Schedule` right after a `Schedule` to be appended.\n", |
216 | 216 | "- `<<` (`shift`): shift `start_time` of `Schedule`.\n", |
217 | 217 | "\n", |
218 | | - "All details are available in [Pulse Schedules](https://github.com/Qiskit/qiskit-tutorials/blob/master/qiskit/advanced/terra/pulse_schedules.ipynb).\n", |
| 218 | + "All details are available in [Pulse Schedules](../terra/5_pulse_schedules.ipynb).\n", |
219 | 219 | "Created `Schedule`s can be combined into a single job." |
220 | 220 | ] |
221 | 221 | }, |
|
248 | 248 | "cell_type": "markdown", |
249 | 249 | "metadata": {}, |
250 | 250 | "source": [ |
251 | | - "We may plot any of the experiment schedules with" |
| 251 | + "We may plot any of the experiment schedules with:" |
252 | 252 | ] |
253 | 253 | }, |
254 | 254 | { |
|
299 | 299 | "cell_type": "markdown", |
300 | 300 | "metadata": {}, |
301 | 301 | "source": [ |
302 | | - "After building our rabi experiment QObj we now submit it to the backend to be run." |
| 302 | + "After building our rabi experiment Qobj we now submit it to the backend to be run." |
303 | 303 | ] |
304 | 304 | }, |
305 | 305 | { |
|
317 | 317 | "cell_type": "markdown", |
318 | 318 | "metadata": {}, |
319 | 319 | "source": [ |
320 | | - "We receive a job object for our experiment which we may use to monitor and get the results of the experiment." |
| 320 | + "We receive a job object for our experiment which we may be used to monitor and get the results of the experiment." |
321 | 321 | ] |
322 | 322 | }, |
323 | 323 | { |
|
364 | 364 | "cell_type": "markdown", |
365 | 365 | "metadata": {}, |
366 | 366 | "source": [ |
367 | | - "We now ask for the result from the quantum computing system, which will block until completition (or timeout)." |
| 367 | + "We now ask for the result from the quantum computing system, which will block until completion (or timeout)." |
368 | 368 | ] |
369 | 369 | }, |
370 | 370 | { |
|
400 | 400 | } |
401 | 401 | }, |
402 | 402 | "source": [ |
403 | | - "The result for our experiment is stored in `memory_slot[qubit]`. The returned data are the integreted values of the received and mixed down stimulus signal applied to the measured resonator averaged over all shots. Looking at the signal amplitude, we will observe an ocillation of the signal as a function of the drive amplitude. This is known as a Rabi oscillation and correspond to the qubit being peridiocally driven to its excited state. This is how we control our qubits." |
| 403 | + "The result for our experiment is stored in `memory_slot[qubit]`. The returned data are the integrated values of the received and mixed down stimulus signal applied to the measured resonator averaged over all shots. Looking at the signal amplitude, we will observe an oscillation of the signal as a function of the drive amplitude. This is known as a Rabi oscillation and correspond to the qubit being periodically driven to its excited state. This is how we control our qubits." |
404 | 404 | ] |
405 | 405 | }, |
406 | 406 | { |
|
489 | 489 | "cell_type": "markdown", |
490 | 490 | "metadata": {}, |
491 | 491 | "source": [ |
492 | | - "From the fit we obtain the Rabi oscillation frequency. We may use this to extract the amplitude of a π pulse. This is the required amplitude to drive the qubit from the ground state ($|0>$) to the excited state ($|1>$)." |
| 492 | + "From the fit we obtain the Rabi oscillation frequency. We may use this to extract the amplitude of a $\\pi$ pulse. This is the required amplitude to drive the qubit from the ground state ($|0\\rangle$) to the excited state ($|1\\rangle$)." |
493 | 493 | ] |
494 | 494 | }, |
495 | 495 | { |
|
503 | 503 | "cell_type": "markdown", |
504 | 504 | "metadata": {}, |
505 | 505 | "source": [ |
506 | | - "In this experiment, we observe a change of measured signals depending on a quantum state of qubit0. By setting `drive_amp` to `pi_amp` we previously obtained, we can apply $\\pi$-pulse to the qubit0. To observe a distribution on the IQ plane, we set `meas_return` to `single` ." |
| 506 | + "In this experiment, we observe a change of measured signals depending on a quantum state of qubit0. By setting `drive_amp` to `pi_amp` we previously obtained, we can apply a $\\pi$-pulse to the qubit0. To observe a distribution on the IQ plane, we set `meas_return` to `single` ." |
507 | 507 | ] |
508 | 508 | }, |
509 | 509 | { |
|
680 | 680 | "cell_type": "markdown", |
681 | 681 | "metadata": {}, |
682 | 682 | "source": [ |
683 | | - "Previous experiment is performed without specifying drive frequencies of qubit0. In this case, default drive frequencies from the backend configuration are automatically assigned. These values are calibrated to correspond with the qubit resonanse frequencies. In this experiment, we also change a drive frequencie of qubit0 and see what happens." |
| 683 | + "Previous experiment is performed without specifying drive frequencies of qubit0. In this case, default drive frequencies from the backend configuration are automatically assigned. These values are calibrated to correspond with the qubit resonance frequencies. In this experiment, we also change a drive frequency of qubit0 and see what happens." |
684 | 684 | ] |
685 | 685 | }, |
686 | 686 | { |
|
790 | 790 | "cell_type": "markdown", |
791 | 791 | "metadata": {}, |
792 | 792 | "source": [ |
793 | | - "As in the same manner as the previous experiment, we calculate signal amplitude for each experiment. The result provides a 2 dimensional array of signal amplitude with respect to drive amplitude and frequency. This is called qubit chevron pattern and we can see the change of Rabi rate that comes with the detuning of drive frequency.\n", |
| 793 | + "In the same manner as the previous experiment, we calculate the signal amplitude for each experiment. The result provides a 2 dimensional array of signal amplitudes with respect to drive amplitude and frequency. This is called qubit chevron pattern and we can see the change of Rabi rate that comes with the detuning of drive frequency.\n", |
794 | 794 | "\n", |
795 | 795 | "## Warning: this sends a lot of jobs" |
796 | 796 | ] |
|
0 commit comments