nsqdriver 0.2.6__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nsqdriver might be problematic. Click here for more details.
- nsqdriver/NS_MCI.py +17 -1
- nsqdriver/NS_QSYNC.py +20 -1
- nsqdriver/__init__.py +3 -2
- nsqdriver/compiler/__init__.py +0 -0
- nsqdriver/compiler/ns_wave.py +483 -0
- nsqdriver/compiler/py_wave_asm.py +538 -0
- nsqdriver/wrapper/BD_NSMCI.py +310 -0
- {nsqdriver-0.2.6.dist-info → nsqdriver-0.3.0.dist-info}/METADATA +2 -4
- nsqdriver-0.3.0.dist-info/RECORD +17 -0
- nsqdriver-0.2.6.dist-info/RECORD +0 -13
- {nsqdriver-0.2.6.dist-info → nsqdriver-0.3.0.dist-info}/WHEEL +0 -0
- {nsqdriver-0.2.6.dist-info → nsqdriver-0.3.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import time
|
|
2
|
+
from typing import Dict, Any, List
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
|
|
6
|
+
from nsqdriver import MCIDriver, QSYNCDriver
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
import Instrument
|
|
11
|
+
except ImportError as e:
|
|
12
|
+
class Instrument(object):
|
|
13
|
+
...
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class NSInstrument(Instrument):
|
|
17
|
+
""" Instrument for GuoDun devices """
|
|
18
|
+
ParameterMC = {
|
|
19
|
+
'OUTSrate': 8e9, # 配置OUT通道采样率
|
|
20
|
+
'OUTMix': 2, # 设置OUT通道增强第二奈奎斯特区信号
|
|
21
|
+
'INZone': 'zone3' # 设置IN通道输入为Zone4,即要IN通道要采集的信号范围为6~8G
|
|
22
|
+
}
|
|
23
|
+
ParameterZ = {
|
|
24
|
+
'OUTSrate': 2e9, # 配置OUT通道采样率
|
|
25
|
+
'OUTMix': 1, # 设置OUT通道增强第一奈奎斯特区信号
|
|
26
|
+
'KeepAmp': 2 # 开启Z通道的保持电平模式,2为保持drive信号电平
|
|
27
|
+
}
|
|
28
|
+
ParameterQSYNC = {
|
|
29
|
+
'RefClock': 'in' # MC112的100M参考信号来源,机箱上的100M IN没有接的情况下,选择为in,反之选out
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
def __init__(self):
|
|
33
|
+
""" Initialization """
|
|
34
|
+
super(NSInstrument, self).__init__()
|
|
35
|
+
|
|
36
|
+
# 设备驱动
|
|
37
|
+
self.driver_mc: MCIDriver = MCIDriver('192.168.111.152')
|
|
38
|
+
self.driver_z: MCIDriver = MCIDriver('192.168.111.132')
|
|
39
|
+
self.qsync: QSYNCDriver = QSYNCDriver('192.168.111.152')
|
|
40
|
+
|
|
41
|
+
# 参数
|
|
42
|
+
self.waves = dict()
|
|
43
|
+
self.roFreq = dict()
|
|
44
|
+
self.roQubits = dict()
|
|
45
|
+
self.roLength = dict()
|
|
46
|
+
self.roDADelay = dict()
|
|
47
|
+
self.zpdc = dict()
|
|
48
|
+
self.group = dict()
|
|
49
|
+
self.roLines = dict()
|
|
50
|
+
self.connectDict = dict()
|
|
51
|
+
self.deviceDict = dict()
|
|
52
|
+
self.qubitROChannels = dict()
|
|
53
|
+
self.integrationDelay = dict()
|
|
54
|
+
self.inputRange = dict()
|
|
55
|
+
self.outputRange = dict()
|
|
56
|
+
self.devices = {
|
|
57
|
+
'awg': self.driver_mc,
|
|
58
|
+
'dc': self.driver_z,
|
|
59
|
+
'qa': self.driver_mc,
|
|
60
|
+
} # type: Dict[str, Any]
|
|
61
|
+
self.shots = 1000
|
|
62
|
+
self.devicesList = {
|
|
63
|
+
'awg': [],
|
|
64
|
+
'dc': [],
|
|
65
|
+
'qa': []
|
|
66
|
+
} # type: Dict[str, Any]
|
|
67
|
+
|
|
68
|
+
def connectDevices(self, *args, **kwargs):
|
|
69
|
+
""" Connect and initialize devices """
|
|
70
|
+
if 'devices' not in kwargs.keys():
|
|
71
|
+
raise ValueError('Parameter `devices` does not exist in connectDevices().')
|
|
72
|
+
if 'connect' not in kwargs.keys():
|
|
73
|
+
raise ValueError('Parameter `connect` does not exist in connectDevices().')
|
|
74
|
+
if 'roLines' not in kwargs.keys():
|
|
75
|
+
raise ValueError('Parameter `roLines` does not exist in connectDevices().')
|
|
76
|
+
|
|
77
|
+
self.roLines = kwargs['roLines']
|
|
78
|
+
"""
|
|
79
|
+
The readout line dict. Example:
|
|
80
|
+
{"r1":["q01","q02","q03","q04","q05"], "r2": ["q06","q07","q08","q09","q10"], ...}
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
self.deviceDict = kwargs['devices']
|
|
84
|
+
"""
|
|
85
|
+
The dict for all devices. Example:
|
|
86
|
+
{
|
|
87
|
+
"XY":["mc_1", ...],
|
|
88
|
+
"Z":["z_1", ...],
|
|
89
|
+
"ZDC":["z_1", ...],
|
|
90
|
+
"RO":["out01", "out09", ...],
|
|
91
|
+
"QA":["in01", "in09", ...]
|
|
92
|
+
}
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
self.connectDict = kwargs['connect']
|
|
96
|
+
"""
|
|
97
|
+
The mapping between device channels and logical channels. Example:
|
|
98
|
+
{
|
|
99
|
+
"QA": {"r1QA": ["in01", "range(20)"], "r2QA": ["in09", "range(20)"], ...},
|
|
100
|
+
"RO": {"r1RO": ["out01", "range(20)"], "r2RO": ["out09", "range(20)"], ...},
|
|
101
|
+
"RO_qubits": {"q01RO": "r1RO", "q02RO": "r1RO", "q03RO": "r1RO", ...},
|
|
102
|
+
"RO_trig": {"r1RO": "AWG5M1", "r2RO": "AWG5M1", ...},
|
|
103
|
+
"XY": {"q03XY": ["mc_1", "out03"], "q04XY": ["mc_1", "out04"], ...},
|
|
104
|
+
"Z": {"q03Z": ["z_1", "out01"], "q04Z": ["z_1", "out02"]}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
# Parse readout channels
|
|
110
|
+
for _line, _qubits in self.roLines.items():
|
|
111
|
+
ro_channels = [i for i in eval(self.connectDict['RO'][f'{_line}RO'][1])]
|
|
112
|
+
if len(ro_channels) != len(_qubits):
|
|
113
|
+
raise RuntimeError(f'Qubit number in {_line} does not equal to '
|
|
114
|
+
f'the number of channels ({ro_channels}).')
|
|
115
|
+
for _q, _c in zip(self.roLines[_line], ro_channels):
|
|
116
|
+
self.qubitROChannels[f'{_q}RO'] = _c
|
|
117
|
+
|
|
118
|
+
# Connect device
|
|
119
|
+
# 在kw参数中寻找系统初始化相关参数
|
|
120
|
+
qs_sp = self.ParameterQSYNC.copy()
|
|
121
|
+
qs_sp.update(kwargs.get('qs_param', {}))
|
|
122
|
+
mc_sp = self.ParameterMC.copy()
|
|
123
|
+
mc_sp.update(kwargs.get('mc_param', {}))
|
|
124
|
+
z_sp = self.ParameterZ.copy()
|
|
125
|
+
z_sp.update(kwargs.get('z_param', {}))
|
|
126
|
+
|
|
127
|
+
self.qsync.open(system_parameter=qs_sp)
|
|
128
|
+
self.driver_mc.open(system_parameter=mc_sp)
|
|
129
|
+
self.driver_z.open(system_parameter=z_sp)
|
|
130
|
+
self.qsync.sync_system()
|
|
131
|
+
|
|
132
|
+
def _rline2chnl(self, rline):
|
|
133
|
+
return int(self.connectDict['QA'][f'{rline}QA'][0][-2:])
|
|
134
|
+
|
|
135
|
+
def _xy2chnl(self, _key):
|
|
136
|
+
return int(self.connectDict['XY'][_key][1][-2:])
|
|
137
|
+
|
|
138
|
+
def _z2chnl(self, _key):
|
|
139
|
+
return int(self.connectDict['Z'][_key][1][-2:])
|
|
140
|
+
|
|
141
|
+
def _qubit2rline(self, qubit):
|
|
142
|
+
return self.connectDict['RO_qubits'][f'{qubit}RO'][:2]
|
|
143
|
+
|
|
144
|
+
def disconnectDevices(self, *args, **kwargs):
|
|
145
|
+
""" Initialize devices """
|
|
146
|
+
...
|
|
147
|
+
|
|
148
|
+
# def expendBatchChannels(self):
|
|
149
|
+
|
|
150
|
+
def stopOutput(self, *args, **kwargs):
|
|
151
|
+
""" Stop the output of waveforms """
|
|
152
|
+
self.qsync.set('ResetTrig')
|
|
153
|
+
|
|
154
|
+
def startOutput(self, *args, **kwargs):
|
|
155
|
+
""" Stop the output of waveforms """
|
|
156
|
+
self.qsync.set('GenerateTrig')
|
|
157
|
+
|
|
158
|
+
def uploadWaveforms(self, *args, **kwargs):
|
|
159
|
+
""" Upload waveforms """
|
|
160
|
+
if 'waves' not in kwargs.keys():
|
|
161
|
+
raise ValueError('Parameter `waves` does not exist in uploadWaveforms().')
|
|
162
|
+
if 'zpdc' not in kwargs.keys():
|
|
163
|
+
raise ValueError('Parameter `zpdc` does not exist in uploadWaveforms().')
|
|
164
|
+
|
|
165
|
+
self.setINDemod(**kwargs)
|
|
166
|
+
self.setRODADelay(**kwargs)
|
|
167
|
+
self.zpdc = kwargs['zpdc']
|
|
168
|
+
|
|
169
|
+
waves = kwargs['waves']
|
|
170
|
+
waves_map = {}
|
|
171
|
+
for _key, _wave in waves.items():
|
|
172
|
+
_devChannel = None
|
|
173
|
+
if _key in self.connectDict['XY'].keys():
|
|
174
|
+
_devChannel = self._xy2chnl(_key)
|
|
175
|
+
self.driver_mc.set('Waveform', _wave, _devChannel)
|
|
176
|
+
elif _key in self.connectDict['Z'].keys():
|
|
177
|
+
_devChannel = self._z2chnl(_key)
|
|
178
|
+
self.driver_mc.set('Waveform', _wave, _devChannel)
|
|
179
|
+
elif _key in self.qubitROChannels.keys():
|
|
180
|
+
_devChannel = self._qubit2rline(_key)
|
|
181
|
+
wave_list = waves_map.get(_devChannel, [])
|
|
182
|
+
wave_list.append(_wave)
|
|
183
|
+
if _devChannel is None:
|
|
184
|
+
raise RuntimeError(f'Channel {_key} does not found.')
|
|
185
|
+
print(_key, _devChannel, len(_wave))
|
|
186
|
+
|
|
187
|
+
# 合并下发probe da波形
|
|
188
|
+
for _line, wave_list in waves_map.items():
|
|
189
|
+
max_points = max(_w.size() for _w in wave_list)
|
|
190
|
+
wave_array = np.zeros((len(self.roLines[_line]), max_points))
|
|
191
|
+
for idx, _w in enumerate(wave_list):
|
|
192
|
+
wave_array[idx][:_w.size()] = _w
|
|
193
|
+
self.driver_mc.set('Waveform', wave_array.mean(axis=0), self._rline2chnl(_line))
|
|
194
|
+
|
|
195
|
+
# import matplotlib.pyplot as plt
|
|
196
|
+
# for _key, _seq in self.waves.items():
|
|
197
|
+
# plt.plot(_seq, label=_key)
|
|
198
|
+
# plt.legend()
|
|
199
|
+
# plt.show()
|
|
200
|
+
|
|
201
|
+
def downloadIQ(self, *args, **kwargs):
|
|
202
|
+
""" Download IQ data """
|
|
203
|
+
self.setIntegrationDelay(**kwargs)
|
|
204
|
+
self.startOutput()
|
|
205
|
+
st_time = time.time()
|
|
206
|
+
roChannels = {}
|
|
207
|
+
print('self.roQubits', self.roQubits)
|
|
208
|
+
for _r in self.roQubits.keys():
|
|
209
|
+
roChannels[_r] = [self.qubitROChannels[f'{_q}RO'] for _q in self.roQubits[_r]]
|
|
210
|
+
print('roChannels', roChannels)
|
|
211
|
+
full = {
|
|
212
|
+
_r: self.driver_mc.get('IQ', channel=self._rline2chnl(_r))
|
|
213
|
+
for _r in self.roQubits.keys()
|
|
214
|
+
}
|
|
215
|
+
print('get iq data timing:', time.time() - st_time)
|
|
216
|
+
|
|
217
|
+
iqDict = dict()
|
|
218
|
+
for qubit, iqData in zip(self.roQubits.values(), full.values()):
|
|
219
|
+
for _q in qubit:
|
|
220
|
+
iqDict[_q] = iqData[self.qubitROChannels[f'{_q}RO']]
|
|
221
|
+
return iqDict
|
|
222
|
+
|
|
223
|
+
def setINDemod(self, *args, **kwargs):
|
|
224
|
+
"""!
|
|
225
|
+
配置MC设备的解模系数
|
|
226
|
+
@param args:
|
|
227
|
+
@param kwargs:
|
|
228
|
+
@return:
|
|
229
|
+
"""
|
|
230
|
+
if 'roQubits' not in kwargs.keys():
|
|
231
|
+
raise ValueError('Parameter `roQubits` does not exist in uploadWaveforms().')
|
|
232
|
+
if 'roLength' not in kwargs.keys():
|
|
233
|
+
raise ValueError('Parameter `roLength` does not exist in uploadWaveforms().')
|
|
234
|
+
if 'roFreq' not in kwargs.keys():
|
|
235
|
+
raise ValueError('Parameter `roFreq` does not exist in uploadWaveforms().')
|
|
236
|
+
self.roQubits = kwargs['roQubits']
|
|
237
|
+
self.roLength = {_line: [length / 1e9 for length in lengths] for _line, lengths in kwargs['roLength'].items()}
|
|
238
|
+
self.roFreq = {_line: [freq / 1e9 for freq in freqs] for _line, freqs in kwargs['roFreq'].items()}
|
|
239
|
+
|
|
240
|
+
for _line, qubits in self.roQubits.items():
|
|
241
|
+
freqs = {_q: 1e9 for _q in self.roLines[_line]}
|
|
242
|
+
lengths = {_q: 512e-9 for _q in self.roLines[_line]}
|
|
243
|
+
for _q, _freq, _len in zip(qubits, self.roFreq[_line], self.roLength[_line]):
|
|
244
|
+
freqs[_q] = _freq
|
|
245
|
+
lengths[_q] = _len
|
|
246
|
+
print(f'The configured demodulation frequency point is ({freqs})')
|
|
247
|
+
self.driver_mc.set('TimeWidth', list(lengths.values()), self._rline2chnl(_line))
|
|
248
|
+
self.driver_mc.set('FreqList', max(freqs.values()), self._rline2chnl(_line))
|
|
249
|
+
|
|
250
|
+
def setRODADelay(self, *args, **kwargs):
|
|
251
|
+
"""!
|
|
252
|
+
配置probe da相对触发的延迟
|
|
253
|
+
配置粒度为16ns的整倍数
|
|
254
|
+
@param args:
|
|
255
|
+
@param kwargs:
|
|
256
|
+
@return:
|
|
257
|
+
"""
|
|
258
|
+
if 'roDADelay' in kwargs.keys():
|
|
259
|
+
for _line, delay in kwargs['roDADelay'].items():
|
|
260
|
+
self.roDADelay[_line] = delay/1e9
|
|
261
|
+
self.driver_mc.set('OUTDelay', self.roDADelay[_line], self._rline2chnl(_line))
|
|
262
|
+
else:
|
|
263
|
+
raise ValueError('Parameter `roDADelay` does not exist in uploadWaveforms().')
|
|
264
|
+
|
|
265
|
+
def setShots(self, *args, **kwargs):
|
|
266
|
+
""" Set shots """
|
|
267
|
+
if 'shots' not in kwargs.keys():
|
|
268
|
+
raise ValueError('Parameter `shots` does not exist in setShots().')
|
|
269
|
+
shots = kwargs['shots']
|
|
270
|
+
self.shots = shots
|
|
271
|
+
self.qsync.set('Shot', shots)
|
|
272
|
+
self.driver_mc.set('Shot', shots)
|
|
273
|
+
print("set shots:", shots)
|
|
274
|
+
|
|
275
|
+
def setHoldoffTime(self, *args, **kwargs):
|
|
276
|
+
""" Set hold-off time """
|
|
277
|
+
if 'interval' not in kwargs.keys():
|
|
278
|
+
raise ValueError('Parameter `interval` does not exist in setHoldoffTime().')
|
|
279
|
+
interval = kwargs['interval']
|
|
280
|
+
self.qsync.set('TrigPeriod', interval / 1e9) # 单位:s
|
|
281
|
+
|
|
282
|
+
def setLO(self, *args, **kwargs):
|
|
283
|
+
""" Set LO """
|
|
284
|
+
...
|
|
285
|
+
|
|
286
|
+
def setIntegrationDelay(self, *args, **kwargs):
|
|
287
|
+
""" Set readout integration delay. """
|
|
288
|
+
if 'integrationDelay' in kwargs.keys():
|
|
289
|
+
for _channel, delay in kwargs['integrationDelay'].items():
|
|
290
|
+
self.integrationDelay[_channel] = delay
|
|
291
|
+
self.driver_mc.set('INDelay', delay / 1e9, self._rline2chnl(_channel))
|
|
292
|
+
else:
|
|
293
|
+
raise ValueError('Parameter `integrationDelay` does not exist in setIntegrationDelay().')
|
|
294
|
+
|
|
295
|
+
def setInputRange(self, *args, **kwargs):
|
|
296
|
+
""" Set input range for output channels """
|
|
297
|
+
if 'inputRange' in kwargs.keys():
|
|
298
|
+
for _channel, _value in kwargs['inputRange'].items():
|
|
299
|
+
devChannel = self.connectDict['QA'][_channel][1]
|
|
300
|
+
self.inputRange[devChannel] = _value
|
|
301
|
+
else:
|
|
302
|
+
raise ValueError('Parameter `inputRange` does not exist in setInputRange().')
|
|
303
|
+
|
|
304
|
+
def setOutputRange(self, *args, **kwargs):
|
|
305
|
+
""" Set output range for output channels """
|
|
306
|
+
if 'outputRange' in kwargs.keys():
|
|
307
|
+
for _channel, delay in kwargs['outputRange'].items():
|
|
308
|
+
self.outputRange[_channel] = delay
|
|
309
|
+
else:
|
|
310
|
+
raise ValueError('Parameter `outputRange` does not exist in setOutputRange().')
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nsqdriver
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Naishu Q series quantum measurement and control equipment driver interface
|
|
5
5
|
Home-page: https://g2hoyqcmh4.feishu.cn/wiki/wikcnzvyMd82DLZUe2NsI6HxsFc
|
|
6
6
|
Author: Naishu Technology
|
|
7
7
|
Author-email: jilianyi@naishu.tech
|
|
8
8
|
Classifier: Intended Audience :: Developers
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
11
9
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
-
Requires-Python: >=3.
|
|
11
|
+
Requires-Python: >=3.10
|
|
14
12
|
Requires-Dist: numpy (>=1.18)
|
|
15
13
|
Requires-Dist: waveforms
|
|
16
14
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
nsqdriver/NS_CST.py,sha256=_QYCjg1YglIJ4YVmxvISqvy5rExWGlMhyrK9zYIRbRY,7877
|
|
2
|
+
nsqdriver/NS_MCI.py,sha256=ZRf_waF7Q3VnClZnvjogfhVkqW7ltmwZaXXCRU8qA0o,19542
|
|
3
|
+
nsqdriver/NS_QSYNC.py,sha256=68qFZ04KVXb0MSaeKIZVZYqR0UV_tkJYWz7KSz4Dvg0,23281
|
|
4
|
+
nsqdriver/__init__.py,sha256=BMKtTehGZlv0CgT1vJAbyZW1KF670NZwQJ9wWQBYzC0,326
|
|
5
|
+
nsqdriver/common.py,sha256=IHfShqgNN3THbe7KD7ICdfFY7JKC_kQj0_KJk-449gQ,499
|
|
6
|
+
nsqdriver/setup.py,sha256=4ajKQtY4hr2240f5sA81f66_92Yp_wG6gPM-zsOWq9M,390
|
|
7
|
+
nsqdriver/compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
nsqdriver/compiler/ns_wave.py,sha256=Z-O--9OtmLiILGx-4imSJuAcdgjP1PNknQlDrSo2CIw,15411
|
|
9
|
+
nsqdriver/compiler/py_wave_asm.py,sha256=aXMr3CqMC0vDP4mtTdyVfnwpvlrE14hGgdthWAF5S6g,17407
|
|
10
|
+
nsqdriver/wrapper/AWG_ADC.py,sha256=8K5xLEa_3CKnStWcoJeTj8ufEQfrx6o4l4XGNuOP3Ug,19211
|
|
11
|
+
nsqdriver/wrapper/BD_NSMCI.py,sha256=SMnDbS6iXDiPBhoR9QVJB_lJXhIXRQIVLJRSBEihLzw,12245
|
|
12
|
+
nsqdriver/wrapper/ND_NSMCI.py,sha256=gTyrDObhbggl35V_q-kpDoPsfttIEnDFc6f0-pk_P0k,6288
|
|
13
|
+
nsqdriver/wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
+
nsqdriver-0.3.0.dist-info/METADATA,sha256=htBmUOmmEPWvuvX1fmTGsoFlXiZPqysgxrwFnjDDwp0,497
|
|
15
|
+
nsqdriver-0.3.0.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
16
|
+
nsqdriver-0.3.0.dist-info/top_level.txt,sha256=o7EbQoFO6BoaG3KGbS9Lg_aRheZSY5KYzoYuI9vx-AI,10
|
|
17
|
+
nsqdriver-0.3.0.dist-info/RECORD,,
|
nsqdriver-0.2.6.dist-info/RECORD
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
nsqdriver/NS_CST.py,sha256=_QYCjg1YglIJ4YVmxvISqvy5rExWGlMhyrK9zYIRbRY,7877
|
|
2
|
-
nsqdriver/NS_MCI.py,sha256=nyCQji_UxVFfyaE8QHJ_laE0Ga8ybSHbe0-d5k65QjY,19114
|
|
3
|
-
nsqdriver/NS_QSYNC.py,sha256=P5BDiTz7hu6omwFnjGfGXfnzAoBfrvGYAYLTT45RoOc,22747
|
|
4
|
-
nsqdriver/__init__.py,sha256=bUQSdaBfww7fv1v64SORPYrqp6cjXiLklnqdSUc24h8,258
|
|
5
|
-
nsqdriver/common.py,sha256=IHfShqgNN3THbe7KD7ICdfFY7JKC_kQj0_KJk-449gQ,499
|
|
6
|
-
nsqdriver/setup.py,sha256=4ajKQtY4hr2240f5sA81f66_92Yp_wG6gPM-zsOWq9M,390
|
|
7
|
-
nsqdriver/wrapper/AWG_ADC.py,sha256=8K5xLEa_3CKnStWcoJeTj8ufEQfrx6o4l4XGNuOP3Ug,19211
|
|
8
|
-
nsqdriver/wrapper/ND_NSMCI.py,sha256=gTyrDObhbggl35V_q-kpDoPsfttIEnDFc6f0-pk_P0k,6288
|
|
9
|
-
nsqdriver/wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
nsqdriver-0.2.6.dist-info/METADATA,sha256=zVTz9ysW-HrG8YuzIRo9MEue4PqJFb28tFMKvV9ORdQ,596
|
|
11
|
-
nsqdriver-0.2.6.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
12
|
-
nsqdriver-0.2.6.dist-info/top_level.txt,sha256=o7EbQoFO6BoaG3KGbS9Lg_aRheZSY5KYzoYuI9vx-AI,10
|
|
13
|
-
nsqdriver-0.2.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|