Write a Pulse Schedule Transformation that reduces all pulse channels to a single Waveform
See original GitHub issueWhat is the expected enhancement?
As noted in this Slack conversation there is a desire to be able to reduce all PulseChannel
s in a Schedule
/ScheduleBlock
into a single waveform. This means compressing all Play/ShiftPhase/SetPhase/ShiftFrequency/SetFrequency
instructions into a single Waveform
and also recursively unrolling internally Call
s.
It should be noted that there is likely relevant routines in the plotter which does similar transformations.
This could be added as a new transform
module here.
Issue Analytics
- State:
- Created 2 years ago
- Comments:9 (4 by maintainers)
Top Results From Across the Web
qiskit.pulse.channels
Qiskit-Pulse is a pulse-level quantum programming kit. This lower level of programming offers the user more control than programming with QuantumCircuit s.
Read more >The benefits of high-resolution pulses for quantum computers
Shorter samples, i.e. higher resolution, allow users to create more versatile pulse shapes. Figure 1: (a) The control pulses are generated by ...
Read more >programming quantum computers through the cloud with pulses
A scheduler compiles a circuit program to a pulse program, as depicted in figure 1. Scheduling requires system dependent information, most ...
Read more >Chapter 5 Signal Encoding Techniques
Discrete, discontinuous voltage pulses; Each pulse is a signal element; Binary data encoded into signal elements. Terms (1). Unipolar. All signal elements ...
Read more >MATLAB stft - Short-time Fourier transform - MathWorks
The short-time Fourier transform is invertible. · The istft function inverts the STFT of a signal. · Under a specific set of circumstances...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
This is what the plotter calls https://github.com/Qiskit/qiskit-terra/blob/75e06dc915f764ea4e5c1a57097e980e9d01b119/qiskit/pulse/transforms/base_transforms.py#L25-L28 (flattening
Call
and other high-level transformations are done by this pass)The
target_qobj_transform
is called here https://github.com/Qiskit/qiskit-terra/blob/75e06dc915f764ea4e5c1a57097e980e9d01b119/qiskit/visualization/pulse_v2/core.py#L254Actually,
ShiftFrequency
andSetFrequency
do affect the waveform. Indeed, a waveform needs to get phase factor(exp(i f_d t))
associated with its frame to be played. The frame is rotating at the frequencyf
which is defined by thebackend.defaults().qubit_freq_est
, otherwise updated by theSetFrequency
andShiftFrequency
. This phase factor is usually computed by the backend control electronics (either by a software or hardware), but the pulse plotter is missing to emulate this behavior. I guess @taalexander needs this option also on the front end.Usually we don’t need to compute the frame on front end, however, if we need a custom frame such as qudit, we need to compute it. This is the relevant WIP PR: #5977. Apart from this, such frame computation might be necessary for the pulse simulator (it usually uses a rotating frame Hamiltonian to avoid fine dt step, and waveform in the lab frame is not necessary), or necessary for pulse plotter to understand how the waveform look like on the actual hardware.
Here, you need to add multiple transform passes that
ParametricPulse
s intoWaveform
Then you can create new transform that generates low-level waveform data.
Hi @1ucian0, sorry I got busy with some other stuff and haven’t been working on this. I unassigned myself and please feel free to assign this issue to others.