Source code for qupulse.hardware.awgs.dummy

# SPDX-FileCopyrightText: 2014-2024 Quantum Technology Group and Chair of Software Engineering, RWTH Aachen University
#
# SPDX-License-Identifier: LGPL-3.0-or-later

from typing import Tuple, Set

from .base import AWG, ProgramOverwriteException

[docs] class DummyAWG(AWG): def __init__(self, sample_rate: float=10, output_range: Tuple[float, float]=(-5, 5), num_channels: int=1, num_markers: int=1) -> None: """Dummy AWG for automated testing, debugging and usage in examples. Args: sample_rate (float): The sample rate of the dummy. (default = 10) output_range (float, float): A (min,max)-tuple of possible output values. (default = (-5,5)). """ super().__init__(identifier="DummyAWG{0}".format(id(self))) self._programs = {} # contains program names and programs self._sample_rate = sample_rate self._output_range = output_range self._num_channels = num_channels self._num_markers = num_markers self._channels = ('default',) self._armed = None
[docs] def set_volatile_parameters(self, program_name: str, parameters): raise NotImplementedError()
[docs] def upload(self, name, program, channels, markers, voltage_transformation, force=False) -> None: if name in self.programs: if not force: raise ProgramOverwriteException(name) else: self.remove(name) self.upload(name, program, channels, markers, voltage_transformation) else: self._programs[name] = (program, channels, markers, voltage_transformation)
[docs] def remove(self, name) -> None: if name in self.programs: self._programs.pop(name)
[docs] def clear(self) -> None: self._programs = {}
[docs] def arm(self, name: str) -> None: self._armed = name
@property def programs(self) -> Set[str]: return set(self._programs.keys()) @property def output_range(self) -> Tuple[float, float]: return self._output_range @property def identifier(self) -> str: return "DummyAWG{0}".format(id(self)) @property def sample_rate(self) -> float: return self._sample_rate @property def num_channels(self): return self._num_channels @property def num_markers(self): return self._num_markers