Source code for qailab.circuit.utils
1"""Utility functions for circuits."""
2from collections.abc import Sequence
3from typing import Literal
4
5import numpy as np
6
7from qiskit import QuantumCircuit
8from qiskit.circuit import Parameter
9
10
[docs]
11def param_map(params: Sequence[Parameter], values: Sequence[float] | np.ndarray) -> dict[Parameter, float]:
12 """
13 Map values to params.
14
15 Args:
16 params (Sequence[Parameter]): Circuit parameters.
17 values (Sequence[float]): Values for each parameter.
18
19 Returns:
20 dict[Parameter,float]: Param mapping.
21 """
22 return dict(zip(params, values))
23
24
[docs]
25def filter_params(circuit: QuantumCircuit, param_type: Literal['input', 'weight']) -> Sequence[Parameter]:
26 """
27 Get params of a circuit that match a given type.
28
29 Args:
30 circuit (QuantumCircuit): Parameterized circuit.
31 param_type (Literal['input', 'weight']): Parameter type.
32
33 Returns:
34 Sequence[Parameter]: Parameters of type param_type.
35 """
36 return [p for p in circuit.parameters if p.name.startswith(param_type)]
37
38