Source code for qupulse.hardware.dacs.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, Dict
from collections import deque
from qupulse.hardware.dacs.dac_base import DAC
[docs]
class DummyDAC(DAC):
"""Dummy DAC for automated testing, debugging and usage in examples. """
def __init__(self):
self._measurement_windows = dict()
self._operations = dict()
self.measured_data = deque([])
self._meas_masks = {}
self._armed_program = None
@property
def armed_program(self):
return self._armed_program
[docs]
def register_measurement_windows(self, program_name: str, windows: Dict[str, Tuple['numpy.ndarray',
'numpy.ndarray']]):
self._measurement_windows[program_name] = windows
[docs]
def register_operations(self, program_name: str, operations):
self._operations[program_name] = operations
[docs]
def arm_program(self, program_name: str):
self._armed_program = program_name
[docs]
def delete_program(self, program_name):
if program_name in self._operations:
self._operations.pop(program_name)
if program_name in self._measurement_windows:
self._measurement_windows.pop(program_name)
[docs]
def clear(self) -> None:
self._measurement_windows = dict()
self._operations = dict()
self._armed_program = None
[docs]
def measure_program(self, channels):
return self.measured_data.pop()
[docs]
def set_measurement_mask(self, program_name, mask_name, begins, lengths) -> Tuple['numpy.ndarray', 'numpy.ndarray']:
self._meas_masks.setdefault(program_name, {})[mask_name] = (begins, lengths)
return begins, lengths