def get_isa(self, oneq_type='Xhalves', twoq_type='CZ') -> ISA:
        """
        Construct an ISA suitable for targeting by compilation.

        This will raise an exception if the requested ISA is not supported by the device.

        :param oneq_type: The family of one-qubit gates to target
        :param twoq_type: The family of two-qubit gates to target
        """
        qubits = [Qubit(id=q.id, type=oneq_type, dead=q.dead) for q in self._isa.qubits]
        edges = [Edge(targets=e.targets, type=twoq_type, dead=e.dead) for e in self._isa.edges]
        return ISA(qubits, edges)