Exemple #1
0
    def test_create_symbols_map_with_incorrect_input(self):
        # Given
        symbol_1 = sympy.Symbol("alpha")
        symbols = [symbol_1]
        params = np.array([1, 2])

        # When/Then
        with pytest.raises(ValueError):
            create_symbols_map(symbols, params)
Exemple #2
0
    def test_old_ansatz_based_cost_function_adds_noise_to_parameters(
            self, noisy_ansatz_cost_function_with_ansatz):
        noisy_ansatz_cost_function = noisy_ansatz_cost_function_with_ansatz[0]
        ansatz = noisy_ansatz_cost_function_with_ansatz[1]
        generator = np.random.default_rng(RNGSEED)

        # We expect the below to get added to parameters
        noise = generator.normal(0, 1e-4, 2)

        params = np.array([0.1, 2.3])

        # ansatz based cost function may modify params in place
        # and we need original ones - therefore we pass a copy
        noisy_ansatz_cost_function(np.array(params))

        # We only called our function once, therefore the following should be true
        noisy_ansatz_cost_function.estimation_method.assert_called_once()

        # Here, we make the expected executable circuit with the noisy parameters
        noisy_symbols_map = create_symbols_map(
            ansatz.parametrized_circuit.free_symbols, noise + params)
        expected_noisy_circuit = ansatz.parametrized_circuit.bind(
            noisy_symbols_map)

        assert (noisy_ansatz_cost_function.estimation_method.call_args[0][1]
                [0].circuit == expected_noisy_circuit)
Exemple #3
0
def evaluate_parametrized_circuit(parametrized_circuit: Union[str, Circuit],
                                  parameters: Union[str, np.ndarray]):
    if isinstance(parametrized_circuit, str):
        parametrized_circuit = load_circuit(parametrized_circuit)

    if isinstance(parameters, str):
        parameters = load_circuit_template_params(parameters)

    symbols_map = create_symbols_map(parametrized_circuit.symbolic_params,
                                     parameters)
    evaluated_circuit = parametrized_circuit.evaluate(symbols_map)
    save_circuit(evaluated_circuit, "evaluated-circuit.json")
Exemple #4
0
    def test_create_symbols_map_with_correct_input(self):
        # Given
        symbol_1 = sympy.Symbol("alpha")
        symbol_2 = sympy.Symbol("beta")
        symbols = [symbol_1, symbol_2]
        params = np.array([1, 2])
        target_symbols_map = [(symbol_1, 1), (symbol_2, 2)]

        # When
        symbols_map = create_symbols_map(symbols, params)

        # Then
        assert symbols_map == target_symbols_map
def evaluate_parametrized_circuit(
    parametrized_circuit: Union[str, Circuit],
    parameters: Union[str, np.ndarray],
):
    if isinstance(parametrized_circuit, str):
        parametrized_circuit = load_circuit(parametrized_circuit)

    if isinstance(parameters, str):
        parameters = serialization.load_array(parameters)

    symbols_map = create_symbols_map(parametrized_circuit.symbolic_params,
                                     parameters)
    bound_circuit = parametrized_circuit.bind(symbols_map)
    save_circuit(bound_circuit, "evaluated-circuit.json")