def dagdependency_to_dag(dagdependency): """Build a ``DAGCircuit`` object from a ``DAGDependency``. Args: dag dependency (DAGDependency): the input dag. Return: DAGCircuit: the DAG representing the input circuit. """ dagcircuit = DAGCircuit() dagcircuit.name = dagdependency.name qregs = list(dagdependency.qregs.values()) cregs = list(dagdependency.cregs.values()) for register in qregs: dagcircuit.add_qreg(register) for register in cregs: dagcircuit.add_creg(register) for node in dagdependency.get_nodes(): # Get arguments for classical control (if any) inst = node.op.copy() inst.condition = node.condition dagcircuit.apply_operation_back(inst, node.qargs, node.cargs, inst.condition) # copy metadata dagcircuit.global_phase = dagdependency.global_phase dagcircuit.calibrations = dagdependency.calibrations return dagcircuit
def circuit_to_dag(circuit): """Build a ``DAGCircuit`` object from a ``QuantumCircuit``. Args: circuit (QuantumCircuit): the input circuit. Return: DAGCircuit: the DAG representing the input circuit. Example: .. jupyter-execute:: from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit from qiskit.dagcircuit import DAGCircuit from qiskit.converters import circuit_to_dag from qiskit.visualization import dag_drawer %matplotlib inline q = QuantumRegister(3, 'q') c = ClassicalRegister(3, 'c') circ = QuantumCircuit(q, c) circ.h(q[0]) circ.cx(q[0], q[1]) circ.measure(q[0], c[0]) circ.rz(0.5, q[1]).c_if(c, 2) dag = circuit_to_dag(circ) dag_drawer(dag) """ dagcircuit = DAGCircuit() dagcircuit.name = circuit.name dagcircuit.global_phase = circuit.global_phase dagcircuit.calibrations = circuit.calibrations dagcircuit.metadata = circuit.metadata dagcircuit.add_qubits(circuit.qubits) dagcircuit.add_clbits(circuit.clbits) for register in circuit.qregs: dagcircuit.add_qreg(register) for register in circuit.cregs: dagcircuit.add_creg(register) for instruction in circuit.data: dagcircuit.apply_operation_back(instruction.operation.copy(), instruction.qubits, instruction.clbits) dagcircuit.duration = circuit.duration dagcircuit.unit = circuit.unit return dagcircuit