qiskit 1.3.0__cp39-abi3-win32.whl → 1.3.0rc1__cp39-abi3-win32.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.
- qiskit/VERSION.txt +1 -1
- qiskit/_accelerate.pyd +0 -0
- qiskit/circuit/library/__init__.py +10 -37
- qiskit/circuit/library/arithmetic/adders/adder.py +5 -5
- qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
- qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +1 -1
- qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
- qiskit/primitives/utils.py +1 -1
- qiskit/providers/__init__.py +2 -2
- qiskit/quantum_info/states/statevector.py +1 -1
- qiskit/transpiler/passes/optimization/consolidate_blocks.py +3 -10
- qiskit/transpiler/passes/optimization/inverse_cancellation.py +0 -2
- qiskit/transpiler/passes/synthesis/high_level_synthesis.py +9 -8
- qiskit/transpiler/passes/synthesis/hls_plugins.py +3 -4
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +3 -4
- {qiskit-1.3.0.dist-info → qiskit-1.3.0rc1.dist-info}/METADATA +18 -18
- {qiskit-1.3.0.dist-info → qiskit-1.3.0rc1.dist-info}/RECORD +21 -21
- {qiskit-1.3.0.dist-info → qiskit-1.3.0rc1.dist-info}/WHEEL +1 -1
- {qiskit-1.3.0.dist-info → qiskit-1.3.0rc1.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.3.0.dist-info → qiskit-1.3.0rc1.dist-info}/entry_points.txt +0 -0
- {qiskit-1.3.0.dist-info → qiskit-1.3.0rc1.dist-info}/top_level.txt +0 -0
qiskit/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.0rc1
|
qiskit/_accelerate.pyd
CHANGED
Binary file
|
@@ -36,7 +36,7 @@ For example, to append a multi-controlled CNOT:
|
|
36
36
|
circuit.append(gate, [0, 1, 4, 2, 3])
|
37
37
|
circuit.draw('mpl')
|
38
38
|
|
39
|
-
The library is organized in several sections. The function
|
39
|
+
The library is organized in several sections. The function
|
40
40
|
:func:`.get_standard_gate_name_mapping` allows you to see the available standard gates and operations.
|
41
41
|
|
42
42
|
.. autofunction:: get_standard_gate_name_mapping
|
@@ -221,10 +221,10 @@ or of a set of qubit states.
|
|
221
221
|
OrGate
|
222
222
|
XOR
|
223
223
|
BitwiseXorGate
|
224
|
-
random_bitwise_xor
|
225
224
|
InnerProduct
|
226
225
|
InnerProductGate
|
227
226
|
|
227
|
+
.. autofunction:: random_bitwise_xor
|
228
228
|
|
229
229
|
Basis Change Circuits
|
230
230
|
=====================
|
@@ -280,9 +280,6 @@ Adders
|
|
280
280
|
CDKMRippleCarryAdder
|
281
281
|
VBERippleCarryAdder
|
282
282
|
WeightedAdder
|
283
|
-
ModularAdderGate
|
284
|
-
HalfAdderGate
|
285
|
-
FullAdderGate
|
286
283
|
|
287
284
|
Multipliers
|
288
285
|
-----------
|
@@ -293,7 +290,6 @@ Multipliers
|
|
293
290
|
|
294
291
|
HRSCumulativeMultiplier
|
295
292
|
RGQFTMultiplier
|
296
|
-
MultiplierGate
|
297
293
|
|
298
294
|
Comparators
|
299
295
|
-----------
|
@@ -325,40 +321,29 @@ Other arithmetic functions
|
|
325
321
|
Particular Quantum Circuits
|
326
322
|
===========================
|
327
323
|
|
328
|
-
The following gates and quantum circuits define specific
|
329
|
-
quantum circuits of interest:
|
330
|
-
|
331
324
|
.. autosummary::
|
332
325
|
:toctree: ../stubs/
|
333
326
|
:template: autosummary/class_no_inherited_members.rst
|
334
327
|
|
335
328
|
FourierChecking
|
329
|
+
fourier_checking
|
336
330
|
GraphState
|
337
331
|
GraphStateGate
|
338
332
|
HiddenLinearFunction
|
333
|
+
hidden_linear_function
|
339
334
|
IQP
|
335
|
+
iqp
|
336
|
+
random_iqp
|
340
337
|
QuantumVolume
|
338
|
+
quantum_volume
|
341
339
|
PhaseEstimation
|
340
|
+
phase_estimation
|
342
341
|
GroverOperator
|
342
|
+
grover_operator
|
343
343
|
PhaseOracle
|
344
344
|
PauliEvolutionGate
|
345
345
|
HamiltonianGate
|
346
346
|
UnitaryOverlap
|
347
|
-
|
348
|
-
For circuits that have a well-defined structure it is preferrable
|
349
|
-
to use the following functions to construct them:
|
350
|
-
|
351
|
-
.. autosummary::
|
352
|
-
:toctree: ../stubs/
|
353
|
-
:template: autosummary/class_no_inherited_members.rst
|
354
|
-
|
355
|
-
fourier_checking
|
356
|
-
hidden_linear_function
|
357
|
-
iqp
|
358
|
-
random_iqp
|
359
|
-
quantum_volume
|
360
|
-
phase_estimation
|
361
|
-
grover_operator
|
362
347
|
unitary_overlap
|
363
348
|
|
364
349
|
|
@@ -377,7 +362,6 @@ a broad set of variational quantum algorithms:
|
|
377
362
|
real_amplitudes
|
378
363
|
pauli_two_design
|
379
364
|
excitation_preserving
|
380
|
-
qaoa_ansatz
|
381
365
|
hamiltonian_variational_ansatz
|
382
366
|
evolved_operator_ansatz
|
383
367
|
|
@@ -402,7 +386,7 @@ They are heavily used in near-term algorithms in e.g. Chemistry, Physics or Opti
|
|
402
386
|
Data encoding circuits
|
403
387
|
======================
|
404
388
|
|
405
|
-
The following functions return a parameterized :class:`.QuantumCircuit` to use as data
|
389
|
+
The following functions return a parameterized :class:`.QuantumCircuit` to use as data
|
406
390
|
encoding circuits in a series of variational quantum algorithms:
|
407
391
|
|
408
392
|
.. autosummary::
|
@@ -423,17 +407,6 @@ data in quantum states and are used as feature maps for classification.
|
|
423
407
|
PauliFeatureMap
|
424
408
|
ZFeatureMap
|
425
409
|
ZZFeatureMap
|
426
|
-
|
427
|
-
|
428
|
-
Data preparation circuits
|
429
|
-
=========================
|
430
|
-
|
431
|
-
The following operations are used for state preparation:
|
432
|
-
|
433
|
-
.. autosummary::
|
434
|
-
:toctree: ../stubs/
|
435
|
-
:template: autosummary/class_no_inherited_members.rst
|
436
|
-
|
437
410
|
StatePreparation
|
438
411
|
Initialize
|
439
412
|
|
@@ -21,7 +21,7 @@ from qiskit.utils.deprecation import deprecate_func
|
|
21
21
|
class Adder(QuantumCircuit):
|
22
22
|
r"""Compute the sum of two equally sized qubit registers.
|
23
23
|
|
24
|
-
For two registers :math:`|a\rangle_n` and :math
|
24
|
+
For two registers :math:`|a\rangle_n` and :math:|b\rangle_n` with :math:`n` qubits each, an
|
25
25
|
adder performs the following operation
|
26
26
|
|
27
27
|
.. math::
|
@@ -74,7 +74,7 @@ class Adder(QuantumCircuit):
|
|
74
74
|
class HalfAdderGate(Gate):
|
75
75
|
r"""Compute the sum of two equally-sized qubit registers, including a carry-out bit.
|
76
76
|
|
77
|
-
For two registers :math:`|a\rangle_n` and :math
|
77
|
+
For two registers :math:`|a\rangle_n` and :math:|b\rangle_n` with :math:`n` qubits each, an
|
78
78
|
adder performs the following operation
|
79
79
|
|
80
80
|
.. math::
|
@@ -120,7 +120,7 @@ class HalfAdderGate(Gate):
|
|
120
120
|
class ModularAdderGate(Gate):
|
121
121
|
r"""Compute the sum modulo :math:`2^n` of two :math:`n`-sized qubit registers.
|
122
122
|
|
123
|
-
For two registers :math:`|a\rangle_n` and :math
|
123
|
+
For two registers :math:`|a\rangle_n` and :math:|b\rangle_n` with :math:`n` qubits each, an
|
124
124
|
adder performs the following operation
|
125
125
|
|
126
126
|
.. math::
|
@@ -166,12 +166,12 @@ class ModularAdderGate(Gate):
|
|
166
166
|
class FullAdderGate(Gate):
|
167
167
|
r"""Compute the sum of two :math:`n`-sized qubit registers, including carry-in and -out bits.
|
168
168
|
|
169
|
-
For two registers :math:`|a\rangle_n` and :math
|
169
|
+
For two registers :math:`|a\rangle_n` and :math:|b\rangle_n` with :math:`n` qubits each, an
|
170
170
|
adder performs the following operation
|
171
171
|
|
172
172
|
.. math::
|
173
173
|
|
174
|
-
|c_{\text{in}
|
174
|
+
|c_{\text{in}\rangle_1 |a\rangle_n |b\rangle_n
|
175
175
|
\mapsto |a\rangle_n |c_{\text{in}} + a + b \rangle_{n + 1}.
|
176
176
|
|
177
177
|
The quantum register :math:`|a\rangle_n` (and analogously :math:`|b\rangle_n`)
|
@@ -84,7 +84,7 @@ class CDKMRippleCarryAdder(Adder):
|
|
84
84
|
:class:`.ModularAdderGate`: A generic inplace adder, modulo :math:`2^n`. This
|
85
85
|
is functionally equivalent to ``kind="fixed"``.
|
86
86
|
|
87
|
-
:class:`.
|
87
|
+
:class:`.AdderGate`: A generic inplace adder. This
|
88
88
|
is functionally equivalent to ``kind="half"``.
|
89
89
|
|
90
90
|
:class:`.FullAdderGate`: A generic inplace adder, with a carry-in bit. This
|
@@ -54,7 +54,7 @@ class DraperQFTAdder(Adder):
|
|
54
54
|
:class:`.ModularAdderGate`: A generic inplace adder, modulo :math:`2^n`. This
|
55
55
|
is functionally equivalent to ``kind="fixed"``.
|
56
56
|
|
57
|
-
:class:`.
|
57
|
+
:class:`.AdderGate`: A generic inplace adder. This
|
58
58
|
is functionally equivalent to ``kind="half"``.
|
59
59
|
|
60
60
|
**References:**
|
@@ -60,7 +60,7 @@ class VBERippleCarryAdder(Adder):
|
|
60
60
|
:class:`.ModularAdderGate`: A generic inplace adder, modulo :math:`2^n`. This
|
61
61
|
is functionally equivalent to ``kind="fixed"``.
|
62
62
|
|
63
|
-
:class:`.
|
63
|
+
:class:`.AdderGate`: A generic inplace adder. This
|
64
64
|
is functionally equivalent to ``kind="half"``.
|
65
65
|
|
66
66
|
:class:`.FullAdderGate`: A generic inplace adder, with a carry-in bit. This
|
qiskit/primitives/utils.py
CHANGED
@@ -82,7 +82,7 @@ def init_observable(observable: BaseOperator | str) -> SparsePauliOp:
|
|
82
82
|
since="1.2",
|
83
83
|
additional_msg="Use ``QuantumCircuit.layout`` and ``SparsePauliOp.apply_layout`` "
|
84
84
|
+ "to adjust an operator for a layout. Otherwise, use ``mthree.utils.final_measurement_mapping``. "
|
85
|
-
+ "See
|
85
|
+
+ "See https://qiskit-extensions.github.io/mthree/apidocs/utils.html for details.",
|
86
86
|
)
|
87
87
|
def final_measurement_mapping(circuit: QuantumCircuit) -> dict[int, int]:
|
88
88
|
"""Return the final measurement mapping for the circuit.
|
qiskit/providers/__init__.py
CHANGED
@@ -160,7 +160,7 @@ steps for writing a provider are:
|
|
160
160
|
interacting with a running job.
|
161
161
|
|
162
162
|
For a simple example of a provider, see the
|
163
|
-
`qiskit-aqt-provider <https://github.com/
|
163
|
+
`qiskit-aqt-provider <https://github.com/Qiskit-Partners/qiskit-aqt-provider>`__
|
164
164
|
|
165
165
|
Provider
|
166
166
|
--------
|
@@ -664,7 +664,7 @@ that abstract away the mechanics of getting the best result efficiently, to
|
|
664
664
|
concentrate on higher level applications using these outputs.
|
665
665
|
|
666
666
|
For example, if your backends were well suited to leverage
|
667
|
-
`mthree <https://github.com/Qiskit/
|
667
|
+
`mthree <https://github.com/Qiskit-Partners/mthree/>`__ measurement
|
668
668
|
mitigation to improve the quality of the results, you could implement a
|
669
669
|
provider-specific :class:`~.Sampler` implementation that leverages the
|
670
670
|
``M3Mitigation`` class internally to run the circuits and return
|
@@ -476,7 +476,7 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
476
476
|
pauli_phase = (-1j) ** pauli.phase if pauli.phase else 1
|
477
477
|
|
478
478
|
if x_mask + z_mask == 0:
|
479
|
-
return pauli_phase * np.linalg.norm(self.data)
|
479
|
+
return pauli_phase * np.linalg.norm(self.data)
|
480
480
|
|
481
481
|
if x_mask == 0:
|
482
482
|
return pauli_phase * expval_pauli_no_x(self.data, self.num_qubits, z_mask)
|
@@ -12,11 +12,9 @@
|
|
12
12
|
|
13
13
|
"""Replace each block of consecutive gates by a single Unitary node."""
|
14
14
|
from __future__ import annotations
|
15
|
-
from math import pi
|
16
15
|
|
17
16
|
from qiskit.synthesis.two_qubit import TwoQubitBasisDecomposer
|
18
|
-
from qiskit.circuit.library.standard_gates import CXGate, CZGate, iSwapGate, ECRGate
|
19
|
-
|
17
|
+
from qiskit.circuit.library.standard_gates import CXGate, CZGate, iSwapGate, ECRGate
|
20
18
|
from qiskit.transpiler.basepasses import TransformationPass
|
21
19
|
from qiskit.transpiler.passmanager import PassManager
|
22
20
|
from qiskit._accelerate.consolidate_blocks import consolidate_blocks
|
@@ -29,7 +27,6 @@ KAK_GATE_NAMES = {
|
|
29
27
|
"cz": CZGate(),
|
30
28
|
"iswap": iSwapGate(),
|
31
29
|
"ecr": ECRGate(),
|
32
|
-
"rxx": RXXGate(pi / 2),
|
33
30
|
}
|
34
31
|
|
35
32
|
|
@@ -73,6 +70,7 @@ class ConsolidateBlocks(TransformationPass):
|
|
73
70
|
if basis_gates is not None:
|
74
71
|
self.basis_gates = set(basis_gates)
|
75
72
|
self.force_consolidate = force_consolidate
|
73
|
+
|
76
74
|
if kak_basis_gate is not None:
|
77
75
|
self.decomposer = TwoQubitBasisDecomposer(kak_basis_gate)
|
78
76
|
elif basis_gates is not None:
|
@@ -81,12 +79,8 @@ class ConsolidateBlocks(TransformationPass):
|
|
81
79
|
self.decomposer = TwoQubitBasisDecomposer(
|
82
80
|
KAK_GATE_NAMES[kak_gates.pop()], basis_fidelity=approximation_degree or 1.0
|
83
81
|
)
|
84
|
-
elif "rzx" in basis_gates:
|
85
|
-
self.decomposer = TwoQubitBasisDecomposer(
|
86
|
-
CXGate(), basis_fidelity=approximation_degree or 1.0
|
87
|
-
)
|
88
82
|
else:
|
89
|
-
self.decomposer =
|
83
|
+
self.decomposer = TwoQubitBasisDecomposer(CXGate())
|
90
84
|
else:
|
91
85
|
self.decomposer = TwoQubitBasisDecomposer(CXGate())
|
92
86
|
|
@@ -109,7 +103,6 @@ class ConsolidateBlocks(TransformationPass):
|
|
109
103
|
consolidate_blocks(
|
110
104
|
dag,
|
111
105
|
self.decomposer._inner_decomposer,
|
112
|
-
self.decomposer.gate.name,
|
113
106
|
self.force_consolidate,
|
114
107
|
target=self.target,
|
115
108
|
basis_gates=self.basis_gates,
|
@@ -19,7 +19,6 @@ from qiskit.circuit import Gate
|
|
19
19
|
from qiskit.dagcircuit import DAGCircuit
|
20
20
|
from qiskit.transpiler.basepasses import TransformationPass
|
21
21
|
from qiskit.transpiler.exceptions import TranspilerError
|
22
|
-
from qiskit.transpiler.passes.utils import control_flow
|
23
22
|
|
24
23
|
from qiskit._accelerate.inverse_cancellation import inverse_cancellation
|
25
24
|
|
@@ -75,7 +74,6 @@ class InverseCancellation(TransformationPass):
|
|
75
74
|
|
76
75
|
super().__init__()
|
77
76
|
|
78
|
-
@control_flow.trivial_recurse
|
79
77
|
def run(self, dag: DAGCircuit):
|
80
78
|
"""Run the InverseCancellation pass on `dag`.
|
81
79
|
|
@@ -382,7 +382,7 @@ class HighLevelSynthesis(TransformationPass):
|
|
382
382
|
|
383
383
|
# If the synthesis changed the operation (i.e. it is not None), store the result.
|
384
384
|
if synthesized is not None:
|
385
|
-
synthesized_nodes[node
|
385
|
+
synthesized_nodes[node] = (synthesized, synthesized_context)
|
386
386
|
|
387
387
|
# If the synthesis did not change anything, just update the qubit tracker.
|
388
388
|
elif not processed:
|
@@ -407,9 +407,8 @@ class HighLevelSynthesis(TransformationPass):
|
|
407
407
|
outer_to_local = context.to_local_mapping()
|
408
408
|
|
409
409
|
for node in dag.topological_op_nodes():
|
410
|
-
|
411
|
-
|
412
|
-
op, op_context = op_tuple
|
410
|
+
if node in synthesized_nodes:
|
411
|
+
op, op_context = synthesized_nodes[node]
|
413
412
|
|
414
413
|
if isinstance(op, Operation):
|
415
414
|
out.apply_operation_back(op, node.qargs, node.cargs)
|
@@ -814,7 +813,6 @@ class HighLevelSynthesis(TransformationPass):
|
|
814
813
|
dag._has_calibration_for(node)
|
815
814
|
or len(node.qargs) < self._min_qubits
|
816
815
|
or node.is_directive()
|
817
|
-
or (self._instruction_supported(node.name, qubits) and not node.is_control_flow())
|
818
816
|
):
|
819
817
|
return True
|
820
818
|
|
@@ -832,12 +830,15 @@ class HighLevelSynthesis(TransformationPass):
|
|
832
830
|
# If all the above constraints hold, and it's already supported or the basis translator
|
833
831
|
# can handle it, we'll leave it be.
|
834
832
|
and (
|
833
|
+
self._instruction_supported(node.name, qubits)
|
835
834
|
# This uses unfortunately private details of `EquivalenceLibrary`, but so does the
|
836
835
|
# `BasisTranslator`, and this is supposed to just be temporary til this is moved
|
837
836
|
# into Rust space.
|
838
|
-
|
839
|
-
|
840
|
-
|
837
|
+
or (
|
838
|
+
self._equiv_lib is not None
|
839
|
+
and equivalence.Key(name=node.name, num_qubits=node.num_qubits)
|
840
|
+
in self._equiv_lib.keys()
|
841
|
+
)
|
841
842
|
)
|
842
843
|
)
|
843
844
|
|
@@ -263,12 +263,11 @@ Pauli Evolution Synthesis
|
|
263
263
|
- Targeted connectivity
|
264
264
|
* - ``"rustiq"``
|
265
265
|
- :class:`~.PauliEvolutionSynthesisRustiq`
|
266
|
-
- use
|
267
|
-
<https://github.com/smartiel/rustiq-core>`_
|
266
|
+
- use a diagonalizing Clifford per Pauli term
|
268
267
|
- all-to-all
|
269
268
|
* - ``"default"``
|
270
269
|
- :class:`~.PauliEvolutionSynthesisDefault`
|
271
|
-
- use
|
270
|
+
- use ``rustiq_core`` synthesis library
|
272
271
|
- all-to-all
|
273
272
|
|
274
273
|
.. autosummary::
|
@@ -376,7 +375,7 @@ Multiplier Synthesis
|
|
376
375
|
- Description
|
377
376
|
* - ``"cumulative"``
|
378
377
|
- :class:`.MultiplierSynthesisH18`
|
379
|
-
- depending on the :class:`.
|
378
|
+
- depending on the :class:`.AdderGate` used
|
380
379
|
- a cumulative adder based on controlled adders
|
381
380
|
* - ``"qft"``
|
382
381
|
- :class:`.MultiplierSynthesisR17`
|
@@ -479,11 +479,10 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
|
|
479
479
|
if inst not in standard_gates and inst not in default_gates:
|
480
480
|
warnings.warn(
|
481
481
|
category=DeprecationWarning,
|
482
|
-
message=
|
483
|
-
"
|
484
|
-
"as of Qiskit 1.3.0. "
|
482
|
+
message="Providing custom gates through the ``basis_gates`` argument is deprecated "
|
483
|
+
"for both ``transpile`` and ``generate_preset_pass_manager`` as of Qiskit 1.3.0. "
|
485
484
|
"It will be removed in Qiskit 2.0. The ``target`` parameter should be used instead. "
|
486
|
-
"You can build a target instance using ``Target.from_configuration()`` and provide
|
485
|
+
"You can build a target instance using ``Target.from_configuration()`` and provide"
|
487
486
|
"custom gate definitions with the ``custom_name_mapping`` argument.",
|
488
487
|
)
|
489
488
|
skip_target = True
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: qiskit
|
3
|
-
Version: 1.3.
|
3
|
+
Version: 1.3.0rc1
|
4
4
|
Summary: An open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.
|
5
5
|
Author-email: Qiskit Development Team <qiskit@us.ibm.com>
|
6
6
|
License: Apache 2.0
|
@@ -37,6 +37,12 @@ Requires-Dist: python-dateutil>=2.8.0
|
|
37
37
|
Requires-Dist: stevedore>=3.0.0
|
38
38
|
Requires-Dist: typing-extensions
|
39
39
|
Requires-Dist: symengine<0.14,>=0.11
|
40
|
+
Provides-Extra: all
|
41
|
+
Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]; extra == "all"
|
42
|
+
Provides-Extra: crosstalk-pass
|
43
|
+
Requires-Dist: z3-solver>=4.7; extra == "crosstalk-pass"
|
44
|
+
Provides-Extra: csp-layout-pass
|
45
|
+
Requires-Dist: python-constraint>=1.4; extra == "csp-layout-pass"
|
40
46
|
Provides-Extra: qasm3-import
|
41
47
|
Requires-Dist: qiskit-qasm3-import>=0.1.0; extra == "qasm3-import"
|
42
48
|
Provides-Extra: visualization
|
@@ -45,12 +51,6 @@ Requires-Dist: pydot; extra == "visualization"
|
|
45
51
|
Requires-Dist: Pillow>=4.2.1; extra == "visualization"
|
46
52
|
Requires-Dist: pylatexenc>=1.4; extra == "visualization"
|
47
53
|
Requires-Dist: seaborn>=0.9.0; extra == "visualization"
|
48
|
-
Provides-Extra: crosstalk-pass
|
49
|
-
Requires-Dist: z3-solver>=4.7; extra == "crosstalk-pass"
|
50
|
-
Provides-Extra: csp-layout-pass
|
51
|
-
Requires-Dist: python-constraint>=1.4; extra == "csp-layout-pass"
|
52
|
-
Provides-Extra: all
|
53
|
-
Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]; extra == "all"
|
54
54
|
|
55
55
|
# Qiskit
|
56
56
|
|
@@ -120,13 +120,13 @@ we use `measure_all(inplace=False)` to get a copy of the circuit in which all th
|
|
120
120
|
qc_measured = qc_example.measure_all(inplace=False)
|
121
121
|
|
122
122
|
# 3. Execute using the Sampler primitive
|
123
|
-
from qiskit.primitives import
|
124
|
-
sampler =
|
125
|
-
job = sampler.run(
|
123
|
+
from qiskit.primitives.sampler import Sampler
|
124
|
+
sampler = Sampler()
|
125
|
+
job = sampler.run(qc_measured, shots=1000)
|
126
126
|
result = job.result()
|
127
|
-
print(f" >
|
127
|
+
print(f" > Quasi probability distribution: {result.quasi_dists}")
|
128
128
|
```
|
129
|
-
Running this will give an outcome similar to `{
|
129
|
+
Running this will give an outcome similar to `{0: 0.497, 7: 0.503}` which is `000` 50% of the time and `111` 50% of the time up to statistical fluctuations.
|
130
130
|
To illustrate the power of Estimator, we now use the quantum information toolbox to create the operator $XXY+XYX+YXX-YYY$ and pass it to the `run()` function, along with our quantum circuit. Note the Estimator requires a circuit _**without**_ measurement, so we use the `qc_example` circuit we created earlier.
|
131
131
|
|
132
132
|
```python
|
@@ -135,17 +135,17 @@ from qiskit.quantum_info import SparsePauliOp
|
|
135
135
|
operator = SparsePauliOp.from_list([("XXY", 1), ("XYX", 1), ("YXX", 1), ("YYY", -1)])
|
136
136
|
|
137
137
|
# 3. Execute using the Estimator primitive
|
138
|
-
from qiskit.primitives import
|
139
|
-
estimator =
|
140
|
-
job = estimator.run(
|
138
|
+
from qiskit.primitives import Estimator
|
139
|
+
estimator = Estimator()
|
140
|
+
job = estimator.run(qc_example, operator, shots=1000)
|
141
141
|
result = job.result()
|
142
|
-
print(f" > Expectation values: {result
|
142
|
+
print(f" > Expectation values: {result.values}")
|
143
143
|
```
|
144
144
|
|
145
145
|
Running this will give the outcome `4`. For fun, try to assign a value of +/- 1 to each single-qubit operator X and Y
|
146
146
|
and see if you can achieve this outcome. (Spoiler alert: this is not possible!)
|
147
147
|
|
148
|
-
Using the Qiskit-provided `qiskit.primitives.
|
148
|
+
Using the Qiskit-provided `qiskit.primitives.Sampler` and `qiskit.primitives.Estimator` will not take you very far.
|
149
149
|
The power of quantum computing cannot be simulated on classical computers and you need to use real quantum hardware to scale to larger quantum circuits.
|
150
150
|
However, running a quantum circuit on hardware requires rewriting to the basis gates and connectivity of the quantum hardware.
|
151
151
|
The tool that does this is the [transpiler](https://docs.quantum.ibm.com/api/qiskit/transpiler), and Qiskit includes transpiler passes for synthesis, optimization, mapping, and scheduling.
|
@@ -160,7 +160,7 @@ qc_transpiled = transpile(qc_example, basis_gates = ['cz', 'sx', 'rz'], coupling
|
|
160
160
|
### Executing your code on real quantum hardware
|
161
161
|
|
162
162
|
Qiskit provides an abstraction layer that lets users run quantum circuits on hardware from any vendor that provides a compatible interface.
|
163
|
-
The best way to use Qiskit is with a runtime environment that provides optimized implementations of `sampler` and `estimator` for a given hardware platform. This runtime may involve using pre- and post-processing, such as optimized transpiler passes with error suppression, error mitigation, and, eventually, error correction built in. A runtime implements `qiskit.primitives.
|
163
|
+
The best way to use Qiskit is with a runtime environment that provides optimized implementations of `sampler` and `estimator` for a given hardware platform. This runtime may involve using pre- and post-processing, such as optimized transpiler passes with error suppression, error mitigation, and, eventually, error correction built in. A runtime implements `qiskit.primitives.BaseSampler` and `qiskit.primitives.BaseEstimator` interfaces. For example,
|
164
164
|
some packages that provide implementations of a runtime primitive implementation are:
|
165
165
|
|
166
166
|
* https://github.com/Qiskit/qiskit-ibm-runtime
|
@@ -1,6 +1,6 @@
|
|
1
|
-
qiskit/VERSION.txt,sha256=
|
1
|
+
qiskit/VERSION.txt,sha256=9ZVK4HfUDY65X5uAyfXYCem-YxD-V1MuRapLURHiVL4,10
|
2
2
|
qiskit/__init__.py,sha256=rw44R_7d2DNPDAhHntvpEYC-uH61EZnOI3Lcwpa74w8,7629
|
3
|
-
qiskit/_accelerate.pyd,sha256=
|
3
|
+
qiskit/_accelerate.pyd,sha256=pzQ32GKTFM856LEZCEP9Le2C7DDjxQfw7fWQPtzNgBA,8514048
|
4
4
|
qiskit/_numpy_compat.py,sha256=EV1RihNRJnvWzjb57z8sjMbv9EeRPzk8Mnegzw7ItR0,2888
|
5
5
|
qiskit/exceptions.py,sha256=UamBNQmDJTx6ruzmj7iXgcsrBcvkfE-bZ4TH2-K_ngw,5772
|
6
6
|
qiskit/user_config.py,sha256=IKxY7cK1EX-GqkvPE4Lsss1NMoEcYie6Qq8hkNOtLJA,10371
|
@@ -70,7 +70,7 @@ qiskit/circuit/controlflow/for_loop.py,sha256=kbZsuk0KNYA9HOTi8t1qCfm25oGURPyRsk
|
|
70
70
|
qiskit/circuit/controlflow/if_else.py,sha256=0-PlHuxzAhECIj1XeLQU87_FzqZrGmmTikjZAbfVXtE,23047
|
71
71
|
qiskit/circuit/controlflow/switch_case.py,sha256=zCkhdTMqd6mvW0KIsBkV19Fr84myEj_mf3J28tp_2TI,18171
|
72
72
|
qiskit/circuit/controlflow/while_loop.py,sha256=gH5f1JC_JIakpk_k7cdVGXP93vxEpLfVXhDoo1_UCwo,6210
|
73
|
-
qiskit/circuit/library/__init__.py,sha256=
|
73
|
+
qiskit/circuit/library/__init__.py,sha256=x3K1T5vOAqiDsh1f4Zy4N9nzkNyWzXEQH3U-4CMRAo8,15941
|
74
74
|
qiskit/circuit/library/blueprintcircuit.py,sha256=V5BwicE0HKj4XFxA8pbFPIS60MeJB5xFUfcHnRIs5HY,10218
|
75
75
|
qiskit/circuit/library/fourier_checking.py,sha256=kQYdvHUO12pXlaeBRqav3sct_lxkRFF2U168PFmK8Pk,6410
|
76
76
|
qiskit/circuit/library/graph_state.py,sha256=ArLTXMRMAO1R194XErqZJnvcy0wV17n4H10pbe-xqOM,6282
|
@@ -96,10 +96,10 @@ qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py,sha256=Y3O2Um343
|
|
96
96
|
qiskit/circuit/library/arithmetic/quadratic_form.py,sha256=ZQqeIkHJw_rlzVaClGrBW0DgMymab7NcPlCopLVNy78,8288
|
97
97
|
qiskit/circuit/library/arithmetic/weighted_adder.py,sha256=AUohqtGV0IR2reZU29YSDVo6kSMJoqncZNCEhBudvqM,13166
|
98
98
|
qiskit/circuit/library/arithmetic/adders/__init__.py,sha256=gHzRfBcGYvNiydkYuf42czLLnHmAaWeHUYaJ-Z07Hg8,761
|
99
|
-
qiskit/circuit/library/arithmetic/adders/adder.py,sha256=
|
100
|
-
qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py,sha256=
|
101
|
-
qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py,sha256=
|
102
|
-
qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py,sha256=
|
99
|
+
qiskit/circuit/library/arithmetic/adders/adder.py,sha256=RSAKw1mftpUuUFsGPWV4x7_d3tN4BdjYJi33dXvvzyU,6874
|
100
|
+
qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py,sha256=3HRsIx1n9H1Xi2rUqo1oNVd4Nhc4G4PaQBvLtCYLYtc,7579
|
101
|
+
qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py,sha256=LEWsXBo20GpHYRu0TkZj4R_mYfF-3DX8KEJr9xBGwL8,6164
|
102
|
+
qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py,sha256=vgQ5UEqbuVEEE7v3NElb24qTaolMChc5l7VCSwePjJk,5034
|
103
103
|
qiskit/circuit/library/arithmetic/multipliers/__init__.py,sha256=Cw2e2xFpYZb1mB2bKiU38BAuZWIKfB7HdOVmqA3mrOY,689
|
104
104
|
qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py,sha256=BVYzcLL34f7KLW_2L61VBtuh9LIfXlmfW7JW6cAL4xs,6995
|
105
105
|
qiskit/circuit/library/arithmetic/multipliers/multiplier.py,sha256=_bhW2WOM_Z-GB5RDNWMkGWecundkqAocZsjibP8Jqrk,7159
|
@@ -293,7 +293,7 @@ qiskit/primitives/primitive_job.py,sha256=IhDsqtP3eYHi8ekW4ITM5EttrmQqm3qNYTeE7e
|
|
293
293
|
qiskit/primitives/sampler.py,sha256=xQ7ys2fssrpvQNM4ppVr6pQ4Wsn33gIY838BljIeGb0,6023
|
294
294
|
qiskit/primitives/statevector_estimator.py,sha256=7BabLm-RQNW9loEC7ygdhcQHJDGZ1DRhItsZYt1rZrc,7274
|
295
295
|
qiskit/primitives/statevector_sampler.py,sha256=YNcbqCHMFwf1G-XwHNJBUBIlB_t92ECGMjG8-YmuVj0,11285
|
296
|
-
qiskit/primitives/utils.py,sha256=
|
296
|
+
qiskit/primitives/utils.py,sha256=tzEPj0ddxLI0swA3jPOh_ANN9TjCn1oYRmBl7zGTwac,8594
|
297
297
|
qiskit/primitives/base/__init__.py,sha256=HZji4i_Lrf9KqcSufJwSNqe8Wt-c1RWmKzFeRNt8vxo,784
|
298
298
|
qiskit/primitives/base/base_estimator.py,sha256=kpEXcE2Lx3YqVRxlBctjJI_T1RYnaapk3kMW7vd7VQ8,9016
|
299
299
|
qiskit/primitives/base/base_primitive.py,sha256=TT7g3oFy9iIpzbeZxMLculQFBY9labxViTxbRQDtr-I,1314
|
@@ -315,7 +315,7 @@ qiskit/primitives/containers/pub_result.py,sha256=OQV7fy2W6ZeuZkVT56FjUFQXHoG7Y7
|
|
315
315
|
qiskit/primitives/containers/sampler_pub.py,sha256=LQgkp3X_ERyrYTSwX_cecqLVWZU4v0lkT5tUoDbOmTg,6860
|
316
316
|
qiskit/primitives/containers/sampler_pub_result.py,sha256=fkMyYsQPwDD-6FVfeVk06E2m81DyXjm5tZHju7y0wrk,2864
|
317
317
|
qiskit/primitives/containers/shape.py,sha256=JQTms4horYzCNyR_HhEvLxvMyvV-zcDu9jwzNCOfthU,3995
|
318
|
-
qiskit/providers/__init__.py,sha256=
|
318
|
+
qiskit/providers/__init__.py,sha256=Dh1IR6jnyW-0JQHIr9S8MQwHyIC1c_T7-cZ9REZxpWc,36267
|
319
319
|
qiskit/providers/backend.py,sha256=fgWGmdrCYJgYnnneZKcUYjkjH8NRskib_TBhqNDPRcg,26091
|
320
320
|
qiskit/providers/backend_compat.py,sha256=ylcPvMWgjzxBsWjKxRfEJ8jwXIupqr3o1i-McjpmwYU,20138
|
321
321
|
qiskit/providers/exceptions.py,sha256=-bvWhJW0KXjIamvZP3xyUnlGovIr_eoFO5hQxy2_zQE,1214
|
@@ -497,7 +497,7 @@ qiskit/quantum_info/states/measures.py,sha256=BoULnQ-1d9_bHzH6X79wtP7zTxkeVKgV3v
|
|
497
497
|
qiskit/quantum_info/states/quantum_state.py,sha256=ErmVJR0Quw5X00UAtvxsADd-vbWIycAA6gUcLRyOdPc,18277
|
498
498
|
qiskit/quantum_info/states/random.py,sha256=OUZXAZ9qYhbB9LogfAPhSrBphwapK9aI44xerJqWKlo,5219
|
499
499
|
qiskit/quantum_info/states/stabilizerstate.py,sha256=-StDch_tIIiD-z1zZJwD1aKvdHXHzy9tJiLAB_hq1UU,30486
|
500
|
-
qiskit/quantum_info/states/statevector.py,sha256=
|
500
|
+
qiskit/quantum_info/states/statevector.py,sha256=9fK9PVkdBxduv5S49Dej4ugsot8goaDe72LFqWT26P4,37764
|
501
501
|
qiskit/quantum_info/states/utils.py,sha256=cujjjFSIzNjvRdZyCyJerf9K5aa0g95ebN1tx8Nbteg,9005
|
502
502
|
qiskit/result/__init__.py,sha256=7KjootVBUTZFwdbpUMzxBfbcnNioU3w9-wGK1C7sHXk,1849
|
503
503
|
qiskit/result/counts.py,sha256=ti18MUnObmfoTMpQoCiObwyCOFL9UWCJIsDquJj23M4,8418
|
@@ -666,12 +666,12 @@ qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py,sha256=bFqmRq
|
|
666
666
|
qiskit/transpiler/passes/optimization/commutation_analysis.py,sha256=3-dyfsqf4QOr0ZdNfAYwiDvFCFT6mtrH0M9rs0U4nIg,1837
|
667
667
|
qiskit/transpiler/passes/optimization/commutative_cancellation.py,sha256=2z1ZOQAdshjhdTANPqXTy-ojx9F1SSCbqGxq_ucnHI8,3356
|
668
668
|
qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py,sha256=IkvZoTUm5xsR3_YWZIufoZxP0XSuyBKnkFrEEGcGvks,5693
|
669
|
-
qiskit/transpiler/passes/optimization/consolidate_blocks.py,sha256
|
669
|
+
qiskit/transpiler/passes/optimization/consolidate_blocks.py,sha256=-pU6tQTwGXrcLvHmb4A1sNNDWA5AOt6lGCT5xd83XyU,5496
|
670
670
|
qiskit/transpiler/passes/optimization/cx_cancellation.py,sha256=0e-7eMwdhy4NG6YllXUosWecPm1UwMQYngi-hyuuxak,2401
|
671
671
|
qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py,sha256=U-6Da8e2sh9oR7BghBcntnsnuB3BIDDMEZEtu59cUyE,7280
|
672
672
|
qiskit/transpiler/passes/optimization/elide_permutations.py,sha256=k7CrGy5iKs15uI97GUCJOQKpBxzCk7sr9X8bNaxN-HE,4146
|
673
673
|
qiskit/transpiler/passes/optimization/hoare_opt.py,sha256=xdSqEmWinuAVkgBGIiFNS-PB7NnzkSFwN-h_BugZOgE,16711
|
674
|
-
qiskit/transpiler/passes/optimization/inverse_cancellation.py,sha256=
|
674
|
+
qiskit/transpiler/passes/optimization/inverse_cancellation.py,sha256=LzBw1FzMgj5WeSnRjSxa0wqYBanvDYQLKV3un5kYdxU,3527
|
675
675
|
qiskit/transpiler/passes/optimization/normalize_rx_angle.py,sha256=AbnCL0yvtCp-4O1O8lpFzj8fSzMZ3QYG6gjmJI7uHAE,6404
|
676
676
|
qiskit/transpiler/passes/optimization/optimize_1q_commutation.py,sha256=uwoaomez83bG7CgG078cJO55EIe5qjXEIESG4hjqAJU,10583
|
677
677
|
qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py,sha256=YgzGFQw_D1aCDtCHGbmq7GHm9KLCx9SWXIaDYaND7WE,10205
|
@@ -731,8 +731,8 @@ qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py,sha256=oh_1Gb6G
|
|
731
731
|
qiskit/transpiler/passes/scheduling/scheduling/set_io_latency.py,sha256=FmQSvPbI67L1MvF4A1tbM3Z_8r_7bx6exAyt2Iy-uVw,2918
|
732
732
|
qiskit/transpiler/passes/synthesis/__init__.py,sha256=Q18fvaIkZ1PXp680Y53DkatyPg81zNVrdUp_hTJ7k_c,945
|
733
733
|
qiskit/transpiler/passes/synthesis/aqc_plugin.py,sha256=y3eoBqsHfugseAa2wYvY-5eWF1GME_TOWnHke9z8NTI,5496
|
734
|
-
qiskit/transpiler/passes/synthesis/high_level_synthesis.py,sha256=
|
735
|
-
qiskit/transpiler/passes/synthesis/hls_plugins.py,sha256=
|
734
|
+
qiskit/transpiler/passes/synthesis/high_level_synthesis.py,sha256=VruZtdMvxcwF2chiuJvFkaHIWm6LpZVSdD9pvHFU9Bg,41435
|
735
|
+
qiskit/transpiler/passes/synthesis/hls_plugins.py,sha256=ng5Hqtdwd-qySwb8kU4_Feq53-C_NUJS2KTFmu5onCo,59730
|
736
736
|
qiskit/transpiler/passes/synthesis/linear_functions_synthesis.py,sha256=Sit6NoTlFXNBDrDxlyMar9ro7VunRJQxWb5NeG2JTZc,1448
|
737
737
|
qiskit/transpiler/passes/synthesis/plugin.py,sha256=7yE9-J2CkSRmxsdpMkSkEDZ7lTonsXUeWfj-IQEJNM8,31540
|
738
738
|
qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py,sha256=_Fq3gVuzTUu-ezCtyp3mBQ1tOMrW96igGcsgybXSD8s,11349
|
@@ -758,7 +758,7 @@ qiskit/transpiler/passes/utils/unroll_forloops.py,sha256=mkjucqYOXyfJpCT3dtXUMJe
|
|
758
758
|
qiskit/transpiler/preset_passmanagers/__init__.py,sha256=DIC_jvndc-sN6x3F7mag-TPV67QN5QqCS3AC2qvuqsw,2831
|
759
759
|
qiskit/transpiler/preset_passmanagers/builtin_plugins.py,sha256=g-EO8nNDuvtAkSL-fWxju9-ETmJinL2_JfEhSFBbRs0,45014
|
760
760
|
qiskit/transpiler/preset_passmanagers/common.py,sha256=WIyb4sDZdfWTonF-ApLK6v3c_Cz8XihBCH0mpWMUrnw,27171
|
761
|
-
qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py,sha256=
|
761
|
+
qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py,sha256=YVrIzj-viNuX8r2igm5u8Y7iT_4RVtMyk2m5brJrrLo,31475
|
762
762
|
qiskit/transpiler/preset_passmanagers/level0.py,sha256=-X8y92rTBnvYlbXnWcFgwkF78FZK9Gn2Z9Pd9h0dvfA,4390
|
763
763
|
qiskit/transpiler/preset_passmanagers/level1.py,sha256=Cxw99_TL8px-pavkr_XRkMFi9z8F5xnXuDiKRCTbFQE,4926
|
764
764
|
qiskit/transpiler/preset_passmanagers/level2.py,sha256=cSOrYsVVJC5DJpjnJ4lNRtkZe_lKH4w385lsb8bogWU,4850
|
@@ -828,9 +828,9 @@ qiskit/visualization/timeline/types.py,sha256=jtpipQWUpahayNPQYKUst4GG6BqauovO0q
|
|
828
828
|
qiskit/visualization/timeline/plotters/__init__.py,sha256=Klg9a1cSUIQhc815g8OpnD5vO1hcI51L9KlFfKzcuRg,588
|
829
829
|
qiskit/visualization/timeline/plotters/base_plotter.py,sha256=taRkL2ZbyorRUEf6nJS8egdzKW2eznQ3w5oBLtMG_U8,1805
|
830
830
|
qiskit/visualization/timeline/plotters/matplotlib.py,sha256=lqqNH3-bdf1F1cS2mDla9dLr5qEOeIFuqVl9Rhdg-Dw,7086
|
831
|
-
qiskit-1.3.
|
832
|
-
qiskit-1.3.
|
833
|
-
qiskit-1.3.
|
834
|
-
qiskit-1.3.
|
835
|
-
qiskit-1.3.
|
836
|
-
qiskit-1.3.
|
831
|
+
qiskit-1.3.0rc1.dist-info/LICENSE.txt,sha256=pUbmRuPr1gJTTTWZu2c8UmNSntz-pDdKfGR-86NRkok,11619
|
832
|
+
qiskit-1.3.0rc1.dist-info/METADATA,sha256=qTFOF4eMK6wtWHaSaXDozCkQAr36AoFEYF-EZMuMJuc,13099
|
833
|
+
qiskit-1.3.0rc1.dist-info/WHEEL,sha256=4IQ1P53m-xeOuBBShI63tOno6crr8d99DEYgfjkru7o,95
|
834
|
+
qiskit-1.3.0rc1.dist-info/entry_points.txt,sha256=5Xf0jdIYmLoQN2KoTrdTAfJm9FSd0-w4O0fckxQl7KQ,5669
|
835
|
+
qiskit-1.3.0rc1.dist-info/top_level.txt,sha256=_vjFXLv7qrHyJJOC2-JXfG54o4XQygW9GuQPxgtSt9Q,7
|
836
|
+
qiskit-1.3.0rc1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|