Beispiel #1
0
    def test_build_ansatz_circuit_with_parameter_values(
            self, params_filename_and_number_of_layers):
        # Given
        params_filename, number_of_layers = params_filename_and_number_of_layers

        ansatz_specs = {
            "module_name": "zquantum.core.interfaces.mock_objects",
            "function_name": "MockAnsatz",
            "number_of_layers": number_of_layers,
            "problem_size": 2,
        }

        parameters = load_circuit_template_params(params_filename)
        ansatz = create_object(copy.deepcopy(ansatz_specs))
        expected_circuit = ansatz.get_executable_circuit(parameters)

        # When
        build_ansatz_circuit(ansatz_specs=ansatz_specs, params=params_filename)

        # Then
        try:
            circuit_filename = "circuit.json"
            circuit = load_circuit(circuit_filename)
            assert isinstance(circuit, Circuit)
            assert circuit == expected_circuit
        finally:
            remove_file_if_exists(circuit_filename)
Beispiel #2
0
    def test_build_ansatz_circuit_raises_exception_on_invalid_inputs(self):
        params_filename = "params.json"
        save_circuit_template_params(np.array([1.0]), params_filename)

        ansatz_specs = {
            "module_name": "zquantum.core.interfaces.mock_objects",
            "function_name": "MockAnsatz",
            "number_of_layers": 0,
            "problem_size": 2,
        }

        try:
            circuit_filename = "circuit.json"
            with pytest.raises(Exception):
                build_ansatz_circuit(ansatz_specs=ansatz_specs, params=params_filename)
        finally:
            remove_file_if_exists(params_filename)
            remove_file_if_exists(circuit_filename)
Beispiel #3
0
    def test_build_ansatz_circuit_ansatz_specs_as_string(self):
        # Given
        number_of_layers = 2
        ansatz_specs = {
            "module_name": "zquantum.core.interfaces.mock_objects",
            "function_name": "MockAnsatz",
            "number_of_layers": number_of_layers,
            "problem_size": 2,
        }

        ansatz = create_object(copy.deepcopy(ansatz_specs))
        expected_circuit = ansatz.parametrized_circuit

        # When
        build_ansatz_circuit(ansatz_specs=json.dumps(ansatz_specs))

        # Then
        try:
            circuit_filename = "circuit.json"
            circuit = load_circuit(circuit_filename)
            assert isinstance(circuit, Circuit)
            assert circuit == expected_circuit
        finally:
            remove_file_if_exists(circuit_filename)
Beispiel #4
0
    def test_build_ansatz_circuit_without_parameter_values(
            self, number_of_layers):
        # Given
        ansatz_specs = {
            "module_name": "zquantum.core.interfaces.mock_objects",
            "function_name": "MockAnsatz",
            "number_of_layers": number_of_layers,
            "problem_size": 2,
        }

        ansatz = create_object(copy.deepcopy(ansatz_specs))
        expected_circuit = ansatz.parametrized_circuit

        # When
        build_ansatz_circuit(ansatz_specs=ansatz_specs)

        # Then
        try:
            circuit_filename = "circuit.json"
            with open(circuit_filename) as f:
                circuit = new_circuits.circuit_from_dict(json.load(f))
            assert circuit == expected_circuit
        finally:
            remove_file_if_exists(circuit_filename)