QuLab 2.0.7__cp312-cp312-macosx_10_9_universal2.whl → 2.0.9__cp312-cp312-macosx_10_9_universal2.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.
- {QuLab-2.0.7.dist-info → QuLab-2.0.9.dist-info}/METADATA +1 -1
- {QuLab-2.0.7.dist-info → QuLab-2.0.9.dist-info}/RECORD +10 -10
- qulab/fun.cpython-312-darwin.so +0 -0
- qulab/scan/recorder.py +17 -8
- qulab/scan/scan.py +33 -23
- qulab/version.py +1 -1
- {QuLab-2.0.7.dist-info → QuLab-2.0.9.dist-info}/LICENSE +0 -0
- {QuLab-2.0.7.dist-info → QuLab-2.0.9.dist-info}/WHEEL +0 -0
- {QuLab-2.0.7.dist-info → QuLab-2.0.9.dist-info}/entry_points.txt +0 -0
- {QuLab-2.0.7.dist-info → QuLab-2.0.9.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
qulab/__init__.py,sha256=8zLGg-DfQhnDl2Ky0n-zXpN-8e-g7iR0AcaI4l4Vvpk,32
|
|
2
2
|
qulab/__main__.py,sha256=eupSsrNVfnTFRpjgrY_knPvZIs0-Dk577LaN7qB15hI,487
|
|
3
|
-
qulab/fun.cpython-312-darwin.so,sha256=
|
|
4
|
-
qulab/version.py,sha256=
|
|
3
|
+
qulab/fun.cpython-312-darwin.so,sha256=pnujkQh_Pa6jhSvKb_pvSa-4sqVECpi0nOOrNEpTjf4,159632
|
|
4
|
+
qulab/version.py,sha256=KmRUsw1os9zycj-k3YLWzgxp2vob6KBciPMbxED0Lqk,21
|
|
5
5
|
qulab/monitor/__init__.py,sha256=nTHelnDpxRS_fl_B38TsN0njgq8eVTEz9IAnN3NbDlM,42
|
|
6
6
|
qulab/monitor/__main__.py,sha256=w3yUcqq195LzSnXTkQcuC1RSFRhy4oQ_PEBmucXguME,97
|
|
7
7
|
qulab/monitor/config.py,sha256=fQ5JcsMApKc1UwANEnIvbDQZl8uYW0tle92SaYtX9lI,744
|
|
@@ -18,8 +18,8 @@ qulab/scan/expression.py,sha256=-aTYbjFQNI1mwOcoSBztqhKfGJpu_n4a1QnWro_xnTU,1569
|
|
|
18
18
|
qulab/scan/models.py,sha256=S8Q9hC8nOzxyoNB10EYg-miDKqoNMnjyAECjD-TuORw,17117
|
|
19
19
|
qulab/scan/optimize.py,sha256=vErjRTCtn2MwMF5Xyhs1P4gHF2IFHv_EqxsUvH_4y7k,2287
|
|
20
20
|
qulab/scan/query_record.py,sha256=BVkNgv3yfbMXX_Kguq18fvowKOBmBiiTvUwj_CqpiF4,11493
|
|
21
|
-
qulab/scan/recorder.py,sha256=
|
|
22
|
-
qulab/scan/scan.py,sha256=
|
|
21
|
+
qulab/scan/recorder.py,sha256=uovxS752kCAJYK3PF3abP57kyZyVUS2jWBTVgs4zPzM,22532
|
|
22
|
+
qulab/scan/scan.py,sha256=Te5PgJDAdbgaGVXOLOdTMzuGGUp-VzPW_9_z9hj52lQ,28438
|
|
23
23
|
qulab/scan/server.py,sha256=W8z3vr0cqSSKWzIG6_b0d-lpBpDXGpHSwN6VJuv3w9U,2844
|
|
24
24
|
qulab/scan/utils.py,sha256=n5yquKlz2QYMzciPgD9vkpBJVgzVzOqAlfvB4Qu6oOk,2551
|
|
25
25
|
qulab/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -77,9 +77,9 @@ qulab/visualization/plot_layout.py,sha256=clNw9QjE_kVNpIIx2Ob4YhAz2fucPGMuzkoIrO
|
|
|
77
77
|
qulab/visualization/plot_seq.py,sha256=lphYF4VhkEdc_wWr1kFBwrx2yujkyFPFaJ3pjr61awI,2693
|
|
78
78
|
qulab/visualization/qdat.py,sha256=ZeevBYWkzbww4xZnsjHhw7wRorJCBzbG0iEu-XQB4EA,5735
|
|
79
79
|
qulab/visualization/widgets.py,sha256=6KkiTyQ8J-ei70LbPQZAK35wjktY47w2IveOa682ftA,3180
|
|
80
|
-
QuLab-2.0.
|
|
81
|
-
QuLab-2.0.
|
|
82
|
-
QuLab-2.0.
|
|
83
|
-
QuLab-2.0.
|
|
84
|
-
QuLab-2.0.
|
|
85
|
-
QuLab-2.0.
|
|
80
|
+
QuLab-2.0.9.dist-info/LICENSE,sha256=PRzIKxZtpQcH7whTG6Egvzl1A0BvnSf30tmR2X2KrpA,1065
|
|
81
|
+
QuLab-2.0.9.dist-info/METADATA,sha256=NeeeZDjT_WmdUgOo03cVKLo23y1BOjfhB4GO_eji-UY,3510
|
|
82
|
+
QuLab-2.0.9.dist-info/WHEEL,sha256=aK27B_a3TQKBFhN_ATCfuFR4pBRqHlzwr7HpZ6iA79M,115
|
|
83
|
+
QuLab-2.0.9.dist-info/entry_points.txt,sha256=ohBzutEnQimP_BZWiuXdSliu4QAYSHHcN0PZD8c7ZCY,46
|
|
84
|
+
QuLab-2.0.9.dist-info/top_level.txt,sha256=3T886LbAsbvjonu_TDdmgxKYUn939BVTRPxPl9r4cEg,6
|
|
85
|
+
QuLab-2.0.9.dist-info/RECORD,,
|
qulab/fun.cpython-312-darwin.so
CHANGED
|
Binary file
|
qulab/scan/recorder.py
CHANGED
|
@@ -216,6 +216,8 @@ class BufferList():
|
|
|
216
216
|
class Record():
|
|
217
217
|
|
|
218
218
|
def __init__(self, id, database, description=None):
|
|
219
|
+
from .scan import OptimizeSpace
|
|
220
|
+
|
|
219
221
|
self.id = id
|
|
220
222
|
self.database = database
|
|
221
223
|
self.description = description
|
|
@@ -236,22 +238,29 @@ class Record():
|
|
|
236
238
|
self.dims[name] = ()
|
|
237
239
|
for level, range_list in self.description['loops'].items():
|
|
238
240
|
for name, iterable in range_list:
|
|
239
|
-
if isinstance(iterable,
|
|
241
|
+
if isinstance(iterable, OptimizeSpace):
|
|
242
|
+
self.dims[name] = tuple(range(level + 1))
|
|
243
|
+
continue
|
|
244
|
+
elif isinstance(iterable, (np.ndarray, list, tuple, range)):
|
|
240
245
|
self._items[name] = iterable
|
|
241
246
|
self.independent_variables[name] = iterable
|
|
242
|
-
|
|
247
|
+
self.dims[name] = (level, )
|
|
243
248
|
|
|
244
249
|
for level, group in self.description['order'].items():
|
|
245
250
|
for names in group:
|
|
246
251
|
for name in names:
|
|
247
|
-
if name not in self.
|
|
248
|
-
if name not in self.
|
|
252
|
+
if name not in self.description['dependents']:
|
|
253
|
+
if name not in self.dims:
|
|
249
254
|
self.dims[name] = (level, )
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
255
|
+
else:
|
|
256
|
+
d = set()
|
|
257
|
+
for n in self.description['dependents'][name]:
|
|
258
|
+
d.update(self.dims[n])
|
|
259
|
+
if name not in self.dims:
|
|
254
260
|
self.dims[name] = tuple(sorted(d))
|
|
261
|
+
else:
|
|
262
|
+
self.dims[name] = tuple(
|
|
263
|
+
sorted(set(self.dims[name]) | d))
|
|
255
264
|
|
|
256
265
|
if self.is_local_record():
|
|
257
266
|
self.database = Path(self.database)
|
qulab/scan/scan.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
import copy
|
|
2
3
|
import datetime
|
|
3
4
|
import inspect
|
|
4
5
|
import itertools
|
|
@@ -437,13 +438,24 @@ class Scan():
|
|
|
437
438
|
elif inspect.isawaitable(task):
|
|
438
439
|
await task
|
|
439
440
|
|
|
440
|
-
async def
|
|
441
|
+
async def run(self):
|
|
441
442
|
assymbly(self.description)
|
|
443
|
+
if isinstance(
|
|
444
|
+
self.description['database'],
|
|
445
|
+
str) and self.description['database'].startswith("tcp://"):
|
|
446
|
+
async with ZMQContextManager(
|
|
447
|
+
zmq.DEALER,
|
|
448
|
+
connect=self.description['database']) as socket:
|
|
449
|
+
self._sock = socket
|
|
450
|
+
await self._run()
|
|
451
|
+
else:
|
|
452
|
+
await self._run()
|
|
453
|
+
|
|
454
|
+
async def _run(self):
|
|
442
455
|
task = asyncio.create_task(self._update_progress())
|
|
443
456
|
self._task_pool.append(task)
|
|
444
457
|
self._variables = {'self': self}
|
|
445
|
-
|
|
446
|
-
self.description['setters'])
|
|
458
|
+
self._variables.update(self.description['consts'].copy())
|
|
447
459
|
for level, total in self.description['total'].items():
|
|
448
460
|
if total == np.inf:
|
|
449
461
|
total = None
|
|
@@ -458,18 +470,8 @@ class Scan():
|
|
|
458
470
|
self.variables[name])
|
|
459
471
|
if inspect.isawaitable(coro):
|
|
460
472
|
await coro
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
str) and self.description['database'].startswith("tcp://"):
|
|
464
|
-
async with ZMQContextManager(
|
|
465
|
-
zmq.DEALER,
|
|
466
|
-
connect=self.description['database']) as socket:
|
|
467
|
-
self._sock = socket
|
|
468
|
-
self.record = await self.create_record()
|
|
469
|
-
await self.work()
|
|
470
|
-
else:
|
|
471
|
-
self.record = await self.create_record()
|
|
472
|
-
await self.work()
|
|
473
|
+
self.record = await self.create_record()
|
|
474
|
+
await self.work()
|
|
473
475
|
for level, bar in self._bar.items():
|
|
474
476
|
bar.close()
|
|
475
477
|
|
|
@@ -479,10 +481,15 @@ class Scan():
|
|
|
479
481
|
evt.set()
|
|
480
482
|
elif inspect.isawaitable(evt):
|
|
481
483
|
await evt
|
|
482
|
-
task.cancel()
|
|
483
484
|
if self._single_step:
|
|
485
|
+
for group in self.description['order'].get(-1, []):
|
|
486
|
+
for name in group:
|
|
487
|
+
if name in self.description['getters']:
|
|
488
|
+
self.variables[name] = await call_function(
|
|
489
|
+
self.description['getters'][name], self.variables)
|
|
484
490
|
await self.emit(0, 0, 0, self.variables.copy())
|
|
485
491
|
await self.emit(-1, 0, 0, {})
|
|
492
|
+
task.cancel()
|
|
486
493
|
return self.variables
|
|
487
494
|
|
|
488
495
|
async def done(self):
|
|
@@ -497,7 +504,7 @@ class Scan():
|
|
|
497
504
|
|
|
498
505
|
def start(self):
|
|
499
506
|
import asyncio
|
|
500
|
-
self._main_task = asyncio.create_task(self.
|
|
507
|
+
self._main_task = asyncio.create_task(self.run())
|
|
501
508
|
|
|
502
509
|
async def submit(self, server='tcp://127.0.0.1:6788'):
|
|
503
510
|
assymbly(self.description)
|
|
@@ -705,18 +712,18 @@ def assymbly(description):
|
|
|
705
712
|
except:
|
|
706
713
|
pass
|
|
707
714
|
|
|
708
|
-
dependents = description['dependents']
|
|
715
|
+
dependents = copy.deepcopy(description['dependents'])
|
|
709
716
|
|
|
710
717
|
for level in levels:
|
|
711
718
|
range_list = description['loops'].get(level, [])
|
|
712
719
|
if level > 0:
|
|
713
720
|
if f'#__loop_{level}' not in description['dependents']:
|
|
714
|
-
dependents[f'#__loop_{level}'] =
|
|
715
|
-
dependents[f'#__loop_{level}'].
|
|
721
|
+
dependents[f'#__loop_{level}'] = set()
|
|
722
|
+
dependents[f'#__loop_{level}'].add(f'#__loop_{level-1}')
|
|
716
723
|
for name, _ in range_list:
|
|
717
724
|
if name not in description['dependents']:
|
|
718
|
-
dependents[name] =
|
|
719
|
-
dependents[name].
|
|
725
|
+
dependents[name] = set()
|
|
726
|
+
dependents[name].add(f'#__loop_{level}')
|
|
720
727
|
|
|
721
728
|
def _get_all_depends(key, graph):
|
|
722
729
|
ret = set()
|
|
@@ -734,7 +741,10 @@ def assymbly(description):
|
|
|
734
741
|
|
|
735
742
|
levels = {}
|
|
736
743
|
passed = set()
|
|
737
|
-
all_keys = set()
|
|
744
|
+
all_keys = set(description['consts'].keys())
|
|
745
|
+
for key in dependents:
|
|
746
|
+
all_keys.add(key)
|
|
747
|
+
all_keys.update(dependents[key])
|
|
738
748
|
for level in reversed(description['loops'].keys()):
|
|
739
749
|
tag = f'#__loop_{level}'
|
|
740
750
|
for key, deps in full_depends.items():
|
qulab/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "2.0.
|
|
1
|
+
__version__ = "2.0.9"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|