From b4b656977352297f979fe0cad195e8528ff14b78 Mon Sep 17 00:00:00 2001 From: Jack Raymond <10591246+jackraymond@users.noreply.github.com> Date: Wed, 8 Jul 2026 14:00:44 -0700 Subject: [PATCH] Update to accommodate the get_properties return type change --- dwave/experimental/multicolor_anneal/api.py | 16 ++--- ...Advantage2_system4_annealing_schedule.xlsx | Bin 0 -> 96410 bytes examples/mca_embedding.py | 2 +- examples/mca_shim_AO_FB.py | 57 +++++++++--------- ..._and_research2_fixes-0275ae3d8bb6dd8c.yaml | 9 +++ tests/test_multicolor_anneal.py | 51 ++++++++++------ 6 files changed, 79 insertions(+), 56 deletions(-) create mode 100644 examples/09-1323A-D_Advantage2_system4_annealing_schedule.xlsx create mode 100644 releasenotes/notes/get_properties_and_research2_fixes-0275ae3d8bb6dd8c.yaml diff --git a/dwave/experimental/multicolor_anneal/api.py b/dwave/experimental/multicolor_anneal/api.py index a2e2d13..f7ab189 100644 --- a/dwave/experimental/multicolor_anneal/api.py +++ b/dwave/experimental/multicolor_anneal/api.py @@ -25,8 +25,8 @@ def get_properties(sampler: DWaveSampler | Solver | str | None = None - ) -> list[dict[str, Any]]: - """Return multicolor-annealing properties for each annealing line. + ) -> tuple[dict[str, Any], list[dict[str, Any]]]: + """Return multicolor-annealing properties Args: sampler: @@ -37,8 +37,10 @@ def get_properties(sampler: DWaveSampler | Solver | str | None = None an MCA-enabled solver. Returns: - Annealing-line properties for all available annealing lines, formatted - as list of dicts in ascending order of annealing-line index. + A tuple containing two elements: + 1. A dictionary of annealing-line independent properties. + 2. Annealing-line specific properties for all available annealing lines, + formatted as list of dicts in ascending order of annealing-line index. Examples: Retrieve MCA properties for the annealing lines of a default solver, and @@ -46,10 +48,10 @@ def get_properties(sampler: DWaveSampler | Solver | str | None = None >>> from dwave.experimental import multicolor_anneal as mca ... - >>> annealing_lines = mca.get_properties() # doctest: +SKIP - >>> len(annealing_lines) # doctest: +SKIP + >>> exp_feature_info = mca.get_properties() # doctest: +SKIP + >>> len(exp_feature_info[1]) # doctest: +SKIP 6 - >>> annealing_lines[0]['qubits'] # doctest: +SKIP + >>> exp_feature_info[1][0]['qubits'] # doctest: +SKIP [2, 6, 9, 14, 17, 18, ...] """ diff --git a/examples/09-1323A-D_Advantage2_system4_annealing_schedule.xlsx b/examples/09-1323A-D_Advantage2_system4_annealing_schedule.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..032076f69fe916e05ade99ef97a72f14758ab7d3 GIT binary patch literal 96410 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

q4n>1)={`{neU?xSs&am)6TK8E{fYp2)y^WoNy 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

@5(riYU%LHa@QCu>$D=F@Vl(%Vv`K`G%j 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 np.ndarray: """Create an artificial data set - y(t) = np.exp(-delays / decay_time) * np.cos(2* np.pi * A * delays) + y(t) = np.exp(-delays / T2) * np.cos(2* np.pi * A * delays) with variance of (1 - y(t)^2) in the measured state. Given independent and identically distributed samples we can model noise as normally distributed. @@ -192,13 +191,13 @@ def artificial_data( Args: delays: time of measurement A: frequency - decay_time: exponential envelope time scale + T2: exponential envelope time scale num_independent_samples: number of samples to model prng: pseudo random number generator or seed. Returns: A model signal: """ - y = np.exp(-delays / decay_time) * np.cos(2 * np.pi * A * delays) + y = np.exp(-delays / T2) * np.cos(2 * np.pi * A * delays) if num_independent_samples != float("Inf"): prng = np.random.default_rng(prng) return y + np.sqrt((1 - y**2) / num_independent_samples) * prng.normal( @@ -217,7 +216,10 @@ def run_parallel_experiment( ) -> np.ndarray: """Collect detector magnetization for a set of independent embeddings - See documentation example, here we simply parallelize. + Runs a Target-Detector-Source quench experiment on many parallel + embeddings with the specified delays applied to detector lines. + Sample averaged magnetization are calculated on detected qubits in + each embedding and returned as a numpy array. Args: sampler: A parallel embedding composite sampler, wrapping the qpu sampler. @@ -320,11 +322,11 @@ def main( target_c: float = 0.37, no_flux_biases: bool = False, no_anneal_offsets: bool = False, - delay_min: float = 0.005, - delay_max: float = 0.015, + delay_min: float = 0.01, + delay_max: float = 0.025, delay_min_fit: float | None = None, delay_max_fit: float | None = None, - fn_schedule: str = "09-1317A-D_Advantage2_research1_4_annealing_schedule.xlsx", + fn_schedule: str = "09-1323A-D_Advantage2_system4_annealing_schedule.xlsx", ): """Demonstrate t-d-s variability and mitigation strategies @@ -400,13 +402,13 @@ def main( if delay_max_fit is None: delay_max_fit = delay_max # Can be automated for SNR in principle. elif delay_max_fit > delay_max: - raise ValueError("Fit window exceeds data window") + raise ValueError("The fit window is incompatible with the data window") if delay_min_fit is None: delay_min_fit = delay_min # Can be automated for SNR in principle. elif delay_min_fit < delay_min: - raise ValueError("Fit window exceeds data window") + raise ValueError("The fit window is incompatible with the data window") if delay_min_fit > delay_max_fit: - raise ValueError("Fit window is empty") + raise ValueError("The fit window is empty") # Schedule based approximations, target_A and dA/dc are approximated. qpu_anneal_schedule = pd.read_excel( fn_schedule, sheet_name="Fast-Annealing Schedule" @@ -469,14 +471,14 @@ def main( zephyr_shape = qpu.properties["topology"]["shape"] exp_feature_info = get_properties(qpu) line_assignments = { - n: al_idx for al_idx, al in enumerate(exp_feature_info) for n in al["qubits"] + n: al_idx for al_idx, al in enumerate(exp_feature_info[1]) for n in al["qubits"] } - num_lines = len(exp_feature_info) + num_lines = len(exp_feature_info[1]) cmap = plt.colormaps.get_cmap("plasma") line_color = [cmap(i / (num_lines - 1)) for i in range(num_lines)] x_anneal_schedules = _make_anneal_schedules( - exp_feature_info, + exp_feature_info[1], line_source=line_source, line_detector=line_detector, target_c=target_c, @@ -526,7 +528,7 @@ def _target_assignments(n: int): embs_by_line = {i: [] for i in range(num_lines)} for i, emb in enumerate(embs): q = emb[0][0] - embs_by_line[qubit_to_Advantage2_annealing_line(q, zephyr_shape)].append(emb) + embs_by_line[line_assignments[q]].append(emb) embs = [emb for i in range(num_lines) for emb in embs_by_line[i]] sampler = ParallelEmbeddingComposite(qpu, embeddings=embs) @@ -538,13 +540,11 @@ def _target_assignments(n: int): delays_ns = 5 * np.random.random() + 1000 * delays ld = len(delays_ns) frequencies = np.arange(ld) / dt / 1000 / ld - decay_time_ns = 20 for idx, A in enumerate([target_Aminus, target_A, target_Aplus]): for num_independent_samples in [100, float("Inf")]: signal = artificial_data( delays_ns, A, - decay_time=decay_time_ns, num_independent_samples=num_independent_samples, ) if num_independent_samples == float("Inf") and idx == 1: @@ -595,11 +595,10 @@ def _target_assignments(n: int): for e, J in bqm.quadratic.items() }, ) - # shimmed_variables = {n for n in bqm_embedded.variables if qubit_to_Advantage2_annealing_line(n, zephyr_shape) == line_detector} shimmed_variables = { n for n in bqm_embedded.variables - if qubit_to_Advantage2_annealing_line(n, zephyr_shape) == line_detector + if line_assignments[n] == line_detector } # assert set(bqm_embedded.variables).issubset(qpu.nodelist) # Paranoia # assert all(T.has_edge(*e) for e in bqm_embedded.quadratic) # Paranoia @@ -656,7 +655,7 @@ def _target_assignments(n: int): line_targets = set() for idx, emb in enumerate(embs): q = emb[0][0] - line_target = qubit_to_Advantage2_annealing_line(q, zephyr_shape) + line_target = line_assignments[q] if line_target not in line_targets: plt.plot( delays * 1000, @@ -706,7 +705,7 @@ def _target_assignments(n: int): lines_represented = set() for i, emb in enumerate(embs): q = emb[0][0] - line_target = qubit_to_Advantage2_annealing_line(q, zephyr_shape) + line_target = line_assignments[q] if line_target in lines_represented: label = None else: @@ -766,7 +765,7 @@ def _target_assignments(n: int): line_targets = set() for i, emb in enumerate(embs): q = emb[0][0] - line_target = qubit_to_Advantage2_annealing_line(q, zephyr_shape) + line_target = line_assignments[q] if line_target not in line_targets: plt.plot( delays * 1000, @@ -805,7 +804,7 @@ def _target_assignments(n: int): lines_represented = set() for i, emb in enumerate(embs): q = emb[0][0] - line_target = qubit_to_Advantage2_annealing_line(q, zephyr_shape) + line_target = line_assignments[q] if line_target in lines_represented: label = None else: @@ -837,7 +836,7 @@ def _target_assignments(n: int): lines_represented = set() for i, emb in enumerate(embs): q = emb[0][0] - line_target = qubit_to_Advantage2_annealing_line(q, zephyr_shape) + line_target = line_assignments[q] if line_target in lines_represented: label = None else: @@ -893,19 +892,19 @@ def _target_assignments(n: int): "--target_c", type=float, help="target_c", - default=0.37, # First horizontal qubit line under 6-line control + default=0.387, # 2GHz experiment on Advantage2_research2 ) parser.add_argument( "--delay_min", type=float, help="Initial delay time (us) for data collection", - default=0.005, # Sufficient for decoupling from source + default=0.01, # Sufficient for decoupling from source ) parser.add_argument( "--delay_max", type=float, help="Final delay time (us) for data collection", - default=0.015, # Oscillations not completely decayed + default=0.025, # Oscillations not completely decayed ) parser.add_argument( "--delay_min_fit", diff --git a/releasenotes/notes/get_properties_and_research2_fixes-0275ae3d8bb6dd8c.yaml b/releasenotes/notes/get_properties_and_research2_fixes-0275ae3d8bb6dd8c.yaml new file mode 100644 index 0000000..16e5457 --- /dev/null +++ b/releasenotes/notes/get_properties_and_research2_fixes-0275ae3d8bb6dd8c.yaml @@ -0,0 +1,9 @@ +--- +fixes: + - | + Update examples, tests and utils to accommodate modified get_properties + return format. +notes: + - | + Defaults for examples are modified to reflect Advantage2_research2 + properties and published documentation. \ No newline at end of file diff --git a/tests/test_multicolor_anneal.py b/tests/test_multicolor_anneal.py index fb150df..b57ec39 100644 --- a/tests/test_multicolor_anneal.py +++ b/tests/test_multicolor_anneal.py @@ -28,22 +28,30 @@ class PropertiesCheckMixin: - properties = [ - 'annealingLine', 'minAnnealingTimeStep', 'minPolarizingTimeStep', - 'depolarizationAnnealScheduleRequiredDelay', 'holdOvershootFor', + polarizing_line_properties = ['minPolarizingTimeStep', + 'depolarizationAnnealScheduleRequiredDelay'] + + annealing_line_properties = [ + 'annealingLine', 'minAnnealingTimeStep', 'holdOvershootFor', 'minCOvershoot', 'maxCOvershoot', 'maxC', 'minC', 'scheduleDelayStep', 'qubits' ] - def validate_annealing_lines_properties(self, data): + def validate_exp_feature_info(self, data): self.assertIsInstance(data, list) - self.assertGreater(len(data), 0) - n_lines = len(data) + self.assertEqual(len(data), 2) + polarizing_line_info, annealing_line_info = data + self.assertIsInstance(polarizing_line_info, dict) + for p in self.polarizing_line_properties: + self.assertIn(p, polarizing_line_info) + self.assertIsInstance(annealing_line_info, list) + self.assertGreater(len(annealing_line_info), 0) + n_lines = len(annealing_line_info) for i in range(n_lines): - for p in self.properties: - self.assertIn(p, data[i]) - self.assertEqual(data[i]['annealingLine'], i) - self.assertGreater(len(data[i]['qubits']), 0) + for p in self.annealing_line_properties: + self.assertIn(p, annealing_line_info[i]) + self.assertEqual(annealing_line_info[i]['annealingLine'], i) + self.assertGreater(len(annealing_line_info[i]['qubits']), 0) class MCA(unittest.TestCase, PropertiesCheckMixin): @@ -55,9 +63,10 @@ def tearDown(self): def test_sampler_properties(self): n_lines = 6 n_qubits = 100 - info = [{'annealingLine': i, + polarizing_line_info = {'minPolarizingTimeStep': 0.02, + 'depolarizationAnnealScheduleRequiredDelay': 2.0} + annealing_line_info = [{'annealingLine': i, 'minAnnealingTimeStep': 0.01, - 'minPolarizingTimeStep': 0.02, 'depolarizationAnnealScheduleRequiredDelay': 2.0, 'holdOvershootFor': 0.02, 'minCOvershoot': -7.0, @@ -66,19 +75,23 @@ def test_sampler_properties(self): 'minC': -2.0, 'scheduleDelayStep': 1e-06, 'qubits': list(range(i*100, (i+1)*100))} for i in range(n_lines)] + info = [polarizing_line_info, annealing_line_info] with unittest.mock.MagicMock() as sampler: sampler.solver.edges = [(0,1)] sampler.solver.sample_qubo.return_value.result.return_value = \ dict(x_get_multicolor_annealing_exp_feature_info=info) - lines = get_properties(sampler) + exp_feature_info = get_properties(sampler) + + self.assertEqual(len(exp_feature_info), 2) + lines = exp_feature_info[1] self.assertEqual(len(lines), n_lines) self.assertTrue(all(lines[i]['annealingLine'] == i for i in range(n_lines))) self.assertTrue(all(len(lines[i]['qubits']) == n_qubits for i in range(n_lines))) - self.validate_annealing_lines_properties(lines) + self.validate_exp_feature_info(exp_feature_info) @unittest.mock.patch('dwave.experimental.fast_reverse_anneal.api.Client') def test_default_solver_name(self, client): @@ -112,15 +125,15 @@ def tearDown(self): get_solver_name.cache_clear() def test_get_parameters_from_sampler(self): - lines = get_properties(self.sampler) - self.validate_annealing_lines_properties(lines) + exp_feature_info = get_properties(self.sampler) + self.validate_exp_feature_info(exp_feature_info) def test_get_parameters_from_name(self): - lines = get_properties(get_solver_name()) - self.validate_annealing_lines_properties(lines) + exp_feature_info = get_properties(get_solver_name()) + self.validate_exp_feature_info(exp_feature_info) def test_6_line_accuracy(self): - annealing_lines = get_properties(self.sampler) + annealing_lines = get_properties(self.sampler)[1] topology_type = self.sampler.properties["topology"]["type"] if len(annealing_lines) == 6 and topology_type == "zephyr": shape = self.sampler.properties["topology"]["shape"]