Gyanateet Dutta
Fix Space loading: direct Streamlit, lazy imports, ReNova page, fix deps
9f8cf99
Raw
History Blame Contribute Delete
1.34 kB
"""Typed interfaces and containers for detector-event decoders."""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Mapping, Protocol, runtime_checkable
import numpy as np
from numpy.typing import NDArray
BoolArray = NDArray[np.bool_]
@dataclass(frozen=True)
class DecoderMetadata:
"""Metadata needed by decoders to map detector events to logical predictions."""
num_observables: int
detector_error_model: Any | None = None
circuit: Any | None = None
seed: int | None = None
extra: Mapping[str, Any] = field(default_factory=dict)
@dataclass(frozen=True)
class DecoderInput:
"""Container for batched detector events and accompanying metadata."""
detector_events: BoolArray
metadata: DecoderMetadata
@dataclass(frozen=True)
class DecoderOutput:
"""Container for batched predicted logical observables."""
logical_predictions: BoolArray
decoder_name: str
diagnostics: Mapping[str, Any] = field(default_factory=dict)
@runtime_checkable
class DecoderProtocol(Protocol):
"""Common protocol implemented by all decoder adapters."""
name: str
def decode(self, detector_events: BoolArray, metadata: DecoderMetadata) -> DecoderOutput:
"""Decode detector events into predicted logical observables."""
...