qiskit/transpiler/passes/remove_diagonal_gates_before_measure.py
def run(self, dag):
        """Return a new circuit that has been optimized."""
        diagonal_1q_gates = (RZGate, ZGate, TGate, SGate, TdgGate, SdgGate, U1Gate)
        diagonal_2q_gates = (CzGate, CrzGate, Cu1Gate, RZZGate)

        nodes_to_remove = set()
        for measure in dag.op_nodes(Measure):
            predecessor = dag.quantum_predecessors(measure)[0]

            if predecessor.type == 'op' and isinstance(predecessor.op, diagonal_1q_gates):
                nodes_to_remove.add(predecessor)

            if predecessor.type == 'op' and isinstance(predecessor.op, diagonal_2q_gates):
                successors = dag.quantum_successors(predecessor)
                if all([s.type == 'op' and isinstance(s.op, Measure) for s in successors]):
                    nodes_to_remove.add(predecessor)

        for node_to_remove in nodes_to_remove:
            dag.remove_op_node(node_to_remove)

        return dag
def run(self, dag):
        """Return a new circuit that has been optimized."""
        diagonal_1q_gates = (RZGate, ZGate, TGate, SGate, TdgGate, SdgGate, U1Gate)
        diagonal_2q_gates = (CzGate, CrzGate, Cu1Gate, RZZGate)

        nodes_to_remove = set()
        for measure in dag.op_nodes(Measure):
            predecessor = dag.quantum_predecessors(measure)[0]

            if predecessor.type == 'op' and isinstance(predecessor.op, diagonal_1q_gates):
                nodes_to_remove.add(predecessor)

            if predecessor.type == 'op' and isinstance(predecessor.op, diagonal_2q_gates):
                successors = dag.quantum_successors(predecessor)
                if all([s.type == 'op' and isinstance(s.op, Measure) for s in successors]):
                    nodes_to_remove.add(predecessor)

        for node_to_remove in nodes_to_remove:
            dag.remove_op_node(node_to_remove)

        return dag
def run ( self , dag ) : diagonal_1q_gates = ( RZGate , ZGate , TGate , SGate , TdgGate , SdgGate , U1Gate ) diagonal_2q_gates = ( CzGate , CrzGate , Cu1Gate , RZZGate ) nodes_to_remove = set ( ) for measure in dag . op_nodes ( Measure ) : predecessor = dag . quantum_predecessors ( measure ) [ 0 ] if predecessor . type == 'op' and isinstance ( predecessor . op , diagonal_1q_gates ) : nodes_to_remove . add ( predecessor ) if predecessor . type == 'op' and isinstance ( predecessor . op , diagonal_2q_gates ) : successors = dag . quantum_successors ( predecessor ) if all ( [ s . type == 'op' and isinstance ( s . op , Measure ) for s in successors ] ) : nodes_to_remove . add ( predecessor ) for node_to_remove in nodes_to_remove : dag . remove_op_node ( node_to_remove ) return dag
Return a new circuit that has been optimized.
Return a new circuit that has been optimized .