qiskit 1.3.2__cp39-abi3-win32.whl → 1.4.0__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/__init__.py +1 -0
- qiskit/_accelerate.pyd +0 -0
- qiskit/circuit/__init__.py +5 -2
- qiskit/circuit/bit.py +12 -0
- qiskit/circuit/classicalfunction/__init__.py +13 -1
- qiskit/circuit/classicalfunction/boolean_expression.py +10 -1
- qiskit/circuit/classicalfunction/classicalfunction.py +10 -1
- qiskit/circuit/classicalfunction/exceptions.py +7 -1
- qiskit/circuit/delay.py +5 -0
- qiskit/circuit/library/generalized_gates/mcmt.py +5 -6
- qiskit/circuit/library/phase_oracle.py +24 -17
- qiskit/circuit/library/standard_gates/rz.py +7 -7
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +0 -30
- qiskit/circuit/parametervector.py +25 -5
- qiskit/circuit/quantumcircuit.py +68 -2
- qiskit/circuit/register.py +13 -0
- qiskit/compiler/assembler.py +16 -8
- qiskit/compiler/transpiler.py +1 -1
- qiskit/dagcircuit/dagdependency_v2.py +4 -2
- qiskit/passmanager/passmanager.py +19 -1
- qiskit/primitives/backend_estimator_v2.py +17 -0
- qiskit/primitives/backend_sampler_v2.py +15 -0
- qiskit/providers/backend_compat.py +46 -11
- qiskit/providers/basic_provider/basic_simulator.py +15 -3
- qiskit/providers/exceptions.py +23 -2
- qiskit/providers/models/backendproperties.py +19 -1
- qiskit/providers/models/backendstatus.py +10 -0
- qiskit/providers/models/jobstatus.py +11 -0
- qiskit/pulse/schedule.py +1 -1
- qiskit/quantum_info/operators/channel/transformations.py +15 -0
- qiskit/result/result.py +109 -20
- qiskit/synthesis/evolution/product_formula.py +1 -2
- qiskit/synthesis/evolution/qdrift.py +1 -2
- qiskit/synthesis/evolution/suzuki_trotter.py +1 -2
- qiskit/transpiler/__init__.py +772 -542
- qiskit/transpiler/layout.py +6 -6
- qiskit/transpiler/passes/calibration/rzx_templates.py +7 -0
- qiskit/transpiler/passes/layout/dense_layout.py +12 -0
- qiskit/transpiler/passes/layout/sabre_layout.py +13 -0
- qiskit/transpiler/passes/layout/vf2_layout.py +11 -0
- qiskit/transpiler/passes/layout/vf2_post_layout.py +22 -0
- qiskit/transpiler/passes/optimization/normalize_rx_angle.py +8 -0
- qiskit/transpiler/passes/optimization/remove_identity_equiv.py +2 -3
- qiskit/transpiler/passes/routing/star_prerouting.py +17 -2
- qiskit/transpiler/passes/scheduling/scheduling/alap.py +1 -1
- qiskit/transpiler/passes/scheduling/scheduling/asap.py +1 -1
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +11 -0
- qiskit/transpiler/passmanager_config.py +11 -0
- qiskit/transpiler/preset_passmanagers/__init__.py +26 -6
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +188 -118
- qiskit/transpiler/preset_passmanagers/common.py +133 -83
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +29 -3
- qiskit/transpiler/preset_passmanagers/plugin.py +33 -42
- qiskit/transpiler/target.py +41 -9
- qiskit/visualization/circuit/text.py +3 -2
- qiskit/visualization/gate_map.py +50 -0
- qiskit/visualization/pulse_v2/interface.py +0 -2
- qiskit/visualization/timeline/interface.py +3 -3
- {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/METADATA +4 -7
- {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/RECORD +65 -65
- {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/WHEEL +0 -0
- {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/entry_points.txt +0 -0
- {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/top_level.txt +0 -0
@@ -344,13 +344,34 @@ def generate_preset_pass_manager(
|
|
344
344
|
# preserve the former behavior of transpile.
|
345
345
|
backend_properties = _parse_backend_properties(backend_properties, backend)
|
346
346
|
with warnings.catch_warnings():
|
347
|
-
# TODO: inst_map will be removed in 2.0
|
347
|
+
# TODO: inst_map and backend_properties will be removed in 2.0
|
348
348
|
warnings.filterwarnings(
|
349
349
|
"ignore",
|
350
350
|
category=DeprecationWarning,
|
351
351
|
message=".*``inst_map`` is deprecated as of Qiskit 1.3.*",
|
352
352
|
module="qiskit",
|
353
353
|
)
|
354
|
+
warnings.filterwarnings(
|
355
|
+
"ignore",
|
356
|
+
category=DeprecationWarning,
|
357
|
+
message=".* ``backend_properties`` is deprecated as of Qiskit 1.4",
|
358
|
+
module="qiskit",
|
359
|
+
)
|
360
|
+
warnings.filterwarnings(
|
361
|
+
"ignore",
|
362
|
+
category=DeprecationWarning,
|
363
|
+
message=".*``qiskit.providers.exceptions.BackendPropertyError``",
|
364
|
+
)
|
365
|
+
# TODO: This is a temporary usage of deprecated backend_properties in
|
366
|
+
# Target.from_configuration. Probably the logic needs to be restructured
|
367
|
+
# in a more target-centric transpiler
|
368
|
+
# https://github.com/Qiskit/qiskit/issues/9256
|
369
|
+
warnings.filterwarnings(
|
370
|
+
"ignore",
|
371
|
+
category=DeprecationWarning,
|
372
|
+
message=r".+qiskit\.transpiler\.target\.Target\.from_configuration.+",
|
373
|
+
module="qiskit",
|
374
|
+
)
|
354
375
|
# Build target from constraints.
|
355
376
|
target = Target.from_configuration(
|
356
377
|
basis_gates=basis_gates,
|
@@ -403,7 +424,6 @@ def generate_preset_pass_manager(
|
|
403
424
|
initial_layout = _parse_initial_layout(initial_layout)
|
404
425
|
approximation_degree = _parse_approximation_degree(approximation_degree)
|
405
426
|
seed_transpiler = _parse_seed_transpiler(seed_transpiler)
|
406
|
-
|
407
427
|
pm_options = {
|
408
428
|
"target": target,
|
409
429
|
"basis_gates": basis_gates,
|
@@ -428,12 +448,18 @@ def generate_preset_pass_manager(
|
|
428
448
|
}
|
429
449
|
|
430
450
|
with warnings.catch_warnings():
|
431
|
-
# inst_map
|
451
|
+
# inst_map and backend_properties are deprecated in the PassManagerConfig initializer
|
432
452
|
warnings.filterwarnings(
|
433
453
|
"ignore",
|
434
454
|
category=DeprecationWarning,
|
435
455
|
message=".*argument ``inst_map`` is deprecated as of Qiskit 1.3",
|
436
456
|
)
|
457
|
+
warnings.filterwarnings(
|
458
|
+
"ignore",
|
459
|
+
category=DeprecationWarning,
|
460
|
+
message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
|
461
|
+
module="qiskit",
|
462
|
+
)
|
437
463
|
if backend is not None:
|
438
464
|
pm_options["_skip_target"] = _skip_target
|
439
465
|
pm_config = PassManagerConfig.from_backend(backend, **pm_options)
|
@@ -11,6 +11,8 @@
|
|
11
11
|
# that they have been altered from the originals.
|
12
12
|
|
13
13
|
"""
|
14
|
+
.. _transpiler-preset-stage-plugins:
|
15
|
+
|
14
16
|
=======================================================================================
|
15
17
|
Transpiler Stage Plugin Interface (:mod:`qiskit.transpiler.preset_passmanagers.plugin`)
|
16
18
|
=======================================================================================
|
@@ -35,8 +37,10 @@ see :mod:`qiskit.transpiler.passes.synthesis.plugin`.
|
|
35
37
|
Plugin Stages
|
36
38
|
=============
|
37
39
|
|
38
|
-
|
39
|
-
load external plugins
|
40
|
+
There are six stages in the preset pass managers, all of which actively
|
41
|
+
load external plugins using corresponding entry points. The following table summarizes
|
42
|
+
each stage. For more details on the description and expectations of each stage, follow the link
|
43
|
+
in the stages' names to the full documentation.
|
40
44
|
|
41
45
|
.. list-table:: Stages
|
42
46
|
:header-rows: 1
|
@@ -44,57 +48,44 @@ load external plugins via corresponding entry points.
|
|
44
48
|
* - Stage Name
|
45
49
|
- Entry Point
|
46
50
|
- Reserved Names
|
47
|
-
-
|
48
|
-
|
51
|
+
- Summary
|
52
|
+
|
53
|
+
* - :ref:`init <transpiler-preset-stage-init>`
|
49
54
|
- ``qiskit.transpiler.init``
|
50
55
|
- ``default``
|
51
|
-
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
* - ``layout``
|
56
|
+
- High-level, logical optimizations on abstract circuits, and reduction of multi-qubit
|
57
|
+
operations to one- and two-qubit operations.
|
58
|
+
|
59
|
+
* - :ref:`layout <transpiler-preset-stage-layout>`
|
56
60
|
- ``qiskit.transpiler.layout``
|
57
61
|
- ``trivial``, ``dense``, ``sabre``, ``default``
|
58
|
-
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
layout. The embedding of the :class:`~.Layout` can be generated with
|
63
|
-
:func:`~.generate_embed_passmanager`.
|
64
|
-
* - ``routing``
|
62
|
+
- Choose an initial mapping of virtual qubits to physical qubits, including expansion of the
|
63
|
+
circuit to include explicit ancillas. This stage is sometimes combined with ``routing``.
|
64
|
+
|
65
|
+
* - :ref:`routing <transpiler-preset-stage-routing>`
|
65
66
|
- ``qiskit.transpiler.routing``
|
66
67
|
- ``basic``, ``stochastic``, ``lookahead``, ``sabre``
|
67
|
-
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
of this stage is also expected to have the ``final_layout`` property set field
|
73
|
-
set with a :class:`~.Layout` object that maps the :class:`.Qubit` to the
|
74
|
-
output final position of that qubit in the circuit. If there is an
|
75
|
-
existing ``final_layout`` entry in the property set (such as might be set
|
76
|
-
by an optimization pass that introduces a permutation) it is expected
|
77
|
-
that the final layout will be the composition of the two layouts (this
|
78
|
-
can be computed using :meth:`.DAGCircuit.compose`, for example:
|
79
|
-
``second_final_layout.compose(first_final_layout, dag.qubits)``).
|
80
|
-
* - ``translation``
|
68
|
+
- Insert gates into the circuit to ensure it matches the connectivity constraints of the
|
69
|
+
:class:`.Target`. The inserted gates do not need to be in the target ISA yet, so are often
|
70
|
+
just output as ``swap`` instructions. This stage is sometimes subsumed by ``layout``.
|
71
|
+
|
72
|
+
* - :ref:`translation <transpiler-preset-stage-translation>`
|
81
73
|
- ``qiskit.transpiler.translation``
|
82
|
-
- ``translator``, ``synthesis
|
83
|
-
-
|
84
|
-
|
85
|
-
* -
|
74
|
+
- ``translator``, ``synthesis``
|
75
|
+
- Rewrite all gates outside the target ISA to use only gates within the ISA.
|
76
|
+
|
77
|
+
* - :ref:`optimization <transpiler-preset-stage-optimization>`
|
86
78
|
- ``qiskit.transpiler.optimization``
|
87
79
|
- ``default``
|
88
|
-
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
* - ``scheduling``
|
80
|
+
- Low-level, physical-circuit-aware optimizations. Unlike ``init``, the ``optimization`` stage
|
81
|
+
acts at the level of a physical circuit.
|
82
|
+
|
83
|
+
* - :ref:`scheduling <transpiler-preset-stage-scheduling>`
|
93
84
|
- ``qiskit.transpiler.scheduling``
|
94
85
|
- ``alap``, ``asap``, ``default``
|
95
|
-
-
|
96
|
-
|
97
|
-
|
86
|
+
- Insert :class:`~.circuit.Delay` instructions to make the wall-clock timing of the circuit
|
87
|
+
fully explicit.
|
88
|
+
|
98
89
|
|
99
90
|
Writing Plugins
|
100
91
|
===============
|
qiskit/transpiler/target.py
CHANGED
@@ -56,9 +56,10 @@ from qiskit.exceptions import QiskitError
|
|
56
56
|
# full target
|
57
57
|
from qiskit.providers.backend import QubitProperties # pylint: disable=unused-import
|
58
58
|
from qiskit.providers.models.backendproperties import BackendProperties
|
59
|
-
from qiskit.utils import deprecate_func
|
59
|
+
from qiskit.utils import deprecate_func, deprecate_arg
|
60
60
|
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency, deprecate_pulse_arg
|
61
61
|
|
62
|
+
|
62
63
|
logger = logging.getLogger(__name__)
|
63
64
|
|
64
65
|
|
@@ -656,28 +657,43 @@ class Target(BaseTarget):
|
|
656
657
|
self,
|
657
658
|
operation_name: str,
|
658
659
|
qargs: tuple[int, ...],
|
660
|
+
operation_params: list[float] | float | None = None,
|
659
661
|
) -> bool:
|
660
|
-
"""Return whether the instruction (operation + qubits) defines
|
662
|
+
"""Return whether the instruction (operation + operation_params + qubits) defines
|
663
|
+
a calibration.
|
661
664
|
|
662
665
|
Args:
|
663
666
|
operation_name: The name of the operation for the instruction.
|
664
|
-
qargs: The
|
667
|
+
qargs: The qubit indices for the instruction.
|
668
|
+
operation_params: The parameters for the Instruction. In case
|
669
|
+
of multi-parameter gates, the order of parameters in the tuple
|
670
|
+
must match the order of the gate parameters.
|
665
671
|
|
666
672
|
Returns:
|
667
673
|
Returns ``True`` if the calibration is supported and ``False`` if it isn't.
|
668
674
|
"""
|
669
|
-
return self._has_calibration(operation_name, qargs)
|
675
|
+
return self._has_calibration(operation_name, qargs, operation_params)
|
670
676
|
|
671
677
|
def _has_calibration(
|
672
678
|
self,
|
673
679
|
operation_name: str,
|
674
680
|
qargs: tuple[int, ...],
|
681
|
+
operation_params: list[float] | float | None = None,
|
675
682
|
) -> bool:
|
676
|
-
|
683
|
+
if operation_params is not None and not isinstance(operation_params, list):
|
684
|
+
operation_params = [operation_params]
|
685
|
+
|
677
686
|
if operation_name not in self._gate_map:
|
678
687
|
return False
|
688
|
+
|
679
689
|
if qargs not in self._gate_map[operation_name]:
|
680
690
|
return False
|
691
|
+
|
692
|
+
if operation_params is not None and not (
|
693
|
+
operation_params == self._gate_name_map[operation_name].params
|
694
|
+
):
|
695
|
+
return False
|
696
|
+
|
681
697
|
return getattr(self._gate_map[operation_name][qargs], "_calibration", None) is not None
|
682
698
|
|
683
699
|
@deprecate_pulse_dependency
|
@@ -686,6 +702,7 @@ class Target(BaseTarget):
|
|
686
702
|
operation_name: str,
|
687
703
|
qargs: tuple[int, ...],
|
688
704
|
*args: ParameterValueType,
|
705
|
+
operation_params: list[float] | float | None = None,
|
689
706
|
**kwargs: ParameterValueType,
|
690
707
|
) -> Schedule | ScheduleBlock:
|
691
708
|
"""Get calibrated pulse schedule for the instruction.
|
@@ -695,25 +712,32 @@ class Target(BaseTarget):
|
|
695
712
|
|
696
713
|
Args:
|
697
714
|
operation_name: The name of the operation for the instruction.
|
698
|
-
qargs: The
|
715
|
+
qargs: The qubit indices for the instruction.
|
699
716
|
args: Parameter values to build schedule if any.
|
717
|
+
operation_params: The parameters for the Instruction. In case
|
718
|
+
of multi-parameter gate, the order of parameters in the tuple
|
719
|
+
must match the order of the gate parameters.
|
700
720
|
kwargs: Parameter values with name to build schedule if any.
|
701
721
|
|
702
722
|
Returns:
|
703
723
|
Calibrated pulse schedule of corresponding instruction.
|
704
724
|
"""
|
705
|
-
return self._get_calibration(
|
725
|
+
return self._get_calibration(
|
726
|
+
operation_name, qargs, *args, operation_params=operation_params, **kwargs
|
727
|
+
)
|
706
728
|
|
707
729
|
def _get_calibration(
|
708
730
|
self,
|
709
731
|
operation_name: str,
|
710
732
|
qargs: tuple[int, ...],
|
711
733
|
*args: ParameterValueType,
|
734
|
+
operation_params: list[float] | float | None = None,
|
712
735
|
**kwargs: ParameterValueType,
|
713
736
|
) -> Schedule | ScheduleBlock:
|
714
|
-
if not self._has_calibration(operation_name, qargs):
|
737
|
+
if not self._has_calibration(operation_name, qargs, operation_params):
|
715
738
|
raise KeyError(
|
716
|
-
f"Calibration of instruction {operation_name}
|
739
|
+
f"Calibration of instruction: `{operation_name}`, with params: "
|
740
|
+
f"`{operation_params}` for qubit: {qargs} is not defined."
|
717
741
|
)
|
718
742
|
cal_entry = getattr(self._gate_map[operation_name][qargs], "_calibration")
|
719
743
|
return cal_entry.get_schedule(*args, **kwargs)
|
@@ -971,6 +995,14 @@ class Target(BaseTarget):
|
|
971
995
|
|
972
996
|
@classmethod
|
973
997
|
@deprecate_pulse_arg("inst_map")
|
998
|
+
@deprecate_arg(
|
999
|
+
name="backend_properties",
|
1000
|
+
since="1.4",
|
1001
|
+
package_name="Qiskit",
|
1002
|
+
removal_timeline="in Qiskit 2.0",
|
1003
|
+
additional_msg="To add instructions with specific properties "
|
1004
|
+
"use Target.add_instruction(instruction, properties, name).",
|
1005
|
+
)
|
974
1006
|
def from_configuration(
|
975
1007
|
cls,
|
976
1008
|
basis_gates: list[str],
|
@@ -1153,9 +1153,10 @@ class TextDrawing:
|
|
1153
1153
|
if not self.plotbarriers:
|
1154
1154
|
return layer, current_cons, current_cons_cond, connection_label
|
1155
1155
|
|
1156
|
-
|
1156
|
+
top_qubit = min(node.qargs, key=lambda q: self._wire_map.get(q, float("inf")))
|
1157
|
+
for qubit in node.qargs:
|
1157
1158
|
if qubit in self.qubits:
|
1158
|
-
label = op.label if
|
1159
|
+
label = op.label if qubit == top_qubit else ""
|
1159
1160
|
layer.set_qubit(qubit, Barrier(label))
|
1160
1161
|
|
1161
1162
|
elif isinstance(op, SwapGate):
|
qiskit/visualization/gate_map.py
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
"""A module for visualizing device coupling maps"""
|
14
14
|
|
15
15
|
import math
|
16
|
+
import warnings
|
16
17
|
from typing import List
|
17
18
|
|
18
19
|
import numpy as np
|
@@ -21,6 +22,7 @@ from rustworkx.visualization import graphviz_draw
|
|
21
22
|
|
22
23
|
from qiskit.exceptions import QiskitError
|
23
24
|
from qiskit.utils import optionals as _optionals
|
25
|
+
from qiskit.providers import BackendV2
|
24
26
|
from qiskit.providers.exceptions import BackendPropertyError
|
25
27
|
from qiskit.transpiler.coupling import CouplingMap
|
26
28
|
from .exceptions import VisualizationError
|
@@ -50,6 +52,12 @@ def plot_gate_map(
|
|
50
52
|
):
|
51
53
|
"""Plots the gate map of a device.
|
52
54
|
|
55
|
+
.. deprecated:: 1.4
|
56
|
+
The function ``plot_gate_map`` will stop supporting inputs of type
|
57
|
+
:class:`.BackendV1` in the `backend` parameter in a future release no
|
58
|
+
earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should
|
59
|
+
move to :class:`.BackendV2`.
|
60
|
+
|
53
61
|
Args:
|
54
62
|
backend (Backend): The backend instance that will be used to plot the device
|
55
63
|
gate map.
|
@@ -92,6 +100,15 @@ def plot_gate_map(
|
|
92
100
|
|
93
101
|
plot_gate_map(backend)
|
94
102
|
"""
|
103
|
+
if not isinstance(backend, BackendV2):
|
104
|
+
warnings.warn(
|
105
|
+
"The function `plot_gate_map` will stop supporting inputs of "
|
106
|
+
f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
|
107
|
+
"release no earlier than 2.0. `BackendV1` is deprecated and implementations "
|
108
|
+
"should move to `BackendV2`.",
|
109
|
+
category=DeprecationWarning,
|
110
|
+
stacklevel=2,
|
111
|
+
)
|
95
112
|
qubit_coordinates_map = {}
|
96
113
|
|
97
114
|
qubit_coordinates_map[5] = [[1, 0], [0, 1], [1, 1], [1, 2], [2, 1]]
|
@@ -1145,6 +1162,12 @@ def plot_circuit_layout(circuit, backend, view="virtual", qubit_coordinates=None
|
|
1145
1162
|
"""Plot the layout of a circuit transpiled for a given
|
1146
1163
|
target backend.
|
1147
1164
|
|
1165
|
+
.. deprecated:: 1.4
|
1166
|
+
The function ``plot_circuit_layout`` will stop supporting inputs of type
|
1167
|
+
:class:`.BackendV1` in the `backend` parameter in a future release no
|
1168
|
+
earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should
|
1169
|
+
move to :class:`.BackendV2`.
|
1170
|
+
|
1148
1171
|
Args:
|
1149
1172
|
circuit (QuantumCircuit): Input quantum circuit.
|
1150
1173
|
backend (Backend): Target backend.
|
@@ -1187,6 +1210,17 @@ def plot_circuit_layout(circuit, backend, view="virtual", qubit_coordinates=None
|
|
1187
1210
|
new_circ_lv3 = transpile(ghz, backend=backend, optimization_level=3)
|
1188
1211
|
plot_circuit_layout(new_circ_lv3, backend)
|
1189
1212
|
"""
|
1213
|
+
|
1214
|
+
if not isinstance(backend, BackendV2):
|
1215
|
+
warnings.warn(
|
1216
|
+
"The function `plot_circuit_layout` will stop supporting inputs of "
|
1217
|
+
f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
|
1218
|
+
"release no earlier than 2.0. `BackendV1` is deprecated and implementations "
|
1219
|
+
"should move to `BackendV2`.",
|
1220
|
+
category=DeprecationWarning,
|
1221
|
+
stacklevel=2,
|
1222
|
+
)
|
1223
|
+
|
1190
1224
|
if circuit._layout is None:
|
1191
1225
|
raise QiskitError("Circuit has no layout. Perhaps it has not been transpiled.")
|
1192
1226
|
|
@@ -1254,6 +1288,12 @@ def plot_circuit_layout(circuit, backend, view="virtual", qubit_coordinates=None
|
|
1254
1288
|
def plot_error_map(backend, figsize=(15, 12), show_title=True, qubit_coordinates=None):
|
1255
1289
|
"""Plots the error map of a given backend.
|
1256
1290
|
|
1291
|
+
.. deprecated:: 1.4
|
1292
|
+
The function ``plot_error_map`` will stop supporting inputs of type
|
1293
|
+
:class:`.BackendV1` in the `backend` parameter in a future release no
|
1294
|
+
earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should
|
1295
|
+
move to :class:`.BackendV2`.
|
1296
|
+
|
1257
1297
|
Args:
|
1258
1298
|
backend (Backend): Given backend.
|
1259
1299
|
figsize (tuple): Figure size in inches.
|
@@ -1282,6 +1322,16 @@ def plot_error_map(backend, figsize=(15, 12), show_title=True, qubit_coordinates
|
|
1282
1322
|
backend = GenericBackendV2(num_qubits=5)
|
1283
1323
|
plot_error_map(backend)
|
1284
1324
|
"""
|
1325
|
+
if not isinstance(backend, BackendV2):
|
1326
|
+
warnings.warn(
|
1327
|
+
"The function `plot_error_map` will stop supporting inputs of "
|
1328
|
+
f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
|
1329
|
+
"release no earlier than 2.0. `BackendV1` is deprecated and implementations "
|
1330
|
+
"should move to `BackendV2`.",
|
1331
|
+
category=DeprecationWarning,
|
1332
|
+
stacklevel=2,
|
1333
|
+
)
|
1334
|
+
|
1285
1335
|
import matplotlib
|
1286
1336
|
import matplotlib.pyplot as plt
|
1287
1337
|
from matplotlib import gridspec, ticker
|
@@ -27,12 +27,10 @@ from qiskit.pulse.channels import Channel
|
|
27
27
|
from qiskit.visualization.exceptions import VisualizationError
|
28
28
|
from qiskit.visualization.pulse_v2 import core, device_info, stylesheet, types
|
29
29
|
from qiskit.exceptions import MissingOptionalLibraryError
|
30
|
-
from qiskit.utils import deprecate_arg
|
31
30
|
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
|
32
31
|
|
33
32
|
|
34
33
|
@deprecate_pulse_dependency(moving_to_dynamics=True)
|
35
|
-
@deprecate_arg("show_barrier", new_alias="plot_barrier", since="1.1.0", pending=True)
|
36
34
|
def draw(
|
37
35
|
program: Union[Waveform, SymbolicPulse, Schedule, ScheduleBlock],
|
38
36
|
style: Optional[Dict[str, Any]] = None,
|
@@ -30,8 +30,8 @@ from qiskit.visualization.timeline import types, core, stylesheet
|
|
30
30
|
from qiskit.utils import deprecate_arg
|
31
31
|
|
32
32
|
|
33
|
-
@deprecate_arg("show_idle", new_alias="idle_wires", since="1.
|
34
|
-
@deprecate_arg("show_barriers", new_alias="plot_barriers", since="1.
|
33
|
+
@deprecate_arg("show_idle", new_alias="idle_wires", since="1.4")
|
34
|
+
@deprecate_arg("show_barriers", new_alias="plot_barriers", since="1.4")
|
35
35
|
def draw(
|
36
36
|
program: circuit.QuantumCircuit,
|
37
37
|
style: Optional[Dict[str, Any]] = None,
|
@@ -372,7 +372,7 @@ def draw(
|
|
372
372
|
warnings.warn(
|
373
373
|
"Target is not specified. In Qiskit 2.0.0 this will be required to get the duration of "
|
374
374
|
"instructions.",
|
375
|
-
|
375
|
+
DeprecationWarning,
|
376
376
|
stacklevel=2,
|
377
377
|
)
|
378
378
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: qiskit
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.4.0
|
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
|
@@ -56,7 +56,7 @@ Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]
|
|
56
56
|
|
57
57
|
[](https://opensource.org/licenses/Apache-2.0) <!--- long-description-skip-begin -->
|
58
58
|
[](https://github.com/Qiskit/qiskit/releases)
|
59
|
-
[](https://github.com/Qiskit/qiskit/releases?q=tag%3A0)
|
59
|
+
<!-- [](https://github.com/Qiskit/qiskit/releases?q=tag%3A0) -->
|
60
60
|
[](https://pypi.org/project/qiskit/)
|
61
61
|
[](https://coveralls.io/github/Qiskit/qiskit?branch=main)
|
62
62
|

|
@@ -76,9 +76,6 @@ For more details on how to use Qiskit, refer to the documentation located here:
|
|
76
76
|
|
77
77
|
## Installation
|
78
78
|
|
79
|
-
> [!WARNING]
|
80
|
-
> Do not try to upgrade an existing Qiskit 0.* environment to Qiskit 1.0 in-place. [Read more](https://docs.quantum.ibm.com/migration-guides/qiskit-1.0-installation).
|
81
|
-
|
82
79
|
We encourage installing Qiskit via ``pip``:
|
83
80
|
|
84
81
|
```bash
|
@@ -200,9 +197,9 @@ to the project at different levels. If you use Qiskit, please cite as per the in
|
|
200
197
|
|
201
198
|
The changelog for a particular release is dynamically generated and gets
|
202
199
|
written to the release page on Github for each release. For example, you can
|
203
|
-
find the page for the `
|
200
|
+
find the page for the `1.2.0` release here:
|
204
201
|
|
205
|
-
<https://github.com/Qiskit/qiskit/releases/tag/
|
202
|
+
<https://github.com/Qiskit/qiskit/releases/tag/1.2.0>
|
206
203
|
|
207
204
|
The changelog for the current release can be found in the releases tab:
|
208
205
|
[](https://github.com/Qiskit/qiskit/releases)
|