Skip to content

Commit

Permalink
refactor: ♻️ Create generic settings
Browse files Browse the repository at this point in the history
  • Loading branch information
amitjansc committed Apr 7, 2022
1 parent 6980f40 commit c8f6353
Show file tree
Hide file tree
Showing 13 changed files with 76 additions and 32 deletions.
4 changes: 2 additions & 2 deletions src/qililab/instruments/qblox/qblox_pulsar.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

from qililab.instruments.instrument import Instrument
from qililab.settings import SETTINGS_MANAGER
from qililab.settings.instruments.qblox_pulsar_qcm import QbloxPulsarQCMSettings
from qililab.settings.instruments.qblox_pulsar_qrm import QbloxPulsarQRMSettings
from qililab.settings.instruments.qblox.qblox_pulsar_qcm import QbloxPulsarQCMSettings
from qililab.settings.instruments.qblox.qblox_pulsar_qrm import QbloxPulsarQRMSettings


class QbloxPulsar(Instrument):
Expand Down
2 changes: 1 addition & 1 deletion src/qililab/instruments/rohde_schwarz/sgs100a.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from qililab.instruments.signal_generator import SignalGenerator
from qililab.settings import SETTINGS_MANAGER
from qililab.settings.instruments.sgs100a import SGS100ASettings
from qililab.settings.instruments.rohde_schwarz.sgs100a import SGS100ASettings


class SGS100A(SignalGenerator):
Expand Down
6 changes: 3 additions & 3 deletions src/qililab/settings/hashtable.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from dataclasses import dataclass

from qililab.settings.instruments.qblox_pulsar_qcm import QbloxPulsarQCMSettings
from qililab.settings.instruments.qblox_pulsar_qrm import QbloxPulsarQRMSettings
from qililab.settings.instruments.sgs100a import SGS100ASettings
from qililab.settings.instruments.qblox.qblox_pulsar_qcm import QbloxPulsarQCMSettings
from qililab.settings.instruments.qblox.qblox_pulsar_qrm import QbloxPulsarQRMSettings
from qililab.settings.instruments.rohde_schwarz.sgs100a import SGS100ASettings
from qililab.settings.platform import PlatformSettings
from qililab.settings.qubit import QubitCalibrationSettings

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
"""Qblox pulsar QCM settings class"""
from dataclasses import dataclass

from qililab.settings.instruments.qblox_pulsar import QbloxPulsarSettings
from qililab.settings.instruments.qubit_control import QubitControlSettings


@dataclass
class QbloxPulsarQCMSettings(QbloxPulsarSettings):
class QbloxPulsarQCMSettings(QubitControlSettings):
"""Contains the settings of a specific pulsar.
Args:
name (str): Name of the settings.
category (str): Name of the category. Options are "platform", "instrument", "qubit" and "resonator".
location (str): Path to location of settings file.
ip (str): IP address of the instrument.
gain (float): Gain step used by the sequencer.
reference_clock (str): Clock to use for reference. Options are 'internal' or 'external'.
sequencer (int): Index of the sequencer to use.
sync_enabled (bool): Enable synchronization over multiple instruments.
gain (float): Gain step used by the sequencer.
"""

reference_clock: str
sequencer: int
sync_enabled: bool
Original file line number Diff line number Diff line change
@@ -1,36 +1,39 @@
"""Qblox pulsar QRM settings class."""
from dataclasses import dataclass

from qililab.settings.instruments.qblox_pulsar import QbloxPulsarSettings
from qililab.settings.instruments.qubit_readout import QubitReadoutSettings
from qililab.settings.pulse import PulseSettings


@dataclass
class QbloxPulsarQRMSettings(QbloxPulsarSettings):
class QbloxPulsarQRMSettings(QubitReadoutSettings):
"""Contains the settings of a specific pulsar.
Args:
name (str): Name of the settings.
category (str): Name of the category. Options are "platform", "instrument", "qubit" and "resonator".
location (str): Path to location of settings file.
ip (str): IP address of the instrument.
gain (float): Gain step used by the sequencer.
readout_pulse (PulseSettings): Pulse used for readout.
reference_clock (str): Clock to use for reference. Options are 'internal' or 'external'.
sequencer (int): Index of the sequencer to use.
sync_enabled (bool): Enable synchronization over multiple instruments.
gain (float): Gain step used by the sequencer.
acquire_trigger_mode (str): Set scope acquisition trigger mode. Options are 'sequencer' or 'level'.
hardware_average_enabled (bool): Enable/disable hardware averaging of the data.
start_integrate (int): Time (in ns) to start integrating the signal.
integration_length (int): Duration (in ns) of the integration.
mode (str): Integration mode. Options are 'ssb'.
readout_pulse (PulseSettings): Pulse used for readout.
sequence_timeout (int): Time (in minutes) to wait for the sequence to finish.
If timeout is reached a TimeoutError is raised.
acquisition_timeout (int): Time (in minutes) to wait for the acquisition to finish.
If timeout is reached a TimeoutError is raised.
acquisition_name (str): Name of the acquisition saved in the sequencer.
"""

reference_clock: str
sequencer: int
sync_enabled: bool
acquire_trigger_mode: str
hardware_average_enabled: bool
start_integrate: int
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
"""Qblox pulsar settings class"""
"""Qubit control settings class"""
from dataclasses import dataclass

from qililab.settings.instruments.instrument import InstrumentSettings


@dataclass
class QbloxPulsarSettings(InstrumentSettings):
class QubitControlSettings(InstrumentSettings):
"""Contains the settings of a specific pulsar.
Args:
name (str): Name of the settings.
category (str): Name of the category. Options are "platform", "instrument", "qubit" and "resonator".
location (str): Path to location of settings file.
ip (str): IP address of the instrument.
reference_clock (str): Clock to use for reference. Options are 'internal' or 'external'.
sequencer (int): Index of the sequencer to use.
sync_enabled (bool): Enable synchronization over multiple instruments.
gain (float): Gain step used by the sequencer.
"""

reference_clock: str
sequencer: int
sync_enabled: bool
gain: float
22 changes: 22 additions & 0 deletions src/qililab/settings/instruments/qubit_readout.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
"""Qblox pulsar QRM settings class."""
from dataclasses import dataclass

from qililab.settings.instruments.instrument import InstrumentSettings
from qililab.settings.pulse import PulseSettings


@dataclass
class QubitReadoutSettings(InstrumentSettings):
"""Contains the settings of a specific pulsar.
Args:
name (str): Name of the settings.
category (str): Name of the category. Options are "platform", "instrument", "qubit" and "resonator".
location (str): Path to location of settings file.
ip (str): IP address of the instrument.
gain (float): Gain step used by the sequencer.
readout_pulse (PulseSettings): Pulse used for readout.
"""

gain: float
readout_pulse: PulseSettings
Empty file.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
"""Qblox pulsar settings class"""
from dataclasses import dataclass

from qililab.settings.instruments.instrument import InstrumentSettings
from qililab.settings.instruments.signal_generator import SignalGeneratorSettings


@dataclass
class SGS100ASettings(InstrumentSettings):
class SGS100ASettings(SignalGeneratorSettings):
"""Contains the settings of a specific pulsar.
Args:
Expand All @@ -16,6 +16,3 @@ class SGS100ASettings(InstrumentSettings):
power (float): Power of the instrument. Value range is (-120, 25).
frequency (float): Frequency of the instrument. Value range is (1e6, 20e9).
"""

power: float
frequency: float
21 changes: 21 additions & 0 deletions src/qililab/settings/instruments/signal_generator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"""Signal generator settings class"""
from dataclasses import dataclass

from qililab.settings.instruments.instrument import InstrumentSettings


@dataclass
class SignalGeneratorSettings(InstrumentSettings):
"""Contains the settings of a specific signal generator.
Args:
name (str): Name of the settings.
category (str): Name of the category. Options are "platform", "instrument", "qubit" and "resonator".
location (str): Path to location of settings file.
ip (str): IP address of the instrument.
power (float): Power of the instrument. Value range is (-120, 25).
frequency (float): Frequency of the instrument. Value range is (1e6, 20e9).
"""

power: float
frequency: float
9 changes: 6 additions & 3 deletions src/qililab/settings/settings_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,16 @@
import yaml

from qililab.settings.hashtable import SettingsHashTable
from qililab.settings.instruments.qblox_pulsar import QbloxPulsarSettings
from qililab.settings.instruments.sgs100a import SGS100ASettings
from qililab.settings.instruments.qblox.qblox_pulsar_qcm import QbloxPulsarQCMSettings
from qililab.settings.instruments.qblox.qblox_pulsar_qrm import QbloxPulsarQRMSettings
from qililab.settings.instruments.rohde_schwarz.sgs100a import SGS100ASettings
from qililab.settings.platform import PlatformSettings
from qililab.settings.qubit import QubitCalibrationSettings
from qililab.utils.singleton import Singleton

SettingsTypes: TypeAlias = PlatformSettings | QubitCalibrationSettings | QbloxPulsarSettings | SGS100ASettings
SettingsTypes: TypeAlias = (
PlatformSettings | QubitCalibrationSettings | QbloxPulsarQCMSettings | QbloxPulsarQRMSettings | SGS100ASettings
)


@dataclass
Expand Down
6 changes: 3 additions & 3 deletions tests/test_instruments.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from qililab.instruments import SGS100A, QbloxPulsarQCM, QbloxPulsarQRM
from qililab.settings import SETTINGS_MANAGER
from qililab.settings.instruments.qblox_pulsar_qcm import QbloxPulsarQCMSettings
from qililab.settings.instruments.qblox_pulsar_qrm import QbloxPulsarQRMSettings
from qililab.settings.instruments.sgs100a import SGS100ASettings
from qililab.settings.instruments.qblox.qblox_pulsar_qcm import QbloxPulsarQCMSettings
from qililab.settings.instruments.qblox.qblox_pulsar_qrm import QbloxPulsarQRMSettings
from qililab.settings.instruments.rohde_schwarz.sgs100a import SGS100ASettings

SETTINGS_MANAGER.platform_name = "platform_0"

Expand Down

0 comments on commit c8f6353

Please # to comment.