Пример #1
0
 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))