cirq-core 1.5.0.dev20240703215652__py3-none-any.whl → 1.5.0.dev20240710220908__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 cirq-core might be problematic. Click here for more details.
- cirq/_version.py +1 -1
- cirq/_version_test.py +1 -1
- cirq/circuits/circuit_operation_test.py +3 -3
- cirq/experiments/qubit_characterizations.py +4 -3
- cirq/experiments/single_qubit_readout_calibration.py +4 -3
- cirq/experiments/two_qubit_xeb.py +55 -4
- cirq/experiments/xeb_fitting.py +68 -9
- cirq/experiments/xeb_fitting_test.py +33 -1
- cirq/interop/quirk/cells/parse.py +1 -1
- cirq/ops/common_gates_test.py +2 -0
- cirq/ops/global_phase_op.py +1 -1
- cirq/sim/density_matrix_simulator_test.py +2 -2
- cirq/sim/sparse_simulator_test.py +2 -2
- cirq/study/flatten_expressions.py +1 -2
- cirq/study/resolver.py +5 -7
- cirq/study/sweepable.py +1 -5
- cirq/study/sweeps.py +1 -4
- cirq/vis/heatmap.py +0 -2
- cirq/vis/state_histogram.py +1 -2
- {cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/METADATA +1 -1
- {cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/RECORD +24 -24
- {cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/LICENSE +0 -0
- {cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/WHEEL +0 -0
- {cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/top_level.txt +0 -0
cirq/_version.py
CHANGED
cirq/_version_test.py
CHANGED
|
@@ -327,9 +327,9 @@ def test_repeat(add_measurements: bool, use_default_ids_for_initial_rep: bool) -
|
|
|
327
327
|
_ = op_base.repeat()
|
|
328
328
|
|
|
329
329
|
with pytest.raises(TypeError, match='Only integer or sympy repetitions are allowed'):
|
|
330
|
-
_ = op_base.repeat(1.3)
|
|
331
|
-
assert op_base.repeat(3.00000000001).repetitions == 3
|
|
332
|
-
assert op_base.repeat(2.99999999999).repetitions == 3
|
|
330
|
+
_ = op_base.repeat(1.3)
|
|
331
|
+
assert op_base.repeat(3.00000000001).repetitions == 3
|
|
332
|
+
assert op_base.repeat(2.99999999999).repetitions == 3
|
|
333
333
|
|
|
334
334
|
|
|
335
335
|
@pytest.mark.parametrize('add_measurements', [True, False])
|
|
@@ -17,8 +17,8 @@ import itertools
|
|
|
17
17
|
import functools
|
|
18
18
|
|
|
19
19
|
from typing import (
|
|
20
|
-
Any,
|
|
21
20
|
cast,
|
|
21
|
+
Any,
|
|
22
22
|
Iterator,
|
|
23
23
|
List,
|
|
24
24
|
Optional,
|
|
@@ -107,7 +107,6 @@ class RandomizedBenchMarkResult:
|
|
|
107
107
|
show_plot = not ax
|
|
108
108
|
if not ax:
|
|
109
109
|
fig, ax = plt.subplots(1, 1, figsize=(8, 8)) # pragma: no cover
|
|
110
|
-
ax = cast(plt.Axes, ax) # pragma: no cover
|
|
111
110
|
ax.set_ylim((0.0, 1.0)) # pragma: no cover
|
|
112
111
|
ax.plot(self._num_cfds_seq, self._gnd_state_probs, 'ro', label='data', **plot_kwargs)
|
|
113
112
|
x = np.linspace(self._num_cfds_seq[0], self._num_cfds_seq[-1], 100)
|
|
@@ -304,7 +303,9 @@ class TomographyResult:
|
|
|
304
303
|
"""
|
|
305
304
|
show_plot = axes is None
|
|
306
305
|
if axes is None:
|
|
307
|
-
fig,
|
|
306
|
+
fig, axes_v = plt.subplots(1, 2, figsize=(12.0, 5.0), subplot_kw={'projection': '3d'})
|
|
307
|
+
axes_v = cast(np.ndarray, axes_v)
|
|
308
|
+
axes = list(axes_v)
|
|
308
309
|
elif len(axes) != 2:
|
|
309
310
|
raise ValueError('A TomographyResult needs 2 axes to plot.')
|
|
310
311
|
mat = self._density_matrix
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"""Single qubit readout experiments using parallel or isolated statistics."""
|
|
15
15
|
import dataclasses
|
|
16
16
|
import time
|
|
17
|
-
from typing import Any, Dict, Iterable, List, Optional, TYPE_CHECKING
|
|
17
|
+
from typing import cast, Any, Dict, Iterable, List, Optional, TYPE_CHECKING
|
|
18
18
|
|
|
19
19
|
import sympy
|
|
20
20
|
import numpy as np
|
|
@@ -77,8 +77,9 @@ class SingleQubitReadoutCalibrationResult:
|
|
|
77
77
|
"""
|
|
78
78
|
|
|
79
79
|
if axs is None:
|
|
80
|
-
_,
|
|
81
|
-
|
|
80
|
+
_, axs_v = plt.subplots(1, 2, dpi=200, facecolor='white', figsize=(12, 4))
|
|
81
|
+
axs_v = cast(np.ndarray, axs_v)
|
|
82
|
+
axs = cast(tuple[plt.Axes, plt.Axes], (axs_v[0], axs_v[1]))
|
|
82
83
|
else:
|
|
83
84
|
if (
|
|
84
85
|
not isinstance(axs, (tuple, list, np.ndarray))
|
|
@@ -347,7 +347,7 @@ class InferredXEBResult:
|
|
|
347
347
|
return ax
|
|
348
348
|
|
|
349
349
|
|
|
350
|
-
def
|
|
350
|
+
def parallel_xeb_workflow(
|
|
351
351
|
sampler: 'cirq.Sampler',
|
|
352
352
|
qubits: Optional[Sequence['cirq.GridQubit']] = None,
|
|
353
353
|
entangling_gate: 'cirq.Gate' = ops.CZ,
|
|
@@ -358,8 +358,8 @@ def parallel_two_qubit_xeb(
|
|
|
358
358
|
random_state: 'cirq.RANDOM_STATE_OR_SEED_LIKE' = None,
|
|
359
359
|
ax: Optional[plt.Axes] = None,
|
|
360
360
|
**plot_kwargs,
|
|
361
|
-
) ->
|
|
362
|
-
"""A
|
|
361
|
+
) -> Tuple[pd.DataFrame, Sequence['cirq.Circuit'], pd.DataFrame]:
|
|
362
|
+
"""A utility method that runs the full XEB workflow.
|
|
363
363
|
|
|
364
364
|
Args:
|
|
365
365
|
sampler: The quantum engine or simulator to run the circuits.
|
|
@@ -375,7 +375,12 @@ def parallel_two_qubit_xeb(
|
|
|
375
375
|
**plot_kwargs: Arguments to be passed to 'plt.Axes.plot'.
|
|
376
376
|
|
|
377
377
|
Returns:
|
|
378
|
-
A
|
|
378
|
+
- A DataFrame with columns 'cycle_depth' and 'fidelity'.
|
|
379
|
+
- The circuits used to perform XEB.
|
|
380
|
+
- A pandas dataframe with index given by ['circuit_i', 'cycle_depth'].
|
|
381
|
+
Columns always include "sampled_probs". If `combinations_by_layer` is
|
|
382
|
+
not `None` and you are doing parallel XEB, additional metadata columns
|
|
383
|
+
will be attached to the returned DataFrame.
|
|
379
384
|
|
|
380
385
|
Raises:
|
|
381
386
|
ValueError: If qubits are not specified and the sampler has no device.
|
|
@@ -420,6 +425,52 @@ def parallel_two_qubit_xeb(
|
|
|
420
425
|
sampled_df=sampled_df, circuits=circuit_library, cycle_depths=cycle_depths
|
|
421
426
|
)
|
|
422
427
|
|
|
428
|
+
return fids, circuit_library, sampled_df
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
def parallel_two_qubit_xeb(
|
|
432
|
+
sampler: 'cirq.Sampler',
|
|
433
|
+
qubits: Optional[Sequence['cirq.GridQubit']] = None,
|
|
434
|
+
entangling_gate: 'cirq.Gate' = ops.CZ,
|
|
435
|
+
n_repetitions: int = 10**4,
|
|
436
|
+
n_combinations: int = 10,
|
|
437
|
+
n_circuits: int = 20,
|
|
438
|
+
cycle_depths: Sequence[int] = tuple(np.arange(3, 100, 20)),
|
|
439
|
+
random_state: 'cirq.RANDOM_STATE_OR_SEED_LIKE' = None,
|
|
440
|
+
ax: Optional[plt.Axes] = None,
|
|
441
|
+
**plot_kwargs,
|
|
442
|
+
) -> TwoQubitXEBResult:
|
|
443
|
+
"""A convenience method that runs the full XEB workflow.
|
|
444
|
+
|
|
445
|
+
Args:
|
|
446
|
+
sampler: The quantum engine or simulator to run the circuits.
|
|
447
|
+
qubits: Qubits under test. If none, uses all qubits on the sampler's device.
|
|
448
|
+
entangling_gate: The entangling gate to use.
|
|
449
|
+
n_repetitions: The number of repetitions to use.
|
|
450
|
+
n_combinations: The number of combinations to generate.
|
|
451
|
+
n_circuits: The number of circuits to generate.
|
|
452
|
+
cycle_depths: The cycle depths to use.
|
|
453
|
+
random_state: The random state to use.
|
|
454
|
+
ax: the plt.Axes to plot the device layout on. If not given,
|
|
455
|
+
no plot is created.
|
|
456
|
+
**plot_kwargs: Arguments to be passed to 'plt.Axes.plot'.
|
|
457
|
+
Returns:
|
|
458
|
+
A TwoQubitXEBResult object representing the results of the experiment.
|
|
459
|
+
Raises:
|
|
460
|
+
ValueError: If qubits are not specified and the sampler has no device.
|
|
461
|
+
"""
|
|
462
|
+
fids, *_ = parallel_xeb_workflow(
|
|
463
|
+
sampler=sampler,
|
|
464
|
+
qubits=qubits,
|
|
465
|
+
entangling_gate=entangling_gate,
|
|
466
|
+
n_repetitions=n_repetitions,
|
|
467
|
+
n_combinations=n_combinations,
|
|
468
|
+
n_circuits=n_circuits,
|
|
469
|
+
cycle_depths=cycle_depths,
|
|
470
|
+
random_state=random_state,
|
|
471
|
+
ax=ax,
|
|
472
|
+
**plot_kwargs,
|
|
473
|
+
)
|
|
423
474
|
return TwoQubitXEBResult(fit_exponential_decays(fids))
|
|
424
475
|
|
|
425
476
|
|
cirq/experiments/xeb_fitting.py
CHANGED
|
@@ -146,6 +146,69 @@ class XEBCharacterizationOptions(ABC):
|
|
|
146
146
|
"""Return an initial Nelder-Mead simplex and the names for each parameter."""
|
|
147
147
|
|
|
148
148
|
|
|
149
|
+
def _try_defaults_from_unitary(gate: 'cirq.Gate') -> Optional[Dict[str, 'cirq.TParamVal']]:
|
|
150
|
+
r"""Try to figure out the PhasedFSim angles from the unitary of the gate.
|
|
151
|
+
|
|
152
|
+
The unitary of a PhasedFSimGate has the form:
|
|
153
|
+
$$
|
|
154
|
+
\begin{bmatrix}
|
|
155
|
+
1 & 0 & 0 & 0 \\
|
|
156
|
+
0 & e^{-i \gamma - i \zeta} \cos(\theta) & -i e^{-i \gamma + i\chi} \sin(\theta) & 0 \\
|
|
157
|
+
0 & -i e^{-i \gamma - i \chi} \sin(\theta) & e^{-i \gamma + i \zeta} \cos(\theta) & 0 \\
|
|
158
|
+
0 & 0 & 0 & e^{-2i \gamma - i \phi}
|
|
159
|
+
\end{bmatrix}
|
|
160
|
+
$$
|
|
161
|
+
That's the information about the five angles $\theta, \phi, \gamma, \zeta, \chi$ is encoded in
|
|
162
|
+
the submatrix unitary[1:3, 1:3] and the element u[3][3]. With some algebra, we can isolate each
|
|
163
|
+
of the angles as an argument of a combination of those elements (and potentially other angles).
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
A cirq gate.
|
|
167
|
+
|
|
168
|
+
Returns:
|
|
169
|
+
A dictionary mapping angles to values or None if the gate doesn't have a unitary or if it
|
|
170
|
+
can't be represented by a PhasedFSimGate.
|
|
171
|
+
"""
|
|
172
|
+
u = protocols.unitary(gate, default=None)
|
|
173
|
+
if u is None:
|
|
174
|
+
return None
|
|
175
|
+
|
|
176
|
+
gamma = np.angle(u[1, 1] * u[2, 2] - u[1, 2] * u[2, 1]) / -2
|
|
177
|
+
phi = -np.angle(u[3, 3]) - 2 * gamma
|
|
178
|
+
phased_cos_theta_2 = u[1, 1] * u[2, 2]
|
|
179
|
+
if phased_cos_theta_2 == 0:
|
|
180
|
+
# The zeta phase is multiplied with cos(theta),
|
|
181
|
+
# so if cos(theta) is zero then any value is possible.
|
|
182
|
+
zeta = 0
|
|
183
|
+
else:
|
|
184
|
+
zeta = np.angle(u[2, 2] / u[1, 1]) / 2
|
|
185
|
+
|
|
186
|
+
phased_sin_theta_2 = u[1, 2] * u[2, 1]
|
|
187
|
+
if phased_sin_theta_2 == 0:
|
|
188
|
+
# The chi phase is multiplied with sin(theta),
|
|
189
|
+
# so if sin(theta) is zero then any value is possible.
|
|
190
|
+
chi = 0
|
|
191
|
+
else:
|
|
192
|
+
chi = np.angle(u[1, 2] / u[2, 1]) / 2
|
|
193
|
+
|
|
194
|
+
theta = np.angle(np.exp(1j * (gamma + zeta)) * u[1, 1] - np.exp(1j * (gamma - chi)) * u[1, 2])
|
|
195
|
+
|
|
196
|
+
if np.allclose(
|
|
197
|
+
u,
|
|
198
|
+
protocols.unitary(
|
|
199
|
+
ops.PhasedFSimGate(theta=theta, phi=phi, chi=chi, zeta=zeta, gamma=gamma)
|
|
200
|
+
),
|
|
201
|
+
):
|
|
202
|
+
return {
|
|
203
|
+
'theta_default': theta,
|
|
204
|
+
'phi_default': phi,
|
|
205
|
+
'gamma_default': gamma,
|
|
206
|
+
'zeta_default': zeta,
|
|
207
|
+
'chi_default': chi,
|
|
208
|
+
}
|
|
209
|
+
return None
|
|
210
|
+
|
|
211
|
+
|
|
149
212
|
def phased_fsim_angles_from_gate(gate: 'cirq.Gate') -> Dict[str, 'cirq.TParamVal']:
|
|
150
213
|
"""For a given gate, return a dictionary mapping '{angle}_default' to its noiseless value
|
|
151
214
|
for the five PhasedFSim angles."""
|
|
@@ -175,6 +238,11 @@ def phased_fsim_angles_from_gate(gate: 'cirq.Gate') -> Dict[str, 'cirq.TParamVal
|
|
|
175
238
|
'phi_default': gate.phi,
|
|
176
239
|
}
|
|
177
240
|
|
|
241
|
+
# Handle all gates that can be represented using an FSimGate.
|
|
242
|
+
from_unitary = _try_defaults_from_unitary(gate)
|
|
243
|
+
if from_unitary is not None:
|
|
244
|
+
return from_unitary
|
|
245
|
+
|
|
178
246
|
raise ValueError(f"Unknown default angles for {gate}.")
|
|
179
247
|
|
|
180
248
|
|
|
@@ -580,15 +648,6 @@ def _fit_exponential_decay(
|
|
|
580
648
|
return a, layer_fid, a_std, layer_fid_std
|
|
581
649
|
|
|
582
650
|
|
|
583
|
-
def _one_unique(df, name, default):
|
|
584
|
-
"""Helper function to assert that there's one unique value in a column and return it."""
|
|
585
|
-
if name not in df.columns:
|
|
586
|
-
return default
|
|
587
|
-
vals = df[name].unique()
|
|
588
|
-
assert len(vals) == 1, name
|
|
589
|
-
return vals[0]
|
|
590
|
-
|
|
591
|
-
|
|
592
651
|
def fit_exponential_decays(fidelities_df: pd.DataFrame) -> pd.DataFrame:
|
|
593
652
|
"""Fit exponential decay curves to a fidelities DataFrame.
|
|
594
653
|
|
|
@@ -32,6 +32,7 @@ from cirq.experiments.xeb_fitting import (
|
|
|
32
32
|
fit_exponential_decays,
|
|
33
33
|
before_and_after_characterization,
|
|
34
34
|
XEBPhasedFSimCharacterizationOptions,
|
|
35
|
+
phased_fsim_angles_from_gate,
|
|
35
36
|
)
|
|
36
37
|
from cirq.experiments.xeb_sampling import sample_2q_xeb_circuits
|
|
37
38
|
|
|
@@ -354,7 +355,7 @@ def test_options_with_defaults_from_gate():
|
|
|
354
355
|
assert options.zeta_default == 0.0
|
|
355
356
|
|
|
356
357
|
with pytest.raises(ValueError):
|
|
357
|
-
_ = XEBPhasedFSimCharacterizationOptions().with_defaults_from_gate(cirq.
|
|
358
|
+
_ = XEBPhasedFSimCharacterizationOptions().with_defaults_from_gate(cirq.XX)
|
|
358
359
|
|
|
359
360
|
|
|
360
361
|
def test_options_defaults_set():
|
|
@@ -395,3 +396,34 @@ def test_options_defaults_set():
|
|
|
395
396
|
phi_default=0.0,
|
|
396
397
|
)
|
|
397
398
|
assert o3.defaults_set() is True
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
def _random_angles(n, seed):
|
|
402
|
+
rng = np.random.default_rng(seed)
|
|
403
|
+
r = 2 * rng.random((n, 5)) - 1
|
|
404
|
+
return np.pi * r
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
@pytest.mark.parametrize(
|
|
408
|
+
'gate',
|
|
409
|
+
[
|
|
410
|
+
cirq.CZ,
|
|
411
|
+
cirq.SQRT_ISWAP,
|
|
412
|
+
cirq.SQRT_ISWAP_INV,
|
|
413
|
+
cirq.ISWAP,
|
|
414
|
+
cirq.ISWAP_INV,
|
|
415
|
+
cirq.cphase(0.1),
|
|
416
|
+
cirq.CZ**0.2,
|
|
417
|
+
]
|
|
418
|
+
+ [cirq.PhasedFSimGate(*r) for r in _random_angles(10, 0)],
|
|
419
|
+
)
|
|
420
|
+
def test_phased_fsim_angles_from_gate(gate):
|
|
421
|
+
angles = phased_fsim_angles_from_gate(gate)
|
|
422
|
+
angles = {k.removesuffix('_default'): v for k, v in angles.items()}
|
|
423
|
+
phasedfsim = cirq.PhasedFSimGate(**angles)
|
|
424
|
+
np.testing.assert_allclose(cirq.unitary(phasedfsim), cirq.unitary(gate), atol=1e-9)
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
def test_phased_fsim_angles_from_gate_unsupporet_gate():
|
|
428
|
+
with pytest.raises(ValueError, match='Unknown default angles'):
|
|
429
|
+
_ = phased_fsim_angles_from_gate(cirq.testing.TwoQubitGate())
|
|
@@ -154,7 +154,7 @@ def _parse_formula_using_token_map(
|
|
|
154
154
|
a = vals.pop()
|
|
155
155
|
# Note: vals seems to be _HangingToken
|
|
156
156
|
# func operates on _ResolvedTokens. Ignoring type issues for now.
|
|
157
|
-
vals.append(op.func(a, b))
|
|
157
|
+
vals.append(op.func(a, b))
|
|
158
158
|
|
|
159
159
|
def close_paren() -> None:
|
|
160
160
|
while True:
|
cirq/ops/common_gates_test.py
CHANGED
|
@@ -899,6 +899,8 @@ def test_cphase_unitary(angle_rads, expected_unitary):
|
|
|
899
899
|
np.testing.assert_allclose(cirq.unitary(cirq.cphase(angle_rads)), expected_unitary)
|
|
900
900
|
|
|
901
901
|
|
|
902
|
+
# TODO(#6663): fix this use case.
|
|
903
|
+
@pytest.mark.xfail
|
|
902
904
|
def test_parameterized_cphase():
|
|
903
905
|
assert cirq.cphase(sympy.pi) == cirq.CZ
|
|
904
906
|
assert cirq.cphase(sympy.pi / 2) == cirq.CZ**0.5
|
cirq/ops/global_phase_op.py
CHANGED
|
@@ -28,7 +28,7 @@ from cirq.type_workarounds import NotImplementedType
|
|
|
28
28
|
class GlobalPhaseGate(raw_types.Gate):
|
|
29
29
|
def __init__(self, coefficient: 'cirq.TParamValComplex', atol: float = 1e-8) -> None:
|
|
30
30
|
if not isinstance(coefficient, sympy.Basic):
|
|
31
|
-
if abs(1 - abs(coefficient)) > atol:
|
|
31
|
+
if abs(1 - abs(coefficient)) > atol:
|
|
32
32
|
raise ValueError(f'Coefficient is not unitary: {coefficient!r}')
|
|
33
33
|
self._coefficient = coefficient
|
|
34
34
|
|
|
@@ -402,10 +402,10 @@ def test_run_param_resolver(dtype: Type[np.complexfloating], split: bool):
|
|
|
402
402
|
cirq.measure(q1),
|
|
403
403
|
)
|
|
404
404
|
param_resolver = {'b0': b0, 'b1': b1}
|
|
405
|
-
result = simulator.run(circuit, param_resolver=param_resolver)
|
|
405
|
+
result = simulator.run(circuit, param_resolver=param_resolver)
|
|
406
406
|
np.testing.assert_equal(result.measurements, {'q(0)': [[b0]], 'q(1)': [[b1]]})
|
|
407
407
|
# pylint: disable=line-too-long
|
|
408
|
-
np.testing.assert_equal(result.params, cirq.ParamResolver(param_resolver))
|
|
408
|
+
np.testing.assert_equal(result.params, cirq.ParamResolver(param_resolver))
|
|
409
409
|
|
|
410
410
|
|
|
411
411
|
@pytest.mark.parametrize('dtype', [np.complex64, np.complex128])
|
|
@@ -498,11 +498,11 @@ def test_simulate_param_resolver(dtype: Type[np.complexfloating], split: bool):
|
|
|
498
498
|
(cirq.X ** sympy.Symbol('b0'))(q0), (cirq.X ** sympy.Symbol('b1'))(q1)
|
|
499
499
|
)
|
|
500
500
|
resolver = {'b0': b0, 'b1': b1}
|
|
501
|
-
result = simulator.simulate(circuit, param_resolver=resolver)
|
|
501
|
+
result = simulator.simulate(circuit, param_resolver=resolver)
|
|
502
502
|
expected_state = np.zeros(shape=(2, 2))
|
|
503
503
|
expected_state[b0][b1] = 1.0
|
|
504
504
|
np.testing.assert_equal(result.final_state_vector, np.reshape(expected_state, 4))
|
|
505
|
-
assert result.params == cirq.ParamResolver(resolver)
|
|
505
|
+
assert result.params == cirq.ParamResolver(resolver)
|
|
506
506
|
assert len(result.measurements) == 0
|
|
507
507
|
|
|
508
508
|
|
|
@@ -225,8 +225,7 @@ class _ParamFlattener(resolver.ParamResolver):
|
|
|
225
225
|
params = param_dict if param_dict else {}
|
|
226
226
|
# TODO: Support complex values for typing below.
|
|
227
227
|
symbol_params: resolver.ParamDictType = {
|
|
228
|
-
_ensure_not_str(param): _ensure_not_str(val)
|
|
229
|
-
for param, val in params.items()
|
|
228
|
+
_ensure_not_str(param): _ensure_not_str(val) for param, val in params.items()
|
|
230
229
|
}
|
|
231
230
|
super().__init__(symbol_params)
|
|
232
231
|
if get_param_name is None:
|
cirq/study/resolver.py
CHANGED
|
@@ -139,10 +139,10 @@ class ParamResolver:
|
|
|
139
139
|
if isinstance(param_value, str):
|
|
140
140
|
param_value = sympy.Symbol(param_value)
|
|
141
141
|
elif not isinstance(param_value, sympy.Basic):
|
|
142
|
-
return value
|
|
142
|
+
return value
|
|
143
143
|
if recursive:
|
|
144
144
|
param_value = self._value_of_recursive(value)
|
|
145
|
-
return param_value
|
|
145
|
+
return param_value
|
|
146
146
|
|
|
147
147
|
if not isinstance(value, sympy.Basic):
|
|
148
148
|
# No known way to resolve this variable, return unchanged.
|
|
@@ -207,7 +207,7 @@ class ParamResolver:
|
|
|
207
207
|
|
|
208
208
|
# There isn't a full evaluation for 'value' yet. Until it's ready,
|
|
209
209
|
# map value to None to identify loops in component evaluation.
|
|
210
|
-
self._deep_eval_map[value] = _RECURSION_FLAG
|
|
210
|
+
self._deep_eval_map[value] = _RECURSION_FLAG
|
|
211
211
|
|
|
212
212
|
v = self.value_of(value, recursive=False)
|
|
213
213
|
if v == value:
|
|
@@ -220,10 +220,8 @@ class ParamResolver:
|
|
|
220
220
|
new_dict: Dict['cirq.TParamKey', Union[float, str, sympy.Symbol, sympy.Expr]] = {
|
|
221
221
|
k: k for k in resolver
|
|
222
222
|
}
|
|
223
|
-
new_dict.update({k: self.value_of(k, recursive) for k in self})
|
|
224
|
-
new_dict.update(
|
|
225
|
-
{k: resolver.value_of(v, recursive) for k, v in new_dict.items()} # type: ignore[misc]
|
|
226
|
-
)
|
|
223
|
+
new_dict.update({k: self.value_of(k, recursive) for k in self})
|
|
224
|
+
new_dict.update({k: resolver.value_of(v, recursive) for k, v in new_dict.items()})
|
|
227
225
|
if recursive and self._param_dict:
|
|
228
226
|
new_resolver = ParamResolver(cast(ParamDictType, new_dict))
|
|
229
227
|
# Resolve down to single-step mappings.
|
cirq/study/sweepable.py
CHANGED
|
@@ -65,11 +65,7 @@ def to_sweeps(sweepable: Sweepable, metadata: Optional[dict] = None) -> List[Swe
|
|
|
65
65
|
product_sweep = dict_to_product_sweep(sweepable)
|
|
66
66
|
return [_resolver_to_sweep(resolver, metadata) for resolver in product_sweep]
|
|
67
67
|
if isinstance(sweepable, Iterable) and not isinstance(sweepable, str):
|
|
68
|
-
return [
|
|
69
|
-
sweep
|
|
70
|
-
for item in sweepable
|
|
71
|
-
for sweep in to_sweeps(item, metadata) # type: ignore[arg-type]
|
|
72
|
-
]
|
|
68
|
+
return [sweep for item in sweepable for sweep in to_sweeps(item, metadata)]
|
|
73
69
|
raise TypeError(f'Unrecognized sweepable type: {type(sweepable)}.\nsweepable: {sweepable}')
|
|
74
70
|
|
|
75
71
|
|
cirq/study/sweeps.py
CHANGED
|
@@ -589,10 +589,7 @@ def dict_to_product_sweep(factor_dict: ProductOrZipSweepLike) -> Product:
|
|
|
589
589
|
Cartesian product of the sweeps.
|
|
590
590
|
"""
|
|
591
591
|
return Product(
|
|
592
|
-
*(
|
|
593
|
-
Points(k, v if isinstance(v, Sequence) else [v]) # type: ignore
|
|
594
|
-
for k, v in factor_dict.items()
|
|
595
|
-
)
|
|
592
|
+
*(Points(k, v if isinstance(v, Sequence) else [v]) for k, v in factor_dict.items())
|
|
596
593
|
)
|
|
597
594
|
|
|
598
595
|
|
cirq/vis/heatmap.py
CHANGED
|
@@ -298,7 +298,6 @@ class Heatmap:
|
|
|
298
298
|
show_plot = not ax
|
|
299
299
|
if not ax:
|
|
300
300
|
fig, ax = plt.subplots(figsize=(8, 8))
|
|
301
|
-
ax = cast(plt.Axes, ax)
|
|
302
301
|
original_config = copy.deepcopy(self._config)
|
|
303
302
|
self.update_config(**kwargs)
|
|
304
303
|
|
|
@@ -416,7 +415,6 @@ class TwoQubitInteractionHeatmap(Heatmap):
|
|
|
416
415
|
show_plot = not ax
|
|
417
416
|
if not ax:
|
|
418
417
|
fig, ax = plt.subplots(figsize=(8, 8))
|
|
419
|
-
ax = cast(plt.Axes, ax)
|
|
420
418
|
original_config = copy.deepcopy(self._config)
|
|
421
419
|
self.update_config(**kwargs)
|
|
422
420
|
qubits = set([q for qubits in self._value_map.keys() for q in qubits])
|
cirq/vis/state_histogram.py
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
"""Tool to visualize the results of a study."""
|
|
16
16
|
|
|
17
|
-
from typing import
|
|
17
|
+
from typing import Optional, Sequence, SupportsFloat, Union
|
|
18
18
|
import collections
|
|
19
19
|
import numpy as np
|
|
20
20
|
import matplotlib.pyplot as plt
|
|
@@ -87,7 +87,6 @@ def plot_state_histogram(
|
|
|
87
87
|
show_fig = not ax
|
|
88
88
|
if not ax:
|
|
89
89
|
fig, ax = plt.subplots(1, 1)
|
|
90
|
-
ax = cast(plt.Axes, ax)
|
|
91
90
|
if isinstance(data, result.Result):
|
|
92
91
|
values = get_state_histogram(data)
|
|
93
92
|
elif isinstance(data, collections.Counter):
|
{cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cirq-core
|
|
3
|
-
Version: 1.5.0.
|
|
3
|
+
Version: 1.5.0.dev20240710220908
|
|
4
4
|
Summary: A framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.
|
|
5
5
|
Home-page: http://github.com/quantumlib/cirq
|
|
6
6
|
Author: The Cirq Developers
|
{cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/RECORD
RENAMED
|
@@ -4,8 +4,8 @@ cirq/_compat_test.py,sha256=Qq3ZcfgD-Nb81cEppQdJqhAyrVqXKtfXZYGXT0p-Wh0,34718
|
|
|
4
4
|
cirq/_doc.py,sha256=yDyWUD_2JDS0gShfGRb-rdqRt9-WeL7DhkqX7np0Nko,2879
|
|
5
5
|
cirq/_import.py,sha256=p9gMHJscbtDDkfHOaulvd3Aer0pwUF5AXpL89XR8dNw,8402
|
|
6
6
|
cirq/_import_test.py,sha256=6K_v0riZJXOXUphHNkGA8MY-JcmGlezFaGmvrNhm3OQ,1015
|
|
7
|
-
cirq/_version.py,sha256=
|
|
8
|
-
cirq/_version_test.py,sha256=
|
|
7
|
+
cirq/_version.py,sha256=ow3fcIM6yzwNASceUWYIGlTgHkysbg9vO85xoQgtdjs,1206
|
|
8
|
+
cirq/_version_test.py,sha256=wmmA2WCnJ-WU8DUtbgS_wyvjUMWTnyl9B8RcZvNYxrI,147
|
|
9
9
|
cirq/conftest.py,sha256=X7yLFL8GLhg2CjPw0hp5e_dGASfvHx1-QT03aUbhKJw,1168
|
|
10
10
|
cirq/json_resolver_cache.py,sha256=ytePZtNZgKjOF2NiVpUTuotB-JKZmQNOFIFdvXqsxHw,13271
|
|
11
11
|
cirq/py.typed,sha256=VFSlmh_lNwnaXzwY-ZuW-C2Ws5PkuDoVgBdNCs0jXJE,63
|
|
@@ -19,7 +19,7 @@ cirq/circuits/_bucket_priority_queue.py,sha256=hxFuii2fKD8G6EKT_aVLEsA7FmSfqFXPw
|
|
|
19
19
|
cirq/circuits/_bucket_priority_queue_test.py,sha256=t6u_hG7K2e2WKWrgCsKxNRtp4ghKwiCrp0_WSY0W25k,5288
|
|
20
20
|
cirq/circuits/circuit.py,sha256=XIwQh9Gkb8ya4Q2Q92EfsAUh9W6YZemcGqlu1cZCi2s,114620
|
|
21
21
|
cirq/circuits/circuit_operation.py,sha256=D4u8jDD4fGOca1xnZPN1obuKTIouXENUfnxOF2JrwgU,34375
|
|
22
|
-
cirq/circuits/circuit_operation_test.py,sha256=
|
|
22
|
+
cirq/circuits/circuit_operation_test.py,sha256=u-23dDZ6htNSiP8oXR67rmtb-XDBmObvbJjJrARhmis,44646
|
|
23
23
|
cirq/circuits/circuit_test.py,sha256=sRZC558PZZZUHByZ1R00_j8ez6TL9l5ZmT8YLGopH_Q,160117
|
|
24
24
|
cirq/circuits/frozen_circuit.py,sha256=_0SkmIiQ4UjIug-k_iO00ulDFoFnxmAHvXX2I2HHN8k,9262
|
|
25
25
|
cirq/circuits/frozen_circuit_test.py,sha256=rHyii8hLhOQ6jdA8dC1OcYPGnyeBC4uY5Q53XspkkCk,4133
|
|
@@ -184,22 +184,22 @@ cirq/experiments/n_qubit_tomography.py,sha256=9M_kf2-1hvFxfZOWND7ACwHYgD9SJU5nYF
|
|
|
184
184
|
cirq/experiments/n_qubit_tomography_test.py,sha256=wHfV2OpGYSDXfoyEh-B5dc1Dv8sxKNFbUoHyjIWZoFk,4362
|
|
185
185
|
cirq/experiments/purity_estimation.py,sha256=6D1UwFlQRzHeajXMTyTUfBYAc0jJQ8Cfz4lteFKeUaM,2467
|
|
186
186
|
cirq/experiments/purity_estimation_test.py,sha256=xlBGp0NOBYR0IhTy3bckHPgi81FkGSGxKqk9hwXG-I8,923
|
|
187
|
-
cirq/experiments/qubit_characterizations.py,sha256=
|
|
187
|
+
cirq/experiments/qubit_characterizations.py,sha256=yimdW20qqP4iP0wyO83W6VSQWDToJKO6Nx4okBxjn_I,36726
|
|
188
188
|
cirq/experiments/qubit_characterizations_test.py,sha256=b_ONqxyW6s01Ts8T65BEdb4e8Xy24Qp4zTGXWesL0ic,9733
|
|
189
189
|
cirq/experiments/random_quantum_circuit_generation.py,sha256=R_w7z35plUHEYBY0-F80bPcWJSSSjNQDaP2GbxVBEZg,28143
|
|
190
190
|
cirq/experiments/random_quantum_circuit_generation_test.py,sha256=1rvgN8-Ajedn_70FyYKVzjvzR6NVpHj6KQgo6tra-Jc,15995
|
|
191
191
|
cirq/experiments/readout_confusion_matrix.py,sha256=jIyikXfYWGbVrOjU1pbV2VZL-m03VTFYS18KT1Cf2qk,21404
|
|
192
192
|
cirq/experiments/readout_confusion_matrix_test.py,sha256=ETvKHVuJWvq8KuL0l6w22UOfZHhBNH-TVeWAKqjSQEc,10632
|
|
193
|
-
cirq/experiments/single_qubit_readout_calibration.py,sha256=
|
|
193
|
+
cirq/experiments/single_qubit_readout_calibration.py,sha256=x6fF6GqU1D4YY05YvW1DFlTlbjC12_bfj7W2psd75-U,14722
|
|
194
194
|
cirq/experiments/single_qubit_readout_calibration_test.py,sha256=_002QXj2rIFHkH3vw9iTVMh45vCPuCI_fTqOUK8uMe4,7718
|
|
195
195
|
cirq/experiments/t1_decay_experiment.py,sha256=ealdmc_RTE__z1YUcaDEncDzQOaiT0K6IRWB7lNtPfs,7087
|
|
196
196
|
cirq/experiments/t1_decay_experiment_test.py,sha256=Pgbm-37JiCdw9iQg2OaXVvs72xGWV2629CgsTQlLQnw,9139
|
|
197
197
|
cirq/experiments/t2_decay_experiment.py,sha256=lTgZ9yJ7Fk9_ozUCHysQn1qKrMQwTpsgEv-QnvsEif0,19158
|
|
198
198
|
cirq/experiments/t2_decay_experiment_test.py,sha256=DFR0BGn0Id4qNPfqIExj70TEAqf7Vrc8eK91Wj0YKTc,15031
|
|
199
|
-
cirq/experiments/two_qubit_xeb.py,sha256=
|
|
199
|
+
cirq/experiments/two_qubit_xeb.py,sha256=NU8JsM6yqpTfWQCPf6dCAlD89MmYpprI5kVz2bxAJhI,19879
|
|
200
200
|
cirq/experiments/two_qubit_xeb_test.py,sha256=Tlr32vuJpyepkMBVVkN6ipjRyDr8DIixfBumEeGXzDM,10073
|
|
201
|
-
cirq/experiments/xeb_fitting.py,sha256=
|
|
202
|
-
cirq/experiments/xeb_fitting_test.py,sha256=
|
|
201
|
+
cirq/experiments/xeb_fitting.py,sha256=tD678gTY495cDA6b55YIPdwq22VQFbB2AlnkeX_X9P0,29332
|
|
202
|
+
cirq/experiments/xeb_fitting_test.py,sha256=LEgC76mYFwsX-ZqRqg2j85EiHACq8nK9ITrcl-TgeiA,15286
|
|
203
203
|
cirq/experiments/xeb_sampling.py,sha256=6ZOidGi7Kt6p4cMQCjK7qQuIUXVHCYl47B2GnL8M-Bw,14987
|
|
204
204
|
cirq/experiments/xeb_sampling_test.py,sha256=0XkQGvcURsug3IblE_wZrHVDoOQV3WuQilrqCJbDHjI,6784
|
|
205
205
|
cirq/experiments/xeb_simulation.py,sha256=DpCWVxzWnZvjrdfgIbwR9rWenehqz7Su3LPIVHoK7gI,5055
|
|
@@ -228,7 +228,7 @@ cirq/interop/quirk/cells/input_rotation_cells.py,sha256=mo75TGkbtD_phNPM-ZPFs2VJ
|
|
|
228
228
|
cirq/interop/quirk/cells/input_rotation_cells_test.py,sha256=1jmEBHbHpmSSB3grPbn8LFzMEwkc6Or3kAULxVofTEg,6318
|
|
229
229
|
cirq/interop/quirk/cells/measurement_cells.py,sha256=1jLtGMHCbxfNN9r5E_GWPIqz7fLdNKJK0WgrcjXsS3I,1504
|
|
230
230
|
cirq/interop/quirk/cells/measurement_cells_test.py,sha256=AYYzjn3BrQbk-Rg1L3WjCOQN9eGLRQzqwYr6i8UH0Fk,1574
|
|
231
|
-
cirq/interop/quirk/cells/parse.py,sha256
|
|
231
|
+
cirq/interop/quirk/cells/parse.py,sha256=lUN0cioK9-1iDnKmrC1X1wpdPwbDwqoEI9QJpF2uFGY,11755
|
|
232
232
|
cirq/interop/quirk/cells/parse_test.py,sha256=xCTS6lKv4i8HAuTSivH2Tjwun1yMQbnl7HLfB-nEKY4,7473
|
|
233
233
|
cirq/interop/quirk/cells/qubit_permutation_cells.py,sha256=F9Br_SFB1ys4pP-hYlpPRMXH_4Cd8LePtOl4aTE_p8g,3390
|
|
234
234
|
cirq/interop/quirk/cells/qubit_permutation_cells_test.py,sha256=n0veQKx0EdFzu_gdY_AVjwqyoHae7JGkDFX6qhLeGrQ,4460
|
|
@@ -276,7 +276,7 @@ cirq/ops/common_channels_test.py,sha256=EL_PxbqD3KPC8ioihiukhmW8bUdclqqigKoFyUQp
|
|
|
276
276
|
cirq/ops/common_gate_families.py,sha256=e5M8wlDYtdrpWBrhdns6iizIvSqzfxDyIsBdxt8hVMc,8611
|
|
277
277
|
cirq/ops/common_gate_families_test.py,sha256=Oo3C7BPO3gt3ePuqwsI_lx_lY38et8Ps4AuVydX2Aww,5275
|
|
278
278
|
cirq/ops/common_gates.py,sha256=YMcadPVRhrvkwYwm6-_TNYM9sz9TY7KSi0g7FvBTeCk,58075
|
|
279
|
-
cirq/ops/common_gates_test.py,sha256=
|
|
279
|
+
cirq/ops/common_gates_test.py,sha256=n4Ud_5t-iB2RzMpPSwXngeU1rR198gk0-J7R2xUxp6Q,46271
|
|
280
280
|
cirq/ops/control_values.py,sha256=nNDN6pgz_aWkUfrpOZ9zHHD42AGFaplWhVQj9rmJwbQ,13410
|
|
281
281
|
cirq/ops/control_values_test.py,sha256=iDtdQjL39u80MaR16XLp00LRZqWgJqC54cIeADWf0IY,12906
|
|
282
282
|
cirq/ops/controlled_gate.py,sha256=uVTZk6pA1ZpEwbVggLeXyAFq18_QJ38hWYhk9GbvQnc,14253
|
|
@@ -299,7 +299,7 @@ cirq/ops/gate_operation.py,sha256=Fa3O_-bLGAtFznYv-b_RWAn2X4JgvM3yGbqbLcsJkgM,13
|
|
|
299
299
|
cirq/ops/gate_operation_test.py,sha256=ftd-GZxvOtzFS1L153K89_PV1volGroU7G5nFGp9afE,17507
|
|
300
300
|
cirq/ops/gateset.py,sha256=Tx1CIlve0RhnX9jHZsCVw7EHtfC6b3drbBncmCEtcsQ,21634
|
|
301
301
|
cirq/ops/gateset_test.py,sha256=BY5UJ1k3NC0jz0d4yocyO1qcQU6e4UbN9mapWE7z7AM,16361
|
|
302
|
-
cirq/ops/global_phase_op.py,sha256=
|
|
302
|
+
cirq/ops/global_phase_op.py,sha256=XYnzmquhGaVY91oYm9RHo1qbX1eOx2ZqLPzLsl8jyQw,4842
|
|
303
303
|
cirq/ops/global_phase_op_test.py,sha256=FjtUsohIYabTtiGytvPQw9Rzkqd6dlT7qrj4oltDbTI,9814
|
|
304
304
|
cirq/ops/greedy_qubit_manager.py,sha256=O9qY8GB1KGxm3B7JEjq50sGVD51bNwTSupJpi3WUeAc,4039
|
|
305
305
|
cirq/ops/greedy_qubit_manager_test.py,sha256=iVZDKes-r08raTiJHpYNmP-Dp89ok3hIU-QboL2BHdw,3300
|
|
@@ -892,7 +892,7 @@ cirq/sim/classical_simulator_test.py,sha256=TxPhVNLoOBPwTlyUCOQoqwid76ZBxQfmN9IP
|
|
|
892
892
|
cirq/sim/density_matrix_simulation_state.py,sha256=XRxKsKq13OlXR7429WBbKps_jmOoCBRa6U9PzYrYrTc,14065
|
|
893
893
|
cirq/sim/density_matrix_simulation_state_test.py,sha256=uqSKZrXEPLYO7R3UW2d1y_Yq6CcyJ0drTSCjGbtzBuc,4369
|
|
894
894
|
cirq/sim/density_matrix_simulator.py,sha256=-BIY8JjmzAJDmF6tWcv5lbH1yS7UQIlKicU1AJgttfA,17462
|
|
895
|
-
cirq/sim/density_matrix_simulator_test.py,sha256=
|
|
895
|
+
cirq/sim/density_matrix_simulator_test.py,sha256=Wnj0gWABa-EJ6zP5z9G4fyTN7641Q5OrAo2u1FkY1QQ,61122
|
|
896
896
|
cirq/sim/density_matrix_utils.py,sha256=9Fbzh0c9hzwEff383YwRit2K_tvlpT4Vyq3rjLijRyA,10273
|
|
897
897
|
cirq/sim/density_matrix_utils_test.py,sha256=ZJpeolcie9rSIvrWhxcGhzr6Ojyn8me00rfrDwn4y-M,14225
|
|
898
898
|
cirq/sim/mux.py,sha256=gnQGQmArs0LdLnVmxAesOTnVmaudZmgIH6JUatGUXtE,12509
|
|
@@ -909,7 +909,7 @@ cirq/sim/simulator_base.py,sha256=mAcIKPT6lsIvAJFdSC4a-cGQFU0kegqbL80K1K7mlFM,18
|
|
|
909
909
|
cirq/sim/simulator_base_test.py,sha256=Ik_28QV2Pzdc4tGxYMAVnGrNG1IWMiwuKUJcaCeuG7M,14955
|
|
910
910
|
cirq/sim/simulator_test.py,sha256=9cHMoY7M5_82gfeBsCg6O0PnictzZu172vQAgUngJqA,18119
|
|
911
911
|
cirq/sim/sparse_simulator.py,sha256=OvVjqNk5Kb92DM8Nrdw1BGOB7GFlT6yiXwIPpAcLV7I,12854
|
|
912
|
-
cirq/sim/sparse_simulator_test.py,sha256=
|
|
912
|
+
cirq/sim/sparse_simulator_test.py,sha256=gv2SxYQL93j1xoP4ocg0zmb9bUxW4Yo5nJxOysuRGkw,53555
|
|
913
913
|
cirq/sim/state_vector.py,sha256=N6N9EELlW66UaLTBaq62ms0XkfIK7CzN9SBM7t52dXo,13428
|
|
914
914
|
cirq/sim/state_vector_simulation_state.py,sha256=e4it_DT1J-30S3OX_gfMJiWAttFaVOMEPQ-Y1ARWnDg,17616
|
|
915
915
|
cirq/sim/state_vector_simulation_state_test.py,sha256=UtGMIurlV6N74nX7qoVnGoRhwF35-ghDEIP7Mj5AXmI,9841
|
|
@@ -930,15 +930,15 @@ cirq/sim/clifford/stabilizer_simulation_state_test.py,sha256=dsphoXTaIwRCjprGJQi
|
|
|
930
930
|
cirq/sim/clifford/stabilizer_state_ch_form.py,sha256=yz9x7F72wfgqfSiEhoH2rJ-n14nsYMapMvpkhwidIOY,14032
|
|
931
931
|
cirq/sim/clifford/stabilizer_state_ch_form_test.py,sha256=FK0IsyrTfT6ZPZeBYmyPG2xpzUT7RG6P6UQw_61c6kU,3149
|
|
932
932
|
cirq/study/__init__.py,sha256=HCuFRBzCJGGDhtoHRzrnD5IWB8EnMrX-4M6AmVO0tP0,1220
|
|
933
|
-
cirq/study/flatten_expressions.py,sha256=
|
|
933
|
+
cirq/study/flatten_expressions.py,sha256=B-CQcj8eSWAJPIff5bQiZGobnYx8kB0c5WTLowfCVXo,15604
|
|
934
934
|
cirq/study/flatten_expressions_test.py,sha256=6e7pTkaBrZW-EmG4teZxcwemqnxCtJW3kq2KOlPcwW8,6078
|
|
935
|
-
cirq/study/resolver.py,sha256
|
|
935
|
+
cirq/study/resolver.py,sha256=YiX2VBxQScGJCm01ZkSyiJufxubKiMBN67oMOeXwgdQ,11631
|
|
936
936
|
cirq/study/resolver_test.py,sha256=QQe9Rr0z6qNbSWPEvCKd_DNka6454AWVKbG2J2DD1Wg,10228
|
|
937
937
|
cirq/study/result.py,sha256=KzjpjvDVCTFjMyq9r91pZSYdtcD1x3yj8jP_StlOSMg,19285
|
|
938
938
|
cirq/study/result_test.py,sha256=fq5BH78RswfTiYjMchJ4wEDDyaJu0QdJoGobMjKDeSI,15591
|
|
939
|
-
cirq/study/sweepable.py,sha256=
|
|
939
|
+
cirq/study/sweepable.py,sha256=hHBXn5MQZJawiiIXWZdn_qygbPeIFtt300wIqVHiYl8,4356
|
|
940
940
|
cirq/study/sweepable_test.py,sha256=ENv03_GJmbUc_ukJoqfgG-H5C_yyx1jCcvxohSMyQVU,5502
|
|
941
|
-
cirq/study/sweeps.py,sha256=
|
|
941
|
+
cirq/study/sweeps.py,sha256=zKz8hmLnpukNzUp7YjsrD8wEGxf2peX19522kUKUfWI,19850
|
|
942
942
|
cirq/study/sweeps_test.py,sha256=YdXHzZO10OHoPTU2ifmsfH7KByIJeeANy91AHqX8nwg,12135
|
|
943
943
|
cirq/testing/__init__.py,sha256=cACho8s-V5tNOjBcDUtr2DipQxQcbUgbr4MESJb4l1I,3870
|
|
944
944
|
cirq/testing/circuit_compare.py,sha256=nBQES45wLVThOqC3WrPrYKLQP7HQ2pH5DjlJ5bHkrtU,19176
|
|
@@ -1148,11 +1148,11 @@ cirq/value/value_equality_attr_test.py,sha256=k_nl5hWxo4yMO6WNu0wU68wyeb-RN9Ua_I
|
|
|
1148
1148
|
cirq/vis/__init__.py,sha256=e3Z1PI-Ay0hDHhIgFZEDwQIuO8C_aayNdL-EByF0J4o,1001
|
|
1149
1149
|
cirq/vis/density_matrix.py,sha256=kMAPcRh6f0ghZKSe86nB_2iFngrDsw0pNael1EZ5BEw,4819
|
|
1150
1150
|
cirq/vis/density_matrix_test.py,sha256=Xg41NQZBfoyrkaX3n9pW4q1LIxWpOW3Cr_I_Wx51GlQ,6965
|
|
1151
|
-
cirq/vis/heatmap.py,sha256=
|
|
1151
|
+
cirq/vis/heatmap.py,sha256=VVAj_aW0u4jRId2T1RUl_gL-xcxsG6jjKbf8qVJQl9A,17686
|
|
1152
1152
|
cirq/vis/heatmap_test.py,sha256=5kWIxJZZbZcc93XZrZ18lF2gRUleR1iqYbWfHs4cvu4,20531
|
|
1153
1153
|
cirq/vis/histogram.py,sha256=gQUrcebsk5wgPT38pWFW55jG9zaKhxp8zLRGmmVDk8s,5107
|
|
1154
1154
|
cirq/vis/histogram_test.py,sha256=Qlw0e3amw_MFga-hNweiLzRCH174W9bB2qkmX_RiS-U,1904
|
|
1155
|
-
cirq/vis/state_histogram.py,sha256=
|
|
1155
|
+
cirq/vis/state_histogram.py,sha256=lmYrPrqWoxhdXGbBdMahKK4isqmmeO6v45KKVbH3MkA,4260
|
|
1156
1156
|
cirq/vis/state_histogram_test.py,sha256=KzxDJedwE-KZR-K_TZlMh01DroSnZPArZPOo4CBEYWI,3761
|
|
1157
1157
|
cirq/vis/vis_utils.py,sha256=CsNHb9vMBF9UjxZ2k5XqMESbATOx0FXhWAwxFbq-9pQ,1239
|
|
1158
1158
|
cirq/vis/vis_utils_test.py,sha256=-aiL5WmhPDs_5BF2lDol1koD4JuHTiYxLK2ofyWrbCU,939
|
|
@@ -1175,8 +1175,8 @@ cirq/work/sampler.py,sha256=JEAeQQRF3bqlO9AkOf4XbrTATDI5f5JgyM_FAUCNxao,19751
|
|
|
1175
1175
|
cirq/work/sampler_test.py,sha256=B2ZsuqGT854gQtBIAh8k0LiG9Vj5wSzcGvkxOUoTcW4,13217
|
|
1176
1176
|
cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
|
|
1177
1177
|
cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
|
|
1178
|
-
cirq_core-1.5.0.
|
|
1179
|
-
cirq_core-1.5.0.
|
|
1180
|
-
cirq_core-1.5.0.
|
|
1181
|
-
cirq_core-1.5.0.
|
|
1182
|
-
cirq_core-1.5.0.
|
|
1178
|
+
cirq_core-1.5.0.dev20240710220908.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
1179
|
+
cirq_core-1.5.0.dev20240710220908.dist-info/METADATA,sha256=8GDfDiN4H53cFOnyL9z749aiCNozOl8b8rUfcmqfL20,2007
|
|
1180
|
+
cirq_core-1.5.0.dev20240710220908.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
1181
|
+
cirq_core-1.5.0.dev20240710220908.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
|
|
1182
|
+
cirq_core-1.5.0.dev20240710220908.dist-info/RECORD,,
|
{cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/LICENSE
RENAMED
|
File without changes
|
{cirq_core-1.5.0.dev20240703215652.dist-info → cirq_core-1.5.0.dev20240710220908.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|