qiskit 1.4.2__cp39-abi3-macosx_11_0_arm64.whl → 2.0.0__cp39-abi3-macosx_11_0_arm64.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.
Files changed (459) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +3 -9
  3. qiskit/_accelerate.abi3.so +0 -0
  4. qiskit/circuit/__init__.py +35 -10
  5. qiskit/circuit/{add_control.py → _add_control.py} +32 -12
  6. qiskit/circuit/_classical_resource_map.py +5 -3
  7. qiskit/circuit/barrier.py +3 -7
  8. qiskit/circuit/classical/expr/__init__.py +31 -3
  9. qiskit/circuit/classical/expr/constructors.py +236 -28
  10. qiskit/circuit/classical/expr/expr.py +104 -3
  11. qiskit/circuit/classical/expr/visitors.py +75 -0
  12. qiskit/circuit/classical/types/__init__.py +12 -8
  13. qiskit/circuit/classical/types/ordering.py +14 -7
  14. qiskit/circuit/classical/types/types.py +36 -0
  15. qiskit/circuit/commutation_checker.py +34 -7
  16. qiskit/circuit/controlflow/__init__.py +32 -1
  17. qiskit/circuit/controlflow/_builder_utils.py +9 -5
  18. qiskit/circuit/controlflow/box.py +163 -0
  19. qiskit/circuit/controlflow/break_loop.py +1 -1
  20. qiskit/circuit/controlflow/builder.py +139 -39
  21. qiskit/circuit/controlflow/continue_loop.py +1 -3
  22. qiskit/circuit/controlflow/control_flow.py +10 -0
  23. qiskit/circuit/controlflow/for_loop.py +2 -1
  24. qiskit/circuit/controlflow/if_else.py +3 -16
  25. qiskit/circuit/controlflow/switch_case.py +2 -8
  26. qiskit/circuit/controlflow/while_loop.py +2 -7
  27. qiskit/circuit/controlledgate.py +2 -4
  28. qiskit/circuit/delay.py +40 -11
  29. qiskit/circuit/duration.py +0 -15
  30. qiskit/circuit/gate.py +2 -4
  31. qiskit/circuit/instruction.py +2 -141
  32. qiskit/circuit/instructionset.py +7 -54
  33. qiskit/circuit/library/__init__.py +469 -154
  34. qiskit/circuit/library/arithmetic/__init__.py +16 -10
  35. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  36. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +2 -2
  37. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
  38. qiskit/circuit/library/arithmetic/exact_reciprocal.py +64 -21
  39. qiskit/circuit/library/arithmetic/integer_comparator.py +37 -80
  40. qiskit/circuit/library/arithmetic/linear_amplitude_function.py +169 -2
  41. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +59 -5
  42. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +154 -6
  43. qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +114 -4
  44. qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +191 -15
  45. qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +93 -39
  46. qiskit/circuit/library/arithmetic/quadratic_form.py +168 -2
  47. qiskit/circuit/library/arithmetic/weighted_adder.py +73 -1
  48. qiskit/circuit/library/bit_flip_oracle.py +130 -0
  49. qiskit/circuit/library/blueprintcircuit.py +52 -16
  50. qiskit/circuit/library/data_preparation/initializer.py +1 -1
  51. qiskit/circuit/library/data_preparation/pauli_feature_map.py +4 -4
  52. qiskit/circuit/library/data_preparation/state_preparation.py +1 -1
  53. qiskit/circuit/library/generalized_gates/gms.py +1 -1
  54. qiskit/circuit/library/generalized_gates/isometry.py +1 -1
  55. qiskit/circuit/library/generalized_gates/pauli.py +1 -2
  56. qiskit/circuit/library/generalized_gates/uc.py +97 -7
  57. qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +1 -1
  58. qiskit/circuit/library/generalized_gates/unitary.py +4 -2
  59. qiskit/circuit/library/graph_state.py +1 -0
  60. qiskit/circuit/library/hamiltonian_gate.py +1 -1
  61. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  62. qiskit/circuit/library/n_local/n_local.py +1 -1
  63. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
  64. qiskit/circuit/library/overlap.py +2 -2
  65. qiskit/circuit/library/pauli_evolution.py +39 -24
  66. qiskit/circuit/library/phase_oracle.py +130 -51
  67. qiskit/circuit/library/standard_gates/__init__.py +0 -1
  68. qiskit/circuit/library/standard_gates/dcx.py +3 -4
  69. qiskit/circuit/library/standard_gates/ecr.py +3 -4
  70. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  71. qiskit/circuit/library/standard_gates/h.py +4 -9
  72. qiskit/circuit/library/standard_gates/i.py +2 -2
  73. qiskit/circuit/library/standard_gates/iswap.py +3 -4
  74. qiskit/circuit/library/standard_gates/p.py +15 -34
  75. qiskit/circuit/library/standard_gates/r.py +7 -10
  76. qiskit/circuit/library/standard_gates/rx.py +5 -15
  77. qiskit/circuit/library/standard_gates/rxx.py +3 -6
  78. qiskit/circuit/library/standard_gates/ry.py +5 -17
  79. qiskit/circuit/library/standard_gates/ryy.py +3 -6
  80. qiskit/circuit/library/standard_gates/rz.py +5 -17
  81. qiskit/circuit/library/standard_gates/rzx.py +3 -6
  82. qiskit/circuit/library/standard_gates/rzz.py +3 -6
  83. qiskit/circuit/library/standard_gates/s.py +6 -15
  84. qiskit/circuit/library/standard_gates/swap.py +4 -11
  85. qiskit/circuit/library/standard_gates/sx.py +7 -12
  86. qiskit/circuit/library/standard_gates/t.py +6 -7
  87. qiskit/circuit/library/standard_gates/u.py +2 -10
  88. qiskit/circuit/library/standard_gates/u1.py +5 -16
  89. qiskit/circuit/library/standard_gates/u2.py +2 -6
  90. qiskit/circuit/library/standard_gates/u3.py +3 -11
  91. qiskit/circuit/library/standard_gates/x.py +14 -62
  92. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
  93. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
  94. qiskit/circuit/library/standard_gates/y.py +4 -9
  95. qiskit/circuit/library/standard_gates/z.py +5 -15
  96. qiskit/circuit/measure.py +11 -2
  97. qiskit/circuit/parameterexpression.py +7 -1
  98. qiskit/circuit/quantumcircuit.py +890 -564
  99. qiskit/circuit/random/utils.py +12 -6
  100. qiskit/circuit/reset.py +5 -2
  101. qiskit/circuit/singleton.py +5 -11
  102. qiskit/circuit/store.py +0 -8
  103. qiskit/compiler/__init__.py +1 -7
  104. qiskit/compiler/transpiler.py +38 -196
  105. qiskit/converters/circuit_to_dag.py +6 -4
  106. qiskit/converters/circuit_to_dagdependency.py +0 -2
  107. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  108. qiskit/converters/circuit_to_gate.py +1 -1
  109. qiskit/converters/circuit_to_instruction.py +16 -29
  110. qiskit/converters/dag_to_circuit.py +7 -8
  111. qiskit/converters/dag_to_dagdependency.py +0 -1
  112. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  113. qiskit/converters/dagdependency_to_circuit.py +0 -6
  114. qiskit/converters/dagdependency_to_dag.py +0 -6
  115. qiskit/dagcircuit/collect_blocks.py +32 -20
  116. qiskit/dagcircuit/dagdependency.py +3 -37
  117. qiskit/dagcircuit/dagdependency_v2.py +5 -82
  118. qiskit/dagcircuit/dagnode.py +14 -2
  119. qiskit/passmanager/__init__.py +24 -6
  120. qiskit/passmanager/passmanager.py +26 -24
  121. qiskit/primitives/__init__.py +44 -35
  122. qiskit/primitives/backend_estimator_v2.py +102 -23
  123. qiskit/primitives/backend_sampler_v2.py +5 -20
  124. qiskit/primitives/base/__init__.py +4 -4
  125. qiskit/primitives/base/base_estimator.py +77 -82
  126. qiskit/primitives/base/base_primitive_job.py +2 -2
  127. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  128. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  129. qiskit/primitives/base/base_sampler.py +52 -60
  130. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  131. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  132. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  133. qiskit/primitives/containers/bindings_array.py +3 -1
  134. qiskit/primitives/containers/bit_array.py +23 -0
  135. qiskit/primitives/containers/data_bin.py +3 -1
  136. qiskit/primitives/containers/observables_array.py +19 -2
  137. qiskit/primitives/statevector_sampler.py +6 -8
  138. qiskit/primitives/utils.py +14 -189
  139. qiskit/providers/__init__.py +4 -130
  140. qiskit/providers/backend.py +11 -314
  141. qiskit/providers/basic_provider/__init__.py +3 -1
  142. qiskit/providers/basic_provider/basic_provider.py +29 -9
  143. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  144. qiskit/providers/exceptions.py +0 -33
  145. qiskit/providers/fake_provider/__init__.py +0 -37
  146. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  147. qiskit/qasm2/__init__.py +21 -6
  148. qiskit/qasm2/export.py +2 -10
  149. qiskit/qasm2/parse.py +11 -25
  150. qiskit/qasm3/__init__.py +5 -1
  151. qiskit/qasm3/ast.py +44 -0
  152. qiskit/qasm3/exporter.py +65 -27
  153. qiskit/qasm3/printer.py +35 -4
  154. qiskit/qpy/__init__.py +162 -19
  155. qiskit/qpy/binary_io/__init__.py +0 -1
  156. qiskit/qpy/binary_io/circuits.py +98 -130
  157. qiskit/qpy/binary_io/schedules.py +69 -439
  158. qiskit/qpy/binary_io/value.py +154 -31
  159. qiskit/qpy/common.py +10 -7
  160. qiskit/qpy/formats.py +41 -0
  161. qiskit/qpy/interface.py +34 -81
  162. qiskit/qpy/type_keys.py +58 -221
  163. qiskit/quantum_info/analysis/distance.py +3 -1
  164. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  165. qiskit/quantum_info/operators/operator.py +6 -2
  166. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  167. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  168. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  169. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  170. qiskit/quantum_info/states/densitymatrix.py +16 -6
  171. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  172. qiskit/quantum_info/states/statevector.py +16 -6
  173. qiskit/result/__init__.py +5 -17
  174. qiskit/result/models.py +18 -11
  175. qiskit/result/result.py +38 -134
  176. qiskit/result/sampled_expval.py +1 -2
  177. qiskit/result/utils.py +3 -4
  178. qiskit/synthesis/__init__.py +21 -1
  179. qiskit/synthesis/arithmetic/__init__.py +3 -1
  180. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  181. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  182. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  183. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  184. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  185. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  186. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  187. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  188. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  189. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  190. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  191. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  192. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  193. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  194. qiskit/synthesis/evolution/product_formula.py +44 -35
  195. qiskit/synthesis/evolution/qdrift.py +17 -24
  196. qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
  197. qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
  198. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
  199. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  200. qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
  201. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
  202. qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
  203. qiskit/synthesis/two_qubit/__init__.py +1 -0
  204. qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
  205. qiskit/transpiler/__init__.py +32 -232
  206. qiskit/transpiler/basepasses.py +20 -51
  207. qiskit/transpiler/layout.py +1 -1
  208. qiskit/transpiler/passes/__init__.py +4 -40
  209. qiskit/transpiler/passes/basis/basis_translator.py +5 -4
  210. qiskit/transpiler/passes/basis/decompose.py +1 -15
  211. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
  212. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
  213. qiskit/transpiler/passes/layout/apply_layout.py +4 -0
  214. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  215. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +3 -4
  216. qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
  217. qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
  218. qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
  219. qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
  220. qiskit/transpiler/passes/optimization/__init__.py +2 -3
  221. qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
  222. qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
  223. qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
  224. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
  225. qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
  226. qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
  227. qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
  228. qiskit/transpiler/passes/optimization/light_cone.py +135 -0
  229. qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
  230. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
  231. qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
  232. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
  233. qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
  234. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
  235. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
  236. qiskit/transpiler/passes/routing/__init__.py +0 -1
  237. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
  238. qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
  239. qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
  240. qiskit/transpiler/passes/scheduling/__init__.py +1 -7
  241. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
  242. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
  243. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
  244. qiskit/transpiler/passes/scheduling/padding/base_padding.py +32 -4
  245. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +25 -63
  246. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +12 -4
  247. qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
  248. qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
  249. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
  250. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +134 -62
  251. qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
  252. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
  253. qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
  254. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  255. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
  256. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
  257. qiskit/transpiler/passes/utils/__init__.py +0 -1
  258. qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
  259. qiskit/transpiler/passes/utils/control_flow.py +2 -6
  260. qiskit/transpiler/passes/utils/gate_direction.py +7 -0
  261. qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
  262. qiskit/transpiler/passmanager.py +13 -0
  263. qiskit/transpiler/passmanager_config.py +5 -81
  264. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
  265. qiskit/transpiler/preset_passmanagers/common.py +140 -167
  266. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +107 -322
  267. qiskit/transpiler/preset_passmanagers/level0.py +2 -11
  268. qiskit/transpiler/preset_passmanagers/level1.py +2 -14
  269. qiskit/transpiler/preset_passmanagers/level2.py +2 -12
  270. qiskit/transpiler/preset_passmanagers/level3.py +2 -11
  271. qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
  272. qiskit/transpiler/target.py +78 -524
  273. qiskit/user_config.py +8 -4
  274. qiskit/utils/__init__.py +13 -12
  275. qiskit/utils/deprecation.py +4 -112
  276. qiskit/utils/optionals.py +11 -4
  277. qiskit/utils/parallel.py +214 -87
  278. qiskit/utils/units.py +4 -1
  279. qiskit/visualization/__init__.py +3 -7
  280. qiskit/visualization/array.py +4 -1
  281. qiskit/visualization/bloch.py +1 -1
  282. qiskit/visualization/circuit/_utils.py +19 -19
  283. qiskit/visualization/circuit/circuit_visualization.py +11 -4
  284. qiskit/visualization/circuit/matplotlib.py +13 -23
  285. qiskit/visualization/circuit/text.py +7 -3
  286. qiskit/visualization/counts_visualization.py +4 -0
  287. qiskit/visualization/dag_visualization.py +2 -1
  288. qiskit/visualization/gate_map.py +39 -154
  289. qiskit/visualization/library.py +4 -1
  290. qiskit/visualization/pass_manager_visualization.py +6 -2
  291. qiskit/visualization/state_visualization.py +19 -2
  292. qiskit/visualization/timeline/core.py +19 -13
  293. qiskit/visualization/timeline/interface.py +19 -18
  294. qiskit/visualization/timeline/plotters/matplotlib.py +4 -1
  295. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/METADATA +4 -3
  296. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/RECORD +300 -447
  297. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/WHEEL +2 -1
  298. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/entry_points.txt +8 -2
  299. qiskit/assembler/__init__.py +0 -42
  300. qiskit/assembler/assemble_circuits.py +0 -451
  301. qiskit/assembler/assemble_schedules.py +0 -367
  302. qiskit/assembler/disassemble.py +0 -310
  303. qiskit/assembler/run_config.py +0 -77
  304. qiskit/circuit/bit.py +0 -106
  305. qiskit/circuit/classicalfunction/__init__.py +0 -152
  306. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  307. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  308. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  309. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  310. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  311. qiskit/circuit/classicalfunction/types.py +0 -18
  312. qiskit/circuit/classicalfunction/utils.py +0 -91
  313. qiskit/circuit/classicalregister.py +0 -57
  314. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  315. qiskit/circuit/quantumregister.py +0 -75
  316. qiskit/circuit/register.py +0 -246
  317. qiskit/compiler/assembler.py +0 -689
  318. qiskit/compiler/scheduler.py +0 -109
  319. qiskit/compiler/sequencer.py +0 -71
  320. qiskit/primitives/backend_estimator.py +0 -486
  321. qiskit/primitives/backend_sampler.py +0 -222
  322. qiskit/primitives/estimator.py +0 -172
  323. qiskit/primitives/sampler.py +0 -162
  324. qiskit/providers/backend_compat.py +0 -507
  325. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  326. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  327. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  328. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  330. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  332. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  333. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  335. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  337. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  338. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  339. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  340. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  341. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  342. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  343. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  344. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  345. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  346. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  347. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  348. qiskit/providers/fake_provider/fake_1q.py +0 -91
  349. qiskit/providers/fake_provider/fake_backend.py +0 -165
  350. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  351. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  352. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  353. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  354. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  355. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  356. qiskit/providers/models/__init__.py +0 -89
  357. qiskit/providers/models/backendconfiguration.py +0 -1040
  358. qiskit/providers/models/backendproperties.py +0 -535
  359. qiskit/providers/models/backendstatus.py +0 -104
  360. qiskit/providers/models/jobstatus.py +0 -77
  361. qiskit/providers/models/pulsedefaults.py +0 -305
  362. qiskit/providers/provider.py +0 -95
  363. qiskit/pulse/__init__.py +0 -158
  364. qiskit/pulse/builder.py +0 -2262
  365. qiskit/pulse/calibration_entries.py +0 -381
  366. qiskit/pulse/channels.py +0 -227
  367. qiskit/pulse/configuration.py +0 -245
  368. qiskit/pulse/exceptions.py +0 -45
  369. qiskit/pulse/filters.py +0 -309
  370. qiskit/pulse/instruction_schedule_map.py +0 -424
  371. qiskit/pulse/instructions/__init__.py +0 -67
  372. qiskit/pulse/instructions/acquire.py +0 -150
  373. qiskit/pulse/instructions/delay.py +0 -71
  374. qiskit/pulse/instructions/directives.py +0 -154
  375. qiskit/pulse/instructions/frequency.py +0 -135
  376. qiskit/pulse/instructions/instruction.py +0 -270
  377. qiskit/pulse/instructions/phase.py +0 -152
  378. qiskit/pulse/instructions/play.py +0 -99
  379. qiskit/pulse/instructions/reference.py +0 -100
  380. qiskit/pulse/instructions/snapshot.py +0 -82
  381. qiskit/pulse/library/__init__.py +0 -97
  382. qiskit/pulse/library/continuous.py +0 -430
  383. qiskit/pulse/library/pulse.py +0 -148
  384. qiskit/pulse/library/samplers/__init__.py +0 -15
  385. qiskit/pulse/library/samplers/decorators.py +0 -295
  386. qiskit/pulse/library/samplers/strategies.py +0 -71
  387. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  388. qiskit/pulse/library/waveform.py +0 -136
  389. qiskit/pulse/macros.py +0 -262
  390. qiskit/pulse/parameter_manager.py +0 -445
  391. qiskit/pulse/parser.py +0 -314
  392. qiskit/pulse/reference_manager.py +0 -58
  393. qiskit/pulse/schedule.py +0 -1854
  394. qiskit/pulse/transforms/__init__.py +0 -106
  395. qiskit/pulse/transforms/alignments.py +0 -406
  396. qiskit/pulse/transforms/base_transforms.py +0 -71
  397. qiskit/pulse/transforms/canonicalization.py +0 -498
  398. qiskit/pulse/transforms/dag.py +0 -122
  399. qiskit/pulse/utils.py +0 -149
  400. qiskit/qobj/__init__.py +0 -75
  401. qiskit/qobj/common.py +0 -81
  402. qiskit/qobj/converters/__init__.py +0 -18
  403. qiskit/qobj/converters/lo_config.py +0 -177
  404. qiskit/qobj/converters/pulse_instruction.py +0 -897
  405. qiskit/qobj/pulse_qobj.py +0 -709
  406. qiskit/qobj/qasm_qobj.py +0 -708
  407. qiskit/qobj/utils.py +0 -46
  408. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  409. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  410. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  411. qiskit/result/mitigation/utils.py +0 -217
  412. qiskit/scheduler/__init__.py +0 -40
  413. qiskit/scheduler/config.py +0 -37
  414. qiskit/scheduler/lowering.py +0 -187
  415. qiskit/scheduler/methods/__init__.py +0 -15
  416. qiskit/scheduler/methods/basic.py +0 -140
  417. qiskit/scheduler/schedule_circuit.py +0 -69
  418. qiskit/scheduler/sequence.py +0 -104
  419. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  420. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  421. qiskit/transpiler/passes/calibration/builders.py +0 -20
  422. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  423. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  424. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  425. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  426. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  427. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  428. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  429. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  430. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  431. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  432. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  433. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  434. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  435. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  436. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  437. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  438. qiskit/utils/deprecate_pulse.py +0 -119
  439. qiskit/utils/multiprocessing.py +0 -56
  440. qiskit/visualization/pulse_v2/__init__.py +0 -21
  441. qiskit/visualization/pulse_v2/core.py +0 -901
  442. qiskit/visualization/pulse_v2/device_info.py +0 -173
  443. qiskit/visualization/pulse_v2/drawings.py +0 -253
  444. qiskit/visualization/pulse_v2/events.py +0 -254
  445. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  446. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  447. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  448. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  449. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  450. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  451. qiskit/visualization/pulse_v2/interface.py +0 -459
  452. qiskit/visualization/pulse_v2/layouts.py +0 -387
  453. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  454. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  455. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  456. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  457. qiskit/visualization/pulse_v2/types.py +0 -242
  458. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info/licenses}/LICENSE.txt +0 -0
  459. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/top_level.txt +0 -0
@@ -1,459 +0,0 @@
1
- # This code is part of Qiskit.
2
- #
3
- # (C) Copyright IBM 2020.
4
- #
5
- # This code is licensed under the Apache License, Version 2.0. You may
6
- # obtain a copy of this license in the LICENSE.txt file in the root directory
7
- # of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
8
- #
9
- # Any modifications or derivative works of this code must retain this
10
- # copyright notice, and modified files need to carry a notice indicating
11
- # that they have been altered from the originals.
12
-
13
- """Qiskit pulse drawer.
14
-
15
- This module provides a common user interface for the pulse drawer.
16
- The `draw` function takes a pulse program to visualize with a stylesheet and
17
- backend information along with several control arguments.
18
- The drawer canvas object is internally initialized from the input data and
19
- the configured canvas is passed to the one of plotter APIs to generate visualization data.
20
- """
21
-
22
- from typing import Union, Optional, Dict, Any, Tuple, List
23
-
24
- from qiskit.providers import Backend
25
- from qiskit.pulse import Waveform, SymbolicPulse, Schedule, ScheduleBlock
26
- from qiskit.pulse.channels import Channel
27
- from qiskit.visualization.exceptions import VisualizationError
28
- from qiskit.visualization.pulse_v2 import core, device_info, stylesheet, types
29
- from qiskit.exceptions import MissingOptionalLibraryError
30
- from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
31
-
32
-
33
- @deprecate_pulse_dependency(moving_to_dynamics=True)
34
- def draw(
35
- program: Union[Waveform, SymbolicPulse, Schedule, ScheduleBlock],
36
- style: Optional[Dict[str, Any]] = None,
37
- backend: Optional[Backend] = None,
38
- time_range: Optional[Tuple[int, int]] = None,
39
- time_unit: str = types.TimeUnits.CYCLES.value,
40
- disable_channels: Optional[List[Channel]] = None,
41
- show_snapshot: bool = True,
42
- show_framechange: bool = True,
43
- show_waveform_info: bool = True,
44
- plot_barrier: bool = True,
45
- plotter: str = types.Plotter.Mpl2D.value,
46
- axis: Optional[Any] = None,
47
- show_barrier: bool = True,
48
- ):
49
- """Generate visualization data for pulse programs.
50
-
51
- Args:
52
- program: Program to visualize. This program can be arbitrary Qiskit Pulse program,
53
- such as :py:class:`~qiskit.pulse.Waveform`, :py:class:`~qiskit.pulse.SymbolicPulse`,
54
- :py:class:`~qiskit.pulse.Schedule` and :py:class:`~qiskit.pulse.ScheduleBlock`.
55
- style: Stylesheet options. This can be dictionary or preset stylesheet classes. See
56
- :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXStandard`,
57
- :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXSimple`, and
58
- :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXDebugging` for details of
59
- preset stylesheets. See also the stylesheet section for details of configuration keys.
60
- backend: Backend object to play the input pulse program. If provided, the plotter
61
- may use to make the visualization hardware aware.
62
- time_range: Set horizontal axis limit. Tuple ``(tmin, tmax)``.
63
- time_unit: The unit of specified time range either ``dt`` or ``ns``.
64
- The unit of ``ns`` is available only when ``backend`` object is provided.
65
- disable_channels: A control property to show specific pulse channel.
66
- Pulse channel instances provided as a list is not shown in the output image.
67
- show_snapshot: Show snapshot instructions.
68
- show_framechange: Show frame change instructions. The frame change represents
69
- instructions that modulate phase or frequency of pulse channels.
70
- show_waveform_info: Show waveform annotations, i.e. name, of waveforms.
71
- Set ``True`` to show additional information about waveforms.
72
- plot_barrier: Show barrier lines.
73
- plotter: Name of plotter API to generate an output image.
74
- One of following APIs should be specified::
75
-
76
- mpl2d: Matplotlib API for 2D image generation.
77
- Matplotlib API to generate 2D image. Charts are placed along y axis with
78
- vertical offset. This API takes matplotlib.axes.Axes as `axis` input.
79
-
80
- `axis` and `style` kwargs may depend on the plotter.
81
- axis: Arbitrary object passed to the plotter. If this object is provided,
82
- the plotters use a given ``axis`` instead of internally initializing
83
- a figure object. This object format depends on the plotter.
84
- See plotter argument for details.
85
- show_barrier: DEPRECATED. Show barrier lines.
86
-
87
- Returns:
88
- Visualization output data.
89
- The returned data type depends on the `plotter`.
90
- If matplotlib family is specified, this will be a `matplotlib.pyplot.Figure` data.
91
- The returned data is generated by the :meth:`get_image` method of the specified plotter API.
92
-
93
- .. _style-dict-doc:
94
-
95
- **Style Dict Details**
96
-
97
- The stylesheet kwarg contains numerous options that define the style of the
98
- output pulse visualization.
99
- The stylesheet options can be classified into `formatter`, `generator` and `layout`.
100
- Those options available in the stylesheet are defined below:
101
-
102
- Args:
103
- formatter.general.fig_width: Width of output image (default `13`).
104
- formatter.general.fig_chart_height: Height of output image per chart.
105
- The height of each chart is multiplied with this factor and the
106
- sum of all chart heights becomes the height of output image (default `1.5`).
107
- formatter.general.vertical_resolution: Vertical resolution of the pulse envelope.
108
- The change of data points below this limit is ignored (default `1e-6`).
109
- formatter.general.max_scale: Maximum scaling factor of each chart. This factor is
110
- considered when chart auto-scaling is enabled (default `100`).
111
- formatter.color.waveforms: A dictionary of the waveform colors to use for
112
- each element type in the output visualization. The default values are::
113
-
114
- {
115
- 'W': `['#648fff', '#002999']`,
116
- 'D': `['#648fff', '#002999']`,
117
- 'U': `['#ffb000', '#994A00']`,
118
- 'M': `['#dc267f', '#760019']`,
119
- 'A': `['#dc267f', '#760019']`
120
- }
121
-
122
- formatter.color.baseline: Color code of lines of zero line of each chart
123
- (default `'#000000'`).
124
- formatter.color.barrier: Color code of lines of barrier (default `'#222222'`).
125
- formatter.color.background: Color code of the face color of canvas
126
- (default `'#f2f3f4'`).
127
- formatter.color.fig_title: Color code of the figure title text
128
- (default `'#000000'`).
129
- formatter.color.annotate: Color code of annotation texts in the canvas
130
- (default `'#222222'`).
131
- formatter.color.frame_change: Color code of the symbol for frame changes
132
- (default `'#000000'`).
133
- formatter.color.snapshot: Color code of the symbol for snapshot
134
- (default `'#000000'`)
135
- formatter.color.opaque_shape: Color code of the face and edge of opaque shape box
136
- (default `['#fffacd', '#000000']`)
137
- formatter.color.axis_label: Color code of axis labels (default `'#000000'`).
138
- formatter.alpha.fill_waveform: Transparency of waveforms. A value in the range from
139
- `0` to `1`. The value `0` gives completely transparent waveforms (default `0.3`).
140
- formatter.alpha.baseline: Transparency of base lines. A value in the range from
141
- `0` to `1`. The value `0` gives completely transparent base lines (default `1.0`).
142
- formatter.alpha.barrier: Transparency of barrier lines. A value in the range from
143
- `0` to `1`. The value `0` gives completely transparent barrier lines (default `0.7`).
144
- formatter.alpha.opaque_shape: Transparency of opaque shape box. A value in the range from
145
- `0` to `1`. The value `0` gives completely transparent barrier lines (default `0.7`).
146
- formatter.layer.fill_waveform: Layer index of waveforms. Larger number comes
147
- in the front of the output image (default `2`).
148
- formatter.layer.baseline: Layer index of baselines. Larger number comes
149
- in the front of the output image (default `1`).
150
- formatter.layer.barrier: Layer index of barrier lines. Larger number comes
151
- in the front of the output image (default `1`).
152
- formatter.layer.annotate: Layer index of annotations. Larger number comes
153
- in the front of the output image (default `5`).
154
- formatter.layer.axis_label: Layer index of axis labels. Larger number comes
155
- in the front of the output image (default `5`).
156
- formatter.layer.frame_change: Layer index of frame change symbols. Larger number comes
157
- in the front of the output image (default `4`).
158
- formatter.layer.snapshot: Layer index of snapshot symbols. Larger number comes
159
- in the front of the output image (default `3`).
160
- formatter.layer.fig_title: Layer index of the figure title. Larger number comes
161
- in the front of the output image (default `6`).
162
- formatter.margin.top: Margin from the top boundary of the figure canvas to
163
- the surface of the first chart (default `0.5`).
164
- formatter.margin.bottom: Margin from the bottom boundary of the figure canvas to
165
- the surface of the last chart (default `0.5`).
166
- formatter.margin.left_percent: Margin from the left boundary of the figure canvas to
167
- the zero point of the horizontal axis. The value is in units of percentage of
168
- the whole program duration. If the duration is 100 and the value of 0.5 is set,
169
- this keeps left margin of 5 (default `0.05`).
170
- formatter.margin.right_percent: Margin from the right boundary of the figure canvas to
171
- the left limit of the horizontal axis. The value is in units of percentage of
172
- the whole program duration. If the duration is 100 and the value of 0.5 is set,
173
- this keeps right margin of 5 (default `0.05`).
174
- formatter.margin.between_channel: Vertical margin between charts (default `0.2`).
175
- formatter.label_offset.pulse_name: Offset of pulse name annotations from the
176
- chart baseline (default `0.3`).
177
- formatter.label_offset.chart_info: Offset of chart info annotations from the
178
- chart baseline (default `0.3`).
179
- formatter.label_offset.frame_change: Offset of frame change annotations from the
180
- chart baseline (default `0.3`).
181
- formatter.label_offset.snapshot: Offset of snapshot annotations from the
182
- chart baseline (default `0.3`).
183
- formatter.text_size.axis_label: Text size of axis labels (default `15`).
184
- formatter.text_size.annotate: Text size of annotations (default `12`).
185
- formatter.text_size.frame_change: Text size of frame change symbols (default `20`).
186
- formatter.text_size.snapshot: Text size of snapshot symbols (default `20`).
187
- formatter.text_size.fig_title: Text size of the figure title (default `15`).
188
- formatter.text_size.axis_break_symbol: Text size of axis break symbols (default `15`).
189
- formatter.line_width.fill_waveform: Line width of the fringe of filled waveforms
190
- (default `0`).
191
- formatter.line_width.axis_break: Line width of axis breaks.
192
- The axis break line paints over other drawings with the background
193
- face color (default `6`).
194
- formatter.line_width.baseline: Line width of base lines (default `1`)
195
- formatter.line_width.barrier: Line width of barrier lines (default `1`).
196
- formatter.line_width.opaque_shape: Line width of opaque shape box (default `1`).
197
- formatter.line_style.fill_waveform: Line style of the fringe of filled waveforms. This
198
- conforms to the line style spec of matplotlib (default `'-'`).
199
- formatter.line_style.baseline: Line style of base lines. This
200
- conforms to the line style spec of matplotlib (default `'-'`).
201
- formatter.line_style.barrier: Line style of barrier lines. This
202
- conforms to the line style spec of matplotlib (default `':'`).
203
- formatter.line_style.opaque_shape: Line style of opaque shape box. This
204
- conforms to the line style spec of matplotlib (default `'--'`).
205
- formatter.channel_scaling.drive: Default scaling value of drive channel
206
- waveforms (default `1.0`).
207
- formatter.channel_scaling.control: Default scaling value of control channel
208
- waveforms (default `1.0`).
209
- formatter.channel_scaling.measure: Default scaling value of measure channel
210
- waveforms (default `1.0`).
211
- formatter.channel_scaling.acquire: Default scaling value of acquire channel
212
- waveforms (default `1.0`).
213
- formatter.channel_scaling.pos_spacing: Minimum height of chart above the baseline.
214
- Chart top is determined based on the maximum height of waveforms associated
215
- with the chart. If the maximum height is below this value, this value is set
216
- as the chart top (default 0.1).
217
- formatter.channel_scaling.neg_spacing: Minimum height of chart below the baseline.
218
- Chart bottom is determined based on the minimum height of waveforms associated
219
- with the chart. If the minimum height is above this value, this value is set
220
- as the chart bottom (default -0.1).
221
- formatter.box_width.opaque_shape: Default box length of the waveform representation
222
- when the instruction is parameterized and duration is not bound or not defined.
223
- Value is units in dt (default: 150).
224
- formatter.box_height.opaque_shape: Default box height of the waveform representation
225
- when the instruction is parameterized (default: 0.4).
226
- formatter.axis_break.length: Waveform or idle time duration that axis break is
227
- applied. Intervals longer than this value are truncated.
228
- The value is in units of data points (default `3000`).
229
- formatter.axis_break.max_length: Length of new waveform or idle time duration
230
- after axis break is applied. Longer intervals are truncated to this length
231
- (default `1000`).
232
- formatter.control.fill_waveform: Set `True` to fill waveforms with face color
233
- (default `True`). When you disable this option, you should set finite line width
234
- to `formatter.line_width.fill_waveform`, otherwise nothing will appear in the graph.
235
- formatter.control.apply_phase_modulation: Set `True` to apply phase modulation
236
- to the waveforms (default `True`).
237
- formatter.control.show_snapshot_channel: Set `True` to show snapshot instructions
238
- (default `True`).
239
- formatter.control.show_acquire_channel: Set `True` to show acquire channels
240
- (default `True`).
241
- formatter.control.show_empty_channel: Set `True` to show charts without any waveforms
242
- (default `True`).
243
- formatter.control.auto_chart_scaling: Set `True` to apply auto-scaling to charts
244
- (default `True`).
245
- formatter.control.axis_break: Set `True` to apply axis break for long intervals
246
- (default `True`).
247
- formatter.unicode_symbol.frame_change: Text that represents the symbol of
248
- frame change. This text is used when the plotter doesn't support latex
249
- (default u'\u21BA').
250
- formatter.unicode_symbol.snapshot: Text that represents the symbol of
251
- snapshot. This text is used when the plotter doesn't support latex
252
- (default u'\u21AF').
253
- formatter.unicode_symbol.phase_parameter: Text that represents the symbol of
254
- parameterized phase value. This text is used when the plotter doesn't support latex
255
- (default u'\u03b8').
256
- formatter.unicode_symbol.freq_parameter: Text that represents the symbol of
257
- parameterized frequency value. This text is used when the plotter doesn't support latex
258
- (default 'f').
259
- formatter.latex_symbol.frame_change: Latex text that represents the symbol of
260
- frame change (default r'\\circlearrowleft').
261
- formatter.latex_symbol.snapshot: Latex text that represents the symbol of
262
- snapshot (default '').
263
- formatter.latex_symbol.phase_parameter: Latex text that represents the symbol of
264
- parameterized phase value (default r'\theta').
265
- formatter.latex_symbol.freq_parameter: Latex text that represents the symbol of
266
- parameterized frequency value (default 'f').
267
- generator.waveform: List of callback functions that generates drawing
268
- for waveforms. Arbitrary callback functions satisfying the generator format
269
- can be set here. There are some default generators in the pulse drawer.
270
- See :py:mod:`~qiskit.visualization.pulse_v2.generators.waveform` for more details.
271
- No default generator is set.
272
- generator.frame: List of callback functions that generates drawing
273
- for frame changes. Arbitrary callback functions satisfying the generator format
274
- can be set here. There are some default generators in the pulse drawer.
275
- See :py:mod:`~qiskit.visualization.pulse_v2.generators.frame` for more details.
276
- No default generator is set.
277
- generator.chart: List of callback functions that generates drawing
278
- for charts. Arbitrary callback functions satisfying the generator format
279
- can be set here. There are some default generators in the pulse drawer.
280
- See :py:mod:`~qiskit.visualization.pulse_v2.generators.chart` for more details.
281
- No default generator is set.
282
- generator.snapshot: List of callback functions that generates drawing
283
- for snapshots. Arbitrary callback functions satisfying the generator format
284
- can be set here. There are some default generators in the pulse drawer.
285
- See :py:mod:`~qiskit.visualization.pulse_v2.generators.snapshot` for more details.
286
- No default generator is set.
287
- generator.barrier: List of callback functions that generates drawing
288
- for barriers. Arbitrary callback functions satisfying the generator format
289
- can be set here. There are some default generators in the pulse drawer.
290
- See :py:mod:`~qiskit.visualization.pulse_v2.generators.barrier` for more details.
291
- No default generator is set.
292
- layout.chart_channel_map: Callback function that determines the relationship
293
- between pulse channels and charts.
294
- See :py:mod:`~qiskit.visualization.pulse_v2.layout` for more details.
295
- No default layout is set.
296
- layout.time_axis_map: Callback function that determines the layout of
297
- horizontal axis labels.
298
- See :py:mod:`~qiskit.visualization.pulse_v2.layout` for more details.
299
- No default layout is set.
300
- layout.figure_title: Callback function that generates a string for
301
- the figure title.
302
- See :py:mod:`~qiskit.visualization.pulse_v2.layout` for more details.
303
- No default layout is set.
304
-
305
- Examples:
306
- To visualize a pulse program, you can call this function with set of
307
- control arguments. Most of the appearance of the output image can be controlled by the
308
- stylesheet.
309
-
310
- Drawing with the default stylesheet.
311
-
312
- .. plot::
313
- :alt: Output from the previous code.
314
- :include-source:
315
-
316
- from qiskit import QuantumCircuit, transpile, schedule
317
- from qiskit.visualization.pulse_v2 import draw
318
- from qiskit.providers.fake_provider import GenericBackendV2
319
-
320
- qc = QuantumCircuit(2)
321
- qc.h(0)
322
- qc.cx(0, 1)
323
- qc.measure_all()
324
- qc = transpile(qc, GenericBackendV2(5), layout_method='trivial')
325
- sched = schedule(qc, GenericBackendV2(5))
326
-
327
- draw(sched, backend=GenericBackendV2(5))
328
-
329
- Drawing with the stylesheet suited for publication.
330
-
331
- .. plot::
332
- :alt: Output from the previous code.
333
- :include-source:
334
-
335
- from qiskit import QuantumCircuit, transpile, schedule
336
- from qiskit.visualization.pulse_v2 import draw, IQXSimple
337
- from qiskit.providers.fake_provider import GenericBackendV2
338
-
339
- qc = QuantumCircuit(2)
340
- qc.h(0)
341
- qc.cx(0, 1)
342
- qc.measure_all()
343
- qc = transpile(qc, GenericBackendV2(5), layout_method='trivial')
344
- sched = schedule(qc, GenericBackendV2(5))
345
-
346
- draw(sched, style=IQXSimple(), backend=GenericBackendV2(5))
347
-
348
- Drawing with the stylesheet suited for program debugging.
349
-
350
- .. plot::
351
- :alt: Output from the previous code.
352
- :include-source:
353
-
354
- from qiskit import QuantumCircuit, transpile, schedule
355
- from qiskit.visualization.pulse_v2 import draw, IQXDebugging
356
- from qiskit.providers.fake_provider import GenericBackendV2
357
-
358
- qc = QuantumCircuit(2)
359
- qc.h(0)
360
- qc.cx(0, 1)
361
- qc.measure_all()
362
- qc = transpile(qc, GenericBackendV2(5), layout_method='trivial')
363
- sched = schedule(qc, GenericBackendV2(5))
364
-
365
- draw(sched, style=IQXDebugging(), backend=GenericBackendV2(5))
366
-
367
- You can partially customize a preset stylesheet when initializing it.
368
-
369
- .. code-block:: python
370
-
371
- my_style = {
372
- 'formatter.channel_scaling.drive': 5,
373
- 'formatter.channel_scaling.control': 1,
374
- 'formatter.channel_scaling.measure': 5
375
- }
376
- style = IQXStandard(**my_style)
377
- # draw
378
- draw(sched, style=style, backend=GenericBackendV2(5))
379
-
380
- In the same way as above, you can create custom generator or layout functions
381
- and update the existing stylesheet with custom functions.
382
- This feature enables you to customize most of the appearance of the output image
383
- without modifying the codebase.
384
-
385
- Raises:
386
- MissingOptionalLibraryError: When required visualization package is not installed.
387
- VisualizationError: When invalid plotter API or invalid time range is specified.
388
- """
389
- del show_barrier
390
- temp_style = stylesheet.QiskitPulseStyle()
391
- temp_style.update(style or stylesheet.IQXStandard())
392
-
393
- if backend:
394
- device = device_info.OpenPulseBackendInfo.create_from_backend(backend)
395
- else:
396
- device = device_info.OpenPulseBackendInfo()
397
-
398
- # create empty canvas and load program
399
- canvas = core.DrawerCanvas(stylesheet=temp_style, device=device)
400
- canvas.load_program(program=program)
401
-
402
- #
403
- # update configuration
404
- #
405
-
406
- # time range
407
- if time_range:
408
- if time_unit == types.TimeUnits.CYCLES.value:
409
- canvas.set_time_range(*time_range, seconds=False)
410
- elif time_unit == types.TimeUnits.NS.value:
411
- canvas.set_time_range(*time_range, seconds=True)
412
- else:
413
- raise VisualizationError(f"Invalid time unit {time_unit} is specified.")
414
-
415
- # channels not shown
416
- if disable_channels:
417
- for chan in disable_channels:
418
- canvas.set_disable_channel(chan, remove=True)
419
-
420
- # show snapshots
421
- if not show_snapshot:
422
- canvas.set_disable_type(types.SymbolType.SNAPSHOT, remove=True)
423
- canvas.set_disable_type(types.LabelType.SNAPSHOT, remove=True)
424
-
425
- # show frame changes
426
- if not show_framechange:
427
- canvas.set_disable_type(types.SymbolType.FRAME, remove=True)
428
- canvas.set_disable_type(types.LabelType.FRAME, remove=True)
429
-
430
- # show waveform info
431
- if not show_waveform_info:
432
- canvas.set_disable_type(types.LabelType.PULSE_INFO, remove=True)
433
- canvas.set_disable_type(types.LabelType.PULSE_NAME, remove=True)
434
-
435
- # show barrier
436
- if not plot_barrier:
437
- canvas.set_disable_type(types.LineType.BARRIER, remove=True)
438
-
439
- canvas.update()
440
-
441
- #
442
- # Call plotter API and generate image
443
- #
444
-
445
- if plotter == types.Plotter.Mpl2D.value:
446
- try:
447
- from qiskit.visualization.pulse_v2.plotters import Mpl2DPlotter
448
- except ImportError as ex:
449
- raise MissingOptionalLibraryError(
450
- libname="Matplotlib",
451
- name="plot_histogram",
452
- pip_install="pip install matplotlib",
453
- ) from ex
454
- plotter_api = Mpl2DPlotter(canvas=canvas, axis=axis)
455
- plotter_api.draw()
456
- else:
457
- raise VisualizationError(f"Plotter API {plotter} is not supported.")
458
-
459
- return plotter_api.get_image()