qiskit 1.1.0rc1__cp38-abi3-win_amd64.whl → 1.1.2__cp38-abi3-win_amd64.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/assembler/__init__.py +5 -10
- qiskit/circuit/__init__.py +21 -153
- qiskit/circuit/_classical_resource_map.py +3 -0
- qiskit/circuit/classical/expr/__init__.py +1 -1
- qiskit/circuit/classical/types/__init__.py +5 -4
- qiskit/circuit/classicalfunction/__init__.py +9 -0
- qiskit/circuit/library/__init__.py +3 -19
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +1 -1
- qiskit/circuit/library/n_local/two_local.py +1 -1
- qiskit/circuit/library/standard_gates/x.py +2 -0
- qiskit/circuit/parameterexpression.py +3 -0
- qiskit/circuit/parametervector.py +22 -16
- qiskit/circuit/quantumcircuit.py +1100 -200
- qiskit/converters/__init__.py +17 -2
- qiskit/dagcircuit/dagcircuit.py +8 -1
- qiskit/passmanager/passmanager.py +11 -11
- qiskit/primitives/__init__.py +15 -9
- qiskit/primitives/containers/__init__.py +1 -0
- qiskit/primitives/containers/bit_array.py +6 -2
- qiskit/primitives/containers/shape.py +3 -3
- qiskit/providers/__init__.py +49 -17
- qiskit/providers/backend.py +0 -6
- qiskit/providers/basic_provider/__init__.py +2 -23
- qiskit/providers/fake_provider/__init__.py +1 -1
- qiskit/providers/fake_provider/generic_backend_v2.py +5 -0
- qiskit/providers/models/__init__.py +2 -2
- qiskit/pulse/builder.py +2 -2
- qiskit/pulse/schedule.py +3 -3
- qiskit/qasm2/parse.py +8 -0
- qiskit/qasm3/exporter.py +2 -2
- qiskit/qobj/converters/pulse_instruction.py +6 -6
- qiskit/qpy/__init__.py +60 -62
- qiskit/qpy/binary_io/value.py +1 -1
- qiskit/quantum_info/operators/symplectic/pauli.py +18 -13
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +8 -4
- qiskit/result/__init__.py +6 -0
- qiskit/scheduler/__init__.py +10 -1
- qiskit/scheduler/methods/__init__.py +1 -8
- qiskit/synthesis/__init__.py +1 -6
- qiskit/synthesis/discrete_basis/generate_basis_approximations.py +1 -1
- qiskit/synthesis/discrete_basis/solovay_kitaev.py +22 -12
- qiskit/transpiler/__init__.py +5 -5
- qiskit/transpiler/layout.py +3 -3
- qiskit/transpiler/passes/__init__.py +4 -2
- qiskit/transpiler/passes/basis/basis_translator.py +2 -2
- qiskit/transpiler/passes/layout/vf2_layout.py +10 -4
- qiskit/transpiler/passes/layout/vf2_utils.py +2 -2
- qiskit/transpiler/passes/optimization/collect_cliffords.py +6 -15
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +8 -1
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/pauli_2q_evolution_commutation.py +5 -1
- qiskit/transpiler/passes/routing/star_prerouting.py +5 -5
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +3 -0
- qiskit/transpiler/preset_passmanagers/__init__.py +29 -3
- qiskit/transpiler/target.py +1 -1
- qiskit/utils/__init__.py +3 -2
- qiskit/utils/parallel.py +24 -15
- qiskit/visualization/bloch.py +44 -1
- qiskit/visualization/dag_visualization.py +10 -3
- qiskit/visualization/gate_map.py +9 -1
- qiskit/visualization/pass_manager_visualization.py +9 -9
- qiskit/visualization/pulse_v2/device_info.py +58 -31
- {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/METADATA +18 -18
- {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/RECORD +69 -69
- {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/WHEEL +1 -1
- {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/entry_points.txt +0 -0
- {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/top_level.txt +0 -0
@@ -176,7 +176,7 @@ def staged_pass_manager_drawer(pass_manager, filename=None, style=None, raw=Fals
|
|
176
176
|
stage = getattr(pass_manager, st)
|
177
177
|
|
178
178
|
if stage is not None:
|
179
|
-
stagegraph = pydot.Cluster(str(st), label=str(st),
|
179
|
+
stagegraph = pydot.Cluster(str(st), fontname="helvetica", label=str(st), labeljust="l")
|
180
180
|
for controller_group in stage.to_flow_controller().tasks:
|
181
181
|
subgraph, component_id, prev_node = draw_subgraph(
|
182
182
|
controller_group, component_id, style, prev_node, idx
|
@@ -201,7 +201,7 @@ def draw_subgraph(controller_group, component_id, style, prev_node, idx):
|
|
201
201
|
label += f"{controller_group.__class__.__name__}"
|
202
202
|
|
203
203
|
# create the subgraph for this controller
|
204
|
-
subgraph = pydot.Cluster(str(component_id),
|
204
|
+
subgraph = pydot.Cluster(str(component_id), fontname="helvetica", label=label, labeljust="l")
|
205
205
|
component_id += 1
|
206
206
|
|
207
207
|
if isinstance(controller_group, BaseController):
|
@@ -233,19 +233,19 @@ def draw_subgraph(controller_group, component_id, style, prev_node, idx):
|
|
233
233
|
# TODO recursively inject subgraph into subgraph
|
234
234
|
node = pydot.Node(
|
235
235
|
str(component_id),
|
236
|
-
label="Nested flow controller",
|
237
236
|
color="k",
|
238
|
-
shape="rectangle",
|
239
237
|
fontname="helvetica",
|
238
|
+
label="Nested flow controller",
|
239
|
+
shape="rectangle",
|
240
240
|
)
|
241
241
|
else:
|
242
242
|
# label is the name of the pass
|
243
243
|
node = pydot.Node(
|
244
244
|
str(component_id),
|
245
|
-
label=str(type(task).__name__),
|
246
245
|
color=_get_node_color(task, style),
|
247
|
-
shape="rectangle",
|
248
246
|
fontname="helvetica",
|
247
|
+
label=str(type(task).__name__),
|
248
|
+
shape="rectangle",
|
249
249
|
)
|
250
250
|
|
251
251
|
subgraph.add_node(node)
|
@@ -268,12 +268,12 @@ def draw_subgraph(controller_group, component_id, style, prev_node, idx):
|
|
268
268
|
|
269
269
|
input_node = pydot.Node(
|
270
270
|
component_id,
|
271
|
-
label=arg,
|
272
271
|
color="black",
|
273
|
-
|
272
|
+
fontname="helvetica",
|
274
273
|
fontsize=10,
|
274
|
+
label=arg,
|
275
|
+
shape="ellipse",
|
275
276
|
style=nd_style,
|
276
|
-
fontname="helvetica",
|
277
277
|
)
|
278
278
|
subgraph.add_node(input_node)
|
279
279
|
component_id += 1
|
@@ -40,7 +40,7 @@ from typing import Dict, List, Union, Optional
|
|
40
40
|
|
41
41
|
from qiskit import pulse
|
42
42
|
from qiskit.providers import BackendConfigurationError
|
43
|
-
from qiskit.providers.backend import Backend
|
43
|
+
from qiskit.providers.backend import Backend, BackendV2
|
44
44
|
|
45
45
|
|
46
46
|
class DrawerBackendInfo(ABC):
|
@@ -106,40 +106,67 @@ class OpenPulseBackendInfo(DrawerBackendInfo):
|
|
106
106
|
Returns:
|
107
107
|
OpenPulseBackendInfo: New configured instance.
|
108
108
|
"""
|
109
|
-
configuration = backend.configuration()
|
110
|
-
defaults = backend.defaults()
|
111
|
-
|
112
|
-
# load name
|
113
|
-
name = backend.name()
|
114
|
-
|
115
|
-
# load cycle time
|
116
|
-
dt = configuration.dt
|
117
|
-
|
118
|
-
# load frequencies
|
119
109
|
chan_freqs = {}
|
120
|
-
|
121
|
-
chan_freqs.update(
|
122
|
-
{pulse.DriveChannel(qind): freq for qind, freq in enumerate(defaults.qubit_freq_est)}
|
123
|
-
)
|
124
|
-
chan_freqs.update(
|
125
|
-
{pulse.MeasureChannel(qind): freq for qind, freq in enumerate(defaults.meas_freq_est)}
|
126
|
-
)
|
127
|
-
for qind, u_lo_mappers in enumerate(configuration.u_channel_lo):
|
128
|
-
temp_val = 0.0 + 0.0j
|
129
|
-
for u_lo_mapper in u_lo_mappers:
|
130
|
-
temp_val += defaults.qubit_freq_est[u_lo_mapper.q] * u_lo_mapper.scale
|
131
|
-
chan_freqs[pulse.ControlChannel(qind)] = temp_val.real
|
132
|
-
|
133
|
-
# load qubit channel mapping
|
134
110
|
qubit_channel_map = defaultdict(list)
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
111
|
+
|
112
|
+
if hasattr(backend, "configuration") and hasattr(backend, "defaults"):
|
113
|
+
configuration = backend.configuration()
|
114
|
+
defaults = backend.defaults()
|
115
|
+
|
116
|
+
name = configuration.backend_name
|
117
|
+
dt = configuration.dt
|
118
|
+
|
119
|
+
# load frequencies
|
120
|
+
chan_freqs.update(
|
121
|
+
{
|
122
|
+
pulse.DriveChannel(qind): freq
|
123
|
+
for qind, freq in enumerate(defaults.qubit_freq_est)
|
124
|
+
}
|
125
|
+
)
|
126
|
+
chan_freqs.update(
|
127
|
+
{
|
128
|
+
pulse.MeasureChannel(qind): freq
|
129
|
+
for qind, freq in enumerate(defaults.meas_freq_est)
|
130
|
+
}
|
131
|
+
)
|
132
|
+
for qind, u_lo_mappers in enumerate(configuration.u_channel_lo):
|
133
|
+
temp_val = 0.0 + 0.0j
|
134
|
+
for u_lo_mapper in u_lo_mappers:
|
135
|
+
temp_val += defaults.qubit_freq_est[u_lo_mapper.q] * u_lo_mapper.scale
|
136
|
+
chan_freqs[pulse.ControlChannel(qind)] = temp_val.real
|
137
|
+
|
138
|
+
# load qubit channel mapping
|
139
|
+
for qind in range(configuration.n_qubits):
|
140
|
+
qubit_channel_map[qind].append(configuration.drive(qubit=qind))
|
141
|
+
qubit_channel_map[qind].append(configuration.measure(qubit=qind))
|
142
|
+
for tind in range(configuration.n_qubits):
|
143
|
+
try:
|
144
|
+
qubit_channel_map[qind].extend(configuration.control(qubits=(qind, tind)))
|
145
|
+
except BackendConfigurationError:
|
146
|
+
pass
|
147
|
+
elif isinstance(backend, BackendV2):
|
148
|
+
# Pure V2 model doesn't contain channel frequency information.
|
149
|
+
name = backend.name
|
150
|
+
dt = backend.dt
|
151
|
+
|
152
|
+
# load qubit channel mapping
|
153
|
+
for qind in range(backend.num_qubits):
|
154
|
+
# channels are NotImplemented by default so we must catch arbitrary error.
|
155
|
+
try:
|
156
|
+
qubit_channel_map[qind].append(backend.drive_channel(qind))
|
157
|
+
except Exception: # pylint: disable=broad-except
|
158
|
+
pass
|
139
159
|
try:
|
140
|
-
qubit_channel_map[qind].
|
141
|
-
except
|
160
|
+
qubit_channel_map[qind].append(backend.measure_channel(qind))
|
161
|
+
except Exception: # pylint: disable=broad-except
|
142
162
|
pass
|
163
|
+
for tind in range(backend.num_qubits):
|
164
|
+
try:
|
165
|
+
qubit_channel_map[qind].extend(backend.control_channel(qubits=(qind, tind)))
|
166
|
+
except Exception: # pylint: disable=broad-except
|
167
|
+
pass
|
168
|
+
else:
|
169
|
+
raise RuntimeError("Backend object not yet supported")
|
143
170
|
|
144
171
|
return OpenPulseBackendInfo(
|
145
172
|
name=name, dt=dt, channel_frequency_map=chan_freqs, qubit_channel_map=qubit_channel_map
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: qiskit
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.2
|
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
|
@@ -28,29 +28,29 @@ Classifier: Topic :: Scientific/Engineering
|
|
28
28
|
Requires-Python: >=3.8
|
29
29
|
Description-Content-Type: text/markdown
|
30
30
|
License-File: LICENSE.txt
|
31
|
-
Requires-Dist: rustworkx
|
32
|
-
Requires-Dist: numpy
|
33
|
-
Requires-Dist: scipy
|
34
|
-
Requires-Dist: sympy
|
35
|
-
Requires-Dist: dill
|
36
|
-
Requires-Dist: python-dateutil
|
37
|
-
Requires-Dist: stevedore
|
31
|
+
Requires-Dist: rustworkx>=0.14.0
|
32
|
+
Requires-Dist: numpy<3,>=1.17
|
33
|
+
Requires-Dist: scipy>=1.5
|
34
|
+
Requires-Dist: sympy>=1.3
|
35
|
+
Requires-Dist: dill>=0.3
|
36
|
+
Requires-Dist: python-dateutil>=2.8.0
|
37
|
+
Requires-Dist: stevedore>=3.0.0
|
38
38
|
Requires-Dist: typing-extensions
|
39
|
-
Requires-Dist: symengine
|
39
|
+
Requires-Dist: symengine>=0.11
|
40
40
|
Provides-Extra: all
|
41
|
-
Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]
|
41
|
+
Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]; extra == "all"
|
42
42
|
Provides-Extra: crosstalk-pass
|
43
|
-
Requires-Dist: z3-solver
|
43
|
+
Requires-Dist: z3-solver>=4.7; extra == "crosstalk-pass"
|
44
44
|
Provides-Extra: csp-layout-pass
|
45
|
-
Requires-Dist: python-constraint
|
45
|
+
Requires-Dist: python-constraint>=1.4; extra == "csp-layout-pass"
|
46
46
|
Provides-Extra: qasm3-import
|
47
|
-
Requires-Dist: qiskit-qasm3-import
|
47
|
+
Requires-Dist: qiskit-qasm3-import>=0.1.0; extra == "qasm3-import"
|
48
48
|
Provides-Extra: visualization
|
49
|
-
Requires-Dist: matplotlib
|
50
|
-
Requires-Dist: pydot
|
51
|
-
Requires-Dist: Pillow
|
52
|
-
Requires-Dist: pylatexenc
|
53
|
-
Requires-Dist: seaborn
|
49
|
+
Requires-Dist: matplotlib>=3.3; extra == "visualization"
|
50
|
+
Requires-Dist: pydot; extra == "visualization"
|
51
|
+
Requires-Dist: Pillow>=4.2.1; extra == "visualization"
|
52
|
+
Requires-Dist: pylatexenc>=1.4; extra == "visualization"
|
53
|
+
Requires-Dist: seaborn>=0.9.0; extra == "visualization"
|
54
54
|
|
55
55
|
# Qiskit
|
56
56
|
|