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
@@ -11,316 +11,17 @@
11
11
  # that they have been altered from the originals.
12
12
 
13
13
  """The Pauli expansion circuit module."""
14
-
15
- from __future__ import annotations
16
-
17
- from collections.abc import Sequence, Mapping
18
- from typing import Optional, Callable, List, Union, Dict, Tuple
14
+ from typing import Optional, Callable, List, Union, Sequence, Dict, Tuple
19
15
  from functools import reduce
20
16
  import numpy as np
21
17
 
22
18
  from qiskit.circuit import QuantumCircuit
23
- from qiskit.circuit import Parameter, ParameterVector, ParameterExpression
19
+ from qiskit.circuit import Parameter, ParameterVector
24
20
  from qiskit.circuit.library.standard_gates import HGate
25
- from qiskit.utils.deprecation import deprecate_func
26
- from qiskit._accelerate.circuit_library import pauli_feature_map as _fast_map
27
21
 
28
22
  from ..n_local.n_local import NLocal
29
23
 
30
24
 
31
- def _normalize_entanglement(
32
- entanglement: str | Mapping[int, Sequence[Sequence[int]]]
33
- ) -> str | dict[int, list[tuple[int]]]:
34
- if isinstance(entanglement, str):
35
- return entanglement
36
-
37
- return {
38
- num_paulis: [tuple(connections) for connections in ent]
39
- for num_paulis, ent in entanglement.items()
40
- }
41
-
42
-
43
- def pauli_feature_map(
44
- feature_dimension: int,
45
- reps: int = 2,
46
- entanglement: (
47
- str
48
- | Mapping[int, Sequence[Sequence[int]]]
49
- | Callable[[int], str | Mapping[int, Sequence[Sequence[int]]]]
50
- ) = "full",
51
- alpha: float = 2.0,
52
- paulis: list[str] | None = None,
53
- data_map_func: Callable[[Parameter], ParameterExpression] | None = None,
54
- parameter_prefix: str = "x",
55
- insert_barriers: bool = False,
56
- name: str = "PauliFeatureMap",
57
- ) -> QuantumCircuit:
58
- r"""The Pauli expansion circuit.
59
-
60
- The Pauli expansion circuit is a data encoding circuit that transforms input data
61
- :math:`\vec{x} \in \mathbb{R}^n`, where :math:`n` is the ``feature_dimension``, as
62
-
63
- .. math::
64
-
65
- U_{\Phi(\vec{x})}=\exp\left(i\sum_{S \in \mathcal{I}}
66
- \phi_S(\vec{x})\prod_{i\in S} P_i\right).
67
-
68
- Here, :math:`S` is a set of qubit indices that describes the connections in the feature map,
69
- :math:`\mathcal{I}` is a set containing all these index sets, and
70
- :math:`P_i \in \{I, X, Y, Z\}`. Per default the data-mapping
71
- :math:`\phi_S` is
72
-
73
- .. math::
74
-
75
- \phi_S(\vec{x}) = \begin{cases}
76
- x_i \text{ if } S = \{i\} \\
77
- \prod_{j \in S} (\pi - x_j) \text{ if } |S| > 1
78
- \end{cases}.
79
-
80
- The possible connections can be set using the ``entanglement`` and ``paulis`` arguments.
81
- For example, for single-qubit :math:`Z` rotations and two-qubit :math:`YY` interactions
82
- between all qubit pairs, we can set::
83
-
84
-
85
- circuit = pauli_feature_map(..., paulis=["Z", "YY"], entanglement="full")
86
-
87
- which will produce blocks of the form
88
-
89
- .. code-block:: text
90
-
91
- ┌───┐┌─────────────┐┌──────────┐ ┌───────────┐
92
- ┤ H ├┤ P(2.0*x[0]) ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
93
- ├───┤├─────────────┤├──────────┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───────────┤
94
- ┤ H ├┤ P(2.0*x[1]) ├┤ RX(pi/2) ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ RX(-pi/2) ├
95
- └───┘└─────────────┘└──────────┘└───┘└────────────────────────────────┘└───┘└───────────┘
96
-
97
- The circuit contains ``reps`` repetitions of this transformation.
98
-
99
- Please refer to :func:`.z_feature_map` for the case of single-qubit Pauli-:math:`Z` rotations
100
- and to :func:`.zz_feature_map` for the single- and two-qubit Pauli-:math:`Z` rotations.
101
-
102
- Examples:
103
-
104
- >>> prep = pauli_feature_map(2, reps=1, paulis=["ZZ"])
105
- >>> print(prep)
106
- ┌───┐
107
- q_0: ┤ H ├──■──────────────────────────────────────■──
108
- ├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐
109
- q_1: ┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
110
- └───┘└───┘└────────────────────────────────┘└───┘
111
-
112
- >>> prep = pauli_feature_map(2, reps=1, paulis=["Z", "XX"])
113
- >>> print(prep)
114
- ┌───┐┌─────────────┐┌───┐ ┌───┐
115
- q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ H ├──■──────────────────────────────────────■──┤ H ├
116
- ├───┤├─────────────┤├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───┤
117
- q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ H ├
118
- └───┘└─────────────┘└───┘└───┘└────────────────────────────────┘└───┘└───┘
119
-
120
- >>> prep = pauli_feature_map(2, reps=1, paulis=["ZY"])
121
- >>> print(prep)
122
- ┌───┐┌──────────┐ ┌───────────┐
123
- q_0: ┤ H ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
124
- ├───┤└──────────┘┌─┴─┐┌────────────────────────────────┐┌─┴─┐└───────────┘
125
- q_1: ┤ H ├────────────┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├─────────────
126
- └───┘ └───┘└────────────────────────────────┘└───┘
127
-
128
- >>> from qiskit.circuit.library import EfficientSU2
129
- >>> prep = pauli_feature_map(3, reps=3, paulis=["Z", "YY", "ZXZ"])
130
- >>> wavefunction = EfficientSU2(3)
131
- >>> classifier = prep.compose(wavefunction)
132
- >>> classifier.num_parameters
133
- 27
134
- >>> classifier.count_ops()
135
- OrderedDict([('cx', 39), ('rx', 36), ('u1', 21), ('h', 15), ('ry', 12), ('rz', 12)])
136
-
137
- References:
138
-
139
- [1] Havlicek et al. Supervised learning with quantum enhanced feature spaces,
140
- `Nature 567, 209-212 (2019) <https://www.nature.com/articles/s41586-019-0980-2>`__.
141
- """
142
- # create parameter vector used in the Pauli feature map
143
- parameters = ParameterVector(parameter_prefix, feature_dimension)
144
-
145
- # the Rust implementation expects the entanglement to be a str or list[tuple[int]] (or the
146
- # callable to return these types), therefore we normalize the entanglement here
147
- if callable(entanglement):
148
- normalized = lambda offset: _normalize_entanglement(entanglement(offset))
149
- else:
150
- normalized = _normalize_entanglement(entanglement)
151
-
152
- # construct from Rust
153
- circuit = QuantumCircuit._from_circuit_data(
154
- _fast_map(
155
- feature_dimension,
156
- paulis=paulis,
157
- entanglement=normalized,
158
- reps=reps,
159
- parameters=parameters,
160
- data_map_func=data_map_func,
161
- alpha=alpha,
162
- insert_barriers=insert_barriers,
163
- ),
164
- name=name,
165
- )
166
-
167
- return circuit
168
-
169
-
170
- def z_feature_map(
171
- feature_dimension: int,
172
- reps: int = 2,
173
- entanglement: (
174
- str | Sequence[Sequence[int]] | Callable[[int], str | Sequence[Sequence[int]]]
175
- ) = "full",
176
- alpha: float = 2.0,
177
- data_map_func: Callable[[Parameter], ParameterExpression] | None = None,
178
- parameter_prefix: str = "x",
179
- insert_barriers: bool = False,
180
- name: str = "ZFeatureMap",
181
- ) -> QuantumCircuit:
182
- """The first order Pauli Z-evolution circuit.
183
-
184
- On 3 qubits and with 2 repetitions the circuit is represented by:
185
-
186
- .. code-block:: text
187
-
188
- ┌───┐┌─────────────┐┌───┐┌─────────────┐
189
- ┤ H ├┤ P(2.0*x[0]) ├┤ H ├┤ P(2.0*x[0]) ├
190
- ├───┤├─────────────┤├───┤├─────────────┤
191
- ┤ H ├┤ U(2.0*x[1]) ├┤ H ├┤ P(2.0*x[1]) ├
192
- ├───┤├─────────────┤├───┤├─────────────┤
193
- ┤ H ├┤ P(2.0*x[2]) ├┤ H ├┤ P(2.0*x[2]) ├
194
- └───┘└─────────────┘└───┘└─────────────┘
195
-
196
- This is a sub-class of :class:`~qiskit.circuit.library.PauliFeatureMap` where the Pauli
197
- strings are fixed as `['Z']`. As a result the first order expansion will be a circuit without
198
- entangling gates.
199
-
200
- Examples:
201
-
202
- >>> prep = z_feature_map(3, reps=3, insert_barriers=True)
203
- >>> print(prep)
204
- ┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐
205
- q_0: ┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├
206
- ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
207
- q_1: ┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├
208
- ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
209
- q_2: ┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├
210
- └───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘
211
-
212
- >>> data_map = lambda x: x[0]*x[0] + 1 # note: input is an array
213
- >>> prep = z_feature_map(3, reps=1, data_map_func=data_map)
214
- >>> print(prep)
215
- ┌───┐┌──────────────────────┐
216
- q_0: ┤ H ├┤ P(2.0*x[0]**2 + 2.0) ├
217
- ├───┤├──────────────────────┤
218
- q_1: ┤ H ├┤ P(2.0*x[1]**2 + 2.0) ├
219
- ├───┤├──────────────────────┤
220
- q_2: ┤ H ├┤ P(2.0*x[2]**2 + 2.0) ├
221
- └───┘└──────────────────────┘
222
-
223
- >>> from qiskit.circuit.library import TwoLocal
224
- >>> ry = TwoLocal(3, "ry", "cz", reps=1).decompose()
225
- >>> classifier = z_feature_map(3, reps=1) + ry
226
- >>> print(classifier)
227
- ┌───┐┌─────────────┐┌──────────┐ ┌──────────┐
228
- q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ RY(θ[0]) ├─■──■─┤ RY(θ[3]) ├────────────
229
- ├───┤├─────────────┤├──────────┤ │ │ └──────────┘┌──────────┐
230
- q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ RY(θ[1]) ├─■──┼──────■──────┤ RY(θ[4]) ├
231
- ├───┤├─────────────┤├──────────┤ │ │ ├──────────┤
232
- q_2: ┤ H ├┤ P(2.0*x[2]) ├┤ RY(θ[2]) ├────■──────■──────┤ RY(θ[5]) ├
233
- └───┘└─────────────┘└──────────┘ └──────────┘
234
-
235
- """
236
- return pauli_feature_map(
237
- feature_dimension=feature_dimension,
238
- reps=reps,
239
- entanglement=entanglement,
240
- alpha=alpha,
241
- paulis=["z"],
242
- data_map_func=data_map_func,
243
- parameter_prefix=parameter_prefix,
244
- insert_barriers=insert_barriers,
245
- name=name,
246
- )
247
-
248
-
249
- def zz_feature_map(
250
- feature_dimension: int,
251
- reps: int = 2,
252
- entanglement: (
253
- str | Sequence[Sequence[int]] | Callable[[int], str | Sequence[Sequence[int]]]
254
- ) = "full",
255
- alpha: float = 2.0,
256
- data_map_func: Callable[[Parameter], ParameterExpression] | None = None,
257
- parameter_prefix: str = "x",
258
- insert_barriers: bool = False,
259
- name: str = "ZZFeatureMap",
260
- ) -> QuantumCircuit:
261
- r"""Second-order Pauli-Z evolution circuit.
262
-
263
- For 3 qubits and 1 repetition and linear entanglement the circuit is represented by:
264
-
265
- .. code-block:: text
266
-
267
- ┌───┐┌────────────────┐
268
- ┤ H ├┤ P(2.0*φ(x[0])) ├──■───────────────────────────■───────────────────────────────────
269
- ├───┤├────────────────┤┌─┴─┐┌─────────────────────┐┌─┴─┐
270
- ┤ H ├┤ P(2.0*φ(x[1])) ├┤ X ├┤ P(2.0*φ(x[0],x[1])) ├┤ X ├──■───────────────────────────■──
271
- ├───┤├────────────────┤└───┘└─────────────────────┘└───┘┌─┴─┐┌─────────────────────┐┌─┴─┐
272
- ┤ H ├┤ P(2.0*φ(x[2])) ├─────────────────────────────────┤ X ├┤ P(2.0*φ(x[1],x[2])) ├┤ X ├
273
- └───┘└────────────────┘ └───┘└─────────────────────┘└───┘
274
-
275
- where :math:`\varphi` is a classical non-linear function, which defaults to :math:`\varphi(x) = x`
276
- if and :math:`\varphi(x,y) = (\pi - x)(\pi - y)`.
277
-
278
- Examples:
279
-
280
- >>> from qiskit.circuit.library import ZZFeatureMap
281
- >>> prep = zz_feature_map(2, reps=1)
282
- >>> print(prep)
283
- ┌───┐┌─────────────┐
284
- q_0: ┤ H ├┤ P(2.0*x[0]) ├──■──────────────────────────────────────■──
285
- ├───┤├─────────────┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐
286
- q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
287
- └───┘└─────────────┘└───┘└────────────────────────────────┘└───┘
288
-
289
- >>> from qiskit.circuit.library import EfficientSU2
290
- >>> classifier = zz_feature_map(3) + EfficientSU2(3)
291
- >>> classifier.num_parameters
292
- 15
293
- >>> classifier.parameters # 'x' for the data preparation, 'θ' for the SU2 parameters
294
- ParameterView([
295
- ParameterVectorElement(x[0]), ParameterVectorElement(x[1]),
296
- ParameterVectorElement(x[2]), ParameterVectorElement(θ[0]),
297
- ParameterVectorElement(θ[1]), ParameterVectorElement(θ[2]),
298
- ParameterVectorElement(θ[3]), ParameterVectorElement(θ[4]),
299
- ParameterVectorElement(θ[5]), ParameterVectorElement(θ[6]),
300
- ParameterVectorElement(θ[7]), ParameterVectorElement(θ[8]),
301
- ParameterVectorElement(θ[9]), ParameterVectorElement(θ[10]),
302
- ParameterVectorElement(θ[11]), ParameterVectorElement(θ[12]),
303
- ParameterVectorElement(θ[13]), ParameterVectorElement(θ[14]),
304
- ParameterVectorElement(θ[15]), ParameterVectorElement(θ[16]),
305
- ParameterVectorElement(θ[17]), ParameterVectorElement(θ[18]),
306
- ParameterVectorElement(θ[19]), ParameterVectorElement(θ[20]),
307
- ParameterVectorElement(θ[21]), ParameterVectorElement(θ[22]),
308
- ParameterVectorElement(θ[23])
309
- ])
310
- """
311
- return pauli_feature_map(
312
- feature_dimension=feature_dimension,
313
- reps=reps,
314
- entanglement=entanglement,
315
- alpha=alpha,
316
- paulis=["z", "zz"],
317
- data_map_func=data_map_func,
318
- parameter_prefix=parameter_prefix,
319
- insert_barriers=insert_barriers,
320
- name=name,
321
- )
322
-
323
-
324
25
  class PauliFeatureMap(NLocal):
325
26
  r"""The Pauli Expansion circuit.
326
27
 
@@ -353,13 +54,13 @@ class PauliFeatureMap(NLocal):
353
54
 
354
55
  which will produce blocks of the form
355
56
 
356
- .. code-block:: text
57
+ .. parsed-literal::
357
58
 
358
- ┌───┐┌─────────────┐┌──────────┐ ┌───────────┐
359
- ┤ H ├┤ P(2.0*x[0]) ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
360
- ├───┤├─────────────┤├──────────┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───────────┤
361
- ┤ H ├┤ P(2.0*x[1]) ├┤ RX(pi/2) ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ RX(-pi/2) ├
362
- └───┘└─────────────┘└──────────┘└───┘└────────────────────────────────┘└───┘└───────────┘
59
+ ┌───┐┌──────────────┐┌──────────┐ ┌───────────┐
60
+ ┤ H ├┤ U1(2.0*x[0]) ├┤ RX(pi/2) ├──■───────────────────────────────────────■──┤ RX(-pi/2) ├
61
+ ├───┤├──────────────┤├──────────┤┌─┴─┐┌─────────────────────────────────┐┌─┴─┐├───────────┤
62
+ ┤ H ├┤ U1(2.0*x[1]) ├┤ RX(pi/2) ├┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ RX(-pi/2) ├
63
+ └───┘└──────────────┘└──────────┘└───┘└─────────────────────────────────┘└───┘└───────────┘
363
64
 
364
65
  The circuit contains ``reps`` repetitions of this transformation.
365
66
 
@@ -369,28 +70,28 @@ class PauliFeatureMap(NLocal):
369
70
  Examples:
370
71
 
371
72
  >>> prep = PauliFeatureMap(2, reps=1, paulis=['ZZ'])
372
- >>> print(prep.decompose())
73
+ >>> print(prep)
373
74
  ┌───┐
374
- q_0: ┤ H ├──■──────────────────────────────────────■──
375
- ├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐
376
- q_1: ┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
377
- └───┘└───┘└────────────────────────────────┘└───┘
75
+ q_0: ┤ H ├──■───────────────────────────────────────■──
76
+ ├───┤┌─┴─┐┌─────────────────────────────────┐┌─┴─┐
77
+ q_1: ┤ H ├┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
78
+ └───┘└───┘└─────────────────────────────────┘└───┘
378
79
 
379
80
  >>> prep = PauliFeatureMap(2, reps=1, paulis=['Z', 'XX'])
380
- >>> print(prep.decompose())
381
- ┌───┐┌─────────────┐┌───┐ ┌───┐
382
- q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ H ├──■──────────────────────────────────────■──┤ H ├
383
- ├───┤├─────────────┤├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───┤
384
- q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ H ├
385
- └───┘└─────────────┘└───┘└───┘└────────────────────────────────┘└───┘└───┘
81
+ >>> print(prep)
82
+ ┌───┐┌──────────────┐┌───┐ ┌───┐
83
+ q_0: ┤ H ├┤ U1(2.0*x[0]) ├┤ H ├──■───────────────────────────────────────■──┤ H ├
84
+ ├───┤├──────────────┤├───┤┌─┴─┐┌─────────────────────────────────┐┌─┴─┐├───┤
85
+ q_1: ┤ H ├┤ U1(2.0*x[1]) ├┤ H ├┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ H ├
86
+ └───┘└──────────────┘└───┘└───┘└─────────────────────────────────┘└───┘└───┘
386
87
 
387
88
  >>> prep = PauliFeatureMap(2, reps=1, paulis=['ZY'])
388
- >>> print(prep.decompose())
389
- ┌───┐┌──────────┐ ┌───────────┐
390
- q_0: ┤ H ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
391
- ├───┤└──────────┘┌─┴─┐┌────────────────────────────────┐┌─┴─┐└───────────┘
392
- q_1: ┤ H ├────────────┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├─────────────
393
- └───┘ └───┘└────────────────────────────────┘└───┘
89
+ >>> print(prep)
90
+ ┌───┐┌──────────┐ ┌───────────┐
91
+ q_0: ┤ H ├┤ RX(pi/2) ├──■───────────────────────────────────────■──┤ RX(-pi/2) ├
92
+ ├───┤└──────────┘┌─┴─┐┌─────────────────────────────────┐┌─┴─┐└───────────┘
93
+ q_1: ┤ H ├────────────┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├─────────────
94
+ └───┘ └───┘└─────────────────────────────────┘└───┘
394
95
 
395
96
  >>> from qiskit.circuit.library import EfficientSU2
396
97
  >>> prep = PauliFeatureMap(3, reps=3, paulis=['Z', 'YY', 'ZXZ'])
@@ -403,18 +104,13 @@ class PauliFeatureMap(NLocal):
403
104
 
404
105
  References:
405
106
 
107
+
108
+
406
109
  [1] Havlicek et al. Supervised learning with quantum enhanced feature spaces,
407
110
  `Nature 567, 209-212 (2019) <https://www.nature.com/articles/s41586-019-0980-2>`__.
111
+
408
112
  """
409
113
 
410
- @deprecate_func(
411
- since="1.3",
412
- additional_msg=(
413
- "Use the pauli_feature_map function as a replacement. Note that this will no longer "
414
- "return a BlueprintCircuit, but just a plain QuantumCircuit."
415
- ),
416
- pending=True,
417
- )
418
114
  def __init__(
419
115
  self,
420
116
  feature_dimension: Optional[int] = None,
@@ -465,7 +161,6 @@ class PauliFeatureMap(NLocal):
465
161
  name=name,
466
162
  )
467
163
 
468
- self._prefix = parameter_prefix
469
164
  self._data_map_func = data_map_func or self_product
470
165
  self._paulis = paulis or ["Z", "ZZ"]
471
166
  self._alpha = alpha
@@ -522,11 +217,6 @@ class PauliFeatureMap(NLocal):
522
217
 
523
218
  @property
524
219
  def entanglement_blocks(self):
525
- """The blocks in the entanglement layers.
526
-
527
- Returns:
528
- The blocks in the entanglement layers.
529
- """
530
220
  return [self.pauli_block(pauli) for pauli in self._paulis]
531
221
 
532
222
  @entanglement_blocks.setter
@@ -585,10 +275,7 @@ class PauliFeatureMap(NLocal):
585
275
  if pauli == "X":
586
276
  circuit.h(i)
587
277
  elif pauli == "Y":
588
- if inverse:
589
- circuit.sxdg(i)
590
- else:
591
- circuit.sx(i)
278
+ circuit.rx(-np.pi / 2 if inverse else np.pi / 2, i)
592
279
 
593
280
  def cx_chain(circuit, inverse=False):
594
281
  num_cx = len(indices) - 1
@@ -14,7 +14,6 @@
14
14
 
15
15
  from typing import Callable, Optional
16
16
  import numpy as np
17
- from qiskit.utils.deprecation import deprecate_func
18
17
 
19
18
  from .pauli_feature_map import PauliFeatureMap
20
19
 
@@ -24,15 +23,15 @@ class ZFeatureMap(PauliFeatureMap):
24
23
 
25
24
  On 3 qubits and with 2 repetitions the circuit is represented by:
26
25
 
27
- .. code-block:: text
26
+ .. parsed-literal::
28
27
 
29
- ┌───┐┌─────────────┐┌───┐┌─────────────┐
30
- ┤ H ├┤ P(2.0*x[0]) ├┤ H ├┤ P(2.0*x[0]) ├
31
- ├───┤├─────────────┤├───┤├─────────────┤
32
- ┤ H ├┤ U(2.0*x[1]) ├┤ H ├┤ P(2.0*x[1]) ├
33
- ├───┤├─────────────┤├───┤├─────────────┤
34
- ┤ H ├┤ P(2.0*x[2]) ├┤ H ├┤ P(2.0*x[2]) ├
35
- └───┘└─────────────┘└───┘└─────────────┘
28
+ ┌───┐┌──────────────┐┌───┐┌──────────────┐
29
+ ┤ H ├┤ U1(2.0*x[0]) ├┤ H ├┤ U1(2.0*x[0]) ├
30
+ ├───┤├──────────────┤├───┤├──────────────┤
31
+ ┤ H ├┤ U1(2.0*x[1]) ├┤ H ├┤ U1(2.0*x[1]) ├
32
+ ├───┤├──────────────┤├───┤├──────────────┤
33
+ ┤ H ├┤ U1(2.0*x[2]) ├┤ H ├┤ U1(2.0*x[2]) ├
34
+ └───┘└──────────────┘└───┘└──────────────┘
36
35
 
37
36
  This is a sub-class of :class:`~qiskit.circuit.library.PauliFeatureMap` where the Pauli
38
37
  strings are fixed as `['Z']`. As a result the first order expansion will be a circuit without
@@ -41,48 +40,38 @@ class ZFeatureMap(PauliFeatureMap):
41
40
  Examples:
42
41
 
43
42
  >>> prep = ZFeatureMap(3, reps=3, insert_barriers=True)
44
- >>> print(prep.decompose())
45
- ┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐
46
- q_0: ┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├
47
- ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
48
- q_1: ┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├
49
- ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
50
- q_2: ┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├
51
- └───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘
43
+ >>> print(prep)
44
+ ┌───┐ ░ ┌──────────────┐ ░ ┌───┐ ░ ┌──────────────┐ ░ ┌───┐ ░ ┌──────────────┐
45
+ q_0: ┤ H ├─░─┤ U1(2.0*x[0]) ├─░─┤ H ├─░─┤ U1(2.0*x[0]) ├─░─┤ H ├─░─┤ U1(2.0*x[0]) ├
46
+ ├───┤ ░ ├──────────────┤ ░ ├───┤ ░ ├──────────────┤ ░ ├───┤ ░ ├──────────────┤
47
+ q_1: ┤ H ├─░─┤ U1(2.0*x[1]) ├─░─┤ H ├─░─┤ U1(2.0*x[1]) ├─░─┤ H ├─░─┤ U1(2.0*x[1]) ├
48
+ ├───┤ ░ ├──────────────┤ ░ ├───┤ ░ ├──────────────┤ ░ ├───┤ ░ ├──────────────┤
49
+ q_2: ┤ H ├─░─┤ U1(2.0*x[2]) ├─░─┤ H ├─░─┤ U1(2.0*x[2]) ├─░─┤ H ├─░─┤ U1(2.0*x[2]) ├
50
+ └───┘ ░ └──────────────┘ ░ └───┘ ░ └──────────────┘ ░ └───┘ ░ └──────────────┘
52
51
 
53
52
  >>> data_map = lambda x: x[0]*x[0] + 1 # note: input is an array
54
53
  >>> prep = ZFeatureMap(3, reps=1, data_map_func=data_map)
55
- >>> print(prep.decompose())
56
- ┌───┐┌──────────────────────┐
57
- q_0: ┤ H ├┤ P(2.0*x[0]**2 + 2.0) ├
58
- ├───┤├──────────────────────┤
59
- q_1: ┤ H ├┤ P(2.0*x[1]**2 + 2.0) ├
60
- ├───┤├──────────────────────┤
61
- q_2: ┤ H ├┤ P(2.0*x[2]**2 + 2.0) ├
62
- └───┘└──────────────────────┘
63
-
64
- >>> from qiskit.circuit.library import TwoLocal
65
- >>> ry = TwoLocal(3, "ry", "cz", reps=1)
66
- >>> classifier = ZFeatureMap(3, reps=1) + ry
67
- >>> print(classifier.decompose())
68
- ┌───┐┌─────────────┐┌──────────┐ ┌──────────┐
69
- q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ RY(θ[0]) ├─■──■─┤ RY(θ[3]) ├────────────
70
- ├───┤├─────────────┤├──────────┤ └──────────┘┌──────────┐
71
- q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ RY(θ[1]) ├─■──┼──────■──────┤ RY(θ[4]) ├
72
- ├───┤├─────────────┤├──────────┤ │ │ ├──────────┤
73
- q_2: ┤ H ├┤ P(2.0*x[2]) ├┤ RY(θ[2]) ├────■──────■──────┤ RY(θ[5]) ├
74
- └───┘└─────────────┘└──────────┘ └──────────┘
54
+ >>> print(prep)
55
+ ┌───┐┌───────────────────────┐
56
+ q_0: ┤ H ├┤ U1(2.0*x[0]**2 + 2.0) ├
57
+ ├───┤├───────────────────────┤
58
+ q_1: ┤ H ├┤ U1(2.0*x[1]**2 + 2.0) ├
59
+ ├───┤├───────────────────────┤
60
+ q_2: ┤ H ├┤ U1(2.0*x[2]**2 + 2.0) ├
61
+ └───┘└───────────────────────┘
62
+
63
+ >>> classifier = ZFeatureMap(3, reps=1) + RY(3, reps=1)
64
+ >>> print(classifier)
65
+ ┌───┐┌──────────────┐┌──────────┐ ┌──────────┐
66
+ q_0: ┤ H ├┤ U1(2.0*x[0]) ├┤ RY(θ[0]) ├─■──■─┤ RY(θ[3]) ├────────────
67
+ ├───┤├──────────────┤├──────────┤ │ │ └──────────┘┌──────────┐
68
+ q_1: ┤ H ├┤ U1(2.0*x[1]) ├┤ RY(θ[1]) ├─■──┼──────■──────┤ RY(θ[4])
69
+ ├───┤├──────────────┤├──────────┤ ├──────────┤
70
+ q_2: ┤ H ├┤ U1(2.0*x[2]) ├┤ RY(θ[2]) ├────■──────■──────┤ RY(θ[5]) ├
71
+ └───┘└──────────────┘└──────────┘ └──────────┘
75
72
 
76
73
  """
77
74
 
78
- @deprecate_func(
79
- since="1.3",
80
- additional_msg=(
81
- "Use the z_feature_map function as a replacement. Note that this will no longer "
82
- "return a BlueprintCircuit, but just a plain QuantumCircuit."
83
- ),
84
- pending=True,
85
- )
86
75
  def __init__(
87
76
  self,
88
77
  feature_dimension: int,