Gyanateet Dutta
Fix Space loading: direct Streamlit, lazy imports, ReNova page, fix deps
9f8cf99
Raw
History Blame Contribute Delete
1.24 kB
"""NISQ protocol scaffolding for future superconducting or NISQ flows."""
from __future__ import annotations
from dataclasses import replace
from surface_code_in_stem.rl_control.envs.base import EnvBuildContext
from surface_code_in_stem.protocols.base import ProtocolContract, QuantumProtocol
class NISQProtocol:
"""Experimental NISQ protocol contract."""
contract = ProtocolContract(
name="nisq",
family="noise_aware",
description="Pluggable contract for NISQ-oriented execution flows.",
capabilities=["nqubits", "crosstalk", "noise_models"],
)
def supports(self, context: EnvBuildContext) -> bool:
# Keep parity-agnostic for future adapters.
return context.distance >= 2 and context.rounds >= 1
def normalize_context(self, context: EnvBuildContext) -> EnvBuildContext:
# NISQ workflows often benefit from slightly deeper rounds.
normalized_rounds = max(context.rounds, 2)
return replace(context, rounds=normalized_rounds)
def validate_context(self, context: EnvBuildContext) -> None:
self.contract.validate_context(context)
if context.distance <= 1:
raise ValueError("NISQ protocol requires distance > 1.")