qiskit 1.4.0__cp39-abi3-macosx_11_0_arm64.whl → 2.0.0rc1__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 (456) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +2 -5
  3. qiskit/_accelerate.abi3.so +0 -0
  4. qiskit/circuit/__init__.py +24 -5
  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 +248 -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 +7 -140
  32. qiskit/circuit/instructionset.py +7 -54
  33. qiskit/circuit/library/__init__.py +34 -5
  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/hamiltonian_gate.py +1 -1
  60. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  61. qiskit/circuit/library/n_local/n_local.py +1 -1
  62. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
  63. qiskit/circuit/library/overlap.py +2 -2
  64. qiskit/circuit/library/pauli_evolution.py +39 -24
  65. qiskit/circuit/library/phase_oracle.py +130 -51
  66. qiskit/circuit/library/standard_gates/__init__.py +0 -1
  67. qiskit/circuit/library/standard_gates/dcx.py +3 -4
  68. qiskit/circuit/library/standard_gates/ecr.py +3 -4
  69. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  70. qiskit/circuit/library/standard_gates/h.py +4 -9
  71. qiskit/circuit/library/standard_gates/i.py +2 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +3 -4
  73. qiskit/circuit/library/standard_gates/p.py +15 -34
  74. qiskit/circuit/library/standard_gates/r.py +2 -6
  75. qiskit/circuit/library/standard_gates/rx.py +5 -15
  76. qiskit/circuit/library/standard_gates/rxx.py +3 -6
  77. qiskit/circuit/library/standard_gates/ry.py +5 -17
  78. qiskit/circuit/library/standard_gates/ryy.py +3 -6
  79. qiskit/circuit/library/standard_gates/rz.py +5 -17
  80. qiskit/circuit/library/standard_gates/rzx.py +3 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +3 -6
  82. qiskit/circuit/library/standard_gates/s.py +6 -15
  83. qiskit/circuit/library/standard_gates/swap.py +4 -11
  84. qiskit/circuit/library/standard_gates/sx.py +7 -12
  85. qiskit/circuit/library/standard_gates/t.py +6 -7
  86. qiskit/circuit/library/standard_gates/u.py +2 -10
  87. qiskit/circuit/library/standard_gates/u1.py +5 -16
  88. qiskit/circuit/library/standard_gates/u2.py +2 -6
  89. qiskit/circuit/library/standard_gates/u3.py +3 -11
  90. qiskit/circuit/library/standard_gates/x.py +13 -60
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
  93. qiskit/circuit/library/standard_gates/y.py +4 -9
  94. qiskit/circuit/library/standard_gates/z.py +5 -15
  95. qiskit/circuit/measure.py +11 -2
  96. qiskit/circuit/parameterexpression.py +4 -0
  97. qiskit/circuit/quantumcircuit.py +881 -555
  98. qiskit/circuit/random/utils.py +12 -6
  99. qiskit/circuit/reset.py +5 -2
  100. qiskit/circuit/singleton.py +5 -11
  101. qiskit/circuit/store.py +0 -8
  102. qiskit/compiler/__init__.py +1 -7
  103. qiskit/compiler/transpiler.py +38 -196
  104. qiskit/converters/circuit_to_dag.py +4 -2
  105. qiskit/converters/circuit_to_dagdependency.py +0 -2
  106. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  107. qiskit/converters/circuit_to_gate.py +1 -1
  108. qiskit/converters/circuit_to_instruction.py +16 -29
  109. qiskit/converters/dag_to_circuit.py +5 -5
  110. qiskit/converters/dag_to_dagdependency.py +0 -1
  111. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  112. qiskit/converters/dagdependency_to_circuit.py +0 -6
  113. qiskit/converters/dagdependency_to_dag.py +0 -6
  114. qiskit/dagcircuit/collect_blocks.py +32 -20
  115. qiskit/dagcircuit/dagdependency.py +3 -37
  116. qiskit/dagcircuit/dagdependency_v2.py +2 -80
  117. qiskit/dagcircuit/dagnode.py +14 -2
  118. qiskit/passmanager/__init__.py +24 -6
  119. qiskit/passmanager/passmanager.py +26 -24
  120. qiskit/primitives/__init__.py +44 -35
  121. qiskit/primitives/backend_estimator_v2.py +102 -23
  122. qiskit/primitives/backend_sampler_v2.py +5 -20
  123. qiskit/primitives/base/__init__.py +4 -4
  124. qiskit/primitives/base/base_estimator.py +77 -82
  125. qiskit/primitives/base/base_primitive_job.py +2 -2
  126. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  127. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  128. qiskit/primitives/base/base_sampler.py +52 -60
  129. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  130. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  131. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  132. qiskit/primitives/containers/bindings_array.py +3 -1
  133. qiskit/primitives/containers/bit_array.py +23 -0
  134. qiskit/primitives/containers/data_bin.py +3 -1
  135. qiskit/primitives/containers/observables_array.py +19 -2
  136. qiskit/primitives/statevector_sampler.py +6 -8
  137. qiskit/primitives/utils.py +14 -189
  138. qiskit/providers/__init__.py +4 -130
  139. qiskit/providers/backend.py +11 -314
  140. qiskit/providers/basic_provider/__init__.py +3 -1
  141. qiskit/providers/basic_provider/basic_provider.py +29 -9
  142. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  143. qiskit/providers/exceptions.py +0 -33
  144. qiskit/providers/fake_provider/__init__.py +0 -37
  145. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  146. qiskit/qasm2/__init__.py +21 -6
  147. qiskit/qasm2/export.py +2 -10
  148. qiskit/qasm2/parse.py +11 -25
  149. qiskit/qasm3/__init__.py +5 -1
  150. qiskit/qasm3/ast.py +44 -0
  151. qiskit/qasm3/exporter.py +65 -27
  152. qiskit/qasm3/printer.py +35 -4
  153. qiskit/qpy/__init__.py +141 -19
  154. qiskit/qpy/binary_io/__init__.py +0 -1
  155. qiskit/qpy/binary_io/circuits.py +91 -116
  156. qiskit/qpy/binary_io/schedules.py +61 -388
  157. qiskit/qpy/binary_io/value.py +168 -28
  158. qiskit/qpy/common.py +10 -7
  159. qiskit/qpy/formats.py +41 -0
  160. qiskit/qpy/interface.py +29 -62
  161. qiskit/qpy/type_keys.py +58 -221
  162. qiskit/quantum_info/analysis/distance.py +3 -1
  163. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  164. qiskit/quantum_info/operators/operator.py +6 -2
  165. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  166. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  167. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  168. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  169. qiskit/quantum_info/states/densitymatrix.py +16 -6
  170. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  171. qiskit/quantum_info/states/statevector.py +16 -6
  172. qiskit/result/__init__.py +5 -17
  173. qiskit/result/models.py +18 -10
  174. qiskit/result/result.py +28 -126
  175. qiskit/result/sampled_expval.py +1 -2
  176. qiskit/result/utils.py +3 -4
  177. qiskit/synthesis/__init__.py +21 -1
  178. qiskit/synthesis/arithmetic/__init__.py +3 -1
  179. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  180. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  181. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  182. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  183. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  184. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  185. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  186. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  187. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  188. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  189. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  190. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  191. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  192. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +2 -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 +2 -40
  209. qiskit/transpiler/passes/basis/basis_translator.py +4 -3
  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 +5 -0
  214. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  215. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +4 -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 +1 -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 +30 -2
  245. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -58
  246. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +11 -3
  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 +127 -59
  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 +101 -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 +67 -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/dag_visualization.py +2 -1
  287. qiskit/visualization/gate_map.py +39 -154
  288. qiskit/visualization/pass_manager_visualization.py +6 -2
  289. qiskit/visualization/state_visualization.py +6 -0
  290. qiskit/visualization/timeline/core.py +27 -12
  291. qiskit/visualization/timeline/interface.py +23 -18
  292. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/METADATA +2 -2
  293. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/RECORD +297 -444
  294. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/WHEEL +2 -1
  295. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/entry_points.txt +8 -2
  296. qiskit/assembler/__init__.py +0 -42
  297. qiskit/assembler/assemble_circuits.py +0 -451
  298. qiskit/assembler/assemble_schedules.py +0 -367
  299. qiskit/assembler/disassemble.py +0 -310
  300. qiskit/assembler/run_config.py +0 -77
  301. qiskit/circuit/bit.py +0 -106
  302. qiskit/circuit/classicalfunction/__init__.py +0 -152
  303. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  304. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  305. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  306. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  307. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  308. qiskit/circuit/classicalfunction/types.py +0 -18
  309. qiskit/circuit/classicalfunction/utils.py +0 -91
  310. qiskit/circuit/classicalregister.py +0 -57
  311. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  312. qiskit/circuit/quantumregister.py +0 -75
  313. qiskit/circuit/register.py +0 -246
  314. qiskit/compiler/assembler.py +0 -689
  315. qiskit/compiler/scheduler.py +0 -109
  316. qiskit/compiler/sequencer.py +0 -71
  317. qiskit/primitives/backend_estimator.py +0 -486
  318. qiskit/primitives/backend_sampler.py +0 -222
  319. qiskit/primitives/estimator.py +0 -172
  320. qiskit/primitives/sampler.py +0 -162
  321. qiskit/providers/backend_compat.py +0 -507
  322. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  323. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  324. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  325. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  326. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  327. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  328. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  330. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  332. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  333. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  335. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  337. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  338. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  339. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  340. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  341. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  342. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  343. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  344. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  345. qiskit/providers/fake_provider/fake_1q.py +0 -91
  346. qiskit/providers/fake_provider/fake_backend.py +0 -165
  347. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  348. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  349. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  350. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  351. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  352. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  353. qiskit/providers/models/__init__.py +0 -89
  354. qiskit/providers/models/backendconfiguration.py +0 -1040
  355. qiskit/providers/models/backendproperties.py +0 -535
  356. qiskit/providers/models/backendstatus.py +0 -104
  357. qiskit/providers/models/jobstatus.py +0 -77
  358. qiskit/providers/models/pulsedefaults.py +0 -305
  359. qiskit/providers/provider.py +0 -95
  360. qiskit/pulse/__init__.py +0 -158
  361. qiskit/pulse/builder.py +0 -2262
  362. qiskit/pulse/calibration_entries.py +0 -381
  363. qiskit/pulse/channels.py +0 -227
  364. qiskit/pulse/configuration.py +0 -245
  365. qiskit/pulse/exceptions.py +0 -45
  366. qiskit/pulse/filters.py +0 -309
  367. qiskit/pulse/instruction_schedule_map.py +0 -424
  368. qiskit/pulse/instructions/__init__.py +0 -67
  369. qiskit/pulse/instructions/acquire.py +0 -150
  370. qiskit/pulse/instructions/delay.py +0 -71
  371. qiskit/pulse/instructions/directives.py +0 -154
  372. qiskit/pulse/instructions/frequency.py +0 -135
  373. qiskit/pulse/instructions/instruction.py +0 -270
  374. qiskit/pulse/instructions/phase.py +0 -152
  375. qiskit/pulse/instructions/play.py +0 -99
  376. qiskit/pulse/instructions/reference.py +0 -100
  377. qiskit/pulse/instructions/snapshot.py +0 -82
  378. qiskit/pulse/library/__init__.py +0 -97
  379. qiskit/pulse/library/continuous.py +0 -430
  380. qiskit/pulse/library/pulse.py +0 -148
  381. qiskit/pulse/library/samplers/__init__.py +0 -15
  382. qiskit/pulse/library/samplers/decorators.py +0 -295
  383. qiskit/pulse/library/samplers/strategies.py +0 -71
  384. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  385. qiskit/pulse/library/waveform.py +0 -136
  386. qiskit/pulse/macros.py +0 -262
  387. qiskit/pulse/parameter_manager.py +0 -445
  388. qiskit/pulse/parser.py +0 -314
  389. qiskit/pulse/reference_manager.py +0 -58
  390. qiskit/pulse/schedule.py +0 -1854
  391. qiskit/pulse/transforms/__init__.py +0 -106
  392. qiskit/pulse/transforms/alignments.py +0 -406
  393. qiskit/pulse/transforms/base_transforms.py +0 -71
  394. qiskit/pulse/transforms/canonicalization.py +0 -498
  395. qiskit/pulse/transforms/dag.py +0 -122
  396. qiskit/pulse/utils.py +0 -149
  397. qiskit/qobj/__init__.py +0 -75
  398. qiskit/qobj/common.py +0 -81
  399. qiskit/qobj/converters/__init__.py +0 -18
  400. qiskit/qobj/converters/lo_config.py +0 -177
  401. qiskit/qobj/converters/pulse_instruction.py +0 -897
  402. qiskit/qobj/pulse_qobj.py +0 -709
  403. qiskit/qobj/qasm_qobj.py +0 -708
  404. qiskit/qobj/utils.py +0 -46
  405. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  406. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  407. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  408. qiskit/result/mitigation/utils.py +0 -217
  409. qiskit/scheduler/__init__.py +0 -40
  410. qiskit/scheduler/config.py +0 -37
  411. qiskit/scheduler/lowering.py +0 -187
  412. qiskit/scheduler/methods/__init__.py +0 -15
  413. qiskit/scheduler/methods/basic.py +0 -140
  414. qiskit/scheduler/schedule_circuit.py +0 -69
  415. qiskit/scheduler/sequence.py +0 -104
  416. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  417. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  418. qiskit/transpiler/passes/calibration/builders.py +0 -20
  419. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  420. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  421. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  422. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  423. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  424. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  425. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  426. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  427. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  428. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  429. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  430. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  431. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  432. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  433. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  434. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  435. qiskit/utils/deprecate_pulse.py +0 -119
  436. qiskit/utils/multiprocessing.py +0 -56
  437. qiskit/visualization/pulse_v2/__init__.py +0 -21
  438. qiskit/visualization/pulse_v2/core.py +0 -901
  439. qiskit/visualization/pulse_v2/device_info.py +0 -173
  440. qiskit/visualization/pulse_v2/drawings.py +0 -253
  441. qiskit/visualization/pulse_v2/events.py +0 -254
  442. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  443. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  444. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  445. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  446. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  447. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  448. qiskit/visualization/pulse_v2/interface.py +0 -459
  449. qiskit/visualization/pulse_v2/layouts.py +0 -387
  450. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  451. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  452. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  453. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  454. qiskit/visualization/pulse_v2/types.py +0 -242
  455. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/LICENSE.txt +0 -0
  456. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.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()