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.
- qiskit/VERSION.txt +1 -1
- qiskit/__init__.py +2 -5
- qiskit/_accelerate.abi3.so +0 -0
- qiskit/circuit/__init__.py +24 -5
- qiskit/circuit/{add_control.py → _add_control.py} +32 -12
- qiskit/circuit/_classical_resource_map.py +5 -3
- qiskit/circuit/barrier.py +3 -7
- qiskit/circuit/classical/expr/__init__.py +31 -3
- qiskit/circuit/classical/expr/constructors.py +248 -28
- qiskit/circuit/classical/expr/expr.py +104 -3
- qiskit/circuit/classical/expr/visitors.py +75 -0
- qiskit/circuit/classical/types/__init__.py +12 -8
- qiskit/circuit/classical/types/ordering.py +14 -7
- qiskit/circuit/classical/types/types.py +36 -0
- qiskit/circuit/commutation_checker.py +34 -7
- qiskit/circuit/controlflow/__init__.py +32 -1
- qiskit/circuit/controlflow/_builder_utils.py +9 -5
- qiskit/circuit/controlflow/box.py +163 -0
- qiskit/circuit/controlflow/break_loop.py +1 -1
- qiskit/circuit/controlflow/builder.py +139 -39
- qiskit/circuit/controlflow/continue_loop.py +1 -3
- qiskit/circuit/controlflow/control_flow.py +10 -0
- qiskit/circuit/controlflow/for_loop.py +2 -1
- qiskit/circuit/controlflow/if_else.py +3 -16
- qiskit/circuit/controlflow/switch_case.py +2 -8
- qiskit/circuit/controlflow/while_loop.py +2 -7
- qiskit/circuit/controlledgate.py +2 -4
- qiskit/circuit/delay.py +40 -11
- qiskit/circuit/duration.py +0 -15
- qiskit/circuit/gate.py +2 -4
- qiskit/circuit/instruction.py +2 -141
- qiskit/circuit/instructionset.py +7 -54
- qiskit/circuit/library/__init__.py +34 -5
- qiskit/circuit/library/arithmetic/__init__.py +16 -10
- qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
- qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +2 -2
- qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
- qiskit/circuit/library/arithmetic/exact_reciprocal.py +64 -21
- qiskit/circuit/library/arithmetic/integer_comparator.py +37 -80
- qiskit/circuit/library/arithmetic/linear_amplitude_function.py +169 -2
- qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +59 -5
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +154 -6
- qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +114 -4
- qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +191 -15
- qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +93 -39
- qiskit/circuit/library/arithmetic/quadratic_form.py +168 -2
- qiskit/circuit/library/arithmetic/weighted_adder.py +73 -1
- qiskit/circuit/library/bit_flip_oracle.py +130 -0
- qiskit/circuit/library/blueprintcircuit.py +52 -16
- qiskit/circuit/library/data_preparation/initializer.py +1 -1
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +4 -4
- qiskit/circuit/library/data_preparation/state_preparation.py +1 -1
- qiskit/circuit/library/generalized_gates/gms.py +1 -1
- qiskit/circuit/library/generalized_gates/isometry.py +1 -1
- qiskit/circuit/library/generalized_gates/pauli.py +1 -2
- qiskit/circuit/library/generalized_gates/uc.py +97 -7
- qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +1 -1
- qiskit/circuit/library/generalized_gates/unitary.py +4 -2
- qiskit/circuit/library/hamiltonian_gate.py +1 -1
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
- qiskit/circuit/library/n_local/n_local.py +1 -1
- qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
- qiskit/circuit/library/overlap.py +2 -2
- qiskit/circuit/library/pauli_evolution.py +39 -24
- qiskit/circuit/library/phase_oracle.py +130 -51
- qiskit/circuit/library/standard_gates/__init__.py +0 -1
- qiskit/circuit/library/standard_gates/dcx.py +3 -4
- qiskit/circuit/library/standard_gates/ecr.py +3 -4
- qiskit/circuit/library/standard_gates/global_phase.py +5 -6
- qiskit/circuit/library/standard_gates/h.py +4 -9
- qiskit/circuit/library/standard_gates/i.py +2 -2
- qiskit/circuit/library/standard_gates/iswap.py +3 -4
- qiskit/circuit/library/standard_gates/p.py +15 -34
- qiskit/circuit/library/standard_gates/r.py +2 -6
- qiskit/circuit/library/standard_gates/rx.py +5 -15
- qiskit/circuit/library/standard_gates/rxx.py +3 -6
- qiskit/circuit/library/standard_gates/ry.py +5 -17
- qiskit/circuit/library/standard_gates/ryy.py +3 -6
- qiskit/circuit/library/standard_gates/rz.py +5 -17
- qiskit/circuit/library/standard_gates/rzx.py +3 -6
- qiskit/circuit/library/standard_gates/rzz.py +3 -6
- qiskit/circuit/library/standard_gates/s.py +6 -15
- qiskit/circuit/library/standard_gates/swap.py +4 -11
- qiskit/circuit/library/standard_gates/sx.py +7 -12
- qiskit/circuit/library/standard_gates/t.py +6 -7
- qiskit/circuit/library/standard_gates/u.py +2 -10
- qiskit/circuit/library/standard_gates/u1.py +5 -16
- qiskit/circuit/library/standard_gates/u2.py +2 -6
- qiskit/circuit/library/standard_gates/u3.py +3 -11
- qiskit/circuit/library/standard_gates/x.py +13 -60
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
- qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
- qiskit/circuit/library/standard_gates/y.py +4 -9
- qiskit/circuit/library/standard_gates/z.py +5 -15
- qiskit/circuit/measure.py +11 -2
- qiskit/circuit/parameterexpression.py +4 -0
- qiskit/circuit/quantumcircuit.py +881 -555
- qiskit/circuit/random/utils.py +12 -6
- qiskit/circuit/reset.py +5 -2
- qiskit/circuit/singleton.py +5 -11
- qiskit/circuit/store.py +0 -8
- qiskit/compiler/__init__.py +1 -7
- qiskit/compiler/transpiler.py +38 -196
- qiskit/converters/circuit_to_dag.py +4 -2
- qiskit/converters/circuit_to_dagdependency.py +0 -2
- qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
- qiskit/converters/circuit_to_gate.py +1 -1
- qiskit/converters/circuit_to_instruction.py +16 -29
- qiskit/converters/dag_to_circuit.py +5 -5
- qiskit/converters/dag_to_dagdependency.py +0 -1
- qiskit/converters/dag_to_dagdependency_v2.py +0 -1
- qiskit/converters/dagdependency_to_circuit.py +0 -6
- qiskit/converters/dagdependency_to_dag.py +0 -6
- qiskit/dagcircuit/collect_blocks.py +32 -20
- qiskit/dagcircuit/dagdependency.py +3 -37
- qiskit/dagcircuit/dagdependency_v2.py +2 -80
- qiskit/dagcircuit/dagnode.py +14 -2
- qiskit/passmanager/__init__.py +24 -6
- qiskit/passmanager/passmanager.py +26 -24
- qiskit/primitives/__init__.py +44 -35
- qiskit/primitives/backend_estimator_v2.py +102 -23
- qiskit/primitives/backend_sampler_v2.py +5 -20
- qiskit/primitives/base/__init__.py +4 -4
- qiskit/primitives/base/base_estimator.py +77 -82
- qiskit/primitives/base/base_primitive_job.py +2 -2
- qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
- qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
- qiskit/primitives/base/base_sampler.py +52 -60
- qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
- qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
- qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
- qiskit/primitives/containers/bindings_array.py +3 -1
- qiskit/primitives/containers/bit_array.py +23 -0
- qiskit/primitives/containers/data_bin.py +3 -1
- qiskit/primitives/containers/observables_array.py +19 -2
- qiskit/primitives/statevector_sampler.py +6 -8
- qiskit/primitives/utils.py +14 -189
- qiskit/providers/__init__.py +4 -130
- qiskit/providers/backend.py +11 -314
- qiskit/providers/basic_provider/__init__.py +3 -1
- qiskit/providers/basic_provider/basic_provider.py +29 -9
- qiskit/providers/basic_provider/basic_simulator.py +158 -298
- qiskit/providers/exceptions.py +0 -33
- qiskit/providers/fake_provider/__init__.py +0 -37
- qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
- qiskit/qasm2/__init__.py +21 -6
- qiskit/qasm2/export.py +2 -10
- qiskit/qasm2/parse.py +11 -25
- qiskit/qasm3/__init__.py +5 -1
- qiskit/qasm3/ast.py +44 -0
- qiskit/qasm3/exporter.py +65 -27
- qiskit/qasm3/printer.py +35 -4
- qiskit/qpy/__init__.py +141 -19
- qiskit/qpy/binary_io/__init__.py +0 -1
- qiskit/qpy/binary_io/circuits.py +91 -116
- qiskit/qpy/binary_io/schedules.py +61 -388
- qiskit/qpy/binary_io/value.py +154 -28
- qiskit/qpy/common.py +10 -7
- qiskit/qpy/formats.py +41 -0
- qiskit/qpy/interface.py +29 -62
- qiskit/qpy/type_keys.py +58 -221
- qiskit/quantum_info/analysis/distance.py +3 -1
- qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
- qiskit/quantum_info/operators/operator.py +6 -2
- qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
- qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
- qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
- qiskit/quantum_info/states/densitymatrix.py +16 -6
- qiskit/quantum_info/states/stabilizerstate.py +35 -4
- qiskit/quantum_info/states/statevector.py +16 -6
- qiskit/result/__init__.py +5 -17
- qiskit/result/models.py +18 -10
- qiskit/result/result.py +28 -126
- qiskit/result/sampled_expval.py +1 -2
- qiskit/result/utils.py +3 -4
- qiskit/synthesis/__init__.py +21 -1
- qiskit/synthesis/arithmetic/__init__.py +3 -1
- qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
- qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
- qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
- qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
- qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
- qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
- qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
- qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
- qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
- qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
- qiskit/synthesis/boolean/boolean_expression.py +231 -0
- qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
- qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
- qiskit/synthesis/discrete_basis/generate_basis_approximations.py +2 -0
- qiskit/synthesis/evolution/lie_trotter.py +10 -7
- qiskit/synthesis/evolution/product_formula.py +44 -35
- qiskit/synthesis/evolution/qdrift.py +17 -24
- qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
- qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
- qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
- qiskit/synthesis/multi_controlled/__init__.py +1 -0
- qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
- qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
- qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
- qiskit/synthesis/two_qubit/__init__.py +1 -0
- qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
- qiskit/transpiler/__init__.py +32 -232
- qiskit/transpiler/basepasses.py +20 -51
- qiskit/transpiler/layout.py +1 -1
- qiskit/transpiler/passes/__init__.py +2 -40
- qiskit/transpiler/passes/basis/basis_translator.py +4 -3
- qiskit/transpiler/passes/basis/decompose.py +1 -15
- qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
- qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
- qiskit/transpiler/passes/layout/apply_layout.py +4 -0
- qiskit/transpiler/passes/layout/dense_layout.py +2 -39
- qiskit/transpiler/passes/layout/full_ancilla_allocation.py +4 -4
- qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
- qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
- qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
- qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
- qiskit/transpiler/passes/optimization/__init__.py +1 -3
- qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
- qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
- qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
- qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
- qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
- qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
- qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
- qiskit/transpiler/passes/optimization/light_cone.py +135 -0
- qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
- qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
- qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
- qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
- qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
- qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
- qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
- qiskit/transpiler/passes/routing/__init__.py +0 -1
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
- qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
- qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
- qiskit/transpiler/passes/scheduling/__init__.py +1 -7
- qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
- qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
- qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
- qiskit/transpiler/passes/scheduling/padding/base_padding.py +30 -2
- qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -58
- qiskit/transpiler/passes/scheduling/padding/pad_delay.py +11 -3
- qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
- qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
- qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
- qiskit/transpiler/passes/scheduling/time_unit_conversion.py +127 -59
- qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
- qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
- qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
- qiskit/transpiler/passes/synthesis/plugin.py +4 -0
- qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
- qiskit/transpiler/passes/utils/__init__.py +0 -1
- qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
- qiskit/transpiler/passes/utils/control_flow.py +2 -6
- qiskit/transpiler/passes/utils/gate_direction.py +7 -0
- qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
- qiskit/transpiler/passmanager.py +13 -0
- qiskit/transpiler/passmanager_config.py +5 -81
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
- qiskit/transpiler/preset_passmanagers/common.py +140 -167
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +101 -322
- qiskit/transpiler/preset_passmanagers/level0.py +2 -11
- qiskit/transpiler/preset_passmanagers/level1.py +2 -14
- qiskit/transpiler/preset_passmanagers/level2.py +2 -12
- qiskit/transpiler/preset_passmanagers/level3.py +2 -11
- qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
- qiskit/transpiler/target.py +67 -524
- qiskit/user_config.py +8 -4
- qiskit/utils/__init__.py +13 -12
- qiskit/utils/deprecation.py +4 -112
- qiskit/utils/optionals.py +11 -4
- qiskit/utils/parallel.py +214 -87
- qiskit/utils/units.py +4 -1
- qiskit/visualization/__init__.py +3 -7
- qiskit/visualization/array.py +4 -1
- qiskit/visualization/bloch.py +1 -1
- qiskit/visualization/circuit/_utils.py +19 -19
- qiskit/visualization/circuit/circuit_visualization.py +11 -4
- qiskit/visualization/circuit/matplotlib.py +13 -23
- qiskit/visualization/circuit/text.py +7 -3
- qiskit/visualization/dag_visualization.py +2 -1
- qiskit/visualization/gate_map.py +39 -154
- qiskit/visualization/pass_manager_visualization.py +6 -2
- qiskit/visualization/state_visualization.py +6 -0
- qiskit/visualization/timeline/core.py +18 -12
- qiskit/visualization/timeline/interface.py +19 -18
- {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/METADATA +2 -2
- {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/RECORD +297 -444
- {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/WHEEL +2 -1
- {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/entry_points.txt +8 -2
- qiskit/assembler/__init__.py +0 -42
- qiskit/assembler/assemble_circuits.py +0 -451
- qiskit/assembler/assemble_schedules.py +0 -367
- qiskit/assembler/disassemble.py +0 -310
- qiskit/assembler/run_config.py +0 -77
- qiskit/circuit/bit.py +0 -106
- qiskit/circuit/classicalfunction/__init__.py +0 -152
- qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
- qiskit/circuit/classicalfunction/classical_element.py +0 -54
- qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
- qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
- qiskit/circuit/classicalfunction/exceptions.py +0 -41
- qiskit/circuit/classicalfunction/types.py +0 -18
- qiskit/circuit/classicalfunction/utils.py +0 -91
- qiskit/circuit/classicalregister.py +0 -57
- qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
- qiskit/circuit/quantumregister.py +0 -75
- qiskit/circuit/register.py +0 -246
- qiskit/compiler/assembler.py +0 -689
- qiskit/compiler/scheduler.py +0 -109
- qiskit/compiler/sequencer.py +0 -71
- qiskit/primitives/backend_estimator.py +0 -486
- qiskit/primitives/backend_sampler.py +0 -222
- qiskit/primitives/estimator.py +0 -172
- qiskit/primitives/sampler.py +0 -162
- qiskit/providers/backend_compat.py +0 -507
- qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
- qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
- qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
- qiskit/providers/fake_provider/fake_1q.py +0 -91
- qiskit/providers/fake_provider/fake_backend.py +0 -165
- qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
- qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
- qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
- qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
- qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
- qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
- qiskit/providers/models/__init__.py +0 -89
- qiskit/providers/models/backendconfiguration.py +0 -1040
- qiskit/providers/models/backendproperties.py +0 -535
- qiskit/providers/models/backendstatus.py +0 -104
- qiskit/providers/models/jobstatus.py +0 -77
- qiskit/providers/models/pulsedefaults.py +0 -305
- qiskit/providers/provider.py +0 -95
- qiskit/pulse/__init__.py +0 -158
- qiskit/pulse/builder.py +0 -2262
- qiskit/pulse/calibration_entries.py +0 -381
- qiskit/pulse/channels.py +0 -227
- qiskit/pulse/configuration.py +0 -245
- qiskit/pulse/exceptions.py +0 -45
- qiskit/pulse/filters.py +0 -309
- qiskit/pulse/instruction_schedule_map.py +0 -424
- qiskit/pulse/instructions/__init__.py +0 -67
- qiskit/pulse/instructions/acquire.py +0 -150
- qiskit/pulse/instructions/delay.py +0 -71
- qiskit/pulse/instructions/directives.py +0 -154
- qiskit/pulse/instructions/frequency.py +0 -135
- qiskit/pulse/instructions/instruction.py +0 -270
- qiskit/pulse/instructions/phase.py +0 -152
- qiskit/pulse/instructions/play.py +0 -99
- qiskit/pulse/instructions/reference.py +0 -100
- qiskit/pulse/instructions/snapshot.py +0 -82
- qiskit/pulse/library/__init__.py +0 -97
- qiskit/pulse/library/continuous.py +0 -430
- qiskit/pulse/library/pulse.py +0 -148
- qiskit/pulse/library/samplers/__init__.py +0 -15
- qiskit/pulse/library/samplers/decorators.py +0 -295
- qiskit/pulse/library/samplers/strategies.py +0 -71
- qiskit/pulse/library/symbolic_pulses.py +0 -1989
- qiskit/pulse/library/waveform.py +0 -136
- qiskit/pulse/macros.py +0 -262
- qiskit/pulse/parameter_manager.py +0 -445
- qiskit/pulse/parser.py +0 -314
- qiskit/pulse/reference_manager.py +0 -58
- qiskit/pulse/schedule.py +0 -1854
- qiskit/pulse/transforms/__init__.py +0 -106
- qiskit/pulse/transforms/alignments.py +0 -406
- qiskit/pulse/transforms/base_transforms.py +0 -71
- qiskit/pulse/transforms/canonicalization.py +0 -498
- qiskit/pulse/transforms/dag.py +0 -122
- qiskit/pulse/utils.py +0 -149
- qiskit/qobj/__init__.py +0 -75
- qiskit/qobj/common.py +0 -81
- qiskit/qobj/converters/__init__.py +0 -18
- qiskit/qobj/converters/lo_config.py +0 -177
- qiskit/qobj/converters/pulse_instruction.py +0 -897
- qiskit/qobj/pulse_qobj.py +0 -709
- qiskit/qobj/qasm_qobj.py +0 -708
- qiskit/qobj/utils.py +0 -46
- qiskit/result/mitigation/base_readout_mitigator.py +0 -79
- qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
- qiskit/result/mitigation/local_readout_mitigator.py +0 -328
- qiskit/result/mitigation/utils.py +0 -217
- qiskit/scheduler/__init__.py +0 -40
- qiskit/scheduler/config.py +0 -37
- qiskit/scheduler/lowering.py +0 -187
- qiskit/scheduler/methods/__init__.py +0 -15
- qiskit/scheduler/methods/basic.py +0 -140
- qiskit/scheduler/schedule_circuit.py +0 -69
- qiskit/scheduler/sequence.py +0 -104
- qiskit/transpiler/passes/calibration/__init__.py +0 -17
- qiskit/transpiler/passes/calibration/base_builder.py +0 -79
- qiskit/transpiler/passes/calibration/builders.py +0 -20
- qiskit/transpiler/passes/calibration/exceptions.py +0 -22
- qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
- qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
- qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
- qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
- qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
- qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
- qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
- qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
- qiskit/transpiler/passes/scheduling/alap.py +0 -153
- qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
- qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
- qiskit/transpiler/passes/scheduling/asap.py +0 -175
- qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
- qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
- qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
- qiskit/utils/deprecate_pulse.py +0 -119
- qiskit/utils/multiprocessing.py +0 -56
- qiskit/visualization/pulse_v2/__init__.py +0 -21
- qiskit/visualization/pulse_v2/core.py +0 -901
- qiskit/visualization/pulse_v2/device_info.py +0 -173
- qiskit/visualization/pulse_v2/drawings.py +0 -253
- qiskit/visualization/pulse_v2/events.py +0 -254
- qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
- qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
- qiskit/visualization/pulse_v2/generators/chart.py +0 -208
- qiskit/visualization/pulse_v2/generators/frame.py +0 -436
- qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
- qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
- qiskit/visualization/pulse_v2/interface.py +0 -459
- qiskit/visualization/pulse_v2/layouts.py +0 -387
- qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
- qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
- qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
- qiskit/visualization/pulse_v2/stylesheet.py +0 -312
- qiskit/visualization/pulse_v2/types.py +0 -242
- {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -24,7 +24,7 @@ import numpy as np
|
|
24
24
|
from qiskit.exceptions import QiskitError
|
25
25
|
from qiskit.quantum_info.operators.op_shape import OpShape
|
26
26
|
from qiskit.quantum_info.operators.operator import Operator
|
27
|
-
from qiskit.quantum_info.operators.symplectic import Clifford, Pauli, PauliList
|
27
|
+
from qiskit.quantum_info.operators.symplectic import Clifford, Pauli, PauliList, SparsePauliOp
|
28
28
|
from qiskit.quantum_info.operators.symplectic.clifford_circuits import _append_x
|
29
29
|
from qiskit.quantum_info.states.quantum_state import QuantumState
|
30
30
|
from qiskit.circuit import QuantumCircuit, Instruction
|
@@ -38,7 +38,9 @@ class StabilizerState(QuantumState):
|
|
38
38
|
Stabilizer simulator using the convention from reference [1].
|
39
39
|
Based on the internal class :class:`~qiskit.quantum_info.Clifford`.
|
40
40
|
|
41
|
-
..
|
41
|
+
.. plot::
|
42
|
+
:include-source:
|
43
|
+
:nofigs:
|
42
44
|
|
43
45
|
from qiskit import QuantumCircuit
|
44
46
|
from qiskit.quantum_info import StabilizerState, Pauli
|
@@ -67,7 +69,9 @@ class StabilizerState(QuantumState):
|
|
67
69
|
Given a list of stabilizers, :meth:`qiskit.quantum_info.StabilizerState.from_stabilizer_list`
|
68
70
|
returns a state stabilized by the list
|
69
71
|
|
70
|
-
..
|
72
|
+
.. plot::
|
73
|
+
:include-source:
|
74
|
+
:nofigs:
|
71
75
|
|
72
76
|
from qiskit.quantum_info import StabilizerState
|
73
77
|
|
@@ -255,7 +259,34 @@ class StabilizerState(QuantumState):
|
|
255
259
|
ret._data = self.clifford.compose(other.clifford, qargs=qargs)
|
256
260
|
return ret
|
257
261
|
|
258
|
-
def expectation_value(self, oper: Pauli, qargs: None | list = None) -> complex:
|
262
|
+
def expectation_value(self, oper: Pauli | SparsePauliOp, qargs: None | list = None) -> complex:
|
263
|
+
"""Compute the expectation value of a Pauli or SparsePauliOp operator.
|
264
|
+
|
265
|
+
Args:
|
266
|
+
oper: A Pauli or SparsePauliOp operator to evaluate the expectation value.
|
267
|
+
qargs: Subsystems to apply the operator on.
|
268
|
+
|
269
|
+
Returns:
|
270
|
+
The expectation value.
|
271
|
+
|
272
|
+
Raises:
|
273
|
+
QiskitError: if oper is not a Pauli or SparsePauliOp operator.
|
274
|
+
"""
|
275
|
+
if isinstance(oper, Pauli):
|
276
|
+
return self._expectation_value_pauli(oper, qargs)
|
277
|
+
|
278
|
+
if isinstance(oper, SparsePauliOp):
|
279
|
+
return sum(
|
280
|
+
coeff * self._expectation_value_pauli(Pauli((z, x)), qargs)
|
281
|
+
for z, x, coeff in zip(oper.paulis.z, oper.paulis.x, oper.coeffs)
|
282
|
+
)
|
283
|
+
|
284
|
+
raise QiskitError(
|
285
|
+
"Operator for expectation value is not a Pauli or SparsePauliOp operator, "
|
286
|
+
f"but {type(oper)}."
|
287
|
+
)
|
288
|
+
|
289
|
+
def _expectation_value_pauli(self, oper: Pauli, qargs: None | list = None) -> complex:
|
259
290
|
"""Compute the expectation value of a Pauli operator.
|
260
291
|
|
261
292
|
Args:
|
@@ -198,7 +198,7 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
198
198
|
def _ipython_display_(self):
|
199
199
|
out = self.draw()
|
200
200
|
if isinstance(out, str):
|
201
|
-
print(out)
|
201
|
+
print(out) # pylint: disable=bad-builtin
|
202
202
|
else:
|
203
203
|
from IPython.display import display
|
204
204
|
|
@@ -545,7 +545,9 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
545
545
|
Consider a 2-qubit product state
|
546
546
|
:math:`|\\psi\\rangle=|+\\rangle\\otimes|0\\rangle`.
|
547
547
|
|
548
|
-
..
|
548
|
+
.. plot::
|
549
|
+
:include-source:
|
550
|
+
:nofigs:
|
549
551
|
|
550
552
|
from qiskit.quantum_info import Statevector
|
551
553
|
|
@@ -572,7 +574,9 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
572
574
|
We can also permute the order of qubits in the ``qargs`` list
|
573
575
|
to change the qubit position in the probabilities output
|
574
576
|
|
575
|
-
..
|
577
|
+
.. plot::
|
578
|
+
:include-source:
|
579
|
+
:nofigs:
|
576
580
|
|
577
581
|
from qiskit.quantum_info import Statevector
|
578
582
|
|
@@ -796,7 +800,9 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
796
800
|
The ket-form of a 2-qubit statevector
|
797
801
|
:math:`|\psi\rangle = |-\rangle\otimes |0\rangle`
|
798
802
|
|
799
|
-
..
|
803
|
+
.. plot::
|
804
|
+
:include-source:
|
805
|
+
:nofigs:
|
800
806
|
|
801
807
|
from qiskit.quantum_info import Statevector
|
802
808
|
|
@@ -810,7 +816,9 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
810
816
|
For non-qubit subsystems the integer range can go from 0 to 9. For
|
811
817
|
example in a qutrit system
|
812
818
|
|
813
|
-
..
|
819
|
+
.. plot::
|
820
|
+
:include-source:
|
821
|
+
:nofigs:
|
814
822
|
|
815
823
|
import numpy as np
|
816
824
|
from qiskit.quantum_info import Statevector
|
@@ -829,7 +837,9 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
829
837
|
following example is for a 20-dimensional system consisting of
|
830
838
|
a qubit and 10-dimensional qudit.
|
831
839
|
|
832
|
-
..
|
840
|
+
.. plot::
|
841
|
+
:include-source:
|
842
|
+
:nofigs:
|
833
843
|
|
834
844
|
import numpy as np
|
835
845
|
from qiskit.quantum_info import Statevector
|
qiskit/result/__init__.py
CHANGED
@@ -48,26 +48,14 @@ Expectation values
|
|
48
48
|
|
49
49
|
.. autofunction:: sampled_expectation_value
|
50
50
|
|
51
|
-
Mitigation
|
52
|
-
==========
|
53
|
-
.. autosummary::
|
54
|
-
:toctree: ../stubs/
|
55
|
-
|
56
|
-
BaseReadoutMitigator
|
57
|
-
CorrelatedReadoutMitigator
|
58
|
-
LocalReadoutMitigator
|
59
|
-
|
60
51
|
"""
|
61
52
|
|
62
|
-
from .
|
53
|
+
from .counts import Counts
|
54
|
+
from .distributions import QuasiDistribution, ProbDistribution
|
63
55
|
from .exceptions import ResultError
|
56
|
+
from .models import MeasLevel, MeasReturnType
|
57
|
+
from .result import Result
|
58
|
+
from .sampled_expval import sampled_expectation_value
|
64
59
|
from .utils import marginal_counts
|
65
60
|
from .utils import marginal_distribution
|
66
61
|
from .utils import marginal_memory
|
67
|
-
from .counts import Counts
|
68
|
-
|
69
|
-
from .distributions import QuasiDistribution, ProbDistribution
|
70
|
-
from .sampled_expval import sampled_expectation_value
|
71
|
-
from .mitigation.base_readout_mitigator import BaseReadoutMitigator
|
72
|
-
from .mitigation.correlated_readout_mitigator import CorrelatedReadoutMitigator
|
73
|
-
from .mitigation.local_readout_mitigator import LocalReadoutMitigator
|
qiskit/result/models.py
CHANGED
@@ -13,13 +13,26 @@
|
|
13
13
|
"""Schema and helper models for schema-conformant Results."""
|
14
14
|
|
15
15
|
import copy
|
16
|
-
import
|
16
|
+
from enum import Enum, IntEnum
|
17
17
|
|
18
|
-
from qiskit.qobj.utils import MeasReturnType, MeasLevel
|
19
|
-
from qiskit.qobj import QobjExperimentHeader
|
20
18
|
from qiskit.exceptions import QiskitError
|
21
19
|
|
22
20
|
|
21
|
+
class MeasReturnType(str, Enum):
|
22
|
+
"""meas_return allowed values defined by legacy PulseQobjConfig object but still used by Result."""
|
23
|
+
|
24
|
+
AVERAGE = "avg"
|
25
|
+
SINGLE = "single"
|
26
|
+
|
27
|
+
|
28
|
+
class MeasLevel(IntEnum):
|
29
|
+
"""MeasLevel allowed values defined by legacy PulseQobjConfig object but still used by Result."""
|
30
|
+
|
31
|
+
RAW = 0
|
32
|
+
KERNELED = 1
|
33
|
+
CLASSIFIED = 2
|
34
|
+
|
35
|
+
|
23
36
|
class ExperimentResultData:
|
24
37
|
"""Class representing experiment result data"""
|
25
38
|
|
@@ -132,7 +145,7 @@ class ExperimentResult:
|
|
132
145
|
status (str): The status of the experiment
|
133
146
|
seed (int): The seed used for simulation (if run on a simulator)
|
134
147
|
meas_return (str): The type of measurement returned
|
135
|
-
header (
|
148
|
+
header (dict): A free form dictionary
|
136
149
|
header for the experiment
|
137
150
|
kwargs: Arbitrary extra fields
|
138
151
|
|
@@ -197,7 +210,7 @@ class ExperimentResult:
|
|
197
210
|
"meas_level": self.meas_level,
|
198
211
|
}
|
199
212
|
if hasattr(self, "header"):
|
200
|
-
out_dict["header"] = self.header
|
213
|
+
out_dict["header"] = self.header
|
201
214
|
if hasattr(self, "status"):
|
202
215
|
out_dict["status"] = self.status
|
203
216
|
if hasattr(self, "seed"):
|
@@ -223,11 +236,6 @@ class ExperimentResult:
|
|
223
236
|
|
224
237
|
in_data = copy.copy(data)
|
225
238
|
data_obj = ExperimentResultData.from_dict(in_data.pop("data"))
|
226
|
-
if "header" in in_data:
|
227
|
-
with warnings.catch_warnings():
|
228
|
-
# The class QobjExperimentHeader is deprecated
|
229
|
-
warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit")
|
230
|
-
in_data["header"] = QobjExperimentHeader.from_dict(in_data.pop("header"))
|
231
239
|
shots = in_data.pop("shots")
|
232
240
|
success = in_data.pop("success")
|
233
241
|
|
qiskit/result/result.py
CHANGED
@@ -12,154 +12,60 @@
|
|
12
12
|
|
13
13
|
"""Model for schema-conformant Results."""
|
14
14
|
|
15
|
-
from collections.abc import Iterable
|
16
15
|
import copy
|
17
16
|
import warnings
|
18
17
|
|
19
18
|
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
20
|
-
from qiskit.pulse.schedule import Schedule
|
21
19
|
from qiskit.exceptions import QiskitError
|
22
20
|
from qiskit.quantum_info.states import statevector
|
23
|
-
from qiskit.result.models import ExperimentResult
|
21
|
+
from qiskit.result.models import ExperimentResult, MeasLevel
|
24
22
|
from qiskit.result import postprocess
|
25
23
|
from qiskit.result.counts import Counts
|
26
|
-
from qiskit.qobj.utils import MeasLevel
|
27
|
-
from qiskit.qobj import QobjHeader
|
28
|
-
|
29
|
-
_MISSING = object()
|
30
24
|
|
31
25
|
|
32
26
|
class Result:
|
33
27
|
"""Model for Results.
|
34
28
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
be used in Qiskit 2.0. It will, however, still be possible to set ``qobj_id`` as a
|
41
|
-
generic kwarg, which will land in the metadata field with the other generic kwargs.
|
42
|
-
|
43
|
-
Args:
|
44
|
-
backend_name (str): (REQUIRED) backend name.
|
45
|
-
backend_version (str): (REQUIRED) backend version, in the form X.Y.Z.
|
46
|
-
qobj_id (str): (REQUIRED) user-generated Qobj id.
|
47
|
-
job_id (str): (REQUIRED) unique execution id from the backend.
|
48
|
-
success (bool): (REQUIRED) True if complete input qobj executed correctly. (Implies
|
29
|
+
Attributes:
|
30
|
+
backend_name (str): backend name.
|
31
|
+
backend_version (str): backend version, in the form X.Y.Z.
|
32
|
+
job_id (str): unique execution id from the backend.
|
33
|
+
success (bool): True if complete input executed correctly. (Implies
|
49
34
|
each experiment success)
|
50
|
-
results (list[ExperimentResult]):
|
51
|
-
experiments of the input
|
52
|
-
date (str): (OPTIONAL) date of the experiment
|
53
|
-
header(dict): (OPTIONAL)experiment header
|
54
|
-
kwargs: generic keyword arguments. (OPTIONAL) These will be stored in the metadata field.
|
35
|
+
results (list[ExperimentResult]): corresponding results for array of
|
36
|
+
experiments of the input
|
55
37
|
"""
|
56
38
|
|
57
39
|
_metadata = {}
|
58
40
|
|
59
41
|
def __init__(
|
60
42
|
self,
|
61
|
-
|
43
|
+
*,
|
44
|
+
backend_name=None,
|
45
|
+
backend_version=None,
|
46
|
+
job_id=None,
|
47
|
+
success=None,
|
48
|
+
results=None,
|
62
49
|
date=None,
|
63
50
|
status=None,
|
64
51
|
header=None,
|
65
52
|
**kwargs,
|
66
53
|
):
|
67
|
-
# The following arguments are required.
|
68
|
-
required_args = {
|
69
|
-
"backend_name": _MISSING,
|
70
|
-
"backend_version": _MISSING,
|
71
|
-
"qobj_id": _MISSING,
|
72
|
-
"job_id": _MISSING,
|
73
|
-
"success": _MISSING,
|
74
|
-
"results": _MISSING,
|
75
|
-
}
|
76
|
-
# Step 1: iterate over kwargs.
|
77
|
-
# An item from required_args might be set as a kwarg, so we must separate
|
78
|
-
# true kwargs from "required_args" kwargs.
|
79
|
-
true_kwargs = {}
|
80
|
-
for key, value in kwargs.items():
|
81
|
-
if key in required_args:
|
82
|
-
required_args[key] = value
|
83
|
-
else:
|
84
|
-
true_kwargs[key] = value
|
85
|
-
# Step 2: iterate over args, which are expected in the order of the index_map below.
|
86
|
-
index_map = ["backend_name", "backend_version", "qobj_id", "job_id", "success", "results"]
|
87
|
-
raise_qobj = False
|
88
|
-
missing_args = []
|
89
|
-
for index, name in enumerate(index_map):
|
90
|
-
try:
|
91
|
-
value = args[index]
|
92
|
-
required_args[name] = value
|
93
|
-
# The use of args is deprecated in 1.4 and will be removed in 2.0.
|
94
|
-
# Furthermore, qobj_id will be ignored if set as a kwarg in 2.0.
|
95
|
-
if name == "qobj_id":
|
96
|
-
warnings.warn(
|
97
|
-
"The use of positional arguments in `qiskit.result.result.Result.__init__()` "
|
98
|
-
"is deprecated as of Qiskit 1.4, and will be disabled in Qiskit 2.0. "
|
99
|
-
"Please set this value using kwarg syntax, "
|
100
|
-
f"i.e: `Result(...,{name}={name}_value)`. "
|
101
|
-
"The `qobj_id` argument will no longer be used in Qiskit 2.0, "
|
102
|
-
"but it will still be possible to "
|
103
|
-
"set as a kwarg that will land in the metadata field.",
|
104
|
-
category=DeprecationWarning,
|
105
|
-
stacklevel=2,
|
106
|
-
)
|
107
|
-
else:
|
108
|
-
warnings.warn(
|
109
|
-
"The use of positional arguments in `qiskit.result.result.Result.__init__()` "
|
110
|
-
"is deprecated as of Qiskit 1.4, and will be disabled in Qiskit 2.0. "
|
111
|
-
"Please set this value using kwarg syntax, "
|
112
|
-
f"i.e: `Result(...,{name}={name}_value)`. ",
|
113
|
-
category=DeprecationWarning,
|
114
|
-
stacklevel=2,
|
115
|
-
)
|
116
|
-
except IndexError:
|
117
|
-
if required_args[name] is _MISSING:
|
118
|
-
missing_args = [
|
119
|
-
key for (key, value) in required_args.items() if value is _MISSING
|
120
|
-
]
|
121
|
-
elif name == "qobj_id":
|
122
|
-
raise_qobj = True
|
123
|
-
break
|
124
|
-
|
125
|
-
# The deprecation warning should be raised outside of the try-except,
|
126
|
-
# not to show a confusing trace that points to the IndexError
|
127
|
-
if len(missing_args) > 1:
|
128
|
-
raise TypeError(
|
129
|
-
f"Result.__init__() missing {len(missing_args)} required arguments: {missing_args}"
|
130
|
-
)
|
131
|
-
if len(missing_args) == 1:
|
132
|
-
raise TypeError(f"Result.__init__() missing a required argument: {missing_args[0]}")
|
133
|
-
if raise_qobj:
|
134
|
-
# qobj_id will be ignored if set as a kwarg in 2.0.
|
135
|
-
warnings.warn(
|
136
|
-
"The `qobj_id` argument will no longer be used in Qiskit 2.0, "
|
137
|
-
"but it will still be possible to "
|
138
|
-
"set as a kwarg that will land in the metadata field.",
|
139
|
-
category=DeprecationWarning,
|
140
|
-
stacklevel=2,
|
141
|
-
)
|
142
|
-
|
143
54
|
self._metadata = {}
|
144
|
-
self.backend_name =
|
145
|
-
self.backend_version =
|
146
|
-
self.
|
147
|
-
self.
|
148
|
-
self.
|
149
|
-
self.results = (
|
150
|
-
[required_args["results"]]
|
151
|
-
if not isinstance(required_args["results"], Iterable)
|
152
|
-
else required_args["results"]
|
153
|
-
)
|
55
|
+
self.backend_name = backend_name
|
56
|
+
self.backend_version = backend_version
|
57
|
+
self.job_id = job_id
|
58
|
+
self.success = success
|
59
|
+
self.results = results
|
154
60
|
self.date = date
|
155
61
|
self.status = status
|
156
62
|
self.header = header
|
157
|
-
self._metadata.update(
|
63
|
+
self._metadata.update(kwargs)
|
158
64
|
|
159
65
|
def __repr__(self):
|
160
66
|
out = (
|
161
67
|
f"Result(backend_name='{self.backend_name}', backend_version='{self.backend_version}',"
|
162
|
-
f"
|
68
|
+
f" job_id='{self.job_id}', success={self.success},"
|
163
69
|
f" results={self.results}"
|
164
70
|
)
|
165
71
|
out += f", date={self.date}, status={self.status}, header={self.header}"
|
@@ -183,7 +89,6 @@ class Result:
|
|
183
89
|
"backend_version": self.backend_version,
|
184
90
|
"date": self.date,
|
185
91
|
"header": None if self.header is None else self.header.to_dict(),
|
186
|
-
"qobj_id": self.qobj_id,
|
187
92
|
"job_id": self.job_id,
|
188
93
|
"status": self.status,
|
189
94
|
"success": self.success,
|
@@ -213,10 +118,6 @@ class Result:
|
|
213
118
|
|
214
119
|
in_data = copy.copy(data)
|
215
120
|
in_data["results"] = [ExperimentResult.from_dict(x) for x in in_data.pop("results")]
|
216
|
-
if in_data.get("header") is not None:
|
217
|
-
with warnings.catch_warnings():
|
218
|
-
warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit")
|
219
|
-
in_data["header"] = QobjHeader.from_dict(in_data.pop("header"))
|
220
121
|
return cls(**in_data)
|
221
122
|
|
222
123
|
def data(self, experiment=None):
|
@@ -301,7 +202,7 @@ class Result:
|
|
301
202
|
exp_result = self._get_experiment(experiment)
|
302
203
|
try:
|
303
204
|
try: # header is not available
|
304
|
-
header = exp_result.header
|
205
|
+
header = exp_result.header
|
305
206
|
except (AttributeError, QiskitError):
|
306
207
|
header = None
|
307
208
|
|
@@ -352,7 +253,7 @@ class Result:
|
|
352
253
|
for key in exp_keys:
|
353
254
|
exp = self._get_experiment(key)
|
354
255
|
try:
|
355
|
-
header = exp.header
|
256
|
+
header = exp.header
|
356
257
|
except (AttributeError, QiskitError): # header is not available
|
357
258
|
header = None
|
358
259
|
|
@@ -443,8 +344,8 @@ class Result:
|
|
443
344
|
)
|
444
345
|
key = 0
|
445
346
|
|
446
|
-
# Key is a QuantumCircuit
|
447
|
-
if isinstance(key,
|
347
|
+
# Key is a QuantumCircuit or str: retrieve result by name.
|
348
|
+
if isinstance(key, QuantumCircuit):
|
448
349
|
key = key.name
|
449
350
|
# Key is an integer: return result by index.
|
450
351
|
if isinstance(key, int):
|
@@ -453,11 +354,12 @@ class Result:
|
|
453
354
|
except IndexError as ex:
|
454
355
|
raise QiskitError(f'Result for experiment "{key}" could not be found.') from ex
|
455
356
|
else:
|
456
|
-
# Look into `result[x].header
|
357
|
+
# Look into `result[x].header["name"]` for the names.
|
457
358
|
exp = [
|
458
359
|
result
|
459
360
|
for result in self.results
|
460
|
-
if getattr(
|
361
|
+
if getattr(result, "header", None) is not None
|
362
|
+
and getattr(result, "header").get("name", "") == key
|
461
363
|
]
|
462
364
|
|
463
365
|
if len(exp) == 0:
|
qiskit/result/sampled_expval.py
CHANGED
@@ -30,8 +30,7 @@ def sampled_expectation_value(dist, oper):
|
|
30
30
|
|
31
31
|
Parameters:
|
32
32
|
dist (Counts or QuasiDistribution or ProbDistribution or dict): Input sampled distribution
|
33
|
-
oper (str or Pauli or
|
34
|
-
the observable
|
33
|
+
oper (str or Pauli or SparsePauliOp): The operator for the observable
|
35
34
|
|
36
35
|
Returns:
|
37
36
|
float: The expectation value
|
qiskit/result/utils.py
CHANGED
@@ -24,7 +24,6 @@ from qiskit.result.result import Result
|
|
24
24
|
from qiskit.result.counts import Counts
|
25
25
|
from qiskit.result.distributions.probability import ProbDistribution
|
26
26
|
from qiskit.result.distributions.quasi import QuasiDistribution
|
27
|
-
|
28
27
|
from qiskit.result.postprocess import _bin_to_hex
|
29
28
|
|
30
29
|
from qiskit._accelerate import results as results_rs # pylint: disable=no-name-in-module
|
@@ -74,10 +73,10 @@ def marginal_counts(
|
|
74
73
|
experiment_result.data.counts = new_counts_hex
|
75
74
|
|
76
75
|
if indices is not None:
|
77
|
-
experiment_result.header
|
78
|
-
csize =
|
76
|
+
experiment_result.header["memory_slots"] = len(indices)
|
77
|
+
csize = experiment_result.header.get("creg_sizes", None)
|
79
78
|
if csize is not None:
|
80
|
-
experiment_result.header
|
79
|
+
experiment_result.header["creg_sizes"] = _adjust_creg_sizes(csize, indices)
|
81
80
|
|
82
81
|
if getattr(experiment_result.data, "memory", None) is not None and indices is not None:
|
83
82
|
if marginalize_memory is False:
|
qiskit/synthesis/__init__.py
CHANGED
@@ -119,6 +119,7 @@ Two-Qubit Synthesis
|
|
119
119
|
TwoQubitBasisDecomposer
|
120
120
|
XXDecomposer
|
121
121
|
TwoQubitWeylDecomposition
|
122
|
+
TwoQubitControlledUDecomposer
|
122
123
|
|
123
124
|
.. autofunction:: two_qubit_cnot_decompose
|
124
125
|
|
@@ -147,9 +148,24 @@ Adders
|
|
147
148
|
Multipliers
|
148
149
|
-----------
|
149
150
|
|
150
|
-
.. autofunction:: multiplier_cumulative_h18
|
151
|
+
.. autofunction:: multiplier_cumulative_h18
|
151
152
|
.. autofunction:: multiplier_qft_r17
|
152
153
|
|
154
|
+
Sums
|
155
|
+
----
|
156
|
+
|
157
|
+
.. autofunction:: synth_weighted_sum_carry
|
158
|
+
|
159
|
+
|
160
|
+
Unary Arithmetic Synthesis
|
161
|
+
==========================
|
162
|
+
|
163
|
+
Integer comparators
|
164
|
+
-------------------
|
165
|
+
|
166
|
+
.. autofunction:: synth_integer_comparator_2s
|
167
|
+
.. autofunction:: synth_integer_comparator_greedy
|
168
|
+
|
153
169
|
"""
|
154
170
|
|
155
171
|
from .evolution import (
|
@@ -200,6 +216,7 @@ from .two_qubit.two_qubit_decompose import (
|
|
200
216
|
TwoQubitBasisDecomposer,
|
201
217
|
two_qubit_cnot_decompose,
|
202
218
|
TwoQubitWeylDecomposition,
|
219
|
+
TwoQubitControlledUDecomposer,
|
203
220
|
)
|
204
221
|
from .multi_controlled import (
|
205
222
|
synth_mcmt_vchain,
|
@@ -217,4 +234,7 @@ from .arithmetic import (
|
|
217
234
|
adder_ripple_v95,
|
218
235
|
multiplier_cumulative_h18,
|
219
236
|
multiplier_qft_r17,
|
237
|
+
synth_integer_comparator_greedy,
|
238
|
+
synth_integer_comparator_2s,
|
239
|
+
synth_weighted_sum_carry,
|
220
240
|
)
|
@@ -10,7 +10,9 @@
|
|
10
10
|
# copyright notice, and modified files need to carry a notice indicating
|
11
11
|
# that they have been altered from the originals.
|
12
12
|
|
13
|
-
"""
|
13
|
+
"""Synthesis for arithmetic circuits."""
|
14
14
|
|
15
|
+
from .comparators import synth_integer_comparator_2s, synth_integer_comparator_greedy
|
15
16
|
from .adders import adder_qft_d00, adder_ripple_c04, adder_ripple_v95
|
16
17
|
from .multipliers import multiplier_cumulative_h18, multiplier_qft_r17
|
18
|
+
from .weighted_sum import synth_weighted_sum_carry
|
@@ -13,7 +13,7 @@
|
|
13
13
|
"""Compute the sum of two qubit registers using ripple-carry approach."""
|
14
14
|
|
15
15
|
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
16
|
-
from qiskit.circuit
|
16
|
+
from qiskit.circuit import QuantumRegister, AncillaRegister
|
17
17
|
|
18
18
|
|
19
19
|
def adder_ripple_c04(num_state_qubits: int, kind: str = "half") -> QuantumCircuit:
|
@@ -13,10 +13,10 @@
|
|
13
13
|
"""Compute the sum of two qubit registers using Classical Addition."""
|
14
14
|
|
15
15
|
from __future__ import annotations
|
16
|
-
from qiskit.circuit
|
16
|
+
from qiskit.circuit import Bit
|
17
17
|
|
18
18
|
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
19
|
-
from qiskit.circuit
|
19
|
+
from qiskit.circuit import QuantumRegister, AncillaRegister
|
20
20
|
|
21
21
|
|
22
22
|
def adder_ripple_v95(num_state_qubits: int, kind: str = "half") -> QuantumCircuit:
|
qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This code is part of Qiskit.
|
2
2
|
#
|
3
|
-
# (C) Copyright IBM
|
3
|
+
# (C) Copyright IBM 2017, 2024.
|
4
4
|
#
|
5
5
|
# This code is licensed under the Apache License, Version 2.0. You may
|
6
6
|
# obtain a copy of this license in the LICENSE.txt file in the root directory
|
@@ -10,9 +10,7 @@
|
|
10
10
|
# copyright notice, and modified files need to carry a notice indicating
|
11
11
|
# that they have been altered from the originals.
|
12
12
|
|
13
|
+
"""Comparator synthesis algorithms."""
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
"""
|
17
|
-
|
18
|
-
from .fake_20q import Fake20QV1
|
15
|
+
from .compare_2s import synth_integer_comparator_2s
|
16
|
+
from .compare_greedy import synth_integer_comparator_greedy
|