qiskit 1.2.0__cp38-abi3-win32.whl → 1.2.1__cp38-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/__init__.py +10 -0
- qiskit/circuit/library/basis_change/qft.py +3 -1
- qiskit/circuit/library/data_preparation/initializer.py +5 -2
- qiskit/circuit/library/data_preparation/state_preparation.py +2 -2
- qiskit/circuit/library/standard_gates/__init__.py +32 -25
- qiskit/circuit/quantumcircuit.py +39 -14
- qiskit/pulse/library/symbolic_pulses.py +4 -3
- qiskit/quantum_info/operators/operator.py +24 -0
- qiskit/synthesis/clifford/clifford_decompose_bm.py +1 -1
- qiskit/synthesis/clifford/clifford_decompose_greedy.py +1 -1
- qiskit/synthesis/linear/cnot_synth.py +1 -1
- qiskit/synthesis/one_qubit/one_qubit_decompose.py +2 -1
- qiskit/synthesis/permutation/permutation_full.py +2 -2
- qiskit/synthesis/permutation/permutation_lnn.py +3 -1
- qiskit/synthesis/two_qubit/two_qubit_decompose.py +2 -2
- qiskit/transpiler/instruction_durations.py +4 -0
- qiskit/transpiler/passes/__init__.py +2 -0
- qiskit/transpiler/passes/optimization/__init__.py +1 -0
- qiskit/transpiler/passes/optimization/hoare_opt.py +12 -8
- qiskit/transpiler/passes/optimization/split_2q_unitaries.py +16 -20
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +9 -0
- qiskit/utils/optionals.py +173 -150
- qiskit/visualization/gate_map.py +28 -6
- {qiskit-1.2.0.dist-info → qiskit-1.2.1.dist-info}/METADATA +1 -1
- {qiskit-1.2.0.dist-info → qiskit-1.2.1.dist-info}/RECORD +31 -31
- {qiskit-1.2.0.dist-info → qiskit-1.2.1.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.2.0.dist-info → qiskit-1.2.1.dist-info}/WHEEL +0 -0
- {qiskit-1.2.0.dist-info → qiskit-1.2.1.dist-info}/entry_points.txt +0 -0
- {qiskit-1.2.0.dist-info → qiskit-1.2.1.dist-info}/top_level.txt +0 -0
qiskit/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.1
|
qiskit/_accelerate.pyd
CHANGED
Binary file
|
qiskit/circuit/__init__.py
CHANGED
@@ -580,6 +580,16 @@ The :class:`Store` instruction is particularly special, in that it allows writin
|
|
580
580
|
:class:`Qubit` nor :class:`Clbit` operands, but has an explicit :attr:`~Store.lvalue` and
|
581
581
|
:attr:`~Store.rvalue`.
|
582
582
|
|
583
|
+
For example, to determine the parity of a bitstring ``cr`` and store it in another register ``creg``,
|
584
|
+
the :class:`Store` instruction can be used in the following way::
|
585
|
+
|
586
|
+
parity = expr.lift(cr[0])
|
587
|
+
for i in range(1,n):
|
588
|
+
parity = expr.bit_xor(cr[i], parity)
|
589
|
+
qc.store(creg[0], parity)
|
590
|
+
|
591
|
+
|
592
|
+
|
583
593
|
.. autoclass:: Store
|
584
594
|
:show-inheritance:
|
585
595
|
:members:
|
@@ -315,8 +315,10 @@ class QFTGate(Gate):
|
|
315
315
|
"""
|
316
316
|
super().__init__(name="qft", num_qubits=num_qubits, params=[])
|
317
317
|
|
318
|
-
def __array__(self, dtype=complex):
|
318
|
+
def __array__(self, dtype=complex, copy=None):
|
319
319
|
"""Return a numpy array for the QFTGate."""
|
320
|
+
if copy is False:
|
321
|
+
raise ValueError("unable to avoid copy while creating an array as requested")
|
320
322
|
n = self.num_qubits
|
321
323
|
nums = np.arange(2**n)
|
322
324
|
outer = np.outer(nums, nums)
|
@@ -21,6 +21,7 @@ import typing
|
|
21
21
|
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
22
22
|
from qiskit.circuit.quantumregister import QuantumRegister
|
23
23
|
from qiskit.circuit.instruction import Instruction
|
24
|
+
from qiskit.circuit.library.generalized_gates import Isometry
|
24
25
|
from .state_preparation import StatePreparation
|
25
26
|
|
26
27
|
if typing.TYPE_CHECKING:
|
@@ -86,9 +87,11 @@ class Initialize(Instruction):
|
|
86
87
|
"""Call to create a circuit with gates that take the desired vector to zero.
|
87
88
|
|
88
89
|
Returns:
|
89
|
-
|
90
|
+
QuantumCircuit: circuit to take ``self.params`` vector to :math:`|{00\\ldots0}\\rangle`
|
90
91
|
"""
|
91
|
-
|
92
|
+
|
93
|
+
isom = Isometry(self.params, 0, 0)
|
94
|
+
return isom._gates_to_uncompute()
|
92
95
|
|
93
96
|
@property
|
94
97
|
def params(self):
|
@@ -173,8 +173,8 @@ class StatePreparation(Gate):
|
|
173
173
|
q = QuantumRegister(self.num_qubits, "q")
|
174
174
|
initialize_circuit = QuantumCircuit(q, name="init_def")
|
175
175
|
|
176
|
-
isom = Isometry(self.
|
177
|
-
initialize_circuit.
|
176
|
+
isom = Isometry(self.params, 0, 0)
|
177
|
+
initialize_circuit.compose(isom.definition, copy=False, inplace=True)
|
178
178
|
|
179
179
|
# invert the circuit to create the desired vector from zero (assuming
|
180
180
|
# the qubits are in the zero state)
|
@@ -54,6 +54,13 @@ def get_standard_gate_name_mapping():
|
|
54
54
|
from qiskit.circuit.delay import Delay
|
55
55
|
from qiskit.circuit.reset import Reset
|
56
56
|
|
57
|
+
lambda_ = Parameter("λ")
|
58
|
+
theta = Parameter("ϴ")
|
59
|
+
phi = Parameter("φ")
|
60
|
+
gamma = Parameter("γ")
|
61
|
+
beta = Parameter("β")
|
62
|
+
time = Parameter("t")
|
63
|
+
|
57
64
|
# Standard gates library mapping, multicontrolled gates not included since they're
|
58
65
|
# variable width
|
59
66
|
gates = [
|
@@ -61,38 +68,37 @@ def get_standard_gate_name_mapping():
|
|
61
68
|
SXGate(),
|
62
69
|
XGate(),
|
63
70
|
CXGate(),
|
64
|
-
RZGate(
|
65
|
-
RGate(
|
66
|
-
Reset(),
|
71
|
+
RZGate(lambda_),
|
72
|
+
RGate(theta, phi),
|
67
73
|
C3SXGate(),
|
68
74
|
CCXGate(),
|
69
75
|
DCXGate(),
|
70
76
|
CHGate(),
|
71
|
-
CPhaseGate(
|
72
|
-
CRXGate(
|
73
|
-
CRYGate(
|
74
|
-
CRZGate(
|
77
|
+
CPhaseGate(theta),
|
78
|
+
CRXGate(theta),
|
79
|
+
CRYGate(theta),
|
80
|
+
CRZGate(theta),
|
75
81
|
CSwapGate(),
|
76
82
|
CSXGate(),
|
77
|
-
CUGate(
|
78
|
-
CU1Gate(
|
79
|
-
CU3Gate(
|
83
|
+
CUGate(theta, phi, lambda_, gamma),
|
84
|
+
CU1Gate(lambda_),
|
85
|
+
CU3Gate(theta, phi, lambda_),
|
80
86
|
CYGate(),
|
81
87
|
CZGate(),
|
82
88
|
CCZGate(),
|
83
|
-
GlobalPhaseGate(
|
89
|
+
GlobalPhaseGate(theta),
|
84
90
|
HGate(),
|
85
|
-
PhaseGate(
|
91
|
+
PhaseGate(theta),
|
86
92
|
RCCXGate(),
|
87
93
|
RC3XGate(),
|
88
|
-
RXGate(
|
89
|
-
RXXGate(
|
90
|
-
RYGate(
|
91
|
-
RYYGate(
|
92
|
-
RZZGate(
|
93
|
-
RZXGate(
|
94
|
-
XXMinusYYGate(
|
95
|
-
XXPlusYYGate(
|
94
|
+
RXGate(theta),
|
95
|
+
RXXGate(theta),
|
96
|
+
RYGate(theta),
|
97
|
+
RYYGate(theta),
|
98
|
+
RZZGate(theta),
|
99
|
+
RZXGate(theta),
|
100
|
+
XXMinusYYGate(theta, beta),
|
101
|
+
XXPlusYYGate(theta, beta),
|
96
102
|
ECRGate(),
|
97
103
|
SGate(),
|
98
104
|
SdgGate(),
|
@@ -103,13 +109,14 @@ def get_standard_gate_name_mapping():
|
|
103
109
|
SXdgGate(),
|
104
110
|
TGate(),
|
105
111
|
TdgGate(),
|
106
|
-
UGate(
|
107
|
-
U1Gate(
|
108
|
-
U2Gate(
|
109
|
-
U3Gate(
|
112
|
+
UGate(theta, phi, lambda_),
|
113
|
+
U1Gate(lambda_),
|
114
|
+
U2Gate(phi, lambda_),
|
115
|
+
U3Gate(theta, phi, lambda_),
|
110
116
|
YGate(),
|
111
117
|
ZGate(),
|
112
|
-
Delay(
|
118
|
+
Delay(time),
|
119
|
+
Reset(),
|
113
120
|
Measure(),
|
114
121
|
]
|
115
122
|
name_mapping = {gate.name: gate for gate in gates}
|
qiskit/circuit/quantumcircuit.py
CHANGED
@@ -1152,17 +1152,41 @@ class QuantumCircuit:
|
|
1152
1152
|
"""The unit that :attr:`duration` is specified in."""
|
1153
1153
|
self.metadata = {} if metadata is None else metadata
|
1154
1154
|
"""Arbitrary user-defined metadata for the circuit.
|
1155
|
-
|
1155
|
+
|
1156
1156
|
Qiskit will not examine the content of this mapping, but it will pass it through the
|
1157
1157
|
transpiler and reattach it to the output, so you can track your own metadata."""
|
1158
1158
|
|
1159
1159
|
@classmethod
|
1160
|
-
def _from_circuit_data(cls, data: CircuitData) -> typing.Self:
|
1160
|
+
def _from_circuit_data(cls, data: CircuitData, add_regs: bool = False) -> typing.Self:
|
1161
1161
|
"""A private constructor from rust space circuit data."""
|
1162
1162
|
out = QuantumCircuit()
|
1163
|
+
|
1164
|
+
if data.num_qubits > 0:
|
1165
|
+
if add_regs:
|
1166
|
+
qr = QuantumRegister(name="q", bits=data.qubits)
|
1167
|
+
out.qregs = [qr]
|
1168
|
+
out._qubit_indices = {
|
1169
|
+
bit: BitLocations(index, [(qr, index)]) for index, bit in enumerate(data.qubits)
|
1170
|
+
}
|
1171
|
+
else:
|
1172
|
+
out._qubit_indices = {
|
1173
|
+
bit: BitLocations(index, []) for index, bit in enumerate(data.qubits)
|
1174
|
+
}
|
1175
|
+
|
1176
|
+
if data.num_clbits > 0:
|
1177
|
+
if add_regs:
|
1178
|
+
cr = ClassicalRegister(name="c", bits=data.clbits)
|
1179
|
+
out.cregs = [cr]
|
1180
|
+
out._clbit_indices = {
|
1181
|
+
bit: BitLocations(index, [(cr, index)]) for index, bit in enumerate(data.clbits)
|
1182
|
+
}
|
1183
|
+
else:
|
1184
|
+
out._clbit_indices = {
|
1185
|
+
bit: BitLocations(index, []) for index, bit in enumerate(data.clbits)
|
1186
|
+
}
|
1187
|
+
|
1163
1188
|
out._data = data
|
1164
|
-
|
1165
|
-
out._clbit_indices = {bit: BitLocations(index, []) for index, bit in enumerate(data.clbits)}
|
1189
|
+
|
1166
1190
|
return out
|
1167
1191
|
|
1168
1192
|
@staticmethod
|
@@ -3013,16 +3037,7 @@ class QuantumCircuit:
|
|
3013
3037
|
self._ancillas.append(bit)
|
3014
3038
|
|
3015
3039
|
if isinstance(register, QuantumRegister):
|
3016
|
-
self.
|
3017
|
-
|
3018
|
-
for idx, bit in enumerate(register):
|
3019
|
-
if bit in self._qubit_indices:
|
3020
|
-
self._qubit_indices[bit].registers.append((register, idx))
|
3021
|
-
else:
|
3022
|
-
self._data.add_qubit(bit)
|
3023
|
-
self._qubit_indices[bit] = BitLocations(
|
3024
|
-
self._data.num_qubits - 1, [(register, idx)]
|
3025
|
-
)
|
3040
|
+
self._add_qreg(register)
|
3026
3041
|
|
3027
3042
|
elif isinstance(register, ClassicalRegister):
|
3028
3043
|
self.cregs.append(register)
|
@@ -3041,6 +3056,16 @@ class QuantumCircuit:
|
|
3041
3056
|
else:
|
3042
3057
|
raise CircuitError("expected a register")
|
3043
3058
|
|
3059
|
+
def _add_qreg(self, qreg: QuantumRegister) -> None:
|
3060
|
+
self.qregs.append(qreg)
|
3061
|
+
|
3062
|
+
for idx, bit in enumerate(qreg):
|
3063
|
+
if bit in self._qubit_indices:
|
3064
|
+
self._qubit_indices[bit].registers.append((qreg, idx))
|
3065
|
+
else:
|
3066
|
+
self._data.add_qubit(bit)
|
3067
|
+
self._qubit_indices[bit] = BitLocations(self._data.num_qubits - 1, [(qreg, idx)])
|
3068
|
+
|
3044
3069
|
def add_bits(self, bits: Iterable[Bit]) -> None:
|
3045
3070
|
"""Add Bits to the circuit."""
|
3046
3071
|
duplicate_bits = {
|
@@ -1773,12 +1773,13 @@ def Square(
|
|
1773
1773
|
is the sign function with the convention :math:`\\text{sign}\\left(0\\right)=1`.
|
1774
1774
|
|
1775
1775
|
Args:
|
1776
|
-
duration: Pulse length in terms of the sampling period
|
1777
|
-
amp: The magnitude of the amplitude of the square wave. Wave range is
|
1776
|
+
duration: Pulse length in terms of the sampling period ``dt``.
|
1777
|
+
amp: The magnitude of the amplitude of the square wave. Wave range is
|
1778
|
+
:math:`\\left[-\\texttt{amp},\\texttt{amp}\\right]`.
|
1778
1779
|
phase: The phase of the square wave (note that this is not equivalent to the angle of
|
1779
1780
|
the complex amplitude).
|
1780
1781
|
freq: The frequency of the square wave, in terms of 1 over sampling period.
|
1781
|
-
If not provided defaults to a single cycle (i.e :math
|
1782
|
+
If not provided defaults to a single cycle (i.e :math:`\\frac{1}{\\text{duration}}`).
|
1782
1783
|
The frequency is limited to the range :math:`\\left(0,0.5\\right]` (the Nyquist frequency).
|
1783
1784
|
angle: The angle in radians of the complex phase factor uniformly
|
1784
1785
|
scaling the pulse. Default value 0.
|
@@ -55,6 +55,30 @@ class Operator(LinearOp):
|
|
55
55
|
.. math::
|
56
56
|
|
57
57
|
\rho \mapsto M \rho M^\dagger.
|
58
|
+
|
59
|
+
For example, the following operator :math:`M = X` applied to the zero state
|
60
|
+
:math:`|\psi\rangle=|0\rangle (\rho = |0\rangle\langle 0|)` changes it to the
|
61
|
+
one state :math:`|\psi\rangle=|1\rangle (\rho = |1\rangle\langle 1|)`:
|
62
|
+
|
63
|
+
.. code-block:: python
|
64
|
+
|
65
|
+
>>> import numpy as np
|
66
|
+
>>> from qiskit.quantum_info import Operator
|
67
|
+
>>> op = Operator(np.array([[0.0, 1.0], [1.0, 0.0]])) # Represents Pauli X operator
|
68
|
+
|
69
|
+
>>> from qiskit.quantum_info import Statevector
|
70
|
+
>>> sv = Statevector(np.array([1.0, 0.0]))
|
71
|
+
>>> sv.evolve(op)
|
72
|
+
Statevector([0.+0.j, 1.+0.j],
|
73
|
+
dims=(2,))
|
74
|
+
|
75
|
+
>>> from qiskit.quantum_info import DensityMatrix
|
76
|
+
>>> dm = DensityMatrix(np.array([[1.0, 0.0], [0.0, 0.0]]))
|
77
|
+
>>> dm.evolve(op)
|
78
|
+
DensityMatrix([[0.+0.j, 0.+0.j],
|
79
|
+
[0.+0.j, 1.+0.j]],
|
80
|
+
dims=(2,))
|
81
|
+
|
58
82
|
"""
|
59
83
|
|
60
84
|
def __init__(
|
@@ -41,7 +41,7 @@ def synth_clifford_bm(clifford: Clifford) -> QuantumCircuit:
|
|
41
41
|
`arXiv:2003.09412 [quant-ph] <https://arxiv.org/abs/2003.09412>`_
|
42
42
|
"""
|
43
43
|
circuit = QuantumCircuit._from_circuit_data(
|
44
|
-
synth_clifford_bm_inner(clifford.tableau.astype(bool))
|
44
|
+
synth_clifford_bm_inner(clifford.tableau.astype(bool)), add_regs=True
|
45
45
|
)
|
46
46
|
circuit.name = str(clifford)
|
47
47
|
return circuit
|
@@ -51,7 +51,7 @@ def synth_clifford_greedy(clifford: Clifford) -> QuantumCircuit:
|
|
51
51
|
`arXiv:2105.02291 [quant-ph] <https://arxiv.org/abs/2105.02291>`_
|
52
52
|
"""
|
53
53
|
circuit = QuantumCircuit._from_circuit_data(
|
54
|
-
synth_clifford_greedy_inner(clifford.tableau.astype(bool))
|
54
|
+
synth_clifford_greedy_inner(clifford.tableau.astype(bool)), add_regs=True
|
55
55
|
)
|
56
56
|
circuit.name = str(clifford)
|
57
57
|
return circuit
|
@@ -42,7 +42,7 @@ def synth_permutation_basic(pattern: list[int] | np.ndarray[int]) -> QuantumCirc
|
|
42
42
|
Returns:
|
43
43
|
The synthesized quantum circuit.
|
44
44
|
"""
|
45
|
-
return QuantumCircuit._from_circuit_data(_synth_permutation_basic(pattern))
|
45
|
+
return QuantumCircuit._from_circuit_data(_synth_permutation_basic(pattern), add_regs=True)
|
46
46
|
|
47
47
|
|
48
48
|
def synth_permutation_acg(pattern: list[int] | np.ndarray[int]) -> QuantumCircuit:
|
@@ -75,4 +75,4 @@ def synth_permutation_acg(pattern: list[int] | np.ndarray[int]) -> QuantumCircui
|
|
75
75
|
*Routing Permutations on Graphs Via Matchings.*,
|
76
76
|
`(Full paper) <https://www.cs.tau.ac.il/~nogaa/PDFS/r.pdf>`_
|
77
77
|
"""
|
78
|
-
return QuantumCircuit._from_circuit_data(_synth_permutation_acg(pattern))
|
78
|
+
return QuantumCircuit._from_circuit_data(_synth_permutation_acg(pattern), add_regs=True)
|
@@ -49,4 +49,6 @@ def synth_permutation_depth_lnn_kms(pattern: list[int] | np.ndarray[int]) -> Qua
|
|
49
49
|
# In the permutation synthesis code below the notation is opposite:
|
50
50
|
# [2, 4, 3, 0, 1] means that 0 maps to 2, 1 to 3, 2 to 3, 3 to 0, and 4 to 1.
|
51
51
|
# This is why we invert the pattern.
|
52
|
-
return QuantumCircuit._from_circuit_data(
|
52
|
+
return QuantumCircuit._from_circuit_data(
|
53
|
+
_synth_permutation_depth_lnn_kms(pattern), add_regs=True
|
54
|
+
)
|
@@ -233,7 +233,7 @@ class TwoQubitWeylDecomposition:
|
|
233
233
|
circuit_data = self._inner_decomposition.circuit(
|
234
234
|
euler_basis=euler_basis, simplify=simplify, atol=atol
|
235
235
|
)
|
236
|
-
return QuantumCircuit._from_circuit_data(circuit_data)
|
236
|
+
return QuantumCircuit._from_circuit_data(circuit_data, add_regs=True)
|
237
237
|
|
238
238
|
def actual_fidelity(self, **kwargs) -> float:
|
239
239
|
"""Calculates the actual fidelity of the decomposed circuit to the input unitary."""
|
@@ -671,7 +671,7 @@ class TwoQubitBasisDecomposer:
|
|
671
671
|
approximate,
|
672
672
|
_num_basis_uses=_num_basis_uses,
|
673
673
|
)
|
674
|
-
return QuantumCircuit._from_circuit_data(circ_data)
|
674
|
+
return QuantumCircuit._from_circuit_data(circ_data, add_regs=True)
|
675
675
|
else:
|
676
676
|
sequence = self._inner_decomposer(
|
677
677
|
np.asarray(unitary, dtype=complex),
|
@@ -18,6 +18,7 @@ import qiskit.circuit
|
|
18
18
|
from qiskit.circuit import Barrier, Delay, Instruction, ParameterExpression
|
19
19
|
from qiskit.circuit.duration import duration_in_dt
|
20
20
|
from qiskit.providers import Backend
|
21
|
+
from qiskit.providers.backend import BackendV2
|
21
22
|
from qiskit.transpiler.exceptions import TranspilerError
|
22
23
|
from qiskit.utils.units import apply_prefix
|
23
24
|
|
@@ -75,6 +76,9 @@ class InstructionDurations:
|
|
75
76
|
TranspilerError: If dt and dtm is different in the backend.
|
76
77
|
"""
|
77
78
|
# All durations in seconds in gate_length
|
79
|
+
if isinstance(backend, BackendV2):
|
80
|
+
return backend.target.durations()
|
81
|
+
|
78
82
|
instruction_durations = []
|
79
83
|
backend_properties = backend.properties()
|
80
84
|
if hasattr(backend_properties, "_gates"):
|
@@ -71,6 +71,7 @@ Optimizations
|
|
71
71
|
Collect1qRuns
|
72
72
|
Collect2qBlocks
|
73
73
|
CollectMultiQBlocks
|
74
|
+
CollectAndCollapse
|
74
75
|
CollectLinearFunctions
|
75
76
|
CollectCliffords
|
76
77
|
ConsolidateBlocks
|
@@ -238,6 +239,7 @@ from .optimization import HoareOptimizer
|
|
238
239
|
from .optimization import TemplateOptimization
|
239
240
|
from .optimization import InverseCancellation
|
240
241
|
from .optimization import EchoRZXWeylDecomposition
|
242
|
+
from .optimization import CollectAndCollapse
|
241
243
|
from .optimization import CollectLinearFunctions
|
242
244
|
from .optimization import CollectCliffords
|
243
245
|
from .optimization import ResetAfterMeasureSimplification
|
@@ -203,20 +203,24 @@ class HoareOptimizer(TransformationPass):
|
|
203
203
|
"""
|
204
204
|
import z3
|
205
205
|
|
206
|
-
|
206
|
+
# Pre-generate all DAG nodes, since we later iterate over them, while
|
207
|
+
# potentially modifying and removing some of them.
|
208
|
+
nodes = list(dag.topological_op_nodes())
|
209
|
+
for node in nodes:
|
207
210
|
gate = node.op
|
208
|
-
|
211
|
+
_, ctrlvar, trgtqb, trgtvar = self._seperate_ctrl_trgt(node)
|
209
212
|
|
210
213
|
ctrl_ones = z3.And(*ctrlvar)
|
211
214
|
|
212
|
-
remove_ctrl, new_dag,
|
215
|
+
remove_ctrl, new_dag, _ = self._remove_control(gate, ctrlvar, trgtvar)
|
213
216
|
|
214
217
|
if remove_ctrl:
|
215
|
-
|
216
|
-
|
217
|
-
node
|
218
|
-
|
219
|
-
node
|
218
|
+
# We are replacing a node by a new node over a smaller number of qubits.
|
219
|
+
# This can be done using substitute_node_with_dag, which furthermore returns
|
220
|
+
# a mapping from old node ids to new nodes.
|
221
|
+
mapped_nodes = dag.substitute_node_with_dag(node, new_dag)
|
222
|
+
node = next(iter(mapped_nodes.values()))
|
223
|
+
gate = node.op
|
220
224
|
_, ctrlvar, trgtqb, trgtvar = self._seperate_ctrl_trgt(node)
|
221
225
|
|
222
226
|
ctrl_ones = z3.And(*ctrlvar)
|
@@ -9,8 +9,8 @@
|
|
9
9
|
# Any modifications or derivative works of this code must retain this
|
10
10
|
# copyright notice, and modified files need to carry a notice indicating
|
11
11
|
# that they have been altered from the originals.
|
12
|
+
|
12
13
|
"""Splits each two-qubit gate in the `dag` into two single-qubit gates, if possible without error."""
|
13
|
-
from typing import Optional
|
14
14
|
|
15
15
|
from qiskit.transpiler.basepasses import TransformationPass
|
16
16
|
from qiskit.circuit.quantumcircuitdata import CircuitInstruction
|
@@ -20,37 +20,33 @@ from qiskit.synthesis.two_qubit.two_qubit_decompose import TwoQubitWeylDecomposi
|
|
20
20
|
|
21
21
|
|
22
22
|
class Split2QUnitaries(TransformationPass):
|
23
|
-
"""Attempt to splits two-qubit
|
23
|
+
"""Attempt to splits two-qubit unitaries in a :class:`.DAGCircuit` into two single-qubit gates.
|
24
24
|
|
25
|
-
This pass will analyze all
|
26
|
-
matrix
|
27
|
-
|
28
|
-
|
29
|
-
:class:`.UnitaryGate`.
|
25
|
+
This pass will analyze all :class:`.UnitaryGate` instances and determine whether the
|
26
|
+
matrix is actually a product of 2 single qubit gates. In these cases the 2q gate can be
|
27
|
+
simplified into two single qubit gates and this pass will perform this optimization and will
|
28
|
+
replace the two qubit gate with two single qubit :class:`.UnitaryGate`.
|
30
29
|
"""
|
31
30
|
|
32
|
-
def __init__(self, fidelity:
|
33
|
-
"""
|
34
|
-
|
31
|
+
def __init__(self, fidelity: float = 1.0 - 1e-16):
|
32
|
+
"""
|
35
33
|
Args:
|
36
|
-
fidelity
|
34
|
+
fidelity: Allowed tolerance for splitting two-qubit unitaries and gate decompositions.
|
37
35
|
"""
|
38
36
|
super().__init__()
|
39
37
|
self.requested_fidelity = fidelity
|
40
38
|
|
41
|
-
def run(self, dag: DAGCircuit):
|
39
|
+
def run(self, dag: DAGCircuit) -> DAGCircuit:
|
42
40
|
"""Run the Split2QUnitaries pass on `dag`."""
|
41
|
+
|
43
42
|
for node in dag.topological_op_nodes():
|
44
|
-
#
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
or node.matrix is None
|
49
|
-
or node.is_parameterized()
|
50
|
-
):
|
43
|
+
# We only attempt to split UnitaryGate objects, but this could be extended in future
|
44
|
+
# -- however we need to ensure that we can compile the resulting single-qubit unitaries
|
45
|
+
# to the supported basis gate set.
|
46
|
+
if not (len(node.qargs) == 2 and node.op.name == "unitary"):
|
51
47
|
continue
|
52
48
|
|
53
|
-
decomp = TwoQubitWeylDecomposition(node.
|
49
|
+
decomp = TwoQubitWeylDecomposition(node.matrix, fidelity=self.requested_fidelity)
|
54
50
|
if (
|
55
51
|
decomp._inner_decomposition.specialization
|
56
52
|
== TwoQubitWeylDecomposition._specializations.IdEquiv
|
@@ -343,6 +343,7 @@ def generate_preset_pass_manager(
|
|
343
343
|
# Parse non-target dependent pm options
|
344
344
|
initial_layout = _parse_initial_layout(initial_layout)
|
345
345
|
approximation_degree = _parse_approximation_degree(approximation_degree)
|
346
|
+
seed_transpiler = _parse_seed_transpiler(seed_transpiler)
|
346
347
|
|
347
348
|
pm_options = {
|
348
349
|
"target": target,
|
@@ -516,3 +517,11 @@ def _parse_approximation_degree(approximation_degree):
|
|
516
517
|
if approximation_degree < 0.0 or approximation_degree > 1.0:
|
517
518
|
raise TranspilerError("Approximation degree must be in [0.0, 1.0]")
|
518
519
|
return approximation_degree
|
520
|
+
|
521
|
+
|
522
|
+
def _parse_seed_transpiler(seed_transpiler):
|
523
|
+
if seed_transpiler is None:
|
524
|
+
return None
|
525
|
+
if not isinstance(seed_transpiler, int) or seed_transpiler < 0:
|
526
|
+
raise ValueError("Expected non-negative integer as seed for transpiler.")
|
527
|
+
return seed_transpiler
|
qiskit/utils/optionals.py
CHANGED
@@ -25,172 +25,195 @@ Available Testers
|
|
25
25
|
Qiskit Components
|
26
26
|
-----------------
|
27
27
|
|
28
|
-
..
|
29
|
-
:widths: 25 75
|
28
|
+
.. py:data:: HAS_AER
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
the quantum circuits constructed within Qiskit.
|
30
|
+
`Qiskit Aer <https://qiskit.github.io/qiskit-aer/>` provides high-performance simulators for
|
31
|
+
the quantum circuits constructed within Qiskit.
|
34
32
|
|
35
|
-
|
36
|
-
- The :mod:`Qiskit IBMQ Provider <qiskit.providers.ibmq>` is used for accessing IBM Quantum
|
37
|
-
hardware in the IBM cloud.
|
33
|
+
.. py:data:: HAS_IBMQ
|
38
34
|
|
39
|
-
|
40
|
-
|
41
|
-
characterization, and error correction.
|
35
|
+
The :mod:`Qiskit IBMQ Provider <qiskit.providers.ibmq>` is used for accessing IBM Quantum
|
36
|
+
hardware in the IBM cloud.
|
42
37
|
|
43
|
-
|
44
|
-
|
45
|
-
|
38
|
+
.. py:data:: HAS_IGNIS
|
39
|
+
|
40
|
+
:mod:`Qiskit Ignis <qiskit.ignis>` provides tools for quantum hardware verification, noise
|
41
|
+
characterization, and error correction.
|
42
|
+
|
43
|
+
.. py:data:: HAS_TOQM
|
44
|
+
|
45
|
+
`Qiskit TOQM <https://github.com/qiskit-toqm/qiskit-toqm>`__ provides transpiler passes
|
46
|
+
for the `Time-optimal Qubit mapping algorithm <https://doi.org/10.1145/3445814.3446706>`__.
|
46
47
|
|
47
48
|
|
48
49
|
External Python Libraries
|
49
50
|
-------------------------
|
50
51
|
|
51
|
-
..
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
52
|
+
.. py:data:: HAS_CONSTRAINT
|
53
|
+
|
54
|
+
`python-constraint <https://github.com/python-constraint/python-constraint>`__ is a
|
55
|
+
constraint satisfaction problem solver, used in the :class:`~.CSPLayout` transpiler pass.
|
56
|
+
|
57
|
+
.. py:data:: HAS_CPLEX
|
58
|
+
|
59
|
+
The `IBM CPLEX Optimizer <https://www.ibm.com/analytics/cplex-optimizer>`__ is a
|
60
|
+
high-performance mathematical programming solver for linear, mixed-integer and quadratic
|
61
|
+
programming. This is no longer by Qiskit, but it weas historically and the optional
|
62
|
+
remains for backwards compatibility.
|
63
|
+
|
64
|
+
.. py:data:: HAS_CVXPY
|
65
|
+
|
66
|
+
`CVXPY <https://www.cvxpy.org/>`__ is a Python package for solving convex optimization
|
67
|
+
problems. It is required for calculating diamond norms with
|
68
|
+
:func:`.quantum_info.diamond_norm`.
|
69
|
+
|
70
|
+
.. py:data:: HAS_DOCPLEX
|
71
|
+
|
72
|
+
`IBM Decision Optimization CPLEX Modelling
|
73
|
+
<http://ibmdecisionoptimization.github.io/docplex-doc/>`__ is a library for prescriptive
|
74
|
+
analysis. Like CPLEX, this is no longer by Qiskit, but it weas historically and the
|
75
|
+
optional remains for backwards compatibility.
|
76
|
+
|
77
|
+
.. py:data:: HAS_FIXTURES
|
78
|
+
|
79
|
+
The test suite has additional features that are available if the optional `fixtures
|
80
|
+
<https://launchpad.net/python-fixtures>`__ module is installed. This generally also needs
|
81
|
+
:data:`HAS_TESTTOOLS` as well. This is generally only needed for Qiskit developers.
|
82
|
+
|
83
|
+
.. py:data:: HAS_IPYTHON
|
84
|
+
|
85
|
+
If `the IPython kernel <https://ipython.org/>`__ is available, certain additional
|
86
|
+
visualizations and line magics are made available.
|
87
|
+
|
88
|
+
.. py:data:: HAS_IPYWIDGETS
|
89
|
+
|
90
|
+
Monitoring widgets for jobs running on external backends can be provided if `ipywidgets
|
91
|
+
<https://ipywidgets.readthedocs.io/en/latest/>`__ is available.
|
92
|
+
|
93
|
+
.. py:data:: HAS_JAX
|
94
|
+
|
95
|
+
Some methods of gradient calculation within :mod:`.opflow.gradients` require `JAX
|
96
|
+
<https://github.com/google/jax>`__ for autodifferentiation.
|
97
|
+
|
98
|
+
.. py:data:: HAS_JUPYTER
|
99
|
+
|
100
|
+
Some of the tests require a complete `Jupyter <https://jupyter.org/>`__ installation to test
|
101
|
+
interactivity features.
|
102
|
+
|
103
|
+
.. py:data:: HAS_MATPLOTLIB
|
104
|
+
|
105
|
+
Qiskit provides several visualization tools in the :mod:`.visualization` module.
|
106
|
+
Almost all of these are built using `Matplotlib <https://matplotlib.org/>`__, which must
|
107
|
+
be installed in order to use them.
|
108
|
+
|
109
|
+
.. py:data:: HAS_NETWORKX
|
110
|
+
|
111
|
+
No longer used by Qiskit. Internally, Qiskit now uses the high-performance `rustworkx
|
112
|
+
<https://github.com/Qiskit/rustworkx>`__ library as a core dependency, and during the
|
113
|
+
change-over period, it was sometimes convenient to convert things into the Python-only
|
114
|
+
`NetworkX <https://networkx.org/>`__ format. Some tests of application modules, such as
|
115
|
+
`Qiskit Nature <https://qiskit-community.github.io/qiskit-nature/>`__ still use NetworkX.
|
116
|
+
|
117
|
+
.. py:data:: HAS_NLOPT
|
118
|
+
|
119
|
+
`NLopt <https://nlopt.readthedocs.io/en/latest/>`__ is a nonlinear optimization library,
|
120
|
+
used by the global optimizers in the :mod:`.algorithms.optimizers` module.
|
121
|
+
|
122
|
+
.. py:data:: HAS_PIL
|
123
|
+
|
124
|
+
PIL is a Python image-manipulation library. Qiskit actually uses the `pillow
|
125
|
+
<https://pillow.readthedocs.io/en/stable/>`__ fork of PIL if it is available when generating
|
126
|
+
certain visualizations, for example of both :class:`.QuantumCircuit` and
|
127
|
+
:class:`.DAGCircuit` in certain modes.
|
128
|
+
|
129
|
+
.. py:data:: HAS_PYDOT
|
130
|
+
|
131
|
+
For some graph visualizations, Qiskit uses `pydot <https://github.com/pydot/pydot>`__ as an
|
132
|
+
interface to GraphViz (see :data:`HAS_GRAPHVIZ`).
|
133
|
+
|
134
|
+
.. py:data:: HAS_PYGMENTS
|
135
|
+
|
136
|
+
Pygments is a code highlighter and formatter used by many environments that involve rich
|
137
|
+
display of code blocks, including Sphinx and Jupyter. Qiskit uses this when producing rich
|
138
|
+
output for these environments.
|
139
|
+
|
140
|
+
.. py:data:: HAS_PYLATEX
|
141
|
+
|
142
|
+
Various LaTeX-based visualizations, especially the circuit drawers, need access to the
|
143
|
+
`pylatexenc <https://github.com/phfaist/pylatexenc>`__ project to work correctly.
|
144
|
+
|
145
|
+
.. py:data:: HAS_QASM3_IMPORT
|
146
|
+
|
147
|
+
The functions :func:`.qasm3.load` and :func:`.qasm3.loads` for importing OpenQASM 3 programs
|
148
|
+
into :class:`.QuantumCircuit` instances use `an external importer package
|
149
|
+
<https://qiskit.github.io/qiskit-qasm3-import>`__.
|
150
|
+
|
151
|
+
.. py:data:: HAS_SEABORN
|
152
|
+
|
153
|
+
Qiskit provides several visualization tools in the :mod:`.visualization` module. Some
|
154
|
+
of these are built using `Seaborn <https://seaborn.pydata.org/>`__, which must be installed
|
155
|
+
in order to use them.
|
156
|
+
|
157
|
+
.. py:data:: HAS_SKLEARN
|
158
|
+
|
159
|
+
Some of the gradient functions in :mod:`.opflow.gradients` use regularisation methods from
|
160
|
+
`Scikit Learn <https://scikit-learn.org/stable/>`__.
|
161
|
+
|
162
|
+
.. py:data:: HAS_SKQUANT
|
163
|
+
|
164
|
+
Some of the optimisers in :mod:`.algorithms.optimizers` are based on those found in `Scikit
|
165
|
+
Quant <https://github.com/scikit-quant/scikit-quant>`__, which must be installed to use
|
166
|
+
them.
|
167
|
+
|
168
|
+
.. py:data:: HAS_SQSNOBFIT
|
169
|
+
|
170
|
+
`SQSnobFit <https://pypi.org/project/SQSnobFit/>`__ is a library for the "stable noisy
|
171
|
+
optimization by branch and fit" algorithm. It is used by the :class:`.SNOBFIT` optimizer.
|
172
|
+
|
173
|
+
.. py:data:: HAS_SYMENGINE
|
174
|
+
|
175
|
+
`Symengine <https://github.com/symengine/symengine>`__ is a fast C++ backend for the
|
176
|
+
symbolic-manipulation library `Sympy <https://www.sympy.org/en/index.html>`__. Qiskit uses
|
177
|
+
special methods from Symengine to accelerate its handling of
|
178
|
+
:class:`~.circuit.Parameter`\\ s if available.
|
179
|
+
|
180
|
+
.. py:data:: HAS_TESTTOOLS
|
181
|
+
|
182
|
+
Qiskit's test suite has more advanced functionality available if the optional
|
183
|
+
`testtools <https://pypi.org/project/testtools/>`__ library is installed. This is generally
|
184
|
+
only needed for Qiskit developers.
|
185
|
+
|
186
|
+
.. py:data:: HAS_TWEEDLEDUM
|
187
|
+
|
188
|
+
`Tweedledum <https://github.com/boschmitt/tweedledum>`__ is an extension library for
|
189
|
+
synthesis and optimization of circuits that may involve classical oracles. Qiskit's
|
190
|
+
:class:`.PhaseOracle` uses this, which is used in turn by amplification algorithms via
|
191
|
+
the :class:`.AmplificationProblem`.
|
192
|
+
|
193
|
+
.. py:data:: HAS_Z3
|
194
|
+
|
195
|
+
`Z3 <https://github.com/Z3Prover/z3>`__ is a theorem prover, used in the
|
196
|
+
:class:`.CrosstalkAdaptiveSchedule` and :class:`.HoareOptimizer` transpiler passes.
|
174
197
|
|
175
198
|
External Command-Line Tools
|
176
199
|
---------------------------
|
177
200
|
|
178
|
-
..
|
179
|
-
|
201
|
+
.. py:data:: HAS_GRAPHVIZ
|
202
|
+
|
203
|
+
For some graph visualizations, Qiskit uses the `GraphViz <https://graphviz.org/>`__
|
204
|
+
visualization tool via its ``pydot`` interface (see :data:`HAS_PYDOT`).
|
205
|
+
|
206
|
+
.. py:data:: HAS_PDFLATEX
|
180
207
|
|
181
|
-
|
182
|
-
|
183
|
-
|
208
|
+
Visualization tools that use LaTeX in their output, such as the circuit drawers, require
|
209
|
+
``pdflatex`` to be available. You will generally need to ensure that you have a working
|
210
|
+
LaTeX installation available, and the ``qcircuit.tex`` package.
|
184
211
|
|
185
|
-
|
186
|
-
- Visualization tools that use LaTeX in their output, such as the circuit drawers, require
|
187
|
-
``pdflatex`` to be available. You will generally need to ensure that you have a working
|
188
|
-
LaTeX installation available, and the ``qcircuit.tex`` package.
|
212
|
+
.. py:data:: HAS_PDFTOCAIRO
|
189
213
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
<https://poppler.freedesktop.org/>`__.
|
214
|
+
Visualization tools that convert LaTeX-generated files into rasterized images use the
|
215
|
+
``pdftocairo`` tool. This is part of the `Poppler suite of PDF tools
|
216
|
+
<https://poppler.freedesktop.org/>`__.
|
194
217
|
|
195
218
|
|
196
219
|
Lazy Checker Classes
|
qiskit/visualization/gate_map.py
CHANGED
@@ -945,6 +945,7 @@ def plot_gate_map(
|
|
945
945
|
font_color,
|
946
946
|
ax,
|
947
947
|
filename,
|
948
|
+
planar=rx.is_planar(coupling_map.graph.to_undirected(multigraph=False)),
|
948
949
|
)
|
949
950
|
|
950
951
|
|
@@ -966,6 +967,8 @@ def plot_coupling_map(
|
|
966
967
|
font_color="white",
|
967
968
|
ax=None,
|
968
969
|
filename=None,
|
970
|
+
*,
|
971
|
+
planar=True,
|
969
972
|
):
|
970
973
|
"""Plots an arbitrary coupling map of qubits (embedded in a plane).
|
971
974
|
|
@@ -987,6 +990,7 @@ def plot_coupling_map(
|
|
987
990
|
font_color (str): The font color for the qubit labels.
|
988
991
|
ax (Axes): A Matplotlib axes instance.
|
989
992
|
filename (str): file path to save image to.
|
993
|
+
planar (bool): If the coupling map is planar or not. Default: ``True`` (i.e. it is planar)
|
990
994
|
|
991
995
|
Returns:
|
992
996
|
Figure: A Matplotlib figure instance.
|
@@ -1057,7 +1061,14 @@ def plot_coupling_map(
|
|
1057
1061
|
|
1058
1062
|
if font_size is None:
|
1059
1063
|
max_characters = max(1, max(len(str(x)) for x in qubit_labels))
|
1060
|
-
|
1064
|
+
if max_characters == 1:
|
1065
|
+
font_size = 20
|
1066
|
+
elif max_characters == 2:
|
1067
|
+
font_size = 14
|
1068
|
+
elif max_characters == 3:
|
1069
|
+
font_size = 12
|
1070
|
+
else:
|
1071
|
+
font_size = 1
|
1061
1072
|
|
1062
1073
|
def color_node(node):
|
1063
1074
|
if qubit_coordinates:
|
@@ -1065,8 +1076,6 @@ def plot_coupling_map(
|
|
1065
1076
|
"label": str(qubit_labels[node]),
|
1066
1077
|
"color": f'"{qubit_color[node]}"',
|
1067
1078
|
"fillcolor": f'"{qubit_color[node]}"',
|
1068
|
-
"style": "filled",
|
1069
|
-
"shape": "circle",
|
1070
1079
|
"pos": f'"{qubit_coordinates[node][0]},{qubit_coordinates[node][1]}"',
|
1071
1080
|
"pin": "True",
|
1072
1081
|
}
|
@@ -1075,11 +1084,11 @@ def plot_coupling_map(
|
|
1075
1084
|
"label": str(qubit_labels[node]),
|
1076
1085
|
"color": f'"{qubit_color[node]}"',
|
1077
1086
|
"fillcolor": f'"{qubit_color[node]}"',
|
1078
|
-
"style": "filled",
|
1079
|
-
"shape": "circle",
|
1080
1087
|
}
|
1088
|
+
out_dict["style"] = "filled"
|
1089
|
+
out_dict["shape"] = "circle"
|
1081
1090
|
out_dict["fontcolor"] = f'"{font_color}"'
|
1082
|
-
out_dict["fontsize"] = str(font_size)
|
1091
|
+
out_dict["fontsize"] = f'"{str(font_size)}!"'
|
1083
1092
|
out_dict["height"] = str(qubit_size * px)
|
1084
1093
|
out_dict["fixedsize"] = "True"
|
1085
1094
|
out_dict["fontname"] = '"DejaVu Sans"'
|
@@ -1093,9 +1102,22 @@ def plot_coupling_map(
|
|
1093
1102
|
}
|
1094
1103
|
return out_dict
|
1095
1104
|
|
1105
|
+
graph_attributes = None
|
1106
|
+
if not qubit_coordinates:
|
1107
|
+
if planar:
|
1108
|
+
graph_attributes = {
|
1109
|
+
"overlap_scaling": "-7",
|
1110
|
+
"overlap": "prism",
|
1111
|
+
"model": "subset",
|
1112
|
+
}
|
1113
|
+
else:
|
1114
|
+
graph_attributes = {
|
1115
|
+
"overlap": "true",
|
1116
|
+
}
|
1096
1117
|
plot = graphviz_draw(
|
1097
1118
|
graph,
|
1098
1119
|
method="neato",
|
1120
|
+
graph_attr=graph_attributes,
|
1099
1121
|
node_attr_fn=color_node,
|
1100
1122
|
edge_attr_fn=color_edge,
|
1101
1123
|
filename=filename,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: qiskit
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.1
|
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
|
@@ -1,6 +1,6 @@
|
|
1
|
-
qiskit/VERSION.txt,sha256=
|
1
|
+
qiskit/VERSION.txt,sha256=18XwW49QnmHLtUgD6V3t9bMor4HNVFb3VU-ymQ-RrM4,7
|
2
2
|
qiskit/__init__.py,sha256=bxCfTQyH6qfT6E-R4FTfP2ovP3F3qz0fVid6TeRHT5A,5540
|
3
|
-
qiskit/_accelerate.pyd,sha256=
|
3
|
+
qiskit/_accelerate.pyd,sha256=aF-zLwTl0X1Pv8L2nSrA3j5Ao93VI3XGchz5gtDvIzU,4726784
|
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
|
@@ -10,7 +10,7 @@ qiskit/assembler/assemble_circuits.py,sha256=slVUA-BKYYI1pfDzqIZIJyfbgi9FDqaL92B
|
|
10
10
|
qiskit/assembler/assemble_schedules.py,sha256=tQ2FytodUcNPA-WeJltCpcnhmDODLNOAWKRK2nYUuCE,15802
|
11
11
|
qiskit/assembler/disassemble.py,sha256=2OJSlfQolQHSLtteyg7CAibkFZH6BKx6Wy6c8J6ku9E,12940
|
12
12
|
qiskit/assembler/run_config.py,sha256=xVw70UASYS5jGtac6mSK6iKCkAzn3Nux6rksbZ2eC6E,2538
|
13
|
-
qiskit/circuit/__init__.py,sha256=
|
13
|
+
qiskit/circuit/__init__.py,sha256=xfqfyqWJpfYczjKUK9PukGFXo226Y6_ymiYk376PMGg,60222
|
14
14
|
qiskit/circuit/_classical_resource_map.py,sha256=HhScd6Mjs74JEOXstQUTDicY9o74RM_B6EjnbrZeho8,7130
|
15
15
|
qiskit/circuit/_standard_gates_commutations.py,sha256=Y9S2xI_SNSJ3OMiZQl7qRe5HsFeNK0M28coATKJ4-UQ,89014
|
16
16
|
qiskit/circuit/_utils.py,sha256=MxIpuBs6ZsdfMDxT6ZCFgskp_32FbK7zVHp7sxmzoCQ,6614
|
@@ -36,7 +36,7 @@ qiskit/circuit/parameter.py,sha256=WGCSyYDKUwKbZ3QTKF1b-D7MCpeIPb-QtdgB-Lmvfa8,7
|
|
36
36
|
qiskit/circuit/parameterexpression.py,sha256=JrYj1fO0_UX0fGYwo0u9CumAbjEdORGXeZFml0vGG-A,23887
|
37
37
|
qiskit/circuit/parametertable.py,sha256=4u7EuKAiVskcnWQW8dnfU8jgYKZ92KdH2g6PeTvvjjA,3388
|
38
38
|
qiskit/circuit/parametervector.py,sha256=S92WSzf6lWh7Ay-Y6eAbsm6jxa18D7nu9WaetE9B6Uc,3961
|
39
|
-
qiskit/circuit/quantumcircuit.py,sha256=
|
39
|
+
qiskit/circuit/quantumcircuit.py,sha256=s9OoiL99ZtEqxVDW3VxL10Jbh2sGsalZAUGT5iCED-U,299738
|
40
40
|
qiskit/circuit/quantumcircuitdata.py,sha256=mxiyRI9l9dUFfR1t73jzu1mQAzSz6y_cGicmXZBqPJA,5014
|
41
41
|
qiskit/circuit/quantumregister.py,sha256=rtMf7QyEQ_Jyam-KrFFj5pl6BX3DBiHzdGZCAcoVbLU,2107
|
42
42
|
qiskit/circuit/register.py,sha256=sDUEGJnKfQLzJq3OzdgctOpqm1jAlSOZKjw4ngcIhVo,8652
|
@@ -104,16 +104,16 @@ qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py,sha25
|
|
104
104
|
qiskit/circuit/library/arithmetic/multipliers/multiplier.py,sha256=_ziEZIzQ9fpIz2KsVtK_bnyA4ADLkVSeRInj1vVCsuY,3696
|
105
105
|
qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py,sha256=bCevaG_0jViq0XhB-He0nJabXxXtRDWW45E-2UuESvU,5962
|
106
106
|
qiskit/circuit/library/basis_change/__init__.py,sha256=NPfRl5EZurnELm_5BPwT48YWRAta2naePDbCvSDTSBk,563
|
107
|
-
qiskit/circuit/library/basis_change/qft.py,sha256=
|
107
|
+
qiskit/circuit/library/basis_change/qft.py,sha256=AhAxaUVqpjEF_wJxv00OjGVl1-CynY0ccz-OaJ25aRE,12103
|
108
108
|
qiskit/circuit/library/boolean_logic/__init__.py,sha256=6OyJMBzP4MYigWUsLEP0X3N63PBr0PbW7czTmBPQbis,663
|
109
109
|
qiskit/circuit/library/boolean_logic/inner_product.py,sha256=HJHPKZRAgDg4XamPpgUCAgSz1CKUORYW5_qPqtzuY4U,2755
|
110
110
|
qiskit/circuit/library/boolean_logic/quantum_and.py,sha256=WIBDocbq4g3m_bCXPYypzzSVEosE_TwdgYVa0JC6UQw,4042
|
111
111
|
qiskit/circuit/library/boolean_logic/quantum_or.py,sha256=TPuBnFFTq73iirb4NG10O96nVUHyeaXrh0V1fFdUKc4,3994
|
112
112
|
qiskit/circuit/library/boolean_logic/quantum_xor.py,sha256=EfSMyh-6bRWdPybhllHu3DTGDPkqdvoBbn9ta023xnI,2382
|
113
113
|
qiskit/circuit/library/data_preparation/__init__.py,sha256=J8HS50haQ7cpRYQynFqyQ4fXZXagkmd6Nd2BXcQTxmI,2390
|
114
|
-
qiskit/circuit/library/data_preparation/initializer.py,sha256=
|
114
|
+
qiskit/circuit/library/data_preparation/initializer.py,sha256=tUThlYQJfWobXv6eTIcuPaQETRZ5CKbPIDTKFYHrFS8,4560
|
115
115
|
qiskit/circuit/library/data_preparation/pauli_feature_map.py,sha256=no7p1BZQO57kdjkZK42j-Rv1yg4yYlFKjPRBliLDGbA,12901
|
116
|
-
qiskit/circuit/library/data_preparation/state_preparation.py,sha256=
|
116
|
+
qiskit/circuit/library/data_preparation/state_preparation.py,sha256=cw272QeVmgGFvtHo0sAJDVxmLeVMD-tXJewRB6bHGj8,14486
|
117
117
|
qiskit/circuit/library/data_preparation/z_feature_map.py,sha256=Fgf0b9JcIJOjswC8Ov0ozDH3fd25-iMu_HiuQjhUxSM,6451
|
118
118
|
qiskit/circuit/library/data_preparation/zz_feature_map.py,sha256=vVXgWdrdowqK_-Y0Dbf00dLiniIP0hgcs0whvTWHkQk,6523
|
119
119
|
qiskit/circuit/library/generalized_gates/__init__.py,sha256=iFsOivQreWwDpJgpfl0elN63cffOMPbpjW877ceMmlI,1114
|
@@ -142,7 +142,7 @@ qiskit/circuit/library/n_local/pauli_two_design.py,sha256=_yBRALN_hIlGyo6AqNVLc4
|
|
142
142
|
qiskit/circuit/library/n_local/qaoa_ansatz.py,sha256=_aG8sX3ZYh-SHscYDU3TZE4SA5aCkIkBAJ29xQT8QJ0,11558
|
143
143
|
qiskit/circuit/library/n_local/real_amplitudes.py,sha256=XhmlA9TUnhIzapzK0b9_3re-RMKUKbO_SvADcIaGN4s,14316
|
144
144
|
qiskit/circuit/library/n_local/two_local.py,sha256=zH57XPcgVyZvSf40I_4jE7-KtzRocQr7EyI-pEo1HQc,17025
|
145
|
-
qiskit/circuit/library/standard_gates/__init__.py,sha256=
|
145
|
+
qiskit/circuit/library/standard_gates/__init__.py,sha256=3JCi25d7A0pOjnhSV_6VWN9HaDH6rfe-d8OYjnrwL1A,3651
|
146
146
|
qiskit/circuit/library/standard_gates/dcx.py,sha256=hqM0YzrbnqS-9G5u9y0QXV61Gyc6cyHUVCEBgukdCMw,2589
|
147
147
|
qiskit/circuit/library/standard_gates/ecr.py,sha256=dM3azs6omIXbzCHQj4pCOw8UXT5kX3sCCMLkVN8WaCc,4909
|
148
148
|
qiskit/circuit/library/standard_gates/equivalence_library.py,sha256=Hj674zQXthUr14mV-txiyqNmcCdIOBtAFx7ndXkP_QE,74094
|
@@ -397,7 +397,7 @@ qiskit/pulse/instructions/snapshot.py,sha256=y8cxeA_Nsq1VgdmxT3_j33h3b1Useyh1o9c
|
|
397
397
|
qiskit/pulse/library/__init__.py,sha256=aDqY8-8MGEyi5ABunPq-XkuC6pBhJ2I0TySJg1WDYb4,2970
|
398
398
|
qiskit/pulse/library/continuous.py,sha256=kiaieQq0wXEW1OZwn0c4cKOoqiS5IAvr7APqGTHnVj4,15202
|
399
399
|
qiskit/pulse/library/pulse.py,sha256=0-FDFsOL3f-rpYZmZsgZlNJVMViUAfH5wjnqC3HiGf8,5792
|
400
|
-
qiskit/pulse/library/symbolic_pulses.py,sha256=
|
400
|
+
qiskit/pulse/library/symbolic_pulses.py,sha256=xmecb8HQSLCcCqyvW0bahDCY46uud8R1GoWHSmyCreI,79466
|
401
401
|
qiskit/pulse/library/waveform.py,sha256=LgpMeJhcpgdVED-fsAlY51X2u0Dzv-Qx3Y4dSKiATD8,5287
|
402
402
|
qiskit/pulse/library/samplers/__init__.py,sha256=wQw1gTW7dvsyrxklicIKMrsq8Kir-h7Ecp7E1SQhEqo,606
|
403
403
|
qiskit/pulse/library/samplers/decorators.py,sha256=U8F7vjPj4g7YaM_0lJblBb1wnJ5KmD_ooYAWJ2LymgY,11774
|
@@ -452,7 +452,7 @@ qiskit/quantum_info/operators/custom_iterator.py,sha256=48lqzAPOn-Ud7welRwmwRL5g
|
|
452
452
|
qiskit/quantum_info/operators/linear_op.py,sha256=f8LDoy88d0t5E58AllUDXCfHV6WGTN9od-FJxuTEDeY,836
|
453
453
|
qiskit/quantum_info/operators/measures.py,sha256=t5Y7K-C--t9-6Kq5-rRPKAZyYZjmHZWgMPjeVtjIPEk,16465
|
454
454
|
qiskit/quantum_info/operators/op_shape.py,sha256=c1pQFf9mW0PCoDilRaOCqlBySYlJ-kbyBJHTAnEbmMk,19720
|
455
|
-
qiskit/quantum_info/operators/operator.py,sha256=
|
455
|
+
qiskit/quantum_info/operators/operator.py,sha256=YhrS5RnKgB-h5dbGj7Mz8d5s9QESb9MSNQNMQ_O_qqc,32966
|
456
456
|
qiskit/quantum_info/operators/predicates.py,sha256=N0mthxvOsrPmIq0MjaQzEnixA6X6WTpCynOAZ8hTet8,6058
|
457
457
|
qiskit/quantum_info/operators/random.py,sha256=8tkswigDimRYVJAGsf1_OoW_c0VnSemE3Wry4t4qmFA,5380
|
458
458
|
qiskit/quantum_info/operators/scalar_op.py,sha256=WqvzXdIk7WrX4ukb8c-p7DID7SBNzv-Z3tBF5O0IcCg,9099
|
@@ -523,9 +523,9 @@ qiskit/scheduler/methods/basic.py,sha256=bVIvH3LB4OH-cdQL8qOIxMDS_uFGYE3ERczbVaY
|
|
523
523
|
qiskit/synthesis/__init__.py,sha256=qSqOnZC9WxRs4Y6SAMSkdCyCvnY_amWfsypawvpIY1s,4453
|
524
524
|
qiskit/synthesis/clifford/__init__.py,sha256=mTSeq6TJzv8AkUkgD_RkBIp1pHrUeXLKr1OFg-Ty8Fs,867
|
525
525
|
qiskit/synthesis/clifford/clifford_decompose_ag.py,sha256=bqA4CdqySbTJxJ0OAFc26Ql9tIcJp549dONx7H1Mb8I,5878
|
526
|
-
qiskit/synthesis/clifford/clifford_decompose_bm.py,sha256=
|
526
|
+
qiskit/synthesis/clifford/clifford_decompose_bm.py,sha256=UNL-bquzsjAevLmEo4bUexvht-yawpkhHgbJzhRQddI,1637
|
527
527
|
qiskit/synthesis/clifford/clifford_decompose_full.py,sha256=EhYtmgl_ET1uVp_56pDZ11rWHSmes8H7u0onuqQRuCY,2675
|
528
|
-
qiskit/synthesis/clifford/clifford_decompose_greedy.py,sha256=
|
528
|
+
qiskit/synthesis/clifford/clifford_decompose_greedy.py,sha256=hUWEZk-wvVC1qG_SYeiDO_REP9egxSuqoOV_XjjNZFs,2191
|
529
529
|
qiskit/synthesis/clifford/clifford_decompose_layers.py,sha256=p7F7L1Gvl06mDHo5N5sQOMCDqh18TjvwE6VxnE5x2kw,17629
|
530
530
|
qiskit/synthesis/cnotdihedral/__init__.py,sha256=Y81B6k7LXelgfng91Gu2rqPHp0SXZ0UKoEQvKvBUHJc,772
|
531
531
|
qiskit/synthesis/cnotdihedral/cnotdihedral_decompose_full.py,sha256=8lu2N6djriNJxZZ9TZqZsGE1YC0dxb7ixtLWcz9Klp4,2047
|
@@ -544,7 +544,7 @@ qiskit/synthesis/evolution/product_formula.py,sha256=aQgWk9PST4wmYC6HKH_oVZh6eRs
|
|
544
544
|
qiskit/synthesis/evolution/qdrift.py,sha256=oVrQpri1U8cTwugOpMIK9efIvGBjbe_cucriM7qUfKg,5672
|
545
545
|
qiskit/synthesis/evolution/suzuki_trotter.py,sha256=gSt8W0KF9pEFex8HhoYIorZCugBLvpG1kyjSkNjCz7w,6397
|
546
546
|
qiskit/synthesis/linear/__init__.py,sha256=BHZdn101BWWiuT9XvWV9CC3Er4ZBvjiLfWv6jmuTymw,1036
|
547
|
-
qiskit/synthesis/linear/cnot_synth.py,sha256=
|
547
|
+
qiskit/synthesis/linear/cnot_synth.py,sha256=XWSEshsk23M71SG1xdP0-0JEItDdyTgWlW44JiORqqQ,2869
|
548
548
|
qiskit/synthesis/linear/linear_circuits_utils.py,sha256=-msl7pPW9YDJr74f5n5C593-IlN0lUzXylUW1enjwzQ,4846
|
549
549
|
qiskit/synthesis/linear/linear_depth_lnn.py,sha256=IDzFAofDwW52qy_btqyuvN9zdN-1FRVrefGl2aqr2mY,10411
|
550
550
|
qiskit/synthesis/linear/linear_matrix_utils.py,sha256=zsmRzrJxBoEs1EzMOMKjHju7b-pCdt42CVn6Pi4eqo8,900
|
@@ -553,10 +553,10 @@ qiskit/synthesis/linear_phase/cnot_phase_synth.py,sha256=wHpaBI-v-pG_HMqwrN9pMOk
|
|
553
553
|
qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py,sha256=uTY_IwCKuA_PDJMgvran7_118Ct5czMpgtb7SRInERs,9695
|
554
554
|
qiskit/synthesis/linear_phase/cz_depth_lnn.py,sha256=uMZ0ZwZaxxsqHyMy1dRnH4mdPlMNgfo5sSRBbiHNQ04,6369
|
555
555
|
qiskit/synthesis/one_qubit/__init__.py,sha256=omr9uaxkjdirX-mhGnhESZbrWjsLut3buDUyDDMQU3E,618
|
556
|
-
qiskit/synthesis/one_qubit/one_qubit_decompose.py,sha256=
|
556
|
+
qiskit/synthesis/one_qubit/one_qubit_decompose.py,sha256=N0BMa8pVVVnyxsmSTb10Dg5zhjJEbU29Hfqn1mp8Bjw,10628
|
557
557
|
qiskit/synthesis/permutation/__init__.py,sha256=DMcgTyHM8_Rubao0d0N2TPvA5cXhMHA93n5MT830YKY,775
|
558
|
-
qiskit/synthesis/permutation/permutation_full.py,sha256=
|
559
|
-
qiskit/synthesis/permutation/permutation_lnn.py,sha256=
|
558
|
+
qiskit/synthesis/permutation/permutation_full.py,sha256=ZDR6lZw2PRBqdxq0O6MygOnXnJw4utl4-QCrA1jXGlc,3430
|
559
|
+
qiskit/synthesis/permutation/permutation_lnn.py,sha256=MyDzP2xXd5SMxapi1wkNYvnwUVkHUMIwpo7jLAXA7BQ,2499
|
560
560
|
qiskit/synthesis/permutation/permutation_reverse_lnn.py,sha256=ZCbKw2jrniTImGsF7tPrrKm3e9NzcEwJnDE3r6oAY4U,3106
|
561
561
|
qiskit/synthesis/permutation/permutation_utils.py,sha256=eD7FamLnRA9Njqe71x_uBCzXMSSC2t9dAQza1a0kgEQ,671
|
562
562
|
qiskit/synthesis/qft/__init__.py,sha256=fe3r4ylscClkTuQLuXlsnFin9AK7D9TcJEcl40Vo6tw,646
|
@@ -567,7 +567,7 @@ qiskit/synthesis/stabilizer/stabilizer_circuit.py,sha256=WezW3w9yY7YZZmu1HtIfOLY
|
|
567
567
|
qiskit/synthesis/stabilizer/stabilizer_decompose.py,sha256=oG5cmkXTy0UdebQDb5ATALLS7vYZqpY8h2q1RAjrSRE,7346
|
568
568
|
qiskit/synthesis/two_qubit/__init__.py,sha256=r0n0V_efULlqFbajfasnMFHUhOqyv7koIL9MOvKZSGw,692
|
569
569
|
qiskit/synthesis/two_qubit/local_invariance.py,sha256=vCSam5bFDKRnPaetv5T__En9rWRRCg7SjOKD6r9jKZc,2148
|
570
|
-
qiskit/synthesis/two_qubit/two_qubit_decompose.py,sha256=
|
570
|
+
qiskit/synthesis/two_qubit/two_qubit_decompose.py,sha256=jXFaWUukbvv-xztGiDDWFu74Cl7NWLuCC4rqX6okPnk,29730
|
571
571
|
qiskit/synthesis/two_qubit/weyl.py,sha256=y04fcVEeAgI5BkrrhKhe5Jm0Wg6pv71Jti1ZHnsZNR0,3396
|
572
572
|
qiskit/synthesis/two_qubit/xx_decompose/__init__.py,sha256=rZdo-_eQoVdQfb6pZOlpFrzI4BKDHliZgNs9Nagj4eo,663
|
573
573
|
qiskit/synthesis/two_qubit/xx_decompose/circuits.py,sha256=MK4d66yD53XBj4hhHZamfU4etaVPkYQ7rvy0huCk3Vg,11628
|
@@ -595,13 +595,13 @@ qiskit/transpiler/__init__.py,sha256=diK-MYizsFTPhZklOc6a-yWtNpZ2Z6LlO6rTYtUrP7Y
|
|
595
595
|
qiskit/transpiler/basepasses.py,sha256=xnflZCEH6CA1bYUkTS8X3WkM1qS2ujk6qtBtFBp5L38,8990
|
596
596
|
qiskit/transpiler/coupling.py,sha256=8oIvOUPpqT-wIjrCP8u0cHiemI1ON4714cH30BAE_iw,19103
|
597
597
|
qiskit/transpiler/exceptions.py,sha256=ef9tiCFmu-fzGwKXg4e9CiBFjcJJxl5zA02L2Pk7wIQ,1769
|
598
|
-
qiskit/transpiler/instruction_durations.py,sha256=
|
598
|
+
qiskit/transpiler/instruction_durations.py,sha256=wqybiRRVUENdQNGbIwdtYnDjyyu2ekK-Hix9Jb-Xd7Q,11517
|
599
599
|
qiskit/transpiler/layout.py,sha256=9fkldzD8awrQGa0M6Ros0Q6mBr8S3cm4RZuj9bVAYHQ,28810
|
600
600
|
qiskit/transpiler/passmanager.py,sha256=XRFGCDel-Vv8jo_-oHtEgNKqF0g-xThNAEYIiIbBDeg,20889
|
601
601
|
qiskit/transpiler/passmanager_config.py,sha256=kFsJ6EdGtAmoRxWJW4Cb4__fWX7OrTv4SccwWsrxgj4,9413
|
602
602
|
qiskit/transpiler/target.py,sha256=0S_fi0U3ErBuXzCZIv0W2qW4VY6px521CU2kZUF4-pk,74490
|
603
603
|
qiskit/transpiler/timing_constraints.py,sha256=YMwO31Im7h0Wxgu11ZPyp5uy60l5Ys24Oepa66M4sD8,2441
|
604
|
-
qiskit/transpiler/passes/__init__.py,sha256=
|
604
|
+
qiskit/transpiler/passes/__init__.py,sha256=AdQP444AHeZ_MZc7CmANFrGonUaZH2QWPfaHCln-yUQ,8166
|
605
605
|
qiskit/transpiler/passes/analysis/__init__.py,sha256=ygrX-YFaHzfMLqf53ftQ-2DXO4_4PwSEOHkYZkOuMXg,898
|
606
606
|
qiskit/transpiler/passes/analysis/count_ops.py,sha256=PAALTyNJIRXP-QwiE3H2WhER-nlgf52iro9izZCRLt0,1021
|
607
607
|
qiskit/transpiler/passes/analysis/count_ops_longest_path.py,sha256=DEgzeOLG1OBw0xDPx-hb6E6xQyYjoP7E7c9iLhsR72U,1006
|
@@ -642,7 +642,7 @@ qiskit/transpiler/passes/layout/trivial_layout.py,sha256=E4JV8B_aomdILUNorxvFN_m
|
|
642
642
|
qiskit/transpiler/passes/layout/vf2_layout.py,sha256=kGlqyuwFmDkNvXqYobF65t1TpkJOic04FIFz0I8bm-0,12231
|
643
643
|
qiskit/transpiler/passes/layout/vf2_post_layout.py,sha256=apt6L42IpQLi21ZMZcrlgVs_1hD7_elyZ_rA3-YBWgI,20103
|
644
644
|
qiskit/transpiler/passes/layout/vf2_utils.py,sha256=OV4PFFxW92SGPAHZWNlq3lEgYV6rWtn74d3FJIEvTq4,11061
|
645
|
-
qiskit/transpiler/passes/optimization/__init__.py,sha256=
|
645
|
+
qiskit/transpiler/passes/optimization/__init__.py,sha256=3f-Ilf8P_A1jvTfhoubdET0a-IAK97t1QBaarmkoed4,2171
|
646
646
|
qiskit/transpiler/passes/optimization/_gate_extension.py,sha256=FAizDJc9m0y1blUd28qZK0rCKDeiK48fOvYh1lghAZ0,3386
|
647
647
|
qiskit/transpiler/passes/optimization/collect_1q_runs.py,sha256=JGzjVY_TdtNAST8ZSrjtg6fEFj8UVEGATneuGlx-DtQ,1145
|
648
648
|
qiskit/transpiler/passes/optimization/collect_2q_blocks.py,sha256=2_kzxpyedr2XrRF86eycEKLBfEnjFWZPK78h2vePwkU,1259
|
@@ -657,7 +657,7 @@ qiskit/transpiler/passes/optimization/consolidate_blocks.py,sha256=sPT3OqVcM7ntu
|
|
657
657
|
qiskit/transpiler/passes/optimization/cx_cancellation.py,sha256=0e-7eMwdhy4NG6YllXUosWecPm1UwMQYngi-hyuuxak,2401
|
658
658
|
qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py,sha256=JHyADrASrY7F3XFKgXssYHUSPLqTicMgEldYZovbGWs,7176
|
659
659
|
qiskit/transpiler/passes/optimization/elide_permutations.py,sha256=znCVVVsX8OcSqGZHtgkcZUBbQFVchRqV2vowGKPcjNw,5480
|
660
|
-
qiskit/transpiler/passes/optimization/hoare_opt.py,sha256=
|
660
|
+
qiskit/transpiler/passes/optimization/hoare_opt.py,sha256=xdSqEmWinuAVkgBGIiFNS-PB7NnzkSFwN-h_BugZOgE,16711
|
661
661
|
qiskit/transpiler/passes/optimization/inverse_cancellation.py,sha256=MuoJwkBJtYKtTJ8KKOCmy-YdSz0eeIb-bEDTe4MA8hU,7007
|
662
662
|
qiskit/transpiler/passes/optimization/normalize_rx_angle.py,sha256=AbnCL0yvtCp-4O1O8lpFzj8fSzMZ3QYG6gjmJI7uHAE,6404
|
663
663
|
qiskit/transpiler/passes/optimization/optimize_1q_commutation.py,sha256=uwoaomez83bG7CgG078cJO55EIe5qjXEIESG4hjqAJU,10583
|
@@ -670,7 +670,7 @@ qiskit/transpiler/passes/optimization/remove_diagonal_gates_before_measure.py,sh
|
|
670
670
|
qiskit/transpiler/passes/optimization/remove_final_reset.py,sha256=hLQ3lnP2-OApAqzlgGXTXUxXZn2GS6iz2rpOGWOSMPU,1370
|
671
671
|
qiskit/transpiler/passes/optimization/remove_reset_in_zero_state.py,sha256=Tsj-ffvKidubmdE9e8ulBS_A_c5OPUkAmfPmZ28P-ug,1284
|
672
672
|
qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py,sha256=Jav9-ulhjqWgHoa_Lh8YVy0K2QF387GMcytR_VqmF-I,2058
|
673
|
-
qiskit/transpiler/passes/optimization/split_2q_unitaries.py,sha256=
|
673
|
+
qiskit/transpiler/passes/optimization/split_2q_unitaries.py,sha256=uXAIkoTCaNEJee5dCHp_6XU_XBui0KpTd7vz8CzCofw,3822
|
674
674
|
qiskit/transpiler/passes/optimization/template_optimization.py,sha256=a0mEZuM5nNTgjRmfJLfQsFQgAscJBY6cDprj9rd_3iQ,6891
|
675
675
|
qiskit/transpiler/passes/optimization/template_matching/__init__.py,sha256=-wC8wXv98Qp6R5yBxHdBAEnjfBbRgGgzUM2EqZKRyeE,848
|
676
676
|
qiskit/transpiler/passes/optimization/template_matching/backward_match.py,sha256=GSXpZZtWxz-0pqb_PABDLPxV9RDFVjblWvdu7GgvY_M,30787
|
@@ -743,7 +743,7 @@ qiskit/transpiler/passes/utils/unroll_forloops.py,sha256=mkjucqYOXyfJpCT3dtXUMJe
|
|
743
743
|
qiskit/transpiler/preset_passmanagers/__init__.py,sha256=DIC_jvndc-sN6x3F7mag-TPV67QN5QqCS3AC2qvuqsw,2831
|
744
744
|
qiskit/transpiler/preset_passmanagers/builtin_plugins.py,sha256=PPMfx70IugozdHOA7d3XkfKAWFxsCjkfHwbWWpXfbkw,43024
|
745
745
|
qiskit/transpiler/preset_passmanagers/common.py,sha256=N_nRRaqXz_SKtyW3GxOZHpccdNxW0D0p2hekDkFwQHw,26494
|
746
|
-
qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py,sha256=
|
746
|
+
qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py,sha256=R5B6bxooxUo5pftksOyqW4_ds6x0yHCnk4CJVquNvh8,26514
|
747
747
|
qiskit/transpiler/preset_passmanagers/level0.py,sha256=-X8y92rTBnvYlbXnWcFgwkF78FZK9Gn2Z9Pd9h0dvfA,4390
|
748
748
|
qiskit/transpiler/preset_passmanagers/level1.py,sha256=Cxw99_TL8px-pavkr_XRkMFi9z8F5xnXuDiKRCTbFQE,4926
|
749
749
|
qiskit/transpiler/preset_passmanagers/level2.py,sha256=cSOrYsVVJC5DJpjnJ4lNRtkZe_lKH4w385lsb8bogWU,4850
|
@@ -754,7 +754,7 @@ qiskit/utils/classtools.py,sha256=zFv50IaynNg3BOuQzzolKSDCIKOQa31XH96s6kGoahE,68
|
|
754
754
|
qiskit/utils/deprecation.py,sha256=Zyw8Ak8BE8kWi2A738hfSjFfC1Ag9PHNDA7qoRyr3rY,20239
|
755
755
|
qiskit/utils/lazy_tester.py,sha256=zDXbus1GkfbQrEbFJO9VkaA7S6Z5E3dikIZE04iFO1U,14910
|
756
756
|
qiskit/utils/multiprocessing.py,sha256=kCgf43ozvliGkRm_o1rLZT3gGORFZ77f-vzFSq-iz2s,1764
|
757
|
-
qiskit/utils/optionals.py,sha256=
|
757
|
+
qiskit/utils/optionals.py,sha256=GKQufJk9b7FqA4bJeCkpHpoJUDW9YjXz35cChIRSarI,13505
|
758
758
|
qiskit/utils/parallel.py,sha256=zPaP_4nayCTfsuHAr55y10vDcFJz1reoqosukrZ7NhU,7284
|
759
759
|
qiskit/utils/units.py,sha256=RgSPk4vfieSud67eeicNDWssFB2mjDq6q4X-9jxYaYE,4222
|
760
760
|
qiskit/visualization/__init__.py,sha256=FDaFfsj9CrqFoLr-DdY24CrCwd7Q0Q8P9h-6oPaXqD8,7933
|
@@ -764,7 +764,7 @@ qiskit/visualization/circuit_visualization.py,sha256=OKcbVjoZ8s9sPXDH6advgO1gn5u
|
|
764
764
|
qiskit/visualization/counts_visualization.py,sha256=pHDGPWEk_MWlkbNC2x_2BAt9a2Xlz3Mix4O9FUBTIPU,17272
|
765
765
|
qiskit/visualization/dag_visualization.py,sha256=qGluMH_v6ZfpNkZ401wKhCFKVO-m9bBn5viqD6lmN5U,9296
|
766
766
|
qiskit/visualization/exceptions.py,sha256=bSqwc-u6Vf6L4BY9kJ3mlPJf9eh4c5PsDZcRDGKeZC8,703
|
767
|
-
qiskit/visualization/gate_map.py,sha256=
|
767
|
+
qiskit/visualization/gate_map.py,sha256=pSBf3ZQWH3oG-t3keqq3NwGxdyi8Rh5fKClFPvOW66Q,38560
|
768
768
|
qiskit/visualization/library.py,sha256=HTSEdn2He7JxNevx5jkodbfqa_Uqr6-lSVDtaQE9Vio,1332
|
769
769
|
qiskit/visualization/pass_manager_visualization.py,sha256=oa9ay1dIunTUtEs5PN4y84uEU-qOzLL6Q3jozRnEopg,11539
|
770
770
|
qiskit/visualization/state_visualization.py,sha256=PDcCIgAgSzN98PKoEJcb2vt4oTebhw4i3lcMeP8nZGQ,53717
|
@@ -812,9 +812,9 @@ qiskit/visualization/timeline/types.py,sha256=jtpipQWUpahayNPQYKUst4GG6BqauovO0q
|
|
812
812
|
qiskit/visualization/timeline/plotters/__init__.py,sha256=Klg9a1cSUIQhc815g8OpnD5vO1hcI51L9KlFfKzcuRg,588
|
813
813
|
qiskit/visualization/timeline/plotters/base_plotter.py,sha256=taRkL2ZbyorRUEf6nJS8egdzKW2eznQ3w5oBLtMG_U8,1805
|
814
814
|
qiskit/visualization/timeline/plotters/matplotlib.py,sha256=lqqNH3-bdf1F1cS2mDla9dLr5qEOeIFuqVl9Rhdg-Dw,7086
|
815
|
-
qiskit-1.2.
|
816
|
-
qiskit-1.2.
|
817
|
-
qiskit-1.2.
|
818
|
-
qiskit-1.2.
|
819
|
-
qiskit-1.2.
|
820
|
-
qiskit-1.2.
|
815
|
+
qiskit-1.2.1.dist-info/LICENSE.txt,sha256=pUbmRuPr1gJTTTWZu2c8UmNSntz-pDdKfGR-86NRkok,11619
|
816
|
+
qiskit-1.2.1.dist-info/METADATA,sha256=X_MvkL4W2gOI8_l3vyqsuT5iQNXM2EkiMr4AnICcxUc,13089
|
817
|
+
qiskit-1.2.1.dist-info/WHEEL,sha256=wbeAP3FaEg2XPA1YvjyV0o9Zyj-L4W4y8U1O-4kQUaw,96
|
818
|
+
qiskit-1.2.1.dist-info/entry_points.txt,sha256=dCqiF7i6g_s6cYnXX7UUO1MM63xFFb5DCHYEYyGAeCc,3556
|
819
|
+
qiskit-1.2.1.dist-info/top_level.txt,sha256=_vjFXLv7qrHyJJOC2-JXfG54o4XQygW9GuQPxgtSt9Q,7
|
820
|
+
qiskit-1.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|