Skip to content

Commit a5e5750

Browse files
author
Noah David Siekierski
committed
Subcirc selection now takes circ list instead of dict, mirror edesign uses a more reasonable test-ref match verification
1 parent 7afd5e2 commit a5e5750

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

pygsti/circuits/subcircuit_selection.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import itertools as _itertools
1010
import networkx as _nx
1111

12+
import tqdm
13+
1214
import numpy as _np
1315
import json as _json
1416

@@ -30,7 +32,7 @@ def sample_lcu_subcircuits(lcu_circ, width_depths, num_samples, strategy='simple
3032
num_test_samples=num_test_samples, rand_state=rand_state,
3133
arch=arch, subgraph_cache=subgraph_cache)
3234

33-
def sample_subcircuits(full_circs: Union[_Circuit, Dict[str, _Circuit]],
35+
def sample_subcircuits(full_circs: Union[_Circuit, List[_Circuit]],
3436
width_depths: Dict[int, List[int]],
3537
num_samples_per_circ: int,
3638
strategy: Union[str, Callable[..., Any]] = 'simple',
@@ -54,11 +56,11 @@ def sample_subcircuits(full_circs: Union[_Circuit, Dict[str, _Circuit]],
5456
subcircuits = _defaultdict(list)
5557
counter = 0
5658

57-
if not isinstance(full_circs, dict): # package pygsti circuit into dict if dict was not provided.
58-
full_circs = {'default name': full_circs}
59+
if not isinstance(full_circs, list): # package pygsti circuit into dict if dict was not provided.
60+
full_circs = [full_circs]
5961

60-
for name, full_circ in full_circs.items():
61-
print(f'sampling circuit {name}')
62+
for full_circ in tqdm.tqdm(full_circs, ascii=True):
63+
# print(f'sampling circuit {name}')
6264
for w, ds in width_depths.items():
6365
print(f'Width: {w}, Depth: ', end='')
6466
for d in ds:
@@ -83,7 +85,7 @@ def sample_subcircuits(full_circs: Union[_Circuit, Dict[str, _Circuit]],
8385
raise ValueError("'strategy' is not a function or known string")
8486

8587
for subcirc, drop in zip(subcircs, drops):
86-
print(subcirc)
88+
# print(subcirc)
8789
subcircuits[subcirc].append({'width': w, 'physical_depth': d, 'dropped_gates': drop, 'id': counter})
8890
counter += 1
8991

@@ -268,7 +270,7 @@ def simple_weighted_subcirc_selection(full_circ, width, depth, num_subcircs=1, b
268270

269271
assert len(subcirc_layers) == len(layer_names), "Relationship between layers and layer names is not one to one!"
270272

271-
print(len(subcirc_layers))
273+
# print(len(subcirc_layers))
272274

273275
for i in range(len(subcirc_layers)):
274276
scl = subcirc_layers[i]

pygsti/extras/ibmq/ibmqexperiment.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,16 @@
2828
_qiskit = None
2929

3030
# Try to load IBM Runtime
31-
try:
32-
from qiskit_ibm_runtime import SamplerV2 as _Sampler
33-
from qiskit_ibm_runtime import Session as _Session
34-
from qiskit_ibm_runtime import RuntimeJobV2 as _RuntimeJobV2
35-
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager as _pass_manager
36-
except: _Sampler = None
31+
# try:
32+
# from qiskit_ibm_runtime import SamplerV2 as _Sampler
33+
# from qiskit_ibm_runtime import Session as _Session
34+
# from qiskit_ibm_runtime import RuntimeJobV2 as _RuntimeJobV2
35+
# from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager as _pass_manager
36+
# except: _Sampler = None
37+
from qiskit_ibm_runtime import SamplerV2 as _Sampler
38+
from qiskit_ibm_runtime import Session as _Session
39+
from qiskit_ibm_runtime import RuntimeJobV2 as _RuntimeJobV2
40+
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager as _pass_manager
3741

3842
# Most recent version of QisKit that this has been tested on:
3943
#qiskit.__version__ = '1.1.1'

pygsti/protocols/mirror_edesign.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,11 @@ def make_mirror_edesign(test_edesign: _FreeformDesign,
8989

9090
exact_circ = id_exact_circ_dict[circ_id]
9191

92-
assert test_edesign.aux_info[c][0]['id'] == ref_edesign.aux_info[exact_circ][0]['id'], f"ID mismatch! test circuit has ID {test_edesign.aux_info[c][0]['id']}, ref circuit has ID {ref_edesign.aux_info[exact_circ][0]['id']}"
92+
valid_test_ids = set([aux['id'] for aux in ref_edesign.aux_info[exact_circ]])
93+
94+
test_id = aux['id']
95+
96+
assert test_id in valid_test_ids, f"Invalid ref ID {ref_id} for ref circuit corresponding to test IDs {valid_test_ids}"
9397

9498
else:
9599
print("using provided edesign for both reference and test compilations")

0 commit comments

Comments
 (0)