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
@@ -1,77 +0,0 @@
|
|
1
|
-
# This code is part of Qiskit.
|
2
|
-
#
|
3
|
-
# (C) Copyright IBM 2017, 2018.
|
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
|
-
"""Class for job status."""
|
14
|
-
|
15
|
-
from qiskit.utils import deprecate_func
|
16
|
-
|
17
|
-
|
18
|
-
class JobStatus:
|
19
|
-
"""Model for JobStatus.
|
20
|
-
|
21
|
-
Attributes:
|
22
|
-
job_id (str): backend job_id.
|
23
|
-
status (str): status of the job.
|
24
|
-
status_msg (str): status message.
|
25
|
-
"""
|
26
|
-
|
27
|
-
_data = {}
|
28
|
-
|
29
|
-
@deprecate_func(
|
30
|
-
since="1.4",
|
31
|
-
removal_timeline="in the 2.0 release",
|
32
|
-
additional_msg="The models in ``qiskit.providers.models`` and related objects are part "
|
33
|
-
"of the deprecated `BackendV1` workflow, and no longer necessary for `BackendV2`. If a user "
|
34
|
-
"workflow requires these representations it likely relies on deprecated functionality and "
|
35
|
-
"should be updated to use `BackendV2`.",
|
36
|
-
stacklevel=2,
|
37
|
-
)
|
38
|
-
def __init__(self, job_id, status, status_msg, **kwargs):
|
39
|
-
self._data = {}
|
40
|
-
self.job_id = job_id
|
41
|
-
self.status = status
|
42
|
-
self.status_msg = status_msg
|
43
|
-
self._data.update(kwargs)
|
44
|
-
|
45
|
-
@classmethod
|
46
|
-
def from_dict(cls, data):
|
47
|
-
"""Create a new JobStatus object from a dictionary.
|
48
|
-
|
49
|
-
Args:
|
50
|
-
data (dict): A dictionary representing the JobStatus to create.
|
51
|
-
It will be in the same format as output by
|
52
|
-
:meth:`to_dict`.
|
53
|
-
|
54
|
-
Returns:
|
55
|
-
JobStatus: The ``JobStatus`` from the input dictionary.
|
56
|
-
"""
|
57
|
-
return cls(**data)
|
58
|
-
|
59
|
-
def to_dict(self):
|
60
|
-
"""Return a dictionary format representation of the JobStatus.
|
61
|
-
|
62
|
-
Returns:
|
63
|
-
dict: The dictionary form of the JobStatus.
|
64
|
-
"""
|
65
|
-
out_dict = {
|
66
|
-
"job_id": self.job_id,
|
67
|
-
"status": self.status,
|
68
|
-
"status_msg": self.status_msg,
|
69
|
-
}
|
70
|
-
out_dict.update(self._data)
|
71
|
-
return out_dict
|
72
|
-
|
73
|
-
def __getattr__(self, name):
|
74
|
-
try:
|
75
|
-
return self._data[name]
|
76
|
-
except KeyError as ex:
|
77
|
-
raise AttributeError(f"Attribute {name} is not defined") from ex
|
@@ -1,305 +0,0 @@
|
|
1
|
-
# This code is part of Qiskit.
|
2
|
-
#
|
3
|
-
# (C) Copyright IBM 2017, 2019.
|
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
|
-
|
14
|
-
"""Model and schema for pulse defaults."""
|
15
|
-
import warnings
|
16
|
-
from typing import Any, Dict, List
|
17
|
-
|
18
|
-
from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap, PulseQobjDef
|
19
|
-
from qiskit.qobj import PulseLibraryItem, PulseQobjInstruction
|
20
|
-
from qiskit.qobj.converters import QobjToInstructionConverter
|
21
|
-
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
|
22
|
-
|
23
|
-
|
24
|
-
class MeasurementKernel:
|
25
|
-
"""Class representing a Measurement Kernel."""
|
26
|
-
|
27
|
-
def __init__(self, name, params):
|
28
|
-
"""Initialize a MeasurementKernel object
|
29
|
-
|
30
|
-
Args:
|
31
|
-
name (str): The name of the measurement kernel
|
32
|
-
params: The parameters of the measurement kernel
|
33
|
-
"""
|
34
|
-
self.name = name
|
35
|
-
self.params = params
|
36
|
-
|
37
|
-
def to_dict(self):
|
38
|
-
"""Return a dictionary format representation of the MeasurementKernel.
|
39
|
-
|
40
|
-
Returns:
|
41
|
-
dict: The dictionary form of the MeasurementKernel.
|
42
|
-
"""
|
43
|
-
return {"name": self.name, "params": self.params}
|
44
|
-
|
45
|
-
@classmethod
|
46
|
-
def from_dict(cls, data):
|
47
|
-
"""Create a new MeasurementKernel object from a dictionary.
|
48
|
-
|
49
|
-
Args:
|
50
|
-
data (dict): A dictionary representing the MeasurementKernel
|
51
|
-
to create. It will be in the same format as output by
|
52
|
-
:meth:`to_dict`.
|
53
|
-
|
54
|
-
Returns:
|
55
|
-
MeasurementKernel: The MeasurementKernel from the input dictionary.
|
56
|
-
"""
|
57
|
-
return cls(**data)
|
58
|
-
|
59
|
-
|
60
|
-
class Discriminator:
|
61
|
-
"""Class representing a Discriminator."""
|
62
|
-
|
63
|
-
def __init__(self, name, params):
|
64
|
-
"""Initialize a Discriminator object
|
65
|
-
|
66
|
-
Args:
|
67
|
-
name (str): The name of the discriminator
|
68
|
-
params: The parameters of the discriminator
|
69
|
-
"""
|
70
|
-
self.name = name
|
71
|
-
self.params = params
|
72
|
-
|
73
|
-
def to_dict(self):
|
74
|
-
"""Return a dictionary format representation of the Discriminator.
|
75
|
-
|
76
|
-
Returns:
|
77
|
-
dict: The dictionary form of the Discriminator.
|
78
|
-
"""
|
79
|
-
return {"name": self.name, "params": self.params}
|
80
|
-
|
81
|
-
@classmethod
|
82
|
-
def from_dict(cls, data):
|
83
|
-
"""Create a new Discriminator object from a dictionary.
|
84
|
-
|
85
|
-
Args:
|
86
|
-
data (dict): A dictionary representing the Discriminator
|
87
|
-
to create. It will be in the same format as output by
|
88
|
-
:meth:`to_dict`.
|
89
|
-
|
90
|
-
Returns:
|
91
|
-
Discriminator: The Discriminator from the input dictionary.
|
92
|
-
"""
|
93
|
-
return cls(**data)
|
94
|
-
|
95
|
-
|
96
|
-
class Command:
|
97
|
-
"""Class representing a Command.
|
98
|
-
|
99
|
-
Attributes:
|
100
|
-
name: Pulse command name.
|
101
|
-
"""
|
102
|
-
|
103
|
-
_data = {}
|
104
|
-
|
105
|
-
def __init__(self, name: str, qubits=None, sequence=None, **kwargs):
|
106
|
-
"""Initialize a Command object
|
107
|
-
|
108
|
-
Args:
|
109
|
-
name (str): The name of the command
|
110
|
-
qubits: The qubits for the command
|
111
|
-
sequence (PulseQobjInstruction): The sequence for the Command
|
112
|
-
kwargs: Optional additional fields
|
113
|
-
"""
|
114
|
-
self._data = {}
|
115
|
-
self.name = name
|
116
|
-
if qubits is not None:
|
117
|
-
self.qubits = qubits
|
118
|
-
if sequence is not None:
|
119
|
-
self.sequence = sequence
|
120
|
-
self._data.update(kwargs)
|
121
|
-
|
122
|
-
def __getattr__(self, name):
|
123
|
-
try:
|
124
|
-
return self._data[name]
|
125
|
-
except KeyError as ex:
|
126
|
-
raise AttributeError(f"Attribute {name} is not defined") from ex
|
127
|
-
|
128
|
-
def to_dict(self):
|
129
|
-
"""Return a dictionary format representation of the Command.
|
130
|
-
|
131
|
-
Returns:
|
132
|
-
dict: The dictionary form of the Command.
|
133
|
-
"""
|
134
|
-
out_dict = {"name": self.name}
|
135
|
-
if hasattr(self, "qubits"):
|
136
|
-
out_dict["qubits"] = self.qubits
|
137
|
-
if hasattr(self, "sequence"):
|
138
|
-
out_dict["sequence"] = [x.to_dict() for x in self.sequence]
|
139
|
-
out_dict.update(self._data)
|
140
|
-
return out_dict
|
141
|
-
|
142
|
-
@classmethod
|
143
|
-
def from_dict(cls, data):
|
144
|
-
"""Create a new Command object from a dictionary.
|
145
|
-
|
146
|
-
Args:
|
147
|
-
data (dict): A dictionary representing the ``Command``
|
148
|
-
to create. It will be in the same format as output by
|
149
|
-
:meth:`to_dict`.
|
150
|
-
|
151
|
-
Returns:
|
152
|
-
Command: The ``Command`` from the input dictionary.
|
153
|
-
"""
|
154
|
-
# Pulse command data is nested dictionary.
|
155
|
-
# To avoid deepcopy and avoid mutating the source object, create new dict here.
|
156
|
-
in_data = {}
|
157
|
-
for key, value in data.items():
|
158
|
-
if key == "sequence":
|
159
|
-
in_data[key] = list(map(PulseQobjInstruction.from_dict, value))
|
160
|
-
else:
|
161
|
-
in_data[key] = value
|
162
|
-
return cls(**in_data)
|
163
|
-
|
164
|
-
|
165
|
-
class PulseDefaults:
|
166
|
-
"""Description of default settings for Pulse systems. These are instructions or settings that
|
167
|
-
may be good starting points for the Pulse user. The user may modify these defaults for custom
|
168
|
-
scheduling.
|
169
|
-
"""
|
170
|
-
|
171
|
-
_data = {}
|
172
|
-
|
173
|
-
@deprecate_pulse_dependency
|
174
|
-
def __init__(
|
175
|
-
self,
|
176
|
-
qubit_freq_est: List[float],
|
177
|
-
meas_freq_est: List[float],
|
178
|
-
buffer: int,
|
179
|
-
pulse_library: List[PulseLibraryItem],
|
180
|
-
cmd_def: List[Command],
|
181
|
-
meas_kernel: MeasurementKernel = None,
|
182
|
-
discriminator: Discriminator = None,
|
183
|
-
**kwargs: Dict[str, Any],
|
184
|
-
):
|
185
|
-
"""
|
186
|
-
Validate and reformat transport layer inputs to initialize.
|
187
|
-
Args:
|
188
|
-
qubit_freq_est: Estimated qubit frequencies in GHz.
|
189
|
-
meas_freq_est: Estimated measurement cavity frequencies in GHz.
|
190
|
-
buffer: Default buffer time (in units of dt) between pulses.
|
191
|
-
pulse_library: Pulse name and sample definitions.
|
192
|
-
cmd_def: Operation name and definition in terms of Commands.
|
193
|
-
meas_kernel: The measurement kernels
|
194
|
-
discriminator: The discriminators
|
195
|
-
**kwargs: Other attributes for the super class.
|
196
|
-
"""
|
197
|
-
self._data = {}
|
198
|
-
self.buffer = buffer
|
199
|
-
self.qubit_freq_est = [freq * 1e9 for freq in qubit_freq_est]
|
200
|
-
"""Qubit frequencies in Hertz."""
|
201
|
-
self.meas_freq_est = [freq * 1e9 for freq in meas_freq_est]
|
202
|
-
"""Measurement frequencies in Hertz."""
|
203
|
-
self.pulse_library = pulse_library
|
204
|
-
self.cmd_def = cmd_def
|
205
|
-
self.instruction_schedule_map = InstructionScheduleMap()
|
206
|
-
self.converter = QobjToInstructionConverter(pulse_library)
|
207
|
-
|
208
|
-
for inst in cmd_def:
|
209
|
-
entry = PulseQobjDef(converter=self.converter, name=inst.name)
|
210
|
-
entry.define(inst.sequence, user_provided=False)
|
211
|
-
self.instruction_schedule_map._add(
|
212
|
-
instruction_name=inst.name,
|
213
|
-
qubits=tuple(inst.qubits),
|
214
|
-
entry=entry,
|
215
|
-
)
|
216
|
-
|
217
|
-
if meas_kernel is not None:
|
218
|
-
self.meas_kernel = meas_kernel
|
219
|
-
if discriminator is not None:
|
220
|
-
self.discriminator = discriminator
|
221
|
-
|
222
|
-
self._data.update(kwargs)
|
223
|
-
|
224
|
-
def __getattr__(self, name):
|
225
|
-
try:
|
226
|
-
return self._data[name]
|
227
|
-
except KeyError as ex:
|
228
|
-
raise AttributeError(f"Attribute {name} is not defined") from ex
|
229
|
-
|
230
|
-
def to_dict(self):
|
231
|
-
"""Return a dictionary format representation of the PulseDefaults.
|
232
|
-
Returns:
|
233
|
-
dict: The dictionary form of the PulseDefaults.
|
234
|
-
"""
|
235
|
-
out_dict = {
|
236
|
-
"qubit_freq_est": self.qubit_freq_est,
|
237
|
-
"meas_freq_est": self.qubit_freq_est,
|
238
|
-
"buffer": self.buffer,
|
239
|
-
"pulse_library": [x.to_dict() for x in self.pulse_library],
|
240
|
-
"cmd_def": [x.to_dict() for x in self.cmd_def],
|
241
|
-
}
|
242
|
-
if hasattr(self, "meas_kernel"):
|
243
|
-
out_dict["meas_kernel"] = self.meas_kernel.to_dict()
|
244
|
-
if hasattr(self, "discriminator"):
|
245
|
-
out_dict["discriminator"] = self.discriminator.to_dict()
|
246
|
-
for key, value in self.__dict__.items():
|
247
|
-
if key not in [
|
248
|
-
"qubit_freq_est",
|
249
|
-
"meas_freq_est",
|
250
|
-
"buffer",
|
251
|
-
"pulse_library",
|
252
|
-
"cmd_def",
|
253
|
-
"meas_kernel",
|
254
|
-
"discriminator",
|
255
|
-
"converter",
|
256
|
-
"instruction_schedule_map",
|
257
|
-
]:
|
258
|
-
out_dict[key] = value
|
259
|
-
out_dict.update(self._data)
|
260
|
-
|
261
|
-
out_dict["qubit_freq_est"] = [freq * 1e-9 for freq in self.qubit_freq_est]
|
262
|
-
out_dict["meas_freq_est"] = [freq * 1e-9 for freq in self.meas_freq_est]
|
263
|
-
return out_dict
|
264
|
-
|
265
|
-
@classmethod
|
266
|
-
def from_dict(cls, data):
|
267
|
-
"""Create a new PulseDefaults object from a dictionary.
|
268
|
-
|
269
|
-
Args:
|
270
|
-
data (dict): A dictionary representing the PulseDefaults
|
271
|
-
to create. It will be in the same format as output by
|
272
|
-
:meth:`to_dict`.
|
273
|
-
Returns:
|
274
|
-
PulseDefaults: The PulseDefaults from the input dictionary.
|
275
|
-
"""
|
276
|
-
schema = {
|
277
|
-
"pulse_library": PulseLibraryItem, # The class PulseLibraryItem is deprecated
|
278
|
-
"cmd_def": Command,
|
279
|
-
"meas_kernel": MeasurementKernel,
|
280
|
-
"discriminator": Discriminator,
|
281
|
-
}
|
282
|
-
|
283
|
-
# Pulse defaults data is nested dictionary.
|
284
|
-
# To avoid deepcopy and avoid mutating the source object, create new dict here.
|
285
|
-
in_data = {}
|
286
|
-
for key, value in data.items():
|
287
|
-
if key in schema:
|
288
|
-
with warnings.catch_warnings():
|
289
|
-
# The class PulseLibraryItem is deprecated
|
290
|
-
warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit")
|
291
|
-
if isinstance(value, list):
|
292
|
-
in_data[key] = list(map(schema[key].from_dict, value))
|
293
|
-
else:
|
294
|
-
in_data[key] = schema[key].from_dict(value)
|
295
|
-
else:
|
296
|
-
in_data[key] = value
|
297
|
-
|
298
|
-
return cls(**in_data)
|
299
|
-
|
300
|
-
def __str__(self):
|
301
|
-
qubit_freqs = [freq / 1e9 for freq in self.qubit_freq_est]
|
302
|
-
meas_freqs = [freq / 1e9 for freq in self.meas_freq_est]
|
303
|
-
qfreq = f"Qubit Frequencies [GHz]\n{qubit_freqs}"
|
304
|
-
mfreq = f"Measurement Frequencies [GHz]\n{meas_freqs} "
|
305
|
-
return f"<{self.__class__.__name__}({str(self.instruction_schedule_map)}{qfreq}\n{mfreq})>"
|
qiskit/providers/provider.py
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
# This code is part of Qiskit.
|
2
|
-
#
|
3
|
-
# (C) Copyright IBM 2017, 2023.
|
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
|
-
"""Base class for a provider."""
|
14
|
-
|
15
|
-
from abc import ABC, abstractmethod
|
16
|
-
|
17
|
-
from qiskit.providers.exceptions import QiskitBackendNotFoundError
|
18
|
-
from qiskit.utils import deprecate_func
|
19
|
-
|
20
|
-
|
21
|
-
class Provider:
|
22
|
-
"""Base common type for all versioned Provider abstract classes.
|
23
|
-
|
24
|
-
Note this class should not be inherited from directly, it is intended
|
25
|
-
to be used for type checking. When implementing a provider you should use
|
26
|
-
the versioned abstract classes as the parent class and not this class
|
27
|
-
directly.
|
28
|
-
"""
|
29
|
-
|
30
|
-
version = 0
|
31
|
-
|
32
|
-
@deprecate_func(
|
33
|
-
since=1.1,
|
34
|
-
additional_msg="The abstract Provider and ProviderV1 classes are deprecated and will be "
|
35
|
-
"removed in 2.0. You can just remove it as the parent class and a `get_backend` "
|
36
|
-
"method that returns the backends from `self.backend`.",
|
37
|
-
)
|
38
|
-
def __init__(self):
|
39
|
-
pass
|
40
|
-
|
41
|
-
|
42
|
-
class ProviderV1(Provider, ABC):
|
43
|
-
"""Base class for a Backend Provider."""
|
44
|
-
|
45
|
-
version = 1
|
46
|
-
|
47
|
-
@deprecate_func(
|
48
|
-
since=1.1,
|
49
|
-
additional_msg="The abstract Provider and ProviderV1 classes are deprecated and will be "
|
50
|
-
"removed in 2.0. You can just remove it as the parent class and a `get_backend` "
|
51
|
-
"method that returns the backends from `self.backend`.",
|
52
|
-
)
|
53
|
-
def get_backend(self, name=None, **kwargs):
|
54
|
-
"""Return a single backend matching the specified filtering.
|
55
|
-
|
56
|
-
Args:
|
57
|
-
name (str): name of the backend.
|
58
|
-
**kwargs: dict used for filtering.
|
59
|
-
|
60
|
-
Returns:
|
61
|
-
Backend: a backend matching the filtering.
|
62
|
-
|
63
|
-
Raises:
|
64
|
-
QiskitBackendNotFoundError: if no backend could be found or
|
65
|
-
more than one backend matches the filtering criteria.
|
66
|
-
"""
|
67
|
-
backends = self.backends(name, **kwargs)
|
68
|
-
if len(backends) > 1:
|
69
|
-
raise QiskitBackendNotFoundError("More than one backend matches the criteria")
|
70
|
-
if not backends:
|
71
|
-
raise QiskitBackendNotFoundError("No backend matches the criteria")
|
72
|
-
|
73
|
-
return backends[0]
|
74
|
-
|
75
|
-
@abstractmethod
|
76
|
-
def backends(self, name=None, **kwargs):
|
77
|
-
"""Return a list of backends matching the specified filtering.
|
78
|
-
|
79
|
-
Args:
|
80
|
-
name (str): name of the backend.
|
81
|
-
**kwargs: dict used for filtering.
|
82
|
-
|
83
|
-
Returns:
|
84
|
-
list[Backend]: a list of Backends that match the filtering
|
85
|
-
criteria.
|
86
|
-
"""
|
87
|
-
pass
|
88
|
-
|
89
|
-
def __eq__(self, other):
|
90
|
-
"""Equality comparison.
|
91
|
-
|
92
|
-
By default, it is assumed that two `Providers` from the same class are
|
93
|
-
equal. Subclassed providers can override this behavior.
|
94
|
-
"""
|
95
|
-
return type(self).__name__ == type(other).__name__
|
qiskit/pulse/__init__.py
DELETED
@@ -1,158 +0,0 @@
|
|
1
|
-
# This code is part of Qiskit.
|
2
|
-
#
|
3
|
-
# (C) Copyright IBM 2017, 2019.
|
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
|
-
r"""
|
14
|
-
===========================
|
15
|
-
Pulse (:mod:`qiskit.pulse`)
|
16
|
-
===========================
|
17
|
-
|
18
|
-
.. currentmodule:: qiskit.pulse
|
19
|
-
|
20
|
-
Qiskit-Pulse is a pulse-level quantum programming kit. This lower level of
|
21
|
-
programming offers the user more control than programming with
|
22
|
-
:py:class:`~qiskit.circuit.QuantumCircuit`\ s.
|
23
|
-
|
24
|
-
Extracting the greatest performance from quantum hardware requires real-time
|
25
|
-
pulse-level instructions. Pulse answers that need: it enables the quantum
|
26
|
-
physicist *user* to specify the exact time dynamics of an experiment.
|
27
|
-
It is especially powerful for error mitigation techniques.
|
28
|
-
|
29
|
-
The input is given as arbitrary, time-ordered signals (see: :ref:`Instructions <pulse-insts>`)
|
30
|
-
scheduled in parallel over multiple virtual hardware or simulator resources
|
31
|
-
(see: :ref:`Channels <pulse-channels>`). The system also allows the user to recover the
|
32
|
-
time dynamics of the measured output.
|
33
|
-
|
34
|
-
This is sufficient to allow the quantum physicist to explore and correct for
|
35
|
-
noise in a quantum system.
|
36
|
-
|
37
|
-
.. automodule:: qiskit.pulse.instructions
|
38
|
-
.. automodule:: qiskit.pulse.library
|
39
|
-
.. automodule:: qiskit.pulse.channels
|
40
|
-
.. automodule:: qiskit.pulse.schedule
|
41
|
-
.. automodule:: qiskit.pulse.transforms
|
42
|
-
.. automodule:: qiskit.pulse.builder
|
43
|
-
|
44
|
-
.. currentmodule:: qiskit.pulse
|
45
|
-
|
46
|
-
Configuration
|
47
|
-
=============
|
48
|
-
|
49
|
-
.. autosummary::
|
50
|
-
:toctree: ../stubs/
|
51
|
-
|
52
|
-
InstructionScheduleMap
|
53
|
-
|
54
|
-
Exceptions
|
55
|
-
==========
|
56
|
-
|
57
|
-
.. autoexception:: PulseError
|
58
|
-
.. autoexception:: BackendNotSet
|
59
|
-
.. autoexception:: NoActiveBuilder
|
60
|
-
.. autoexception:: UnassignedDurationError
|
61
|
-
.. autoexception:: UnassignedReferenceError
|
62
|
-
"""
|
63
|
-
|
64
|
-
# Builder imports.
|
65
|
-
from qiskit.pulse.builder import (
|
66
|
-
# Construction methods.
|
67
|
-
active_backend,
|
68
|
-
build,
|
69
|
-
num_qubits,
|
70
|
-
qubit_channels,
|
71
|
-
samples_to_seconds,
|
72
|
-
seconds_to_samples,
|
73
|
-
# Instructions.
|
74
|
-
acquire,
|
75
|
-
barrier,
|
76
|
-
call,
|
77
|
-
delay,
|
78
|
-
play,
|
79
|
-
reference,
|
80
|
-
set_frequency,
|
81
|
-
set_phase,
|
82
|
-
shift_frequency,
|
83
|
-
shift_phase,
|
84
|
-
snapshot,
|
85
|
-
# Channels.
|
86
|
-
acquire_channel,
|
87
|
-
control_channels,
|
88
|
-
drive_channel,
|
89
|
-
measure_channel,
|
90
|
-
# Contexts.
|
91
|
-
align_equispaced,
|
92
|
-
align_func,
|
93
|
-
align_left,
|
94
|
-
align_right,
|
95
|
-
align_sequential,
|
96
|
-
frequency_offset,
|
97
|
-
phase_offset,
|
98
|
-
# Macros.
|
99
|
-
macro,
|
100
|
-
measure,
|
101
|
-
measure_all,
|
102
|
-
delay_qubits,
|
103
|
-
)
|
104
|
-
from qiskit.pulse.channels import (
|
105
|
-
AcquireChannel,
|
106
|
-
ControlChannel,
|
107
|
-
DriveChannel,
|
108
|
-
MeasureChannel,
|
109
|
-
MemorySlot,
|
110
|
-
RegisterSlot,
|
111
|
-
SnapshotChannel,
|
112
|
-
)
|
113
|
-
from qiskit.pulse.configuration import (
|
114
|
-
Discriminator,
|
115
|
-
Kernel,
|
116
|
-
LoConfig,
|
117
|
-
LoRange,
|
118
|
-
)
|
119
|
-
from qiskit.pulse.exceptions import (
|
120
|
-
PulseError,
|
121
|
-
BackendNotSet,
|
122
|
-
NoActiveBuilder,
|
123
|
-
UnassignedDurationError,
|
124
|
-
UnassignedReferenceError,
|
125
|
-
)
|
126
|
-
from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap
|
127
|
-
from qiskit.pulse.instructions import (
|
128
|
-
Acquire,
|
129
|
-
Delay,
|
130
|
-
Instruction,
|
131
|
-
Play,
|
132
|
-
SetFrequency,
|
133
|
-
SetPhase,
|
134
|
-
ShiftFrequency,
|
135
|
-
ShiftPhase,
|
136
|
-
Snapshot,
|
137
|
-
)
|
138
|
-
from qiskit.pulse.library import (
|
139
|
-
Constant,
|
140
|
-
Drag,
|
141
|
-
Gaussian,
|
142
|
-
GaussianSquare,
|
143
|
-
GaussianSquareDrag,
|
144
|
-
gaussian_square_echo,
|
145
|
-
Sin,
|
146
|
-
Cos,
|
147
|
-
Sawtooth,
|
148
|
-
Triangle,
|
149
|
-
Square,
|
150
|
-
GaussianDeriv,
|
151
|
-
Sech,
|
152
|
-
SechDeriv,
|
153
|
-
SymbolicPulse,
|
154
|
-
ScalableSymbolicPulse,
|
155
|
-
Waveform,
|
156
|
-
)
|
157
|
-
from qiskit.pulse.library.samplers.decorators import functional_pulse
|
158
|
-
from qiskit.pulse.schedule import Schedule, ScheduleBlock
|