def load(self, slot): """Load the internal simulator representation (statevector, probability, density matrix, clifford table) Works on all qubits, and prevents reordering (like barrier). Args: slot (int): a slot to load from Returns: QuantumCircuit: with attached command Raises: ExtensionError: malformed command """ tuples = [] if isinstance(self, QuantumCircuit): for register in self.regs.values(): if isinstance(register, QuantumRegister): tuples.append(register) if not tuples: raise ExtensionError("no qubits for load") if slot is None: raise ExtensionError("no load slot passed") qubits = [] for tuple_element in tuples: if isinstance(tuple_element, QuantumRegister): for j in range(tuple_element.size): self._check_qubit((tuple_element, j)) qubits.append((tuple_element, j)) else: self._check_qubit(tuple_element) qubits.append(tuple_element) self._check_dups(qubits) return self._attach(Load(slot, qubits, self))
def noise(self, switch): """Turn noise on/off in simulator. Works on all qubits, and prevents reordering (like barrier). Args: switch (int): turn noise on (1) or off (0) Returns: QuantumCircuit: with attached command Raises: ExtensionError: malformed command """ tuples = [] if isinstance(self, QuantumCircuit): for register in self.qregs.values(): tuples.append(register) if not tuples: raise ExtensionError("no qubits for noise") if switch is None: raise ExtensionError("no noise switch passed") qubits = [] for tuple_element in tuples: if isinstance(tuple_element, QuantumRegister): for j in range(tuple_element.size): self._check_qubit((tuple_element, j)) qubits.append((tuple_element, j)) else: self._check_qubit(tuple_element) qubits.append(tuple_element) self._check_dups(qubits) return self._attach(Noise(switch, qubits, self))
def barrier(self, *tuples): """Apply barrier to tuples (reg, idx).""" tuples = list(tuples) if len(tuples) == 0: # TODO: implement this for all single qubit gates if isinstance(self, QuantumCircuit): for register in self.regs.values(): if isinstance(register, QuantumRegister): tuples.append(register) if len(tuples) == 0: raise ExtensionError("no arguments passed") qubits = [] for tuple_element in tuples: if isinstance(tuple_element, QuantumRegister): for j in range(tuple_element.size): self._check_qubit((tuple_element, j)) qubits.append((tuple_element, j)) else: self._check_qubit(tuple_element) qubits.append(tuple_element) self._check_dups(qubits) return self._attach(Barrier(qubits, self))
def __init__(self, param, qubit, circ=None): """Create new reset instruction.""" if len(param) != 3: raise ExtensionError("expected 3 parameters") super(UBase, self).__init__("U", param, [qubit], circ)