Source code for tket_exts.tket.qsystem.helios

"""QSystem Helios platform extension operations."""

import functools

from hugr.ext import Extension, OpDef, TypeDef
from hugr.ops import ExtOp
from hugr.tys import BoundedNatArg

from .._util import TketExtension, load_extension

__all__ = ["QSystemHeliosExtension"]


[docs] class QSystemHeliosExtension(TketExtension): """Operations for the Helios platform (tket.qsystem.helios)."""
[docs] @functools.cache def __call__(self) -> Extension: return load_extension("tket.qsystem.helios")
[docs] def TYPES(self) -> list[TypeDef]: return []
[docs] def OPS(self) -> list[OpDef]: return [ self.lazy_measure.op_def(), self.lazy_measure_leaked.op_def(), self.lazy_measure_reset.op_def(), self.phasedX.op_def(), self.qFree.op_def(), self.reset.op_def(), self.runtime_barrier_def, self.Rz.op_def(), self.try_QAlloc.op_def(), self.ZZPhase.op_def(), self.future_to_measurement.op_def(), ]
@functools.cached_property def lazy_measure(self) -> ExtOp: """Lazily measure a qubit and lose it (returns a Future).""" return self().get_op("LazyMeasure").instantiate() @functools.cached_property def lazy_measure_leaked(self) -> ExtOp: """Measure a qubit or detect leakage.""" return self().get_op("LazyMeasureLeaked").instantiate() @functools.cached_property def lazy_measure_reset(self) -> ExtOp: """Lazily measure a qubit and reset it to Z |0> (returns a Future).""" return self().get_op("LazyMeasureReset").instantiate() @functools.cached_property def phasedX(self) -> ExtOp: """PhasedX gate with two float parameters.""" return self().get_op("PhasedX").instantiate() @functools.cached_property def qFree(self) -> ExtOp: """Free a qubit (lose track of it).""" return self().get_op("QFree").instantiate() @functools.cached_property def reset(self) -> ExtOp: """Reset a qubit to the Z |0> eigenstate.""" return self().get_op("Reset").instantiate() @functools.cached_property def runtime_barrier_def(self) -> OpDef: """Runtime barrier operation definition.""" return self().get_op("RuntimeBarrier")
[docs] def runtime_barrier(self, size: int) -> ExtOp: """Runtime barrier between operations on argument qubits.""" return self.runtime_barrier_def.instantiate([BoundedNatArg(size)])
@functools.cached_property def Rz(self) -> ExtOp: """Rotate a qubit around the Z axis (not physical).""" return self().get_op("Rz").instantiate() @functools.cached_property def try_QAlloc(self) -> ExtOp: """Try allocate a qubit in Z |0> (returns Option-like result).""" return self().get_op("TryQAlloc").instantiate() @functools.cached_property def ZZPhase(self) -> ExtOp: """Two-qubit ZZ gate with a float angle, specific to the Helios platform.""" return self().get_op("ZZPhase").instantiate() @functools.cached_property def future_to_measurement(self) -> ExtOp: """Convert a Future[bool] to a Measurement.""" return self().get_op("FutureToMeasurement").instantiate()