示例#1
0
def test_reset():
    p = Program()
    p.reset(0)
    p.reset()
    assert p.out() == "RESET 0\nRESET\n"

    program = Program()
    qubit = QubitPlaceholder()
    # address_qubits() won't work unless there's a gate besides
    # RESET on a QubitPlaceholder, this is just here to make
    # addressing work
    program += X(qubit)

    program += RESET(qubit)
    program = address_qubits(program)
    assert program.out() == "X 0\nRESET 0\n"
示例#2
0
    def construct_recovery_circuit(self, parameters, index):
        """
        Returns a circuit for recovering the input data after compression,
        i.e. daggered state preparation followed by decoding (daggered training) circuit.
        
        :param parameters: (list) Vector of training circuit parameters
        :param index: (int) Index pointing to corresponding state un-preparation circuit
        :returns: Quantum circuit implementing daggered state preparation
                    followed by daggered training circuit
        :rtype: Program
        """
        recovery_circuit = Program()
        
        if self.reset:
            refresh_qubits = list(self.q_refresh.values())
            for refresh_qubit in refresh_qubits:
                recovery_circuit.reset(refresh_qubit)

        if self.trash_training:
            raise QAutoencoderError("Invalid command for halfway training!")
        
        recovery_circuit.inst(self.training_circuit_dag(parameters))
        recovery_circuit.inst(self.state_prep_circuits_dag[index])
        return recovery_circuit
示例#3
0
def test_reset():
    p = Program()
    p.reset(0)
    p.reset()
    assert p.out() == "RESET 0\nRESET\n"