qat.model.post_processing module

Post-processing method models for qubit measurement results.

This module defines the post-processing methods available for qubit measurement discrimination. The main interface is the PostProcessMethod union, which is a discriminated union over all supported post-processing method models.

The discriminator field is method, which is present in the base class MethodBase and is used by Pydantic to determine which concrete model to use when parsing or serializing data. Each post-processing method (such as LinearMapToRealMethod or MaxLikelihoodMethod) inherits from MethodBase and sets a unique value for the method field, as defined in the MethodIndicator enum.

Usage in the Qubit model (see device.py):

class Qubit(Component):
    ...
    post_process_method: PostProcessMethod | None = Field(
        discriminator="method", default=None
    )
    ...

Here, the discriminator='method' argument is required for Pydantic to correctly (de)serialize the union type.

Supported methods:

class LinearMapToRealMethod(**data)

Bases: MethodBase

Model for linear mapping post-processing method.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

mean_z_map_args: list[complex]
method: Literal[<MethodIndicator.LINEAR_MAP_COMPLEX_TO_REAL: 'linear_map_complex_to_real'>]
model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'ser_json_inf_nan': 'constants', 'use_enum_values': False, 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class MLStateMap(**data)

Bases: NoExtraFieldsModel

Model representing a mapping from a quantum state to a value and location.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

location: complex
model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'ser_json_inf_nan': 'constants', 'use_enum_values': False, 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

state: str
val: int
class MaxLikelihoodMethod(**data)

Bases: MethodBase

Model for maximum likelihood post-processing method.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

method: Literal[<MethodIndicator.MAX_LIKELIHOOD: 'max_likelihood'>]
model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'ser_json_inf_nan': 'constants', 'use_enum_values': False, 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

noise_est: float
states: list[MLStateMap]
class MethodBase(**data)

Bases: NoExtraFieldsModel

Base class for all post-processing methods. Contains the discriminator field.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

method: MethodIndicator
model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'ser_json_inf_nan': 'constants', 'use_enum_values': False, 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class MethodIndicator(value)

Bases: str, Enum

Enum for discriminating post-processing methods applied to qubit measurement results.

LINEAR_MAP_COMPLEX_TO_REAL = 'linear_map_complex_to_real'
MAX_LIKELIHOOD = 'max_likelihood'