qiskit 1.3.0__cp39-abi3-win32.whl → 1.3.0b1__cp39-abi3-win32.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +1 -20
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/assembler/assemble_schedules.py +0 -2
  5. qiskit/circuit/__init__.py +1 -44
  6. qiskit/circuit/_standard_gates_commutations.py +0 -585
  7. qiskit/circuit/barrier.py +0 -2
  8. qiskit/circuit/controlflow/builder.py +3 -3
  9. qiskit/circuit/controlflow/if_else.py +5 -13
  10. qiskit/circuit/controlflow/while_loop.py +2 -10
  11. qiskit/circuit/delay.py +3 -20
  12. qiskit/circuit/equivalence.py +214 -13
  13. qiskit/circuit/gate.py +1 -3
  14. qiskit/circuit/instruction.py +11 -32
  15. qiskit/circuit/instructionset.py +0 -2
  16. qiskit/circuit/library/__init__.py +14 -110
  17. qiskit/circuit/library/arithmetic/__init__.py +2 -9
  18. qiskit/circuit/library/arithmetic/adders/__init__.py +0 -1
  19. qiskit/circuit/library/arithmetic/adders/adder.py +2 -154
  20. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +56 -20
  21. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +1 -14
  22. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +91 -21
  23. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
  24. qiskit/circuit/library/arithmetic/multipliers/__init__.py +0 -1
  25. qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -8
  26. qiskit/circuit/library/arithmetic/multipliers/multiplier.py +3 -94
  27. qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +1 -8
  28. qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
  29. qiskit/circuit/library/basis_change/qft.py +38 -20
  30. qiskit/circuit/library/blueprintcircuit.py +0 -64
  31. qiskit/circuit/library/boolean_logic/__init__.py +4 -4
  32. qiskit/circuit/library/boolean_logic/inner_product.py +4 -81
  33. qiskit/circuit/library/boolean_logic/quantum_and.py +4 -107
  34. qiskit/circuit/library/boolean_logic/quantum_or.py +3 -107
  35. qiskit/circuit/library/boolean_logic/quantum_xor.py +3 -97
  36. qiskit/circuit/library/data_preparation/__init__.py +3 -6
  37. qiskit/circuit/library/data_preparation/pauli_feature_map.py +29 -342
  38. qiskit/circuit/library/data_preparation/{_z_feature_map.py → z_feature_map.py} +34 -45
  39. qiskit/circuit/library/data_preparation/zz_feature_map.py +118 -0
  40. qiskit/circuit/library/fourier_checking.py +11 -72
  41. qiskit/circuit/library/generalized_gates/__init__.py +1 -1
  42. qiskit/circuit/library/generalized_gates/diagonal.py +51 -45
  43. qiskit/circuit/library/generalized_gates/gms.py +14 -67
  44. qiskit/circuit/library/generalized_gates/gr.py +4 -4
  45. qiskit/circuit/library/generalized_gates/isometry.py +2 -2
  46. qiskit/circuit/library/generalized_gates/linear_function.py +6 -12
  47. qiskit/circuit/library/generalized_gates/mcmt.py +107 -167
  48. qiskit/circuit/library/generalized_gates/permutation.py +6 -8
  49. qiskit/circuit/library/generalized_gates/rv.py +9 -8
  50. qiskit/circuit/library/graph_state.py +10 -93
  51. qiskit/circuit/library/grover_operator.py +2 -270
  52. qiskit/circuit/library/hidden_linear_function.py +20 -83
  53. qiskit/circuit/library/iqp.py +20 -99
  54. qiskit/circuit/library/n_local/__init__.py +7 -19
  55. qiskit/circuit/library/n_local/efficient_su2.py +5 -118
  56. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +0 -259
  57. qiskit/circuit/library/n_local/excitation_preserving.py +6 -130
  58. qiskit/circuit/library/n_local/n_local.py +5 -406
  59. qiskit/circuit/library/n_local/pauli_two_design.py +4 -106
  60. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -80
  61. qiskit/circuit/library/n_local/real_amplitudes.py +7 -127
  62. qiskit/circuit/library/n_local/two_local.py +7 -14
  63. qiskit/circuit/library/overlap.py +26 -91
  64. qiskit/circuit/library/pauli_evolution.py +15 -17
  65. qiskit/circuit/library/phase_estimation.py +4 -80
  66. qiskit/circuit/library/quantum_volume.py +20 -72
  67. qiskit/circuit/library/standard_gates/__init__.py +1 -20
  68. qiskit/circuit/library/standard_gates/dcx.py +1 -2
  69. qiskit/circuit/library/standard_gates/ecr.py +2 -2
  70. qiskit/circuit/library/standard_gates/h.py +3 -4
  71. qiskit/circuit/library/standard_gates/i.py +1 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +2 -2
  73. qiskit/circuit/library/standard_gates/p.py +12 -20
  74. qiskit/circuit/library/standard_gates/r.py +1 -1
  75. qiskit/circuit/library/standard_gates/rx.py +3 -4
  76. qiskit/circuit/library/standard_gates/rxx.py +2 -2
  77. qiskit/circuit/library/standard_gates/ry.py +3 -4
  78. qiskit/circuit/library/standard_gates/ryy.py +2 -2
  79. qiskit/circuit/library/standard_gates/rz.py +12 -13
  80. qiskit/circuit/library/standard_gates/rzx.py +6 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +1 -1
  82. qiskit/circuit/library/standard_gates/s.py +4 -4
  83. qiskit/circuit/library/standard_gates/swap.py +3 -3
  84. qiskit/circuit/library/standard_gates/sx.py +3 -4
  85. qiskit/circuit/library/standard_gates/t.py +2 -2
  86. qiskit/circuit/library/standard_gates/u.py +3 -11
  87. qiskit/circuit/library/standard_gates/u1.py +15 -65
  88. qiskit/circuit/library/standard_gates/u2.py +1 -4
  89. qiskit/circuit/library/standard_gates/u3.py +3 -31
  90. qiskit/circuit/library/standard_gates/x.py +5 -7
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -2
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -2
  93. qiskit/circuit/library/standard_gates/y.py +3 -4
  94. qiskit/circuit/library/standard_gates/z.py +3 -3
  95. qiskit/circuit/library/templates/clifford/clifford_2_1.py +8 -9
  96. qiskit/circuit/library/templates/clifford/clifford_2_2.py +9 -10
  97. qiskit/circuit/library/templates/clifford/clifford_2_3.py +7 -9
  98. qiskit/circuit/library/templates/clifford/clifford_2_4.py +8 -9
  99. qiskit/circuit/library/templates/clifford/clifford_3_1.py +8 -9
  100. qiskit/circuit/library/templates/clifford/clifford_4_1.py +9 -10
  101. qiskit/circuit/library/templates/clifford/clifford_4_2.py +9 -10
  102. qiskit/circuit/library/templates/clifford/clifford_4_3.py +9 -10
  103. qiskit/circuit/library/templates/clifford/clifford_4_4.py +9 -10
  104. qiskit/circuit/library/templates/clifford/clifford_5_1.py +9 -10
  105. qiskit/circuit/library/templates/clifford/clifford_6_1.py +9 -10
  106. qiskit/circuit/library/templates/clifford/clifford_6_2.py +9 -10
  107. qiskit/circuit/library/templates/clifford/clifford_6_3.py +9 -10
  108. qiskit/circuit/library/templates/clifford/clifford_6_4.py +8 -9
  109. qiskit/circuit/library/templates/clifford/clifford_6_5.py +9 -10
  110. qiskit/circuit/library/templates/clifford/clifford_8_1.py +9 -10
  111. qiskit/circuit/library/templates/clifford/clifford_8_2.py +9 -10
  112. qiskit/circuit/library/templates/clifford/clifford_8_3.py +9 -10
  113. qiskit/circuit/library/templates/nct/template_nct_2a_1.py +7 -9
  114. qiskit/circuit/library/templates/nct/template_nct_2a_2.py +8 -10
  115. qiskit/circuit/library/templates/nct/template_nct_2a_3.py +10 -12
  116. qiskit/circuit/library/templates/nct/template_nct_4a_1.py +14 -16
  117. qiskit/circuit/library/templates/nct/template_nct_4a_2.py +12 -14
  118. qiskit/circuit/library/templates/nct/template_nct_4a_3.py +10 -12
  119. qiskit/circuit/library/templates/nct/template_nct_4b_1.py +12 -14
  120. qiskit/circuit/library/templates/nct/template_nct_4b_2.py +10 -12
  121. qiskit/circuit/library/templates/nct/template_nct_5a_1.py +10 -12
  122. qiskit/circuit/library/templates/nct/template_nct_5a_2.py +10 -12
  123. qiskit/circuit/library/templates/nct/template_nct_5a_3.py +10 -12
  124. qiskit/circuit/library/templates/nct/template_nct_5a_4.py +9 -11
  125. qiskit/circuit/library/templates/nct/template_nct_6a_1.py +9 -11
  126. qiskit/circuit/library/templates/nct/template_nct_6a_2.py +10 -12
  127. qiskit/circuit/library/templates/nct/template_nct_6a_3.py +10 -12
  128. qiskit/circuit/library/templates/nct/template_nct_6a_4.py +10 -12
  129. qiskit/circuit/library/templates/nct/template_nct_6b_1.py +10 -12
  130. qiskit/circuit/library/templates/nct/template_nct_6b_2.py +10 -12
  131. qiskit/circuit/library/templates/nct/template_nct_6c_1.py +10 -12
  132. qiskit/circuit/library/templates/nct/template_nct_7a_1.py +11 -13
  133. qiskit/circuit/library/templates/nct/template_nct_7b_1.py +11 -13
  134. qiskit/circuit/library/templates/nct/template_nct_7c_1.py +11 -13
  135. qiskit/circuit/library/templates/nct/template_nct_7d_1.py +11 -13
  136. qiskit/circuit/library/templates/nct/template_nct_7e_1.py +11 -13
  137. qiskit/circuit/library/templates/nct/template_nct_9a_1.py +11 -13
  138. qiskit/circuit/library/templates/nct/template_nct_9c_1.py +9 -11
  139. qiskit/circuit/library/templates/nct/template_nct_9c_10.py +10 -12
  140. qiskit/circuit/library/templates/nct/template_nct_9c_11.py +10 -12
  141. qiskit/circuit/library/templates/nct/template_nct_9c_12.py +10 -12
  142. qiskit/circuit/library/templates/nct/template_nct_9c_2.py +10 -12
  143. qiskit/circuit/library/templates/nct/template_nct_9c_3.py +10 -12
  144. qiskit/circuit/library/templates/nct/template_nct_9c_4.py +10 -12
  145. qiskit/circuit/library/templates/nct/template_nct_9c_5.py +10 -12
  146. qiskit/circuit/library/templates/nct/template_nct_9c_6.py +10 -12
  147. qiskit/circuit/library/templates/nct/template_nct_9c_7.py +10 -12
  148. qiskit/circuit/library/templates/nct/template_nct_9c_8.py +10 -12
  149. qiskit/circuit/library/templates/nct/template_nct_9c_9.py +10 -12
  150. qiskit/circuit/library/templates/nct/template_nct_9d_1.py +9 -11
  151. qiskit/circuit/library/templates/nct/template_nct_9d_10.py +10 -12
  152. qiskit/circuit/library/templates/nct/template_nct_9d_2.py +10 -12
  153. qiskit/circuit/library/templates/nct/template_nct_9d_3.py +10 -12
  154. qiskit/circuit/library/templates/nct/template_nct_9d_4.py +10 -12
  155. qiskit/circuit/library/templates/nct/template_nct_9d_5.py +10 -12
  156. qiskit/circuit/library/templates/nct/template_nct_9d_6.py +10 -12
  157. qiskit/circuit/library/templates/nct/template_nct_9d_7.py +10 -12
  158. qiskit/circuit/library/templates/nct/template_nct_9d_8.py +10 -12
  159. qiskit/circuit/library/templates/nct/template_nct_9d_9.py +10 -12
  160. qiskit/circuit/library/templates/rzx/rzx_cy.py +10 -11
  161. qiskit/circuit/library/templates/rzx/rzx_xz.py +15 -16
  162. qiskit/circuit/library/templates/rzx/rzx_yz.py +10 -12
  163. qiskit/circuit/library/templates/rzx/rzx_zz1.py +20 -22
  164. qiskit/circuit/library/templates/rzx/rzx_zz2.py +15 -16
  165. qiskit/circuit/library/templates/rzx/rzx_zz3.py +15 -17
  166. qiskit/circuit/parameter.py +0 -4
  167. qiskit/circuit/parameterexpression.py +34 -167
  168. qiskit/circuit/quantumcircuit.py +126 -162
  169. qiskit/circuit/singleton.py +0 -2
  170. qiskit/circuit/store.py +0 -2
  171. qiskit/compiler/assembler.py +4 -17
  172. qiskit/compiler/scheduler.py +0 -2
  173. qiskit/compiler/sequencer.py +0 -2
  174. qiskit/compiler/transpiler.py +26 -81
  175. qiskit/converters/circuit_to_dag.py +2 -2
  176. qiskit/converters/circuit_to_dagdependency.py +1 -1
  177. qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
  178. qiskit/converters/circuit_to_instruction.py +1 -1
  179. qiskit/converters/dag_to_circuit.py +5 -7
  180. qiskit/converters/dag_to_dagdependency.py +1 -1
  181. qiskit/converters/dag_to_dagdependency_v2.py +1 -1
  182. qiskit/converters/dagdependency_to_circuit.py +1 -5
  183. qiskit/converters/dagdependency_to_dag.py +1 -6
  184. qiskit/dagcircuit/collect_blocks.py +3 -3
  185. qiskit/dagcircuit/dagdependency.py +5 -18
  186. qiskit/dagcircuit/dagdependency_v2.py +1 -1
  187. qiskit/dagcircuit/dagnode.py +2 -2
  188. qiskit/passmanager/__init__.py +2 -2
  189. qiskit/primitives/backend_estimator.py +2 -5
  190. qiskit/primitives/backend_sampler_v2.py +18 -61
  191. qiskit/primitives/base/base_estimator.py +2 -2
  192. qiskit/primitives/containers/data_bin.py +1 -9
  193. qiskit/primitives/statevector_sampler.py +1 -1
  194. qiskit/primitives/utils.py +1 -1
  195. qiskit/providers/__init__.py +3 -3
  196. qiskit/providers/backend.py +1 -12
  197. qiskit/providers/backend_compat.py +3 -23
  198. qiskit/providers/basic_provider/basic_simulator.py +2 -12
  199. qiskit/providers/fake_provider/fake_pulse_backend.py +1 -6
  200. qiskit/providers/fake_provider/generic_backend_v2.py +30 -46
  201. qiskit/providers/models/pulsedefaults.py +0 -2
  202. qiskit/pulse/builder.py +18 -59
  203. qiskit/pulse/calibration_entries.py +1 -4
  204. qiskit/pulse/channels.py +0 -2
  205. qiskit/pulse/exceptions.py +0 -2
  206. qiskit/pulse/instruction_schedule_map.py +6 -21
  207. qiskit/pulse/instructions/acquire.py +0 -2
  208. qiskit/pulse/instructions/delay.py +0 -2
  209. qiskit/pulse/instructions/directives.py +0 -8
  210. qiskit/pulse/instructions/frequency.py +0 -3
  211. qiskit/pulse/instructions/instruction.py +0 -2
  212. qiskit/pulse/instructions/phase.py +0 -3
  213. qiskit/pulse/instructions/play.py +0 -2
  214. qiskit/pulse/instructions/reference.py +0 -2
  215. qiskit/pulse/instructions/snapshot.py +0 -2
  216. qiskit/pulse/library/pulse.py +0 -2
  217. qiskit/pulse/library/symbolic_pulses.py +0 -28
  218. qiskit/pulse/library/waveform.py +0 -2
  219. qiskit/pulse/macros.py +1 -1
  220. qiskit/pulse/schedule.py +13 -12
  221. qiskit/pulse/transforms/alignments.py +3 -5
  222. qiskit/pulse/transforms/dag.py +0 -7
  223. qiskit/qasm2/export.py +3 -5
  224. qiskit/qasm2/parse.py +2 -46
  225. qiskit/qasm3/__init__.py +0 -1
  226. qiskit/qasm3/ast.py +15 -123
  227. qiskit/qasm3/exporter.py +77 -103
  228. qiskit/qobj/converters/pulse_instruction.py +4 -6
  229. qiskit/qpy/__init__.py +0 -181
  230. qiskit/qpy/binary_io/circuits.py +5 -20
  231. qiskit/qpy/binary_io/schedules.py +4 -3
  232. qiskit/qpy/binary_io/value.py +13 -310
  233. qiskit/qpy/common.py +2 -46
  234. qiskit/qpy/formats.py +0 -7
  235. qiskit/qpy/interface.py +4 -40
  236. qiskit/quantum_info/__init__.py +0 -4
  237. qiskit/quantum_info/operators/channel/transformations.py +21 -28
  238. qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
  239. qiskit/quantum_info/operators/operator.py +8 -54
  240. qiskit/quantum_info/operators/symplectic/base_pauli.py +19 -11
  241. qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
  242. qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
  243. qiskit/quantum_info/operators/symplectic/pauli.py +0 -2
  244. qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
  245. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +2 -23
  246. qiskit/quantum_info/states/densitymatrix.py +5 -5
  247. qiskit/quantum_info/states/stabilizerstate.py +1 -1
  248. qiskit/quantum_info/states/statevector.py +6 -6
  249. qiskit/result/mitigation/base_readout_mitigator.py +1 -1
  250. qiskit/result/mitigation/correlated_readout_mitigator.py +1 -9
  251. qiskit/result/mitigation/local_readout_mitigator.py +1 -9
  252. qiskit/result/mitigation/utils.py +0 -57
  253. qiskit/scheduler/config.py +0 -2
  254. qiskit/scheduler/methods/basic.py +0 -3
  255. qiskit/scheduler/schedule_circuit.py +0 -2
  256. qiskit/scheduler/sequence.py +0 -2
  257. qiskit/synthesis/__init__.py +0 -25
  258. qiskit/synthesis/clifford/clifford_decompose_bm.py +2 -1
  259. qiskit/synthesis/clifford/clifford_decompose_greedy.py +2 -3
  260. qiskit/synthesis/clifford/clifford_decompose_layers.py +1 -2
  261. qiskit/synthesis/evolution/__init__.py +0 -1
  262. qiskit/synthesis/evolution/lie_trotter.py +42 -16
  263. qiskit/synthesis/evolution/product_formula.py +238 -165
  264. qiskit/synthesis/evolution/qdrift.py +29 -36
  265. qiskit/synthesis/evolution/suzuki_trotter.py +27 -87
  266. qiskit/synthesis/multi_controlled/__init__.py +0 -1
  267. qiskit/synthesis/qft/qft_decompose_full.py +1 -19
  268. qiskit/synthesis/qft/qft_decompose_lnn.py +1 -2
  269. qiskit/synthesis/stabilizer/stabilizer_decompose.py +1 -2
  270. qiskit/synthesis/two_qubit/two_qubit_decompose.py +63 -4
  271. qiskit/synthesis/two_qubit/weyl.py +97 -0
  272. qiskit/synthesis/unitary/qsd.py +5 -5
  273. qiskit/transpiler/__init__.py +14 -21
  274. qiskit/transpiler/basepasses.py +1 -1
  275. qiskit/transpiler/passes/__init__.py +0 -2
  276. qiskit/transpiler/passes/basis/basis_translator.py +565 -9
  277. qiskit/transpiler/passes/basis/decompose.py +12 -45
  278. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
  279. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
  280. qiskit/transpiler/passes/calibration/pulse_gate.py +2 -4
  281. qiskit/transpiler/passes/calibration/rx_builder.py +7 -11
  282. qiskit/transpiler/passes/calibration/rzx_builder.py +30 -46
  283. qiskit/transpiler/passes/layout/disjoint_utils.py +13 -15
  284. qiskit/transpiler/passes/layout/sabre_layout.py +2 -7
  285. qiskit/transpiler/passes/layout/sabre_pre_layout.py +0 -5
  286. qiskit/transpiler/passes/optimization/__init__.py +0 -1
  287. qiskit/transpiler/passes/optimization/collect_cliffords.py +3 -19
  288. qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
  289. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
  290. qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
  291. qiskit/transpiler/passes/optimization/consolidate_blocks.py +131 -48
  292. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +2 -4
  293. qiskit/transpiler/passes/optimization/elide_permutations.py +32 -9
  294. qiskit/transpiler/passes/optimization/inverse_cancellation.py +0 -2
  295. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +11 -5
  296. qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
  297. qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
  298. qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
  299. qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
  300. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
  301. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
  302. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
  303. qiskit/transpiler/passes/routing/sabre_swap.py +3 -7
  304. qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
  305. qiskit/transpiler/passes/scheduling/alap.py +1 -1
  306. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
  307. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  308. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -2
  309. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
  310. qiskit/transpiler/passes/scheduling/asap.py +1 -1
  311. qiskit/transpiler/passes/scheduling/base_scheduler.py +12 -14
  312. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +4 -9
  313. qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
  314. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +5 -16
  315. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +1 -4
  316. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +2 -6
  317. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +4 -9
  318. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +99 -262
  319. qiskit/transpiler/passes/synthesis/hls_plugins.py +7 -638
  320. qiskit/transpiler/passes/synthesis/qubit_tracker.py +132 -0
  321. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
  322. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -55
  323. qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +56 -2
  324. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -5
  325. qiskit/transpiler/passes/utils/gate_direction.py +275 -12
  326. qiskit/transpiler/passes/utils/gates_basis.py +30 -7
  327. qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +1 -2
  328. qiskit/transpiler/passmanager_config.py +4 -22
  329. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +14 -40
  330. qiskit/transpiler/preset_passmanagers/common.py +3 -5
  331. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +42 -125
  332. qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
  333. qiskit/transpiler/target.py +16 -74
  334. qiskit/visualization/circuit/_utils.py +2 -2
  335. qiskit/visualization/circuit/circuit_visualization.py +2 -3
  336. qiskit/visualization/circuit/matplotlib.py +1 -1
  337. qiskit/visualization/dag_visualization.py +1 -1
  338. qiskit/visualization/pass_manager_visualization.py +14 -3
  339. qiskit/visualization/pulse_v2/interface.py +1 -3
  340. qiskit/visualization/timeline/core.py +2 -25
  341. qiskit/visualization/timeline/interface.py +0 -12
  342. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/METADATA +19 -20
  343. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/RECORD +347 -358
  344. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/WHEEL +1 -1
  345. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/entry_points.txt +0 -19
  346. qiskit/circuit/library/data_preparation/_zz_feature_map.py +0 -150
  347. qiskit/circuit/twirling.py +0 -145
  348. qiskit/synthesis/arithmetic/__init__.py +0 -16
  349. qiskit/synthesis/arithmetic/adders/__init__.py +0 -17
  350. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +0 -154
  351. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +0 -103
  352. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +0 -161
  353. qiskit/synthesis/arithmetic/multipliers/__init__.py +0 -16
  354. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +0 -102
  355. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +0 -99
  356. qiskit/synthesis/evolution/pauli_network.py +0 -80
  357. qiskit/synthesis/multi_controlled/mcmt_vchain.py +0 -52
  358. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +0 -69
  359. qiskit/utils/deprecate_pulse.py +0 -119
  360. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/LICENSE.txt +0 -0
  361. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/top_level.txt +0 -0
@@ -16,7 +16,6 @@ Matrix Operator class.
16
16
 
17
17
  from __future__ import annotations
18
18
 
19
- import cmath
20
19
  import copy as _copy
21
20
  import re
22
21
  from numbers import Number
@@ -541,41 +540,11 @@ class Operator(LinearOp):
541
540
  ret._op_shape = new_shape
542
541
  return ret
543
542
 
544
- def power(
545
- self, n: float, branch_cut_rotation=cmath.pi * 1e-12, assume_unitary=False
546
- ) -> Operator:
543
+ def power(self, n: float) -> Operator:
547
544
  """Return the matrix power of the operator.
548
545
 
549
- Non-integer powers of operators with an eigenvalue whose complex phase is :math:`\\pi` have
550
- a branch cut in the complex plane, which makes the calculation of the principal root around
551
- this cut subject to precision / differences in BLAS implementation. For example, the square
552
- root of Pauli Y can return the :math:`\\pi/2` or :math:`-\\pi/2` Y rotation depending on
553
- whether the -1 eigenvalue is found as ``complex(-1, tiny)`` or ``complex(-1, -tiny)``. Such
554
- eigenvalues are really common in quantum information, so this function first phase-rotates
555
- the input matrix to shift the branch cut to a far less common point. The underlying
556
- numerical precision issues around the branch-cut point remain, if an operator has an
557
- eigenvalue close to this phase. The magnitude of this rotation can be controlled with the
558
- ``branch_cut_rotation`` parameter.
559
-
560
- The choice of ``branch_cut_rotation`` affects the principal root that is found. For
561
- example, the square root of :class:`.ZGate` will be calculated as either :class:`.SGate` or
562
- :class:`.SdgGate` depending on which way the rotation is done::
563
-
564
- from qiskit.circuit import library
565
- from qiskit.quantum_info import Operator
566
-
567
- z_op = Operator(library.ZGate())
568
- assert z_op.power(0.5, branch_cut_rotation=1e-3) == Operator(library.SGate())
569
- assert z_op.power(0.5, branch_cut_rotation=-1e-3) == Operator(library.SdgGate())
570
-
571
546
  Args:
572
547
  n (float): the power to raise the matrix to.
573
- branch_cut_rotation (float): The rotation angle to apply to the branch cut in the
574
- complex plane. This shifts the branch cut away from the common point of :math:`-1`,
575
- but can cause a different root to be selected as the principal root. The rotation
576
- is anticlockwise, following the standard convention for complex phase.
577
- assume_unitary (bool): if ``True``, the operator is assumed to be unitary. In this case,
578
- for fractional powers we employ a faster implementation based on Schur's decomposition.
579
548
 
580
549
  Returns:
581
550
  Operator: the resulting operator ``O ** n``.
@@ -583,11 +552,6 @@ class Operator(LinearOp):
583
552
  Raises:
584
553
  QiskitError: if the input and output dimensions of the operator
585
554
  are not equal.
586
-
587
- .. note::
588
- It is only safe to set the argument ``assume_unitary`` to ``True`` when the operator
589
- is unitary (or, more generally, normal). Otherwise, the function will return an
590
- incorrect output.
591
555
  """
592
556
  if self.input_dims() != self.output_dims():
593
557
  raise QiskitError("Can only power with input_dims = output_dims.")
@@ -597,23 +561,13 @@ class Operator(LinearOp):
597
561
  else:
598
562
  import scipy.linalg
599
563
 
600
- if assume_unitary:
601
- # Experimentally, for fractional powers this seems to be 3x faster than
602
- # calling scipy.linalg.fractional_matrix_power(self.data, exponent)
603
- decomposition, unitary = scipy.linalg.schur(
604
- cmath.rect(1, -branch_cut_rotation) * self.data, output="complex"
605
- )
606
- decomposition_diagonal = decomposition.diagonal()
607
- decomposition_power = [pow(element, n) for element in decomposition_diagonal]
608
- unitary_power = unitary @ np.diag(decomposition_power) @ unitary.conj().T
609
- ret._data = cmath.rect(1, branch_cut_rotation * n) * unitary_power
610
- else:
611
- ret._data = cmath.rect(
612
- 1, branch_cut_rotation * n
613
- ) * scipy.linalg.fractional_matrix_power(
614
- cmath.rect(1, -branch_cut_rotation) * self.data, n
615
- )
616
-
564
+ # Experimentally, for fractional powers this seems to be 3x faster than
565
+ # calling scipy.linalg.fractional_matrix_power(self.data, n)
566
+ decomposition, unitary = scipy.linalg.schur(self.data, output="complex")
567
+ decomposition_diagonal = decomposition.diagonal()
568
+ decomposition_power = [pow(element, n) for element in decomposition_diagonal]
569
+ unitary_power = unitary @ np.diag(decomposition_power) @ unitary.conj().T
570
+ ret._data = unitary_power
617
571
  return ret
618
572
 
619
573
  def tensor(self, other: Operator) -> Operator:
@@ -33,8 +33,6 @@ if TYPE_CHECKING:
33
33
 
34
34
  # utility for _to_matrix
35
35
  _PARITY = np.array([-1 if bin(i).count("1") % 2 else 1 for i in range(256)], dtype=complex)
36
- # Utility for `_to_label`
37
- _TO_LABEL_CHARS = np.array([ord("I"), ord("X"), ord("Z"), ord("Y")], dtype=np.uint8)
38
36
 
39
37
 
40
38
  class BasePauli(BaseOperator, AdjointMixin, MultiplyMixin):
@@ -186,7 +184,7 @@ class BasePauli(BaseOperator, AdjointMixin, MultiplyMixin):
186
184
  return BasePauli(self._z, self._x, np.mod(self._phase + phase, 4))
187
185
 
188
186
  def conjugate(self):
189
- """Return the complex conjugate of the Pauli with respect to the Z basis."""
187
+ """Return the conjugate of each Pauli in the list."""
190
188
  complex_phase = np.mod(self._phase, 2)
191
189
  if np.all(complex_phase == 0):
192
190
  return self
@@ -498,15 +496,25 @@ class BasePauli(BaseOperator, AdjointMixin, MultiplyMixin):
498
496
  the phase ``q`` for the coefficient :math:`(-i)^(q + x.z)`
499
497
  for the label from the full Pauli group.
500
498
  """
501
- # Map each qubit to the {I: 0, X: 1, Z: 2, Y: 3} integer form, then use Numpy advanced
502
- # indexing to get a new data buffer which is compatible with an ASCII string label.
503
- index = z << 1
504
- index += x
505
- ascii_label = _TO_LABEL_CHARS[index[::-1]].data.tobytes()
506
- phase = (int(phase) if group_phase else int(phase) - ascii_label.count(b"Y")) % 4
507
- label = ascii_label.decode("ascii")
499
+ num_qubits = z.size
500
+ phase = int(phase)
501
+ coeff_labels = {0: "", 1: "-i", 2: "-", 3: "i"}
502
+ label = ""
503
+ for i in range(num_qubits):
504
+ if not z[num_qubits - 1 - i]:
505
+ if not x[num_qubits - 1 - i]:
506
+ label += "I"
507
+ else:
508
+ label += "X"
509
+ elif not x[num_qubits - 1 - i]:
510
+ label += "Z"
511
+ else:
512
+ label += "Y"
513
+ if not group_phase:
514
+ phase -= 1
515
+ phase %= 4
508
516
  if phase and full_group:
509
- label = ("", "-i", "-", "i")[phase] + label
517
+ label = coeff_labels[phase] + label
510
518
  if return_phase:
511
519
  return label, phase
512
520
  return label
@@ -92,7 +92,7 @@ class Clifford(BaseOperator, AdjointMixin, Operation):
92
92
  # Print the Clifford stabilizer rows
93
93
  print(cliff.to_labels(mode="S"))
94
94
 
95
- .. code-block:: text
95
+ .. parsed-literal::
96
96
 
97
97
  Clifford: Stabilizer = ['+XX', '+ZZ'], Destabilizer = ['+IZ', '+XI']
98
98
  ['+IZ', '+XI']
@@ -81,7 +81,7 @@ def _append_operation(clifford, operation, qargs=None):
81
81
  else:
82
82
  # assert isinstance(gate, Instruction)
83
83
  name = gate.name
84
- if getattr(gate, "_condition", None) is not None:
84
+ if getattr(gate, "condition", None) is not None:
85
85
  raise QiskitError("Conditional gate is not a valid Clifford operation.")
86
86
 
87
87
  # Apply gate if it is a Clifford basis gate
@@ -144,8 +144,6 @@ class Pauli(BasePauli):
144
144
 
145
145
  .. code-block:: python
146
146
 
147
- from qiskit.quantum_info import Pauli
148
-
149
147
  P = Pauli('-iXYZ')
150
148
 
151
149
  print('P[0] =', repr(P[0]))
@@ -80,7 +80,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
80
80
  pauli_list = PauliList.from_symplectic(z, x, phase)
81
81
  print("4. ", pauli_list)
82
82
 
83
- .. code-block:: text
83
+ .. parsed-literal::
84
84
 
85
85
  1. ['II', 'ZI', '-iYY']
86
86
  2. ['iXI']
@@ -100,7 +100,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
100
100
  print("List: ", repr(pauli_list[[0, 2]]))
101
101
  print("Slice: ", repr(pauli_list[0:2]))
102
102
 
103
- .. code-block:: text
103
+ .. parsed-literal::
104
104
 
105
105
  Integer: Pauli('ZZ')
106
106
  List: PauliList(['XX', 'IZ'])
@@ -568,7 +568,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
568
568
  print('Weight sorted')
569
569
  print(srt)
570
570
 
571
- .. code-block:: text
571
+ .. parsed-literal::
572
572
 
573
573
  Initial Ordering
574
574
  ['YX', 'ZZ', 'XZ', 'YI', 'YZ', 'II', 'XX', 'XI', 'XY', 'YY', 'IX', 'IZ',
@@ -603,7 +603,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
603
603
  unique = pt.unique()
604
604
  print(unique)
605
605
 
606
- .. code-block:: text
606
+ .. parsed-literal::
607
607
 
608
608
  ['X', 'Y', '-X', 'I', 'Z', 'iZ']
609
609
 
@@ -560,7 +560,7 @@ class SparsePauliOp(LinearOp):
560
560
  print('Weight sorted')
561
561
  print(srt)
562
562
 
563
- .. code-block:: text
563
+ .. parsed-literal::
564
564
 
565
565
  Initial Ordering
566
566
  SparsePauliOp(['XX', 'XX', 'XX', 'YI', 'II', 'XZ', 'XY', 'XI'],
@@ -629,7 +629,7 @@ class SparsePauliOp(LinearOp):
629
629
  print('Weight sorted')
630
630
  print(srt)
631
631
 
632
- .. code-block:: text
632
+ .. parsed-literal::
633
633
 
634
634
  Initial Ordering
635
635
  SparsePauliOp(['XX', 'XX', 'XX', 'YI', 'II', 'XZ', 'XY', 'XI'],
@@ -794,8 +794,6 @@ class SparsePauliOp(LinearOp):
794
794
 
795
795
  .. code-block:: python
796
796
 
797
- from qiskit.quantum_info import SparsePauliOp
798
-
799
797
  # via tuples and the full Pauli string
800
798
  op = SparsePauliOp.from_list([("XIIZI", 1), ("IYIIY", 2)])
801
799
 
@@ -860,8 +858,6 @@ class SparsePauliOp(LinearOp):
860
858
 
861
859
  .. code-block:: python
862
860
 
863
- from qiskit.quantum_info import SparsePauliOp
864
-
865
861
  # via triples and local Paulis with indices
866
862
  op = SparsePauliOp.from_sparse_list([("ZX", [1, 4], 1), ("YY", [0, 3], 2)], num_qubits=5)
867
863
 
@@ -935,14 +931,6 @@ class SparsePauliOp(LinearOp):
935
931
  return labels
936
932
  return labels.tolist()
937
933
 
938
- def to_sparse_list(self):
939
- """Convert to a sparse Pauli list format with elements (pauli, qubits, coefficient)."""
940
- pauli_labels = self.paulis.to_labels()
941
- sparse_list = [
942
- (*sparsify_label(label), coeff) for label, coeff in zip(pauli_labels, self.coeffs)
943
- ]
944
- return sparse_list
945
-
946
934
  def to_matrix(self, sparse: bool = False, force_serial: bool = False) -> np.ndarray:
947
935
  """Convert to a dense or sparse matrix.
948
936
 
@@ -1065,7 +1053,6 @@ class SparsePauliOp(LinearOp):
1065
1053
 
1066
1054
  .. code-block:: python
1067
1055
 
1068
- >>> from qiskit.quantum_info import SparsePauliOp
1069
1056
  >>> op = SparsePauliOp.from_list([("XX", 2), ("YY", 1), ("IZ",2j), ("ZZ",1j)])
1070
1057
  >>> op.group_commuting()
1071
1058
  [SparsePauliOp(["IZ", "ZZ"], coeffs=[0.+2.j, 0.+1j]),
@@ -1184,13 +1171,5 @@ class SparsePauliOp(LinearOp):
1184
1171
  return new_op.compose(self, qargs=layout)
1185
1172
 
1186
1173
 
1187
- def sparsify_label(pauli_string):
1188
- """Return a sparse format of a Pauli string, e.g. "XIIIZ" -> ("XZ", [0, 4])."""
1189
- qubits = [i for i, label in enumerate(reversed(pauli_string)) if label != "I"]
1190
- sparse_label = "".join(pauli_string[~i] for i in qubits)
1191
-
1192
- return sparse_label, qubits
1193
-
1194
-
1195
1174
  # Update docstrings for API docs
1196
1175
  generate_apidocs(SparsePauliOp)
@@ -461,7 +461,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
461
461
  probs_qubit_1 = rho.probabilities([1])
462
462
  print('Qubit-1 probs: {}'.format(probs_qubit_1))
463
463
 
464
- .. code-block:: text
464
+ .. parsed-literal::
465
465
 
466
466
  probs: [0.5 0. 0.5 0. ]
467
467
  Qubit-0 probs: [1. 0.]
@@ -485,7 +485,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
485
485
  probs_swapped = rho.probabilities([1, 0])
486
486
  print('Swapped probs: {}'.format(probs_swapped))
487
487
 
488
- .. code-block:: text
488
+ .. parsed-literal::
489
489
 
490
490
  probs: [0.5 0. 0.5 0. ]
491
491
  Swapped probs: [0.5 0.5 0. 0. ]
@@ -654,7 +654,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
654
654
  rho = DensityMatrix.from_label('-0')
655
655
  print(rho.to_dict())
656
656
 
657
- .. code-block:: text
657
+ .. parsed-literal::
658
658
 
659
659
  {
660
660
  '00|00': (0.4999999999999999+0j),
@@ -679,7 +679,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
679
679
  rho = DensityMatrix(mat, dims=(3, 3))
680
680
  print(rho.to_dict())
681
681
 
682
- .. code-block:: text
682
+ .. parsed-literal::
683
683
 
684
684
  {'00|00': (0.25+0j), '10|10': (0.25+0j), '20|20': (0.25+0j), '22|22': (0.25+0j)}
685
685
 
@@ -698,7 +698,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
698
698
  rho = DensityMatrix(mat, dims=(2, 10))
699
699
  print(rho.to_dict())
700
700
 
701
- .. code-block:: text
701
+ .. parsed-literal::
702
702
 
703
703
  {'00|00': (0.5+0j), '91|91': (0.5+0j)}
704
704
  """
@@ -54,7 +54,7 @@ class StabilizerState(QuantumState):
54
54
  # Calculate expectation value of the StabilizerState
55
55
  print (stab.expectation_value(Pauli('ZZ')))
56
56
 
57
- .. code-block:: text
57
+ .. parsed-literal::
58
58
 
59
59
  StabilizerState(StabilizerTable: ['+XX', '+ZZ'])
60
60
  {'00': 0.5, '11': 0.5}
@@ -476,7 +476,7 @@ class Statevector(QuantumState, TolerancesMixin):
476
476
  pauli_phase = (-1j) ** pauli.phase if pauli.phase else 1
477
477
 
478
478
  if x_mask + z_mask == 0:
479
- return pauli_phase * np.linalg.norm(self.data) ** 2
479
+ return pauli_phase * np.linalg.norm(self.data)
480
480
 
481
481
  if x_mask == 0:
482
482
  return pauli_phase * expval_pauli_no_x(self.data, self.num_qubits, z_mask)
@@ -554,7 +554,7 @@ class Statevector(QuantumState, TolerancesMixin):
554
554
  probs_qubit_1 = psi.probabilities([1])
555
555
  print('Qubit-1 probs: {}'.format(probs_qubit_1))
556
556
 
557
- .. code-block:: text
557
+ .. parsed-literal::
558
558
 
559
559
  probs: [0.5 0. 0.5 0. ]
560
560
  Qubit-0 probs: [1. 0.]
@@ -578,7 +578,7 @@ class Statevector(QuantumState, TolerancesMixin):
578
578
  probs_swapped = psi.probabilities([1, 0])
579
579
  print('Swapped probs: {}'.format(probs_swapped))
580
580
 
581
- .. code-block:: text
581
+ .. parsed-literal::
582
582
 
583
583
  probs: [0.5 0. 0.5 0. ]
584
584
  Swapped probs: [0.5 0.5 0. 0. ]
@@ -794,7 +794,7 @@ class Statevector(QuantumState, TolerancesMixin):
794
794
  psi = Statevector.from_label('-0')
795
795
  print(psi.to_dict())
796
796
 
797
- .. code-block:: text
797
+ .. parsed-literal::
798
798
 
799
799
  {'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}
800
800
 
@@ -812,7 +812,7 @@ class Statevector(QuantumState, TolerancesMixin):
812
812
  psi = Statevector(vec, dims=(3, 3))
813
813
  print(psi.to_dict())
814
814
 
815
- .. code-block:: text
815
+ .. parsed-literal::
816
816
 
817
817
  {'00': (0.7071067811865475+0j), '22': (0.7071067811865475+0j)}
818
818
 
@@ -831,7 +831,7 @@ class Statevector(QuantumState, TolerancesMixin):
831
831
  psi = Statevector(vec, dims=(2, 10))
832
832
  print(psi.to_dict())
833
833
 
834
- .. code-block:: text
834
+ .. parsed-literal::
835
835
 
836
836
  {'00': (0.7071067811865475+0j), '91': (0.7071067811865475+0j)}
837
837
 
@@ -21,7 +21,7 @@ from ..counts import Counts
21
21
 
22
22
 
23
23
  class BaseReadoutMitigator(ABC):
24
- """This class is DEPRECATED. Base readout error mitigator class."""
24
+ """Base readout error mitigator class."""
25
25
 
26
26
  @abstractmethod
27
27
  def quasi_probabilities(
@@ -18,7 +18,6 @@ from typing import Optional, List, Tuple, Iterable, Callable, Union, Dict
18
18
  import numpy as np
19
19
 
20
20
  from qiskit.exceptions import QiskitError
21
- from qiskit.utils.deprecation import deprecate_func
22
21
  from ..distributions.quasi import QuasiDistribution
23
22
  from ..counts import Counts
24
23
  from .base_readout_mitigator import BaseReadoutMitigator
@@ -26,7 +25,7 @@ from .utils import counts_probability_vector, z_diagonal, str2diag
26
25
 
27
26
 
28
27
  class CorrelatedReadoutMitigator(BaseReadoutMitigator):
29
- """This class is DEPRECATED. N-qubit readout error mitigator.
28
+ """N-qubit readout error mitigator.
30
29
 
31
30
  Mitigates :meth:`expectation_value` and :meth:`quasi_probabilities`.
32
31
  The mitigation_matrix should be calibrated using qiskit experiments.
@@ -35,13 +34,6 @@ class CorrelatedReadoutMitigator(BaseReadoutMitigator):
35
34
  :math:`2^N x 2^N` so the mitigation complexity is :math:`O(4^N)`.
36
35
  """
37
36
 
38
- @deprecate_func(
39
- since="1.3",
40
- package_name="Qiskit",
41
- removal_timeline="in Qiskit 2.0",
42
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
43
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
44
- )
45
37
  def __init__(self, assignment_matrix: np.ndarray, qubits: Optional[Iterable[int]] = None):
46
38
  """Initialize a CorrelatedReadoutMitigator
47
39
 
@@ -19,7 +19,6 @@ from typing import Optional, List, Tuple, Iterable, Callable, Union, Dict
19
19
  import numpy as np
20
20
 
21
21
  from qiskit.exceptions import QiskitError
22
- from qiskit.utils.deprecation import deprecate_func
23
22
  from ..distributions.quasi import QuasiDistribution
24
23
  from ..counts import Counts
25
24
  from .base_readout_mitigator import BaseReadoutMitigator
@@ -27,7 +26,7 @@ from .utils import counts_probability_vector, z_diagonal, str2diag
27
26
 
28
27
 
29
28
  class LocalReadoutMitigator(BaseReadoutMitigator):
30
- """This class is DEPRECATED. 1-qubit tensor product readout error mitigator.
29
+ """1-qubit tensor product readout error mitigator.
31
30
 
32
31
  Mitigates :meth:`expectation_value` and :meth:`quasi_probabilities`.
33
32
  The mitigator should either be calibrated using qiskit experiments,
@@ -38,13 +37,6 @@ class LocalReadoutMitigator(BaseReadoutMitigator):
38
37
  so it is more efficient than the :class:`CorrelatedReadoutMitigator` class.
39
38
  """
40
39
 
41
- @deprecate_func(
42
- since="1.3",
43
- package_name="Qiskit",
44
- removal_timeline="in Qiskit 2.0",
45
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
46
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
47
- )
48
40
  def __init__(
49
41
  self,
50
42
  assignment_matrices: Optional[List[np.ndarray]] = None,
@@ -19,20 +19,12 @@ from typing import Optional, List, Tuple, Dict
19
19
  import numpy as np
20
20
 
21
21
  from qiskit.exceptions import QiskitError
22
- from qiskit.utils.deprecation import deprecate_func
23
22
  from ..utils import marginal_counts
24
23
  from ..counts import Counts
25
24
 
26
25
  logger = logging.getLogger(__name__)
27
26
 
28
27
 
29
- @deprecate_func(
30
- since="1.3",
31
- package_name="Qiskit",
32
- removal_timeline="in Qiskit 2.0",
33
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
34
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
35
- )
36
28
  def z_diagonal(dim, dtype=float):
37
29
  r"""Return the diagonal for the operator :math:`Z^\otimes n`"""
38
30
  parity = np.zeros(dim, dtype=dtype)
@@ -41,13 +33,6 @@ def z_diagonal(dim, dtype=float):
41
33
  return (-1) ** np.mod(parity, 2)
42
34
 
43
35
 
44
- @deprecate_func(
45
- since="1.3",
46
- package_name="Qiskit",
47
- removal_timeline="in Qiskit 2.0",
48
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
49
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
50
- )
51
36
  def expval_with_stddev(coeffs: np.ndarray, probs: np.ndarray, shots: int) -> Tuple[float, float]:
52
37
  """Compute expectation value and standard deviation.
53
38
  Args:
@@ -75,13 +60,6 @@ def expval_with_stddev(coeffs: np.ndarray, probs: np.ndarray, shots: int) -> Tup
75
60
  return [expval, calc_stddev]
76
61
 
77
62
 
78
- @deprecate_func(
79
- since="1.3",
80
- package_name="Qiskit",
81
- removal_timeline="in Qiskit 2.0",
82
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
83
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
84
- )
85
63
  def stddev(probs, shots):
86
64
  """Calculate stddev dict"""
87
65
  ret = {}
@@ -91,13 +69,6 @@ def stddev(probs, shots):
91
69
  return ret
92
70
 
93
71
 
94
- @deprecate_func(
95
- since="1.3",
96
- package_name="Qiskit",
97
- removal_timeline="in Qiskit 2.0",
98
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
99
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
100
- )
101
72
  def str2diag(string):
102
73
  """Transform diagonal from a string to a numpy array"""
103
74
  chars = {
@@ -114,13 +85,6 @@ def str2diag(string):
114
85
  return ret
115
86
 
116
87
 
117
- @deprecate_func(
118
- since="1.3",
119
- package_name="Qiskit",
120
- removal_timeline="in Qiskit 2.0",
121
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
122
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
123
- )
124
88
  def counts_to_vector(counts: Counts, num_qubits: int) -> Tuple[np.ndarray, int]:
125
89
  """Transforms Counts to a probability vector"""
126
90
  vec = np.zeros(2**num_qubits, dtype=float)
@@ -132,13 +96,6 @@ def counts_to_vector(counts: Counts, num_qubits: int) -> Tuple[np.ndarray, int]:
132
96
  return vec, shots
133
97
 
134
98
 
135
- @deprecate_func(
136
- since="1.3",
137
- package_name="Qiskit",
138
- removal_timeline="in Qiskit 2.0",
139
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
140
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
141
- )
142
99
  def remap_qubits(
143
100
  vec: np.ndarray, num_qubits: int, qubits: Optional[List[int]] = None
144
101
  ) -> np.ndarray:
@@ -151,13 +108,6 @@ def remap_qubits(
151
108
  return vec
152
109
 
153
110
 
154
- @deprecate_func(
155
- since="1.3",
156
- package_name="Qiskit",
157
- removal_timeline="in Qiskit 2.0",
158
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
159
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
160
- )
161
111
  def marganalize_counts(
162
112
  counts: Counts,
163
113
  qubit_index: Dict[int, int],
@@ -179,13 +129,6 @@ def marganalize_counts(
179
129
  return counts
180
130
 
181
131
 
182
- @deprecate_func(
183
- since="1.3",
184
- package_name="Qiskit",
185
- removal_timeline="in Qiskit 2.0",
186
- additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
187
- "the https://github.com/Qiskit/qiskit-addon-mthree package.",
188
- )
189
132
  def counts_probability_vector(
190
133
  counts: Counts,
191
134
  qubit_index: Dict[int, int],
@@ -16,13 +16,11 @@ from typing import List
16
16
 
17
17
  from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap
18
18
  from qiskit.pulse.utils import format_meas_map
19
- from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
20
19
 
21
20
 
22
21
  class ScheduleConfig:
23
22
  """Configuration for pulse scheduling."""
24
23
 
25
- @deprecate_pulse_dependency(moving_to_dynamics=True)
26
24
  def __init__(self, inst_map: InstructionScheduleMap, meas_map: List[List[int]], dt: float):
27
25
  """
28
26
  Container for information needed to schedule a QuantumCircuit into a pulse Schedule.
@@ -23,10 +23,8 @@ from qiskit.pulse.schedule import Schedule
23
23
  from qiskit.scheduler.config import ScheduleConfig
24
24
  from qiskit.scheduler.lowering import lower_gates
25
25
  from qiskit.providers import BackendV1, BackendV2
26
- from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
27
26
 
28
27
 
29
- @deprecate_pulse_dependency(moving_to_dynamics=True)
30
28
  def as_soon_as_possible(
31
29
  circuit: QuantumCircuit,
32
30
  schedule_config: ScheduleConfig,
@@ -80,7 +78,6 @@ def as_soon_as_possible(
80
78
  return schedule
81
79
 
82
80
 
83
- @deprecate_pulse_dependency(moving_to_dynamics=True)
84
81
  def as_late_as_possible(
85
82
  circuit: QuantumCircuit,
86
83
  schedule_config: ScheduleConfig,
@@ -20,10 +20,8 @@ from qiskit.pulse.schedule import Schedule
20
20
  from qiskit.scheduler.config import ScheduleConfig
21
21
  from qiskit.scheduler.methods import as_soon_as_possible, as_late_as_possible
22
22
  from qiskit.providers import BackendV1, BackendV2
23
- from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
24
23
 
25
24
 
26
- @deprecate_pulse_dependency(moving_to_dynamics=True)
27
25
  def schedule_circuit(
28
26
  circuit: QuantumCircuit,
29
27
  schedule_config: ScheduleConfig,
@@ -25,10 +25,8 @@ from qiskit.pulse.transforms import pad
25
25
  from qiskit.scheduler.config import ScheduleConfig
26
26
  from qiskit.scheduler.lowering import lower_gates
27
27
  from qiskit.providers import BackendV1, BackendV2
28
- from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
29
28
 
30
29
 
31
- @deprecate_pulse_dependency(moving_to_dynamics=True)
32
30
  def sequence(
33
31
  scheduled_circuit: QuantumCircuit,
34
32
  schedule_config: ScheduleConfig,