qiskit.pulse.transforms.align_measures
align_measures(schedules, inst_map=None, cal_gate='u3', max_calibration_duration=None, align_time=None, align_all=True)
Return new schedules where measurements occur at the same physical time.
This transformation will align the first Acquire
on every channel to occur at the same time.
Minimum measurement wait time (to allow for calibration pulses) is enforced and may be set with max_calibration_duration
.
By default only instructions containing a AcquireChannel
or MeasureChannel
will be shifted. If you wish to keep the relative timing of all instructions in the schedule set align_all=True
.
This method assumes that MeasureChannel(i)
and AcquireChannel(i)
correspond to the same qubit and the acquire/play instructions should be shifted together on these channels.
from qiskit import pulse
from qiskit.pulse import transforms
d0 = pulse.DriveChannel(0)
m0 = pulse.MeasureChannel(0)
a0 = pulse.AcquireChannel(0)
mem0 = pulse.MemorySlot(0)
sched = pulse.Schedule()
sched.append(pulse.Play(pulse.Constant(10, 0.5), d0), inplace=True)
sched.append(pulse.Play(pulse.Constant(10, 1.), m0).shift(sched.duration), inplace=True)
sched.append(pulse.Acquire(20, a0, mem0).shift(sched.duration), inplace=True)
sched_shifted = sched << 20
aligned_sched, aligned_sched_shifted = transforms.align_measures([sched, sched_shifted])
assert aligned_sched == aligned_sched_shifted
If it is desired to only shift acquisition and measurement stimulus instructions set the flag align_all=False
:
aligned_sched, aligned_sched_shifted = transforms.align_measures(
[sched, sched_shifted],
align_all=False,
)
assert aligned_sched != aligned_sched_shifted
Parameters
- schedules (
Iterable
[Union
[Schedule
,Instruction
]]) – Collection of schedules to be aligned together - inst_map (
Optional
[InstructionScheduleMap
]) – Mapping of circuit operations to pulse schedules - cal_gate (
str
) – The name of the gate to inspect for the calibration time - max_calibration_duration (
Optional
[int
]) – If provided, inst_map and cal_gate will be ignored - align_time (
Optional
[int
]) – If provided, this will be used as final align time. - align_all (
Optional
[bool
]) – Shift all instructions in the schedule such that they maintain their relative alignment with the shifted acquisition instruction. IfFalse
only the acquisition and measurement pulse instructions will be shifted.
Return type
List
[Schedule
]
Returns
The input list of schedules transformed to have their measurements aligned.
Raises
PulseError – If the provided alignment time is negative.