qiskit.pulse.transforms.align_measures¶
-
align_measures
(schedules, inst_map=None, cal_gate='u3', max_calibration_duration=None, align_time=None, align_all=True)[source]¶ Return new schedules where measurements occur at the same physical time.
This transformation will align the first
qiskit.pulse.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
orMeasureChannel
will be shifted. If you wish to keep the relative timing of all instructions in the schedule setalign_all=True
.This method assumes that
MeasureChannel(i)
andAcquireChannel(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 togetherinst_map (
Optional
[InstructionScheduleMap
]) – Mapping of circuit operations to pulse schedulescal_gate (
str
) – The name of the gate to inspect for the calibration timemax_calibration_duration (
Optional
[int
]) – If provided, inst_map and cal_gate will be ignoredalign_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.