modules.applications.qml.qleet.analyzers.expressibility.Expressibility

class Expressibility(circuit: CircuitDescriptor, noise_model: NoiseModel | None = None, samples: int = 1000)

Bases: MetaExplorer

Calculates expressibility of a parameterized quantum circuit

__init__(circuit: CircuitDescriptor, noise_model: NoiseModel | None = None, samples: int = 1000)

Constructor the the Expressibility analyzer

Parameters:
  • circuit -- input circuit as a CircuitDescriptor object

  • noise_model -- (dict, NoiseModel) initialization noise-model dictionary

  • samples -- number of samples for the experiment

Raises:

ValueError -- If circuit and noise model does not correspond to same framework

Methods

__init__(circuit[, noise_model, samples])

Constructor the the Expressibility analyzer

compare_expressibility(circuit[, measure, shots])

Compares expressibility against the provided circuit

expressibility([measure, shots])

Returns expressibility for the circuit

gen_params()

Generate parameters for the calculation of expressibility

kl_divergence(prob_a, prob_b)

Returns KL divergence between two probabilities

plot([figsize, dpi])

Returns plot for expressibility visualization

prob_haar()

Returns probability density function of fidelities for Haar Random States

prob_pqc([shots])

Return probability density function of fidelities for PQC

compare_expressibility(circuit: CircuitDescriptor | List[CircuitDescriptor], measure: str = 'kld', shots: int = 1024) List[float]

Compares expressibility against the provided circuit

Expr = D_{KL}(\hat{P}_{PQC_1}(F; \theta) | \hat{P}_{PQC_2}(F; \theta))\\
Expr = D_{\sqrt{JSD}}(\hat{P}_{PQC_1}(F; \theta) | \hat{P}_{PQC_2}(F; \theta))

Parameters:
  • measure -- specification for the measure used in the expressibility calculation

  • shots -- number of shots for circuit execution

Returns pqc_expressibility:

float, expressibility value

Raises:

ValueError -- if invalid measure is specified

expressibility(measure: str = 'kld', shots: int = 1024) float

Returns expressibility for the circuit

Expr = D_{KL}(\hat{P}_{PQC}(F; \theta) | P_{Haar}(F))\\
Expr = D_{\sqrt{JSD}}(\hat{P}_{PQC}(F; \theta) | P_{Haar}(F))

Parameters:
  • measure -- specification for the measure used in the expressibility calculation

  • shots -- number of shots for circuit execution

Returns pqc_expressibility:

float, expressibility value

Raises:

ValueError -- if invalid measure is specified

gen_params() Tuple[List, List]

Generate parameters for the calculation of expressibility

Returns theta (np.array):

first list of parameters for the parameterized quantum circuit

Returns phi (np.array):

second list of parameters for the parameterized quantum circuit

static kl_divergence(prob_a: ndarray, prob_b: ndarray) float

Returns KL divergence between two probabilities

plot(figsize=(6, 4), dpi=300, **kwargs)

Returns plot for expressibility visualization

prob_haar() ndarray

Returns probability density function of fidelities for Haar Random States

prob_pqc(shots: int = 1024) ndarray

Return probability density function of fidelities for PQC

Parameters:

shots -- number of shots for circuit execution

Returns fidelities (np.array):

np.array of fidelities