Skip to content

Commit 3f73b22

Browse files
authored
Merge pull request #7542 from jenshnielsen/sr86x
Assign sr86x submodules to static attributes
2 parents 965d3f8 + a5f27ef commit 3f73b22

File tree

3 files changed

+47
-19
lines changed

3 files changed

+47
-19
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
The Stanford SR86x drivers now statically assign attributes statically
2+
for more member InstrumentModules and parameters enabling better documentation,
3+
type checking and IDE integration.

src/qcodes/instrument_drivers/stanford_research/SR86x.py

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from qcodes.instrument import (
1010
ChannelList,
11+
ChannelTuple,
1112
InstrumentBaseKWArgs,
1213
InstrumentChannel,
1314
VisaInstrument,
@@ -118,16 +119,14 @@ def __init__(
118119
# Maximum amount of kB that can be read per single CAPTUREGET command
119120
self.max_size_per_reading_in_kb = 64
120121

121-
self.capture_config: Parameter = (
122-
self.add_parameter( # Configure which parameters we want to capture
123-
"capture_config",
124-
label="capture configuration",
125-
get_cmd="CAPTURECFG?",
126-
set_cmd="CAPTURECFG {}",
127-
val_mapping={"X": "0", "X,Y": "1", "R,T": "2", "X,Y,R,T": "3"},
128-
)
122+
self.capture_config: Parameter = self.add_parameter(
123+
"capture_config",
124+
label="capture configuration",
125+
get_cmd="CAPTURECFG?",
126+
set_cmd="CAPTURECFG {}",
127+
val_mapping={"X": "0", "X,Y": "1", "R,T": "2", "X,Y,R,T": "3"},
129128
)
130-
"""Parameter capture_config"""
129+
"""Parameter capture_config configures which parameters we want to capture"""
131130

132131
self.capture_rate_max: Parameter = self.add_parameter(
133132
"capture_rate_max",
@@ -150,12 +149,10 @@ def __init__(
150149
max_rate = self.capture_rate_max()
151150
self.available_frequencies = [max_rate / 2**i for i in range(20)]
152151

153-
self.capture_status: Parameter = (
154-
self.add_parameter( # Are we capturing at the moment?
155-
"capture_status", label="capture status", get_cmd="CAPTURESTAT?"
156-
)
152+
self.capture_status: Parameter = self.add_parameter(
153+
"capture_status", label="capture status", get_cmd="CAPTURESTAT?"
157154
)
158-
"""Parameter capture_status"""
155+
"""Parameter capture_status: Are we capturing at the moment?"""
159156

160157
self.count_capture_bytes: Parameter = self.add_parameter(
161158
"count_capture_bytes",
@@ -187,8 +184,30 @@ def __init__(
187184
then the returned value is simply equal to the current capture length.
188185
"""
189186

190-
for parameter_name in ["X", "Y", "R", "T"]:
191-
self.add_parameter(parameter_name, parameter_class=SR86xBufferReadout)
187+
self.X: SR86xBufferReadout = self.add_parameter(
188+
"X", parameter_class=SR86xBufferReadout
189+
)
190+
"""
191+
X buffer readout.
192+
"""
193+
self.Y: SR86xBufferReadout = self.add_parameter(
194+
"Y", parameter_class=SR86xBufferReadout
195+
)
196+
"""
197+
Y buffer readout.
198+
"""
199+
self.R: SR86xBufferReadout = self.add_parameter(
200+
"R", parameter_class=SR86xBufferReadout
201+
)
202+
"""
203+
R buffer readout.
204+
"""
205+
self.T: SR86xBufferReadout = self.add_parameter(
206+
"T", parameter_class=SR86xBufferReadout
207+
)
208+
"""
209+
T buffer readout.
210+
"""
192211

193212
def snapshot_base(
194213
self,
@@ -1046,6 +1065,7 @@ def __init__(
10461065
"P", label="Phase", get_cmd="OUTP? 3", get_parser=float, unit="deg"
10471066
)
10481067
"""Parameter P"""
1068+
10491069
self.complex_voltage: Parameter = self.add_parameter(
10501070
"complex_voltage",
10511071
label="Voltage",
@@ -1146,7 +1166,10 @@ def __init__(
11461166
data_channels.append(data_channel)
11471167
self.add_submodule(ch_name, data_channel)
11481168

1149-
self.add_submodule("data_channels", data_channels.to_channel_tuple())
1169+
self.data_channels: ChannelTuple[SR86xDataChannel] = self.add_submodule(
1170+
"data_channels", data_channels.to_channel_tuple()
1171+
)
1172+
"""Interface for the SR86x data channels"""
11501173

11511174
# Interface
11521175
self.add_function("reset", call_cmd="*RST")
@@ -1155,7 +1178,8 @@ def __init__(
11551178
self.add_function("enable_front_panel", call_cmd="OVRM 1")
11561179

11571180
buffer = SR86xBuffer(self, f"{self.name}_buffer")
1158-
self.add_submodule("buffer", buffer)
1181+
self.buffer: SR86xBuffer = self.add_submodule("buffer", buffer)
1182+
"""Interface for the SR86x buffer"""
11591183

11601184
self.input_config()
11611185
self.connect_message()

src/qcodes/instrument_drivers/stanford_research/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from .SG384 import SG384
2-
from .SR86x import SR86x, SR86xBuffer
2+
from .SR86x import SR86x, SR86xBuffer, SR86xDataChannel
33
from .SR560 import SR560
44
from .SR830 import SR830
55
from .SR860 import SR860
@@ -15,4 +15,5 @@
1515
"SR865A",
1616
"SR86x",
1717
"SR86xBuffer",
18+
"SR86xDataChannel",
1819
]

0 commit comments

Comments
 (0)