qiskit 1.4.1__cp39-abi3-macosx_11_0_arm64.whl → 2.0.0rc1__cp39-abi3-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +2 -5
  3. qiskit/_accelerate.abi3.so +0 -0
  4. qiskit/circuit/__init__.py +24 -5
  5. qiskit/circuit/{add_control.py → _add_control.py} +32 -12
  6. qiskit/circuit/_classical_resource_map.py +5 -3
  7. qiskit/circuit/barrier.py +3 -7
  8. qiskit/circuit/classical/expr/__init__.py +31 -3
  9. qiskit/circuit/classical/expr/constructors.py +248 -28
  10. qiskit/circuit/classical/expr/expr.py +104 -3
  11. qiskit/circuit/classical/expr/visitors.py +75 -0
  12. qiskit/circuit/classical/types/__init__.py +12 -8
  13. qiskit/circuit/classical/types/ordering.py +14 -7
  14. qiskit/circuit/classical/types/types.py +36 -0
  15. qiskit/circuit/commutation_checker.py +34 -7
  16. qiskit/circuit/controlflow/__init__.py +32 -1
  17. qiskit/circuit/controlflow/_builder_utils.py +9 -5
  18. qiskit/circuit/controlflow/box.py +163 -0
  19. qiskit/circuit/controlflow/break_loop.py +1 -1
  20. qiskit/circuit/controlflow/builder.py +139 -39
  21. qiskit/circuit/controlflow/continue_loop.py +1 -3
  22. qiskit/circuit/controlflow/control_flow.py +10 -0
  23. qiskit/circuit/controlflow/for_loop.py +2 -1
  24. qiskit/circuit/controlflow/if_else.py +3 -16
  25. qiskit/circuit/controlflow/switch_case.py +2 -8
  26. qiskit/circuit/controlflow/while_loop.py +2 -7
  27. qiskit/circuit/controlledgate.py +2 -4
  28. qiskit/circuit/delay.py +40 -11
  29. qiskit/circuit/duration.py +0 -15
  30. qiskit/circuit/gate.py +2 -4
  31. qiskit/circuit/instruction.py +2 -141
  32. qiskit/circuit/instructionset.py +7 -54
  33. qiskit/circuit/library/__init__.py +34 -5
  34. qiskit/circuit/library/arithmetic/__init__.py +16 -10
  35. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  36. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +2 -2
  37. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
  38. qiskit/circuit/library/arithmetic/exact_reciprocal.py +64 -21
  39. qiskit/circuit/library/arithmetic/integer_comparator.py +37 -80
  40. qiskit/circuit/library/arithmetic/linear_amplitude_function.py +169 -2
  41. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +59 -5
  42. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +154 -6
  43. qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +114 -4
  44. qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +191 -15
  45. qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +93 -39
  46. qiskit/circuit/library/arithmetic/quadratic_form.py +168 -2
  47. qiskit/circuit/library/arithmetic/weighted_adder.py +73 -1
  48. qiskit/circuit/library/bit_flip_oracle.py +130 -0
  49. qiskit/circuit/library/blueprintcircuit.py +52 -16
  50. qiskit/circuit/library/data_preparation/initializer.py +1 -1
  51. qiskit/circuit/library/data_preparation/pauli_feature_map.py +4 -4
  52. qiskit/circuit/library/data_preparation/state_preparation.py +1 -1
  53. qiskit/circuit/library/generalized_gates/gms.py +1 -1
  54. qiskit/circuit/library/generalized_gates/isometry.py +1 -1
  55. qiskit/circuit/library/generalized_gates/pauli.py +1 -2
  56. qiskit/circuit/library/generalized_gates/uc.py +97 -7
  57. qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +1 -1
  58. qiskit/circuit/library/generalized_gates/unitary.py +4 -2
  59. qiskit/circuit/library/hamiltonian_gate.py +1 -1
  60. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  61. qiskit/circuit/library/n_local/n_local.py +1 -1
  62. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
  63. qiskit/circuit/library/overlap.py +2 -2
  64. qiskit/circuit/library/pauli_evolution.py +39 -24
  65. qiskit/circuit/library/phase_oracle.py +130 -51
  66. qiskit/circuit/library/standard_gates/__init__.py +0 -1
  67. qiskit/circuit/library/standard_gates/dcx.py +3 -4
  68. qiskit/circuit/library/standard_gates/ecr.py +3 -4
  69. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  70. qiskit/circuit/library/standard_gates/h.py +4 -9
  71. qiskit/circuit/library/standard_gates/i.py +2 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +3 -4
  73. qiskit/circuit/library/standard_gates/p.py +15 -34
  74. qiskit/circuit/library/standard_gates/r.py +2 -6
  75. qiskit/circuit/library/standard_gates/rx.py +5 -15
  76. qiskit/circuit/library/standard_gates/rxx.py +3 -6
  77. qiskit/circuit/library/standard_gates/ry.py +5 -17
  78. qiskit/circuit/library/standard_gates/ryy.py +3 -6
  79. qiskit/circuit/library/standard_gates/rz.py +5 -17
  80. qiskit/circuit/library/standard_gates/rzx.py +3 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +3 -6
  82. qiskit/circuit/library/standard_gates/s.py +6 -15
  83. qiskit/circuit/library/standard_gates/swap.py +4 -11
  84. qiskit/circuit/library/standard_gates/sx.py +7 -12
  85. qiskit/circuit/library/standard_gates/t.py +6 -7
  86. qiskit/circuit/library/standard_gates/u.py +2 -10
  87. qiskit/circuit/library/standard_gates/u1.py +5 -16
  88. qiskit/circuit/library/standard_gates/u2.py +2 -6
  89. qiskit/circuit/library/standard_gates/u3.py +3 -11
  90. qiskit/circuit/library/standard_gates/x.py +13 -60
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
  93. qiskit/circuit/library/standard_gates/y.py +4 -9
  94. qiskit/circuit/library/standard_gates/z.py +5 -15
  95. qiskit/circuit/measure.py +11 -2
  96. qiskit/circuit/parameterexpression.py +4 -0
  97. qiskit/circuit/quantumcircuit.py +881 -555
  98. qiskit/circuit/random/utils.py +12 -6
  99. qiskit/circuit/reset.py +5 -2
  100. qiskit/circuit/singleton.py +5 -11
  101. qiskit/circuit/store.py +0 -8
  102. qiskit/compiler/__init__.py +1 -7
  103. qiskit/compiler/transpiler.py +38 -196
  104. qiskit/converters/circuit_to_dag.py +4 -2
  105. qiskit/converters/circuit_to_dagdependency.py +0 -2
  106. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  107. qiskit/converters/circuit_to_gate.py +1 -1
  108. qiskit/converters/circuit_to_instruction.py +16 -29
  109. qiskit/converters/dag_to_circuit.py +5 -5
  110. qiskit/converters/dag_to_dagdependency.py +0 -1
  111. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  112. qiskit/converters/dagdependency_to_circuit.py +0 -6
  113. qiskit/converters/dagdependency_to_dag.py +0 -6
  114. qiskit/dagcircuit/collect_blocks.py +32 -20
  115. qiskit/dagcircuit/dagdependency.py +3 -37
  116. qiskit/dagcircuit/dagdependency_v2.py +2 -80
  117. qiskit/dagcircuit/dagnode.py +14 -2
  118. qiskit/passmanager/__init__.py +24 -6
  119. qiskit/passmanager/passmanager.py +26 -24
  120. qiskit/primitives/__init__.py +44 -35
  121. qiskit/primitives/backend_estimator_v2.py +102 -23
  122. qiskit/primitives/backend_sampler_v2.py +5 -20
  123. qiskit/primitives/base/__init__.py +4 -4
  124. qiskit/primitives/base/base_estimator.py +77 -82
  125. qiskit/primitives/base/base_primitive_job.py +2 -2
  126. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  127. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  128. qiskit/primitives/base/base_sampler.py +52 -60
  129. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  130. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  131. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  132. qiskit/primitives/containers/bindings_array.py +3 -1
  133. qiskit/primitives/containers/bit_array.py +23 -0
  134. qiskit/primitives/containers/data_bin.py +3 -1
  135. qiskit/primitives/containers/observables_array.py +19 -2
  136. qiskit/primitives/statevector_sampler.py +6 -8
  137. qiskit/primitives/utils.py +14 -189
  138. qiskit/providers/__init__.py +4 -130
  139. qiskit/providers/backend.py +11 -314
  140. qiskit/providers/basic_provider/__init__.py +3 -1
  141. qiskit/providers/basic_provider/basic_provider.py +29 -9
  142. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  143. qiskit/providers/exceptions.py +0 -33
  144. qiskit/providers/fake_provider/__init__.py +0 -37
  145. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  146. qiskit/qasm2/__init__.py +21 -6
  147. qiskit/qasm2/export.py +2 -10
  148. qiskit/qasm2/parse.py +11 -25
  149. qiskit/qasm3/__init__.py +5 -1
  150. qiskit/qasm3/ast.py +44 -0
  151. qiskit/qasm3/exporter.py +65 -27
  152. qiskit/qasm3/printer.py +35 -4
  153. qiskit/qpy/__init__.py +141 -19
  154. qiskit/qpy/binary_io/__init__.py +0 -1
  155. qiskit/qpy/binary_io/circuits.py +91 -116
  156. qiskit/qpy/binary_io/schedules.py +61 -388
  157. qiskit/qpy/binary_io/value.py +154 -28
  158. qiskit/qpy/common.py +10 -7
  159. qiskit/qpy/formats.py +41 -0
  160. qiskit/qpy/interface.py +29 -62
  161. qiskit/qpy/type_keys.py +58 -221
  162. qiskit/quantum_info/analysis/distance.py +3 -1
  163. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  164. qiskit/quantum_info/operators/operator.py +6 -2
  165. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  166. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  167. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  168. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  169. qiskit/quantum_info/states/densitymatrix.py +16 -6
  170. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  171. qiskit/quantum_info/states/statevector.py +16 -6
  172. qiskit/result/__init__.py +5 -17
  173. qiskit/result/models.py +18 -10
  174. qiskit/result/result.py +28 -126
  175. qiskit/result/sampled_expval.py +1 -2
  176. qiskit/result/utils.py +3 -4
  177. qiskit/synthesis/__init__.py +21 -1
  178. qiskit/synthesis/arithmetic/__init__.py +3 -1
  179. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  180. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  181. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  182. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  183. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  184. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  185. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  186. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  187. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  188. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  189. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  190. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  191. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  192. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +2 -0
  193. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  194. qiskit/synthesis/evolution/product_formula.py +44 -35
  195. qiskit/synthesis/evolution/qdrift.py +17 -24
  196. qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
  197. qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
  198. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
  199. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  200. qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
  201. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
  202. qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
  203. qiskit/synthesis/two_qubit/__init__.py +1 -0
  204. qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
  205. qiskit/transpiler/__init__.py +32 -232
  206. qiskit/transpiler/basepasses.py +20 -51
  207. qiskit/transpiler/layout.py +1 -1
  208. qiskit/transpiler/passes/__init__.py +2 -40
  209. qiskit/transpiler/passes/basis/basis_translator.py +4 -3
  210. qiskit/transpiler/passes/basis/decompose.py +1 -15
  211. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
  212. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
  213. qiskit/transpiler/passes/layout/apply_layout.py +4 -0
  214. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  215. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +4 -4
  216. qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
  217. qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
  218. qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
  219. qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
  220. qiskit/transpiler/passes/optimization/__init__.py +1 -3
  221. qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
  222. qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
  223. qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
  224. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
  225. qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
  226. qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
  227. qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
  228. qiskit/transpiler/passes/optimization/light_cone.py +135 -0
  229. qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
  230. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
  231. qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
  232. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
  233. qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
  234. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
  235. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
  236. qiskit/transpiler/passes/routing/__init__.py +0 -1
  237. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
  238. qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
  239. qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
  240. qiskit/transpiler/passes/scheduling/__init__.py +1 -7
  241. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
  242. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
  243. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
  244. qiskit/transpiler/passes/scheduling/padding/base_padding.py +30 -2
  245. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -58
  246. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +11 -3
  247. qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
  248. qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
  249. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
  250. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +127 -59
  251. qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
  252. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
  253. qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
  254. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  255. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
  256. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
  257. qiskit/transpiler/passes/utils/__init__.py +0 -1
  258. qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
  259. qiskit/transpiler/passes/utils/control_flow.py +2 -6
  260. qiskit/transpiler/passes/utils/gate_direction.py +7 -0
  261. qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
  262. qiskit/transpiler/passmanager.py +13 -0
  263. qiskit/transpiler/passmanager_config.py +5 -81
  264. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
  265. qiskit/transpiler/preset_passmanagers/common.py +140 -167
  266. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +101 -322
  267. qiskit/transpiler/preset_passmanagers/level0.py +2 -11
  268. qiskit/transpiler/preset_passmanagers/level1.py +2 -14
  269. qiskit/transpiler/preset_passmanagers/level2.py +2 -12
  270. qiskit/transpiler/preset_passmanagers/level3.py +2 -11
  271. qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
  272. qiskit/transpiler/target.py +67 -524
  273. qiskit/user_config.py +8 -4
  274. qiskit/utils/__init__.py +13 -12
  275. qiskit/utils/deprecation.py +4 -112
  276. qiskit/utils/optionals.py +11 -4
  277. qiskit/utils/parallel.py +214 -87
  278. qiskit/utils/units.py +4 -1
  279. qiskit/visualization/__init__.py +3 -7
  280. qiskit/visualization/array.py +4 -1
  281. qiskit/visualization/bloch.py +1 -1
  282. qiskit/visualization/circuit/_utils.py +19 -19
  283. qiskit/visualization/circuit/circuit_visualization.py +11 -4
  284. qiskit/visualization/circuit/matplotlib.py +13 -23
  285. qiskit/visualization/circuit/text.py +7 -3
  286. qiskit/visualization/dag_visualization.py +2 -1
  287. qiskit/visualization/gate_map.py +39 -154
  288. qiskit/visualization/pass_manager_visualization.py +6 -2
  289. qiskit/visualization/state_visualization.py +6 -0
  290. qiskit/visualization/timeline/core.py +18 -12
  291. qiskit/visualization/timeline/interface.py +19 -18
  292. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/METADATA +2 -2
  293. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/RECORD +297 -444
  294. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/WHEEL +2 -1
  295. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/entry_points.txt +8 -2
  296. qiskit/assembler/__init__.py +0 -42
  297. qiskit/assembler/assemble_circuits.py +0 -451
  298. qiskit/assembler/assemble_schedules.py +0 -367
  299. qiskit/assembler/disassemble.py +0 -310
  300. qiskit/assembler/run_config.py +0 -77
  301. qiskit/circuit/bit.py +0 -106
  302. qiskit/circuit/classicalfunction/__init__.py +0 -152
  303. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  304. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  305. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  306. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  307. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  308. qiskit/circuit/classicalfunction/types.py +0 -18
  309. qiskit/circuit/classicalfunction/utils.py +0 -91
  310. qiskit/circuit/classicalregister.py +0 -57
  311. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  312. qiskit/circuit/quantumregister.py +0 -75
  313. qiskit/circuit/register.py +0 -246
  314. qiskit/compiler/assembler.py +0 -689
  315. qiskit/compiler/scheduler.py +0 -109
  316. qiskit/compiler/sequencer.py +0 -71
  317. qiskit/primitives/backend_estimator.py +0 -486
  318. qiskit/primitives/backend_sampler.py +0 -222
  319. qiskit/primitives/estimator.py +0 -172
  320. qiskit/primitives/sampler.py +0 -162
  321. qiskit/providers/backend_compat.py +0 -507
  322. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  323. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  324. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  325. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  326. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  327. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  328. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  330. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  332. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  333. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  335. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  337. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  338. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  339. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  340. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  341. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  342. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  343. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  344. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  345. qiskit/providers/fake_provider/fake_1q.py +0 -91
  346. qiskit/providers/fake_provider/fake_backend.py +0 -165
  347. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  348. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  349. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  350. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  351. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  352. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  353. qiskit/providers/models/__init__.py +0 -89
  354. qiskit/providers/models/backendconfiguration.py +0 -1040
  355. qiskit/providers/models/backendproperties.py +0 -535
  356. qiskit/providers/models/backendstatus.py +0 -104
  357. qiskit/providers/models/jobstatus.py +0 -77
  358. qiskit/providers/models/pulsedefaults.py +0 -305
  359. qiskit/providers/provider.py +0 -95
  360. qiskit/pulse/__init__.py +0 -158
  361. qiskit/pulse/builder.py +0 -2262
  362. qiskit/pulse/calibration_entries.py +0 -381
  363. qiskit/pulse/channels.py +0 -227
  364. qiskit/pulse/configuration.py +0 -245
  365. qiskit/pulse/exceptions.py +0 -45
  366. qiskit/pulse/filters.py +0 -309
  367. qiskit/pulse/instruction_schedule_map.py +0 -424
  368. qiskit/pulse/instructions/__init__.py +0 -67
  369. qiskit/pulse/instructions/acquire.py +0 -150
  370. qiskit/pulse/instructions/delay.py +0 -71
  371. qiskit/pulse/instructions/directives.py +0 -154
  372. qiskit/pulse/instructions/frequency.py +0 -135
  373. qiskit/pulse/instructions/instruction.py +0 -270
  374. qiskit/pulse/instructions/phase.py +0 -152
  375. qiskit/pulse/instructions/play.py +0 -99
  376. qiskit/pulse/instructions/reference.py +0 -100
  377. qiskit/pulse/instructions/snapshot.py +0 -82
  378. qiskit/pulse/library/__init__.py +0 -97
  379. qiskit/pulse/library/continuous.py +0 -430
  380. qiskit/pulse/library/pulse.py +0 -148
  381. qiskit/pulse/library/samplers/__init__.py +0 -15
  382. qiskit/pulse/library/samplers/decorators.py +0 -295
  383. qiskit/pulse/library/samplers/strategies.py +0 -71
  384. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  385. qiskit/pulse/library/waveform.py +0 -136
  386. qiskit/pulse/macros.py +0 -262
  387. qiskit/pulse/parameter_manager.py +0 -445
  388. qiskit/pulse/parser.py +0 -314
  389. qiskit/pulse/reference_manager.py +0 -58
  390. qiskit/pulse/schedule.py +0 -1854
  391. qiskit/pulse/transforms/__init__.py +0 -106
  392. qiskit/pulse/transforms/alignments.py +0 -406
  393. qiskit/pulse/transforms/base_transforms.py +0 -71
  394. qiskit/pulse/transforms/canonicalization.py +0 -498
  395. qiskit/pulse/transforms/dag.py +0 -122
  396. qiskit/pulse/utils.py +0 -149
  397. qiskit/qobj/__init__.py +0 -75
  398. qiskit/qobj/common.py +0 -81
  399. qiskit/qobj/converters/__init__.py +0 -18
  400. qiskit/qobj/converters/lo_config.py +0 -177
  401. qiskit/qobj/converters/pulse_instruction.py +0 -897
  402. qiskit/qobj/pulse_qobj.py +0 -709
  403. qiskit/qobj/qasm_qobj.py +0 -708
  404. qiskit/qobj/utils.py +0 -46
  405. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  406. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  407. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  408. qiskit/result/mitigation/utils.py +0 -217
  409. qiskit/scheduler/__init__.py +0 -40
  410. qiskit/scheduler/config.py +0 -37
  411. qiskit/scheduler/lowering.py +0 -187
  412. qiskit/scheduler/methods/__init__.py +0 -15
  413. qiskit/scheduler/methods/basic.py +0 -140
  414. qiskit/scheduler/schedule_circuit.py +0 -69
  415. qiskit/scheduler/sequence.py +0 -104
  416. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  417. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  418. qiskit/transpiler/passes/calibration/builders.py +0 -20
  419. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  420. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  421. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  422. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  423. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  424. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  425. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  426. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  427. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  428. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  429. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  430. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  431. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  432. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  433. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  434. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  435. qiskit/utils/deprecate_pulse.py +0 -119
  436. qiskit/utils/multiprocessing.py +0 -56
  437. qiskit/visualization/pulse_v2/__init__.py +0 -21
  438. qiskit/visualization/pulse_v2/core.py +0 -901
  439. qiskit/visualization/pulse_v2/device_info.py +0 -173
  440. qiskit/visualization/pulse_v2/drawings.py +0 -253
  441. qiskit/visualization/pulse_v2/events.py +0 -254
  442. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  443. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  444. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  445. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  446. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  447. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  448. qiskit/visualization/pulse_v2/interface.py +0 -459
  449. qiskit/visualization/pulse_v2/layouts.py +0 -387
  450. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  451. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  452. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  453. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  454. qiskit/visualization/pulse_v2/types.py +0 -242
  455. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/LICENSE.txt +0 -0
  456. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -1,136 +0,0 @@
1
- # This code is part of Qiskit.
2
- #
3
- # (C) Copyright IBM 2020.
4
- #
5
- # This code is licensed under the Apache License, Version 2.0. You may
6
- # obtain a copy of this license in the LICENSE.txt file in the root directory
7
- # of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
8
- #
9
- # Any modifications or derivative works of this code must retain this
10
- # copyright notice, and modified files need to carry a notice indicating
11
- # that they have been altered from the originals.
12
-
13
- """A pulse that is described by complex-valued sample points."""
14
- from __future__ import annotations
15
- from typing import Any
16
-
17
- import numpy as np
18
-
19
- from qiskit.pulse.exceptions import PulseError
20
- from qiskit.pulse.library.pulse import Pulse
21
- from qiskit.utils.deprecate_pulse import deprecate_pulse_func
22
-
23
-
24
- class Waveform(Pulse):
25
- """A pulse specified completely by complex-valued samples; each sample is played for the
26
- duration of the backend cycle-time, dt.
27
- """
28
-
29
- @deprecate_pulse_func
30
- def __init__(
31
- self,
32
- samples: np.ndarray | list[complex],
33
- name: str | None = None,
34
- epsilon: float = 1e-7,
35
- limit_amplitude: bool | None = None,
36
- ):
37
- """Create new sample pulse command.
38
-
39
- Args:
40
- samples: Complex array of the samples in the pulse envelope.
41
- name: Unique name to identify the pulse.
42
- epsilon: Pulse sample norm tolerance for clipping.
43
- If any sample's norm exceeds unity by less than or equal to epsilon
44
- it will be clipped to unit norm. If the sample
45
- norm is greater than 1+epsilon an error will be raised.
46
- limit_amplitude: Passed to parent Pulse
47
- """
48
-
49
- super().__init__(duration=len(samples), name=name, limit_amplitude=limit_amplitude)
50
- samples = np.asarray(samples, dtype=np.complex128)
51
- self.epsilon = epsilon
52
- self._samples = self._clip(samples, epsilon=epsilon)
53
-
54
- @property
55
- def samples(self) -> np.ndarray:
56
- """Return sample values."""
57
- return self._samples
58
-
59
- def _clip(self, samples: np.ndarray, epsilon: float = 1e-7) -> np.ndarray:
60
- """If samples are within epsilon of unit norm, clip sample by reducing norm by (1-epsilon).
61
-
62
- If difference is greater than epsilon error is raised.
63
-
64
- Args:
65
- samples: Complex array of the samples in the pulse envelope.
66
- epsilon: Pulse sample norm tolerance for clipping.
67
- If any sample's norm exceeds unity by less than or equal to epsilon
68
- it will be clipped to unit norm. If the sample
69
- norm is greater than 1+epsilon an error will be raised.
70
-
71
- Returns:
72
- Clipped pulse samples.
73
-
74
- Raises:
75
- PulseError: If there exists a pulse sample with a norm greater than 1+epsilon.
76
- """
77
- samples_norm = np.abs(samples)
78
- to_clip = (samples_norm > 1.0) & (samples_norm <= 1.0 + epsilon)
79
-
80
- if np.any(to_clip):
81
- # first try normalizing by the abs value
82
- clip_where = np.argwhere(to_clip)
83
- clip_angle = np.angle(samples[clip_where])
84
- clipped_samples = np.exp(1j * clip_angle, dtype=np.complex128)
85
-
86
- # if norm still exceed one subtract epsilon
87
- # required for some platforms
88
- clipped_sample_norms = np.abs(clipped_samples)
89
- to_clip_epsilon = clipped_sample_norms > 1.0
90
- if np.any(to_clip_epsilon):
91
- clip_where_epsilon = np.argwhere(to_clip_epsilon)
92
- clipped_samples_epsilon = (1 - epsilon) * np.exp(
93
- 1j * clip_angle[clip_where_epsilon], dtype=np.complex128
94
- )
95
- clipped_samples[clip_where_epsilon] = clipped_samples_epsilon
96
-
97
- # update samples with clipped values
98
- samples[clip_where] = clipped_samples
99
- samples_norm[clip_where] = np.abs(clipped_samples)
100
-
101
- if np.any(samples_norm > 1.0) and self._limit_amplitude:
102
- amp = np.max(samples_norm)
103
- raise PulseError(
104
- f"Pulse contains sample with norm {amp} greater than 1+epsilon."
105
- " This can be overruled by setting Pulse.limit_amplitude."
106
- )
107
-
108
- return samples
109
-
110
- def is_parameterized(self) -> bool:
111
- """Return True iff the instruction is parameterized."""
112
- return False
113
-
114
- @property
115
- def parameters(self) -> dict[str, Any]:
116
- """Return a dictionary containing the pulse's parameters."""
117
- return {}
118
-
119
- def __eq__(self, other: object) -> bool:
120
- if not isinstance(other, Waveform):
121
- return NotImplemented
122
- return (
123
- super().__eq__(other)
124
- and self.samples.shape == other.samples.shape
125
- and np.allclose(self.samples, other.samples, rtol=0, atol=self.epsilon)
126
- )
127
-
128
- def __hash__(self) -> int:
129
- return hash(self.samples.tobytes())
130
-
131
- def __repr__(self) -> str:
132
- opt = np.get_printoptions()
133
- np.set_printoptions(threshold=50)
134
- np.set_printoptions(**opt)
135
- name_repr = f", name='{self.name}'" if self.name is not None else ""
136
- return f"{self.__class__.__name__}({repr(self.samples)}{name_repr})"
qiskit/pulse/macros.py DELETED
@@ -1,262 +0,0 @@
1
- # This code is part of Qiskit.
2
- #
3
- # (C) Copyright IBM 2020.
4
- #
5
- # This code is licensed under the Apache License, Version 2.0. You may
6
- # obtain a copy of this license in the LICENSE.txt file in the root directory
7
- # of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
8
- #
9
- # Any modifications or derivative works of this code must retain this
10
- # copyright notice, and modified files need to carry a notice indicating
11
- # that they have been altered from the originals.
12
-
13
- """Module for common pulse programming macros."""
14
- from __future__ import annotations
15
-
16
- from collections.abc import Sequence
17
- from typing import TYPE_CHECKING
18
-
19
- from qiskit.pulse import channels, exceptions, instructions, utils
20
- from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap
21
- from qiskit.pulse.schedule import Schedule
22
- from qiskit.providers.backend import BackendV2
23
-
24
-
25
- if TYPE_CHECKING:
26
- from qiskit.transpiler import Target
27
-
28
-
29
- def measure(
30
- qubits: Sequence[int],
31
- backend=None,
32
- inst_map: InstructionScheduleMap | None = None,
33
- meas_map: list[list[int]] | dict[int, list[int]] | None = None,
34
- qubit_mem_slots: dict[int, int] | None = None,
35
- measure_name: str = "measure",
36
- ) -> Schedule:
37
- """Return a schedule which measures the requested qubits according to the given
38
- instruction mapping and measure map, or by using the defaults provided by the backend.
39
-
40
- .. note::
41
- This function internally dispatches schedule generation logic depending on input backend model.
42
- For the :class:`.BackendV1`, it considers conventional :class:`.InstructionScheduleMap`
43
- and utilizes the backend calibration defined for a group of qubits in the `meas_map`.
44
- For the :class:`.BackendV2`, it assembles calibrations of single qubit measurement
45
- defined in the backend target to build a composite measurement schedule for `qubits`.
46
-
47
- By default, the measurement results for each qubit are trivially mapped to the qubit
48
- index. This behavior is overridden by qubit_mem_slots. For instance, to measure
49
- qubit 0 into MemorySlot(1), qubit_mem_slots can be provided as {0: 1}.
50
-
51
- Args:
52
- qubits: List of qubits to be measured.
53
- backend (Union[Backend, BaseBackend]): A backend instance, which contains
54
- hardware-specific data required for scheduling.
55
- inst_map: Mapping of circuit operations to pulse schedules. If None, defaults to the
56
- ``instruction_schedule_map`` of ``backend``.
57
- meas_map: List of sets of qubits that must be measured together. If None, defaults to
58
- the ``meas_map`` of ``backend``.
59
- qubit_mem_slots: Mapping of measured qubit index to classical bit index.
60
- measure_name: Name of the measurement schedule.
61
-
62
- Returns:
63
- A measurement schedule corresponding to the inputs provided.
64
- """
65
-
66
- # backend is V2.
67
- if isinstance(backend, BackendV2):
68
-
69
- return _measure_v2(
70
- qubits=qubits,
71
- target=backend.target,
72
- meas_map=meas_map or backend.meas_map,
73
- qubit_mem_slots=qubit_mem_slots or dict(zip(qubits, range(len(qubits)))),
74
- measure_name=measure_name,
75
- )
76
- # backend is V1 or backend is None.
77
- else:
78
- try:
79
- return _measure_v1(
80
- qubits=qubits,
81
- inst_map=inst_map or backend.defaults().instruction_schedule_map,
82
- meas_map=meas_map or backend.configuration().meas_map,
83
- qubit_mem_slots=qubit_mem_slots,
84
- measure_name=measure_name,
85
- )
86
- except AttributeError as ex:
87
- raise exceptions.PulseError(
88
- "inst_map or meas_map, and backend cannot be None simultaneously"
89
- ) from ex
90
-
91
-
92
- def _measure_v1(
93
- qubits: Sequence[int],
94
- inst_map: InstructionScheduleMap,
95
- meas_map: list[list[int]] | dict[int, list[int]],
96
- qubit_mem_slots: dict[int, int] | None = None,
97
- measure_name: str = "measure",
98
- ) -> Schedule:
99
- """Return a schedule which measures the requested qubits according to the given
100
- instruction mapping and measure map, or by using the defaults provided by the backendV1.
101
-
102
- Args:
103
- qubits: List of qubits to be measured.
104
- backend (Union[Backend, BaseBackend]): A backend instance, which contains
105
- hardware-specific data required for scheduling.
106
- inst_map: Mapping of circuit operations to pulse schedules. If None, defaults to the
107
- ``instruction_schedule_map`` of ``backend``.
108
- meas_map: List of sets of qubits that must be measured together. If None, defaults to
109
- the ``meas_map`` of ``backend``.
110
- qubit_mem_slots: Mapping of measured qubit index to classical bit index.
111
- measure_name: Name of the measurement schedule.
112
- Returns:
113
- A measurement schedule corresponding to the inputs provided.
114
- Raises:
115
- PulseError: If both ``inst_map`` or ``meas_map``, and ``backend`` is None.
116
- """
117
-
118
- schedule = Schedule(name=f"Default measurement schedule for qubits {qubits}")
119
-
120
- if isinstance(meas_map, list):
121
- meas_map = utils.format_meas_map(meas_map)
122
-
123
- measure_groups = set()
124
- for qubit in qubits:
125
- measure_groups.add(tuple(meas_map[qubit]))
126
- for measure_group_qubits in measure_groups:
127
-
128
- unused_mem_slots = (
129
- set()
130
- if qubit_mem_slots is None
131
- else set(measure_group_qubits) - set(qubit_mem_slots.values())
132
- )
133
-
134
- try:
135
- default_sched = inst_map.get(measure_name, measure_group_qubits)
136
- except exceptions.PulseError as ex:
137
- raise exceptions.PulseError(
138
- f"We could not find a default measurement schedule called '{measure_name}'. "
139
- "Please provide another name using the 'measure_name' keyword "
140
- "argument. For assistance, the instructions which are defined are: "
141
- f"{inst_map.instructions}"
142
- ) from ex
143
- for time, inst in default_sched.instructions:
144
- if inst.channel.index not in qubits:
145
- continue
146
- if qubit_mem_slots and isinstance(inst, instructions.Acquire):
147
- if inst.channel.index in qubit_mem_slots:
148
- mem_slot = channels.MemorySlot(qubit_mem_slots[inst.channel.index])
149
- else:
150
- mem_slot = channels.MemorySlot(unused_mem_slots.pop())
151
- inst = instructions.Acquire(inst.duration, inst.channel, mem_slot=mem_slot)
152
- # Measurement pulses should only be added if its qubit was measured by the user
153
- schedule = schedule.insert(time, inst)
154
-
155
- return schedule
156
-
157
-
158
- def _measure_v2(
159
- qubits: Sequence[int],
160
- target: Target,
161
- meas_map: list[list[int]] | dict[int, list[int]],
162
- qubit_mem_slots: dict[int, int],
163
- measure_name: str = "measure",
164
- ) -> Schedule:
165
- """Return a schedule which measures the requested qubits according to the given
166
- target and measure map, or by using the defaults provided by the backendV2.
167
-
168
- Args:
169
- qubits: List of qubits to be measured.
170
- target: The :class:`~.Target` representing the target backend.
171
- meas_map: List of sets of qubits that must be measured together.
172
- qubit_mem_slots: Mapping of measured qubit index to classical bit index.
173
- measure_name: Name of the measurement schedule.
174
-
175
- Returns:
176
- A measurement schedule corresponding to the inputs provided.
177
- """
178
- schedule = Schedule(name=f"Default measurement schedule for qubits {qubits}")
179
-
180
- if isinstance(meas_map, list):
181
- meas_map = utils.format_meas_map(meas_map)
182
- meas_group = set()
183
- for qubit in qubits:
184
- meas_group |= set(meas_map[qubit])
185
- meas_group = sorted(meas_group)
186
-
187
- meas_group_set = set(range(max(meas_group) + 1))
188
- unassigned_qubit_indices = sorted(set(meas_group) - qubit_mem_slots.keys())
189
- unassigned_reg_indices = sorted(meas_group_set - set(qubit_mem_slots.values()), reverse=True)
190
- if set(qubit_mem_slots.values()).issubset(meas_group_set):
191
- for qubit in unassigned_qubit_indices:
192
- qubit_mem_slots[qubit] = unassigned_reg_indices.pop()
193
-
194
- for measure_qubit in meas_group:
195
- try:
196
- if measure_qubit in qubits:
197
- default_sched = target._get_calibration(measure_name, (measure_qubit,)).filter(
198
- channels=[
199
- channels.MeasureChannel(measure_qubit),
200
- channels.AcquireChannel(measure_qubit),
201
- ]
202
- )
203
- schedule += _schedule_remapping_memory_slot(default_sched, qubit_mem_slots)
204
- except KeyError as ex:
205
- raise exceptions.PulseError(
206
- f"We could not find a default measurement schedule called '{measure_name}'. "
207
- "Please provide another name using the 'measure_name' keyword "
208
- "argument. For assistance, the instructions which are defined are: "
209
- f"{target.instructions}"
210
- ) from ex
211
- return schedule
212
-
213
-
214
- def measure_all(backend) -> Schedule:
215
- """
216
- Return a Schedule which measures all qubits of the given backend.
217
-
218
- Args:
219
- backend (Union[Backend, BaseBackend]): A backend instance, which contains
220
- hardware-specific data required for scheduling.
221
-
222
- Returns:
223
- A schedule corresponding to the inputs provided.
224
- """
225
- # backend is V2.
226
- if isinstance(backend, BackendV2):
227
- qubits = list(range(backend.num_qubits))
228
- else:
229
- qubits = list(range(backend.configuration().n_qubits))
230
- return measure(qubits=qubits, backend=backend)
231
-
232
-
233
- def _schedule_remapping_memory_slot(
234
- schedule: Schedule, qubit_mem_slots: dict[int, int]
235
- ) -> Schedule:
236
- """
237
- A helper function to overwrite MemorySlot index of :class:`.Acquire` instruction.
238
-
239
- Args:
240
- schedule: A measurement schedule.
241
- qubit_mem_slots: Mapping of measured qubit index to classical bit index.
242
-
243
- Returns:
244
- A measurement schedule with new memory slot index.
245
- """
246
- new_schedule = Schedule()
247
- for t0, inst in schedule.instructions:
248
- if isinstance(inst, instructions.Acquire):
249
- qubit_index = inst.channel.index
250
- reg_index = qubit_mem_slots.get(qubit_index, qubit_index)
251
- new_schedule.insert(
252
- t0,
253
- instructions.Acquire(
254
- inst.duration,
255
- channels.AcquireChannel(qubit_index),
256
- mem_slot=channels.MemorySlot(reg_index),
257
- ),
258
- inplace=True,
259
- )
260
- else:
261
- new_schedule.insert(t0, inst, inplace=True)
262
- return new_schedule