cirq-core 1.5.0.dev20241122173038__py3-none-any.whl → 1.5.0.dev20241202190033__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/contrib/qasm_import/_lexer.py +5 -0
- cirq/contrib/qasm_import/_parser.py +11 -0
- cirq/contrib/qasm_import/_parser_test.py +34 -2
- cirq/experiments/readout_confusion_matrix.py +6 -22
- {cirq_core-1.5.0.dev20241122173038.dist-info → cirq_core-1.5.0.dev20241202190033.dist-info}/METADATA +1 -1
- {cirq_core-1.5.0.dev20241122173038.dist-info → cirq_core-1.5.0.dev20241202190033.dist-info}/RECORD +11 -11
- {cirq_core-1.5.0.dev20241122173038.dist-info → cirq_core-1.5.0.dev20241202190033.dist-info}/WHEEL +1 -1
- {cirq_core-1.5.0.dev20241122173038.dist-info → cirq_core-1.5.0.dev20241202190033.dist-info}/LICENSE +0 -0
- {cirq_core-1.5.0.dev20241122173038.dist-info → cirq_core-1.5.0.dev20241202190033.dist-info}/top_level.txt +0 -0
cirq/_version.py
CHANGED
cirq/_version_test.py
CHANGED
|
@@ -32,6 +32,7 @@ class QasmLexer:
|
|
|
32
32
|
'bit': 'BIT',
|
|
33
33
|
'creg': 'CREG',
|
|
34
34
|
'measure': 'MEASURE',
|
|
35
|
+
'reset': 'RESET',
|
|
35
36
|
'if': 'IF',
|
|
36
37
|
'->': 'ARROW',
|
|
37
38
|
'==': 'EQ',
|
|
@@ -115,6 +116,10 @@ class QasmLexer:
|
|
|
115
116
|
r"""measure"""
|
|
116
117
|
return t
|
|
117
118
|
|
|
119
|
+
def t_RESET(self, t):
|
|
120
|
+
r"""reset"""
|
|
121
|
+
return t
|
|
122
|
+
|
|
118
123
|
def t_IF(self, t):
|
|
119
124
|
r"""if"""
|
|
120
125
|
return t
|
|
@@ -300,6 +300,7 @@ class QasmParser:
|
|
|
300
300
|
# circuit : new_reg circuit
|
|
301
301
|
# | gate_op circuit
|
|
302
302
|
# | measurement circuit
|
|
303
|
+
# | reset circuit
|
|
303
304
|
# | if circuit
|
|
304
305
|
# | empty
|
|
305
306
|
|
|
@@ -310,6 +311,7 @@ class QasmParser:
|
|
|
310
311
|
def p_circuit_gate_or_measurement_or_if(self, p):
|
|
311
312
|
"""circuit : circuit gate_op
|
|
312
313
|
| circuit measurement
|
|
314
|
+
| circuit reset
|
|
313
315
|
| circuit if"""
|
|
314
316
|
self.circuit.append(p[2])
|
|
315
317
|
p[0] = self.circuit
|
|
@@ -526,6 +528,15 @@ class QasmParser:
|
|
|
526
528
|
ops.MeasurementGate(num_qubits=1, key=creg[i]).on(qreg[i]) for i in range(len(qreg))
|
|
527
529
|
]
|
|
528
530
|
|
|
531
|
+
# reset operations
|
|
532
|
+
# reset : RESET qarg
|
|
533
|
+
|
|
534
|
+
def p_reset(self, p):
|
|
535
|
+
"""reset : RESET qarg ';'"""
|
|
536
|
+
qreg = p[2]
|
|
537
|
+
|
|
538
|
+
p[0] = [ops.ResetChannel().on(qreg[i]) for i in range(len(qreg))]
|
|
539
|
+
|
|
529
540
|
# if operations
|
|
530
541
|
# if : IF '(' carg EQ NATURAL_NUMBER ')' ID qargs
|
|
531
542
|
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import textwrap
|
|
15
16
|
from typing import Callable
|
|
16
17
|
|
|
17
18
|
import numpy as np
|
|
@@ -706,6 +707,35 @@ def test_measurement_bounds():
|
|
|
706
707
|
parser.parse(qasm)
|
|
707
708
|
|
|
708
709
|
|
|
710
|
+
def test_reset():
|
|
711
|
+
qasm = textwrap.dedent(
|
|
712
|
+
"""\
|
|
713
|
+
OPENQASM 2.0;
|
|
714
|
+
include "qelib1.inc";
|
|
715
|
+
qreg q[1];
|
|
716
|
+
creg c[1];
|
|
717
|
+
x q[0];
|
|
718
|
+
reset q[0];
|
|
719
|
+
measure q[0] -> c[0];
|
|
720
|
+
"""
|
|
721
|
+
)
|
|
722
|
+
|
|
723
|
+
parser = QasmParser()
|
|
724
|
+
|
|
725
|
+
q_0 = cirq.NamedQubit('q_0')
|
|
726
|
+
|
|
727
|
+
expected_circuit = Circuit([cirq.X(q_0), cirq.reset(q_0), cirq.measure(q_0, key='c_0')])
|
|
728
|
+
|
|
729
|
+
parsed_qasm = parser.parse(qasm)
|
|
730
|
+
|
|
731
|
+
assert parsed_qasm.supportedFormat
|
|
732
|
+
assert parsed_qasm.qelib1Include
|
|
733
|
+
|
|
734
|
+
ct.assert_same_circuits(parsed_qasm.circuit, expected_circuit)
|
|
735
|
+
assert parsed_qasm.qregs == {'q': 1}
|
|
736
|
+
assert parsed_qasm.cregs == {'c': 1}
|
|
737
|
+
|
|
738
|
+
|
|
709
739
|
def test_u1_gate():
|
|
710
740
|
qasm = """
|
|
711
741
|
OPENQASM 2.0;
|
|
@@ -1068,12 +1098,13 @@ def test_openqasm_3_0_qubits():
|
|
|
1068
1098
|
x q[0];
|
|
1069
1099
|
|
|
1070
1100
|
b[0] = measure q[0];
|
|
1101
|
+
reset q[0];
|
|
1071
1102
|
"""
|
|
1072
1103
|
parser = QasmParser()
|
|
1073
1104
|
|
|
1074
1105
|
q0 = cirq.NamedQubit('q_0')
|
|
1075
1106
|
|
|
1076
|
-
expected_circuit = Circuit([cirq.X.on(q0), cirq.measure(q0, key='b_0')])
|
|
1107
|
+
expected_circuit = Circuit([cirq.X.on(q0), cirq.measure(q0, key='b_0'), cirq.reset(q0)])
|
|
1077
1108
|
|
|
1078
1109
|
parsed_qasm = parser.parse(qasm)
|
|
1079
1110
|
|
|
@@ -1092,12 +1123,13 @@ def test_openqasm_3_0_scalar_qubit():
|
|
|
1092
1123
|
x q;
|
|
1093
1124
|
|
|
1094
1125
|
b = measure q;
|
|
1126
|
+
reset q;
|
|
1095
1127
|
"""
|
|
1096
1128
|
parser = QasmParser()
|
|
1097
1129
|
|
|
1098
1130
|
q0 = cirq.NamedQubit('q_0')
|
|
1099
1131
|
|
|
1100
|
-
expected_circuit = Circuit([cirq.X.on(q0), cirq.measure(q0, key='b_0')])
|
|
1132
|
+
expected_circuit = Circuit([cirq.X.on(q0), cirq.measure(q0, key='b_0'), cirq.reset(q0)])
|
|
1101
1133
|
|
|
1102
1134
|
parsed_qasm = parser.parse(qasm)
|
|
1103
1135
|
|
|
@@ -26,20 +26,6 @@ if TYPE_CHECKING:
|
|
|
26
26
|
import cirq
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def _mitigate_single_bitstring(z_rinv_all: list[np.ndarray], bitstring: np.ndarray) -> float:
|
|
30
|
-
"""Return the mitigated Pauli expectation value for a single observed bitstring.
|
|
31
|
-
|
|
32
|
-
Args:
|
|
33
|
-
z_rinv_all: A list of single-qubit pauli-Z (as a vector) contracted with the single-qubit
|
|
34
|
-
inverse response matrix, for each qubit.
|
|
35
|
-
bitstring: The measured bitstring.
|
|
36
|
-
|
|
37
|
-
Returns:
|
|
38
|
-
The corrected expectation value of ZZZZZ... given the single measured bitstring.
|
|
39
|
-
"""
|
|
40
|
-
return np.prod([z_rinv[bit] for z_rinv, bit in zip(z_rinv_all, bitstring)])
|
|
41
|
-
|
|
42
|
-
|
|
43
29
|
class TensoredConfusionMatrices:
|
|
44
30
|
"""Store and use confusion matrices for readout error mitigation on sets of qubits.
|
|
45
31
|
|
|
@@ -348,7 +334,10 @@ class TensoredConfusionMatrices:
|
|
|
348
334
|
confusion matrices for all of `qubits`.
|
|
349
335
|
"""
|
|
350
336
|
|
|
351
|
-
#
|
|
337
|
+
# in case given as an array of bools, convert to an array of ints:
|
|
338
|
+
measured_bitstrings = measured_bitstrings.astype(int)
|
|
339
|
+
|
|
340
|
+
# get all of the confusion matrices
|
|
352
341
|
cm_all = []
|
|
353
342
|
for qubit in qubits:
|
|
354
343
|
try:
|
|
@@ -365,15 +354,10 @@ class TensoredConfusionMatrices:
|
|
|
365
354
|
|
|
366
355
|
# next, contract them with the single-qubit Pauli operators:
|
|
367
356
|
z = np.array([1, -1])
|
|
368
|
-
z_cminv_all = [z @ cminv for cminv in cminv_all]
|
|
357
|
+
z_cminv_all = np.array([z @ cminv for cminv in cminv_all])
|
|
369
358
|
|
|
370
359
|
# finally, mitigate each bitstring:
|
|
371
|
-
z_mit_all_shots = np.
|
|
372
|
-
[
|
|
373
|
-
_mitigate_single_bitstring(z_cminv_all, bitstring)
|
|
374
|
-
for bitstring in measured_bitstrings
|
|
375
|
-
]
|
|
376
|
-
)
|
|
360
|
+
z_mit_all_shots = np.prod(np.einsum("iji->ij", z_cminv_all[:, measured_bitstrings]), axis=0)
|
|
377
361
|
|
|
378
362
|
# return mean and statistical uncertainty:
|
|
379
363
|
return np.mean(z_mit_all_shots), np.std(z_mit_all_shots) / np.sqrt(len(measured_bitstrings))
|
{cirq_core-1.5.0.dev20241122173038.dist-info → cirq_core-1.5.0.dev20241202190033.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.dev20241202190033
|
|
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.dev20241122173038.dist-info → cirq_core-1.5.0.dev20241202190033.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=v0e_6TCcugpK-r2nscoBL-iteaqlJZt1goTisE6ShaU,1206
|
|
8
|
+
cirq/_version_test.py,sha256=2cwhv7SmKdX3SE5QdUGho3LEhv43iYvSao5mZXB-Ddc,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
|
|
@@ -103,10 +103,10 @@ cirq/contrib/paulistring/recombine_test.py,sha256=hJ083nR67JsIs38TfmCjmBLnhqyG0r
|
|
|
103
103
|
cirq/contrib/paulistring/separate.py,sha256=2g4l78mXYJDR6xkv51VExZDb-rm5JEvhYrpMPgWa0Us,3961
|
|
104
104
|
cirq/contrib/paulistring/separate_test.py,sha256=FzR78MSHDhNJxizbXreK6u3BeYhT7xn7W1QyHfEZ34E,1267
|
|
105
105
|
cirq/contrib/qasm_import/__init__.py,sha256=RKX0vGDC2Pe5rH5rM4ClXdvtrAU16ePFImQpiJtJVNo,744
|
|
106
|
-
cirq/contrib/qasm_import/_lexer.py,sha256=
|
|
106
|
+
cirq/contrib/qasm_import/_lexer.py,sha256=J0ExK_6VGMoql0ha0hrxHzbFuqFYazHSSruhgznI66Y,3366
|
|
107
107
|
cirq/contrib/qasm_import/_lexer_test.py,sha256=iiz-cmIt5hnhHBc4ub4btqHnbi4EPaO7BE7bsJKPet8,4142
|
|
108
|
-
cirq/contrib/qasm_import/_parser.py,sha256=
|
|
109
|
-
cirq/contrib/qasm_import/_parser_test.py,sha256=
|
|
108
|
+
cirq/contrib/qasm_import/_parser.py,sha256=3hTbb7ZzEIS8OoGPo2efemzDQT_dTUS9Yjxt3IP6A4s,20416
|
|
109
|
+
cirq/contrib/qasm_import/_parser_test.py,sha256=XwQ6KrrKCgQwXK4u6-I3suFWGdtScNZdTdQT_ykCcuQ,29108
|
|
110
110
|
cirq/contrib/qasm_import/exception.py,sha256=Wm6cwUPIkNMPjkv-ELpQ-zSoXaiLOddOQ4iYybwuS6I,695
|
|
111
111
|
cirq/contrib/qasm_import/qasm.py,sha256=CP444IWCw4zlDNA7HxsTJ2xIak4mZhQv62ZiLlUc2zo,914
|
|
112
112
|
cirq/contrib/qasm_import/qasm_test.py,sha256=e5b7LVn_6FIFZ6kINqMzJFIjzgtTgutVhgXgX_DcTc0,1861
|
|
@@ -187,7 +187,7 @@ cirq/experiments/qubit_characterizations.py,sha256=-a-krc7Pw68VjsVvQmeZ92oXrpeME
|
|
|
187
187
|
cirq/experiments/qubit_characterizations_test.py,sha256=b_ONqxyW6s01Ts8T65BEdb4e8Xy24Qp4zTGXWesL0ic,9733
|
|
188
188
|
cirq/experiments/random_quantum_circuit_generation.py,sha256=GIA4qdrgECcZlvGOiWtKL0hGyuNJbRtzhrzPJXKI0iQ,28167
|
|
189
189
|
cirq/experiments/random_quantum_circuit_generation_test.py,sha256=1rvgN8-Ajedn_70FyYKVzjvzR6NVpHj6KQgo6tra-Jc,15995
|
|
190
|
-
cirq/experiments/readout_confusion_matrix.py,sha256=
|
|
190
|
+
cirq/experiments/readout_confusion_matrix.py,sha256=5yS7VXDe9LHYn_6YRYek-HZ9ftEBmCTn5__TYSUONGQ,20875
|
|
191
191
|
cirq/experiments/readout_confusion_matrix_test.py,sha256=ETvKHVuJWvq8KuL0l6w22UOfZHhBNH-TVeWAKqjSQEc,10632
|
|
192
192
|
cirq/experiments/single_qubit_readout_calibration.py,sha256=x6fF6GqU1D4YY05YvW1DFlTlbjC12_bfj7W2psd75-U,14722
|
|
193
193
|
cirq/experiments/single_qubit_readout_calibration_test.py,sha256=_002QXj2rIFHkH3vw9iTVMh45vCPuCI_fTqOUK8uMe4,7718
|
|
@@ -1187,8 +1187,8 @@ cirq/work/sampler.py,sha256=y6qtCpAwO8SqZ_JKU8PwlbMLHpJskNPqGWD_pNbyZew,19779
|
|
|
1187
1187
|
cirq/work/sampler_test.py,sha256=hL2UWx3dz2ukZVNxWftiKVvJcQoLplLZdQm-k1QcA40,13282
|
|
1188
1188
|
cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
|
|
1189
1189
|
cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
|
|
1190
|
-
cirq_core-1.5.0.
|
|
1191
|
-
cirq_core-1.5.0.
|
|
1192
|
-
cirq_core-1.5.0.
|
|
1193
|
-
cirq_core-1.5.0.
|
|
1194
|
-
cirq_core-1.5.0.
|
|
1190
|
+
cirq_core-1.5.0.dev20241202190033.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
1191
|
+
cirq_core-1.5.0.dev20241202190033.dist-info/METADATA,sha256=arpql58a9I3zdvyBWRoSj707zgIr2yg8mJ-McHybwik,1992
|
|
1192
|
+
cirq_core-1.5.0.dev20241202190033.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
1193
|
+
cirq_core-1.5.0.dev20241202190033.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
|
|
1194
|
+
cirq_core-1.5.0.dev20241202190033.dist-info/RECORD,,
|
{cirq_core-1.5.0.dev20241122173038.dist-info → cirq_core-1.5.0.dev20241202190033.dist-info}/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|