def get_measure_schedule() -> CircuitPulseDef: """Create a schedule to measure the qubits queued for measuring.""" measures = set() all_qubits = set() sched = Schedule() for qubit in qubit_mem_slots: measures.add(tuple(schedule_config.meas_map[qubit])) for qubits in measures: all_qubits.update(qubits) unused_mem_slots = set(qubits) - set(qubit_mem_slots.values()) default_sched = inst_map.get('measure', qubits) for time, inst in default_sched.instructions: if isinstance(inst, AcquireInstruction): mem_slots = [] for channel in inst.acquires: if channel.index in qubit_mem_slots.keys(): mem_slots.append( MemorySlot(qubit_mem_slots[channel.index])) else: mem_slots.append(MemorySlot( unused_mem_slots.pop())) new_acquire = AcquireInstruction(command=inst.command, acquires=inst.acquires, mem_slots=mem_slots) sched._union((time, new_acquire)) # Measurement pulses should only be added if its qubit was measured by the user elif inst.channels[0].index in qubit_mem_slots.keys(): sched._union((time, inst)) qubit_mem_slots.clear() return CircuitPulseDef(schedule=sched, qubits=list(all_qubits))