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)
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)
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")
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")