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