Пример #1
0
    def test_add_ancilla_register_to_circuit_python_object(
            self, number_of_ancilla_qubits):
        # Given
        number_of_qubits = 4
        number_of_gates = 10
        circuit = new_circuits.create_random_circuit(
            number_of_qubits,
            number_of_gates,
            rng=np.random.default_rng(RNDSEED),
        )
        expected_extended_cirucit = new_circuits.add_ancilla_register(
            copy.deepcopy(circuit), number_of_ancilla_qubits)
        expected_extended_circuit_filename = "extended-circuit.json"

        # When
        circuit = add_ancilla_register_to_circuit(number_of_ancilla_qubits,
                                                  circuit)

        # Then
        try:
            with open(expected_extended_circuit_filename) as f:
                extended_circuit = new_circuits.circuit_from_dict(json.load(f))
            assert (extended_circuit.n_qubits == number_of_qubits +
                    number_of_ancilla_qubits)
            assert extended_circuit == expected_extended_cirucit
        finally:
            remove_file_if_exists(expected_extended_circuit_filename)
Пример #2
0
    def test_create_random_circuit(self, number_of_qubits, number_of_gates,
                                   seed):
        # Given
        expected_filename = "circuit.json"
        expected_circuit = new_circuits.create_random_circuit(
            number_of_qubits,
            number_of_gates,
            rng=np.random.default_rng(seed),
        )

        # When
        create_random_circuit(
            number_of_qubits=number_of_qubits,
            number_of_gates=number_of_gates,
            seed=seed,
        )

        # Then
        try:
            with open(expected_filename) as f:
                circuit = new_circuits.circuit_from_dict(json.load(f))
            if seed is not None:
                assert circuit.operations == expected_circuit.operations
            else:
                assert circuit.operations != expected_circuit.operations
        finally:
            remove_file_if_exists(expected_filename)
Пример #3
0
def create_random_circuit(number_of_qubits: int,
                          number_of_gates: int,
                          seed: Optional[int] = None):
    rng = np.random.default_rng(seed)
    circuit = circuits.create_random_circuit(number_of_qubits,
                                             number_of_gates,
                                             rng=rng)
    save_circuit(circuit, "circuit.json")
Пример #4
0
 def input_circuit_set(self, request):
     number_of_qubits = 4
     number_of_gates = 10
     rng = np.random.default_rng(RNDSEED + 100)
     return [
         new_circuits.create_random_circuit(number_of_qubits,
                                            number_of_gates,
                                            rng=rng)
         for _ in range(request.param)
     ]
Пример #5
0
 def circuit_set(self, number_of_circuits):
     number_of_qubits = 4
     number_of_gates = 10
     circuit_set = [
         new_circuits.create_random_circuit(
             number_of_qubits,
             number_of_gates,
             rng=np.random.default_rng(RNDSEED))
         for _ in range(number_of_circuits)
     ]
     return circuit_set
Пример #6
0
    def circuit_filename_and_number_of_ancilla_qubits(
            self, number_of_ancilla_qubits):
        number_of_qubits = 4
        number_of_gates = 10
        circuit = new_circuits.create_random_circuit(
            number_of_qubits,
            number_of_gates,
            rng=np.random.default_rng(RNDSEED),
        )
        circuit_filename = "circuit.json"
        with open(circuit_filename, "w") as f:
            json.dump(new_circuits.to_dict(circuit), f)

        yield circuit_filename, number_of_ancilla_qubits

        remove_file_if_exists(circuit_filename)