Source code for zhinst.toolkit.driver.modules.precompensation_advisor_module

"""Precompensation Advisor Module."""
import logging
import typing as t
from functools import partial

from zhinst.core import PrecompensationAdvisorModule as TKPrecompensationAdvisorModule
from zhinst.toolkit.nodetree import Node, NodeTree
from zhinst.toolkit.driver.modules.base_module import BaseModule

logger = logging.getLogger(__name__)

if t.TYPE_CHECKING:  # pragma: no cover
    from zhinst.toolkit.session import Session


[docs]class PrecompensationAdvisorModule(Node): """Precompensation Advisor Module. This module provides the functionality available in the LabOne User Interface’s Precompensation Tab. In essence the precompensation allows a pre-distortion or pre-emphasis to be applied to a signal before it leaves the instrument, to compensate for undesired distortions caused by the device under test (DUT). The Precompensation Advisor module simulates the precompensation filters in the device, allowing the user to experiment with different filter settings and filter combinations to obtain an optimal output signal, before using the setup in the actual device. For a complete documentation see the LabOne user manual https://docs.zhinst.com/labone_api_user_manual/modules/precompensation_advisor/index.html Note: Unlike most other LabOne modules, this module does not expose any functions. Each time one or more filter parameters are changed, the module re-runs the simulation and the results can be read via the wave/output, wave/output/forwardwave and wave/output/backwardwave parameters. Args: raw_module: zhinst.core module. session: Session to the Data Server. """ def __init__(self, raw_module: TKPrecompensationAdvisorModule, session: "Session"): self._raw_module = raw_module self._session = session super().__init__(NodeTree(raw_module), tuple()) self.root.update_nodes( { "/device": { "GetParser": partial(BaseModule._get_device, self._session), "SetParser": BaseModule._set_device, } }, raise_for_invalid_node=False, ) def __repr__(self): return str(f"{self._raw_module.__class__.__name__}({repr(self._session)})") @property def raw_module(self) -> TKPrecompensationAdvisorModule: """Underlying core module.""" return self._raw_module