Source code for semi_cr.core.quam_components.helpers
# %%
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from semi_cr.core.lab.devices.multiplexer import Multiplexer
from semi_cr.core.quam_components.multi_input_channel import MultiInputChannel
from quam.components.channels import SingleChannel
[docs]
def get_trigger_component(device: Multiplexer) -> SingleChannel:
matches = [
component
for component in device.quam_state.quam_components
if isinstance(component, SingleChannel)
and component.id == "trigger"
]
if len(matches) != 1:
raise ValueError(
f"Expected exactly one trigger component, got {len(matches)}."
)
return matches[0]
[docs]
def get_mux_components(device: Multiplexer) -> tuple[MultiInputChannel, ...]:
components = tuple(
component
for component in device.quam_state.quam_components
if isinstance(component, MultiInputChannel)
)
if not components:
raise ValueError("No multiplexer QUAM components found.")
return components