Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
 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)