qiskit 1.4.1__cp39-abi3-win_amd64.whl → 2.0.0rc1__cp39-abi3-win_amd64.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.pyd +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 +1 -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
qiskit/transpiler/layout.py
CHANGED
@@ -22,7 +22,7 @@ from typing import List
|
|
22
22
|
from dataclasses import dataclass
|
23
23
|
|
24
24
|
from qiskit import circuit
|
25
|
-
from qiskit.circuit
|
25
|
+
from qiskit.circuit import Qubit, QuantumRegister
|
26
26
|
from qiskit.transpiler.exceptions import LayoutError
|
27
27
|
from qiskit.converters import isinstanceint
|
28
28
|
|
@@ -43,7 +43,6 @@ Routing
|
|
43
43
|
|
44
44
|
BasicSwap
|
45
45
|
LookaheadSwap
|
46
|
-
StochasticSwap
|
47
46
|
SabreSwap
|
48
47
|
Commuting2qGateRouter
|
49
48
|
StarPreRouting
|
@@ -75,7 +74,6 @@ Optimizations
|
|
75
74
|
CollectLinearFunctions
|
76
75
|
CollectCliffords
|
77
76
|
ConsolidateBlocks
|
78
|
-
CXCancellation
|
79
77
|
InverseCancellation
|
80
78
|
CommutationAnalysis
|
81
79
|
CommutativeCancellation
|
@@ -86,27 +84,13 @@ Optimizations
|
|
86
84
|
RemoveFinalReset
|
87
85
|
HoareOptimizer
|
88
86
|
TemplateOptimization
|
89
|
-
EchoRZXWeylDecomposition
|
90
87
|
ResetAfterMeasureSimplification
|
91
88
|
OptimizeCliffords
|
92
89
|
ElidePermutations
|
93
|
-
NormalizeRXAngle
|
94
90
|
OptimizeAnnotated
|
95
91
|
Split2QUnitaries
|
96
92
|
RemoveIdentityEquivalent
|
97
|
-
|
98
|
-
Calibration
|
99
|
-
=============
|
100
|
-
|
101
|
-
.. autosummary::
|
102
|
-
:toctree: ../stubs/
|
103
|
-
|
104
|
-
PulseGates
|
105
|
-
RZXCalibrationBuilder
|
106
|
-
RZXCalibrationBuilderNoEcho
|
107
|
-
RXCalibrationBuilder
|
108
|
-
|
109
|
-
.. autofunction:: rzx_templates
|
93
|
+
ContractIdleWiresInControlFlow
|
110
94
|
|
111
95
|
Scheduling
|
112
96
|
=============
|
@@ -120,13 +104,8 @@ Scheduling
|
|
120
104
|
PadDynamicalDecoupling
|
121
105
|
PadDelay
|
122
106
|
ConstrainedReschedule
|
123
|
-
ValidatePulseGates
|
124
107
|
InstructionDurationCheck
|
125
108
|
SetIOLatency
|
126
|
-
ALAPSchedule
|
127
|
-
ASAPSchedule
|
128
|
-
DynamicalDecoupling
|
129
|
-
AlignMeasures
|
130
109
|
|
131
110
|
Circuit Analysis
|
132
111
|
================
|
@@ -185,7 +164,6 @@ Additional Passes
|
|
185
164
|
MinimumPoint
|
186
165
|
ContainsInstruction
|
187
166
|
GatesInBasis
|
188
|
-
ConvertConditionsToIfOps
|
189
167
|
UnrollForLoops
|
190
168
|
FilterOpNodes
|
191
169
|
"""
|
@@ -208,7 +186,6 @@ from .layout import SabrePreLayout
|
|
208
186
|
from .routing import BasicSwap
|
209
187
|
from .routing import LayoutTransformation
|
210
188
|
from .routing import LookaheadSwap
|
211
|
-
from .routing import StochasticSwap
|
212
189
|
from .routing import SabreSwap
|
213
190
|
from .routing import Commuting2qGateRouter
|
214
191
|
from .routing import StarPreRouting
|
@@ -230,7 +207,6 @@ from .optimization import ConsolidateBlocks
|
|
230
207
|
from .optimization import CommutationAnalysis
|
231
208
|
from .optimization import CommutativeCancellation
|
232
209
|
from .optimization import CommutativeInverseCancellation
|
233
|
-
from .optimization import CXCancellation
|
234
210
|
from .optimization import Optimize1qGatesSimpleCommutation
|
235
211
|
from .optimization import OptimizeSwapBeforeMeasure
|
236
212
|
from .optimization import RemoveResetInZeroState
|
@@ -239,17 +215,16 @@ from .optimization import RemoveDiagonalGatesBeforeMeasure
|
|
239
215
|
from .optimization import HoareOptimizer
|
240
216
|
from .optimization import TemplateOptimization
|
241
217
|
from .optimization import InverseCancellation
|
242
|
-
from .optimization import EchoRZXWeylDecomposition
|
243
218
|
from .optimization import CollectAndCollapse
|
244
219
|
from .optimization import CollectLinearFunctions
|
245
220
|
from .optimization import CollectCliffords
|
246
221
|
from .optimization import ResetAfterMeasureSimplification
|
247
222
|
from .optimization import OptimizeCliffords
|
248
223
|
from .optimization import ElidePermutations
|
249
|
-
from .optimization import NormalizeRXAngle
|
250
224
|
from .optimization import OptimizeAnnotated
|
251
225
|
from .optimization import RemoveIdentityEquivalent
|
252
226
|
from .optimization import Split2QUnitaries
|
227
|
+
from .optimization import ContractIdleWiresInControlFlow
|
253
228
|
|
254
229
|
# circuit analysis
|
255
230
|
from .analysis import ResourceEstimation
|
@@ -271,27 +246,15 @@ from .synthesis import SolovayKitaev
|
|
271
246
|
from .synthesis import SolovayKitaevSynthesis
|
272
247
|
from .synthesis import AQCSynthesisPlugin
|
273
248
|
|
274
|
-
# calibration
|
275
|
-
from .calibration import PulseGates
|
276
|
-
from .calibration import RZXCalibrationBuilder
|
277
|
-
from .calibration import RZXCalibrationBuilderNoEcho
|
278
|
-
from .calibration import RXCalibrationBuilder
|
279
|
-
from .calibration.rzx_templates import rzx_templates
|
280
|
-
|
281
249
|
# circuit scheduling
|
282
250
|
from .scheduling import TimeUnitConversion
|
283
251
|
from .scheduling import ALAPScheduleAnalysis
|
284
252
|
from .scheduling import ASAPScheduleAnalysis
|
285
253
|
from .scheduling import PadDynamicalDecoupling
|
286
|
-
from .scheduling import ValidatePulseGates
|
287
254
|
from .scheduling import PadDelay
|
288
255
|
from .scheduling import ConstrainedReschedule
|
289
256
|
from .scheduling import InstructionDurationCheck
|
290
257
|
from .scheduling import SetIOLatency
|
291
|
-
from .scheduling import ALAPSchedule
|
292
|
-
from .scheduling import ASAPSchedule
|
293
|
-
from .scheduling import DynamicalDecoupling
|
294
|
-
from .scheduling import AlignMeasures
|
295
258
|
|
296
259
|
# additional utility passes
|
297
260
|
from .utils import CheckMap
|
@@ -307,6 +270,5 @@ from .utils import Error
|
|
307
270
|
from .utils import RemoveBarriers
|
308
271
|
from .utils import ContainsInstruction
|
309
272
|
from .utils import GatesInBasis
|
310
|
-
from .utils import ConvertConditionsToIfOps
|
311
273
|
from .utils import UnrollForLoops
|
312
274
|
from .utils import FilterOpNodes
|
@@ -98,15 +98,16 @@ class BasisTranslator(TransformationPass):
|
|
98
98
|
min_qubits (int): The minimum number of qubits for operations in the input
|
99
99
|
dag to translate.
|
100
100
|
"""
|
101
|
-
|
102
101
|
super().__init__()
|
103
102
|
self._equiv_lib = equivalence_library
|
104
103
|
self._target_basis = target_basis
|
105
|
-
|
104
|
+
# Bypass target if it doesn't contain any basis gates (i.e. it's a _FakeTarget), as this
|
105
|
+
# not part of the official target model.
|
106
|
+
self._target = target if target is not None and len(target.operation_names) > 0 else None
|
106
107
|
self._non_global_operations = None
|
107
108
|
self._qargs_with_non_global_operation = {}
|
108
109
|
self._min_qubits = min_qubits
|
109
|
-
if
|
110
|
+
if self._target is not None:
|
110
111
|
self._non_global_operations = self._target.get_non_global_operation_names()
|
111
112
|
self._qargs_with_non_global_operation = defaultdict(set)
|
112
113
|
for gate in self._non_global_operations:
|
@@ -17,7 +17,6 @@ from __future__ import annotations
|
|
17
17
|
from collections.abc import Sequence
|
18
18
|
from typing import Type
|
19
19
|
from fnmatch import fnmatch
|
20
|
-
import warnings
|
21
20
|
|
22
21
|
from qiskit.transpiler.basepasses import TransformationPass
|
23
22
|
from qiskit.transpiler.passes.utils import control_flow
|
@@ -75,11 +74,9 @@ class Decompose(TransformationPass):
|
|
75
74
|
elif getattr(node.op, "definition", None) is None:
|
76
75
|
# if we try to synthesize, turn the node into a DAGCircuit and run HLS
|
77
76
|
if self.apply_synthesis:
|
78
|
-
# note that node_as_dag does not include the condition, which will
|
79
|
-
# be propagated in ``substitute_node_with_dag``
|
80
77
|
node_as_dag = _node_to_dag(node)
|
81
78
|
synthesized = hls.run(node_as_dag)
|
82
|
-
dag.substitute_node_with_dag(node, synthesized
|
79
|
+
dag.substitute_node_with_dag(node, synthesized)
|
83
80
|
|
84
81
|
# else: no definition and synthesis not enabled, so we do nothing
|
85
82
|
else:
|
@@ -131,17 +128,6 @@ class Decompose(TransformationPass):
|
|
131
128
|
|
132
129
|
|
133
130
|
def _node_to_dag(node: DAGOpNode) -> DAGCircuit:
|
134
|
-
# Control flow is already handled separately, however that does not capture
|
135
|
-
# c_if, which we are treating here. We explicitly ignore the condition attribute,
|
136
|
-
# which will be handled by ``substitute_node_with_dag``, so we create a copy of the node
|
137
|
-
# and set the condition to None. Once ``c_if`` is removed for 2.0, this block can go, too.
|
138
|
-
with warnings.catch_warnings():
|
139
|
-
warnings.filterwarnings("ignore", category=DeprecationWarning)
|
140
|
-
if getattr(node.op, "condition", None) is not None:
|
141
|
-
op = node.op.copy()
|
142
|
-
op.condition = None
|
143
|
-
node = DAGOpNode(op, node.qargs, node.cargs)
|
144
|
-
|
145
131
|
# create new dag and apply the operation
|
146
132
|
dag = DAGCircuit()
|
147
133
|
dag.add_qubits(node.qargs)
|
@@ -54,13 +54,9 @@ class Unroll3qOrMore(TransformationPass):
|
|
54
54
|
QiskitError: if a 3q+ gate is not decomposable
|
55
55
|
"""
|
56
56
|
for node in dag.multi_qubit_ops():
|
57
|
-
if dag._has_calibration_for(node):
|
58
|
-
continue
|
59
57
|
|
60
58
|
if isinstance(node.op, ControlFlowOp):
|
61
|
-
dag.substitute_node(
|
62
|
-
node, control_flow.map_blocks(self.run, node.op), propagate_condition=False
|
63
|
-
)
|
59
|
+
dag.substitute_node(node, control_flow.map_blocks(self.run, node.op))
|
64
60
|
continue
|
65
61
|
|
66
62
|
if self.target is not None:
|
@@ -67,14 +67,15 @@ class UnrollCustomDefinitions(TransformationPass):
|
|
67
67
|
for node in dag.op_nodes():
|
68
68
|
if isinstance(node.op, ControlFlowOp):
|
69
69
|
dag.substitute_node(
|
70
|
-
node,
|
70
|
+
node,
|
71
|
+
control_flow.map_blocks(self.run, node.op),
|
71
72
|
)
|
72
73
|
continue
|
73
74
|
|
74
75
|
if getattr(node.op, "_directive", False):
|
75
76
|
continue
|
76
77
|
|
77
|
-
if
|
78
|
+
if len(node.qargs) < self._min_qubits:
|
78
79
|
continue
|
79
80
|
|
80
81
|
controlled_gate_open_ctrl = isinstance(node.op, ControlledGate) and node.op._open_ctrl
|
@@ -67,6 +67,10 @@ class ApplyLayout(TransformationPass):
|
|
67
67
|
new_dag.add_captured_var(var)
|
68
68
|
for var in dag.iter_declared_vars():
|
69
69
|
new_dag.add_declared_var(var)
|
70
|
+
for stretch in dag.iter_captured_stretches():
|
71
|
+
new_dag.add_captured_stretch(stretch)
|
72
|
+
for stretch in dag.iter_declared_stretches():
|
73
|
+
new_dag.add_declared_stretch(stretch)
|
70
74
|
new_dag.metadata = dag.metadata
|
71
75
|
new_dag.add_clbits(dag.clbits)
|
72
76
|
for creg in dag.cregs.values():
|
@@ -21,8 +21,6 @@ from qiskit.transpiler.basepasses import AnalysisPass
|
|
21
21
|
from qiskit.transpiler.exceptions import TranspilerError
|
22
22
|
from qiskit.transpiler.passes.layout import disjoint_utils
|
23
23
|
|
24
|
-
from qiskit.utils import deprecate_arg
|
25
|
-
|
26
24
|
from qiskit._accelerate.dense_layout import best_subset
|
27
25
|
|
28
26
|
|
@@ -38,27 +36,15 @@ class DenseLayout(AnalysisPass):
|
|
38
36
|
by being set in ``property_set``.
|
39
37
|
"""
|
40
38
|
|
41
|
-
|
42
|
-
name="backend_prop",
|
43
|
-
since="1.4",
|
44
|
-
package_name="Qiskit",
|
45
|
-
removal_timeline="in Qiskit 2.0",
|
46
|
-
additional_msg="The BackendProperties data structure has been deprecated and will be "
|
47
|
-
"removed in Qiskit 2.0. The `target` input argument should be used instead. "
|
48
|
-
"You can use Target.from_configuration() to build the target from the properties "
|
49
|
-
"object, but in 2.0 you will need to generate a target directly.",
|
50
|
-
)
|
51
|
-
def __init__(self, coupling_map=None, backend_prop=None, target=None):
|
39
|
+
def __init__(self, coupling_map=None, target=None):
|
52
40
|
"""DenseLayout initializer.
|
53
41
|
|
54
42
|
Args:
|
55
43
|
coupling_map (Coupling): directed graph representing a coupling map.
|
56
|
-
backend_prop (BackendProperties): backend properties object
|
57
44
|
target (Target): A target representing the target backend.
|
58
45
|
"""
|
59
46
|
super().__init__()
|
60
47
|
self.coupling_map = coupling_map
|
61
|
-
self.backend_prop = backend_prop
|
62
48
|
self.target = target
|
63
49
|
self.adjacency_matrix = None
|
64
50
|
if target is not None:
|
@@ -139,8 +125,6 @@ class DenseLayout(AnalysisPass):
|
|
139
125
|
error_mat, use_error = _build_error_matrix(
|
140
126
|
coupling_map.size(),
|
141
127
|
reverse_index_map,
|
142
|
-
backend_prop=self.backend_prop,
|
143
|
-
coupling_map=self.coupling_map,
|
144
128
|
target=self.target,
|
145
129
|
)
|
146
130
|
|
@@ -160,7 +144,7 @@ class DenseLayout(AnalysisPass):
|
|
160
144
|
return best_map
|
161
145
|
|
162
146
|
|
163
|
-
def _build_error_matrix(num_qubits, qubit_map, target=None
|
147
|
+
def _build_error_matrix(num_qubits, qubit_map, target=None):
|
164
148
|
error_mat = np.zeros((num_qubits, num_qubits))
|
165
149
|
use_error = False
|
166
150
|
if target is not None and target.qargs is not None:
|
@@ -190,25 +174,4 @@ def _build_error_matrix(num_qubits, qubit_map, target=None, coupling_map=None, b
|
|
190
174
|
elif len(qargs) == 2:
|
191
175
|
error_mat[qubit_map[qargs[0]]][qubit_map[qargs[1]]] = max_error
|
192
176
|
use_error = True
|
193
|
-
elif backend_prop and coupling_map:
|
194
|
-
error_dict = {
|
195
|
-
tuple(gate.qubits): gate.parameters[0].value
|
196
|
-
for gate in backend_prop.gates
|
197
|
-
if len(gate.qubits) == 2
|
198
|
-
}
|
199
|
-
for edge in coupling_map.get_edges():
|
200
|
-
gate_error = error_dict.get(edge)
|
201
|
-
if gate_error is not None:
|
202
|
-
if edge[0] not in qubit_map or edge[1] not in qubit_map:
|
203
|
-
continue
|
204
|
-
error_mat[qubit_map[edge[0]]][qubit_map[edge[1]]] = gate_error
|
205
|
-
use_error = True
|
206
|
-
for index, qubit_data in enumerate(backend_prop.qubits):
|
207
|
-
if index not in qubit_map:
|
208
|
-
continue
|
209
|
-
for item in qubit_data:
|
210
|
-
if item.name == "readout_error":
|
211
|
-
mapped_index = qubit_map[index]
|
212
|
-
error_mat[mapped_index][mapped_index] = item.value
|
213
|
-
use_error = True
|
214
177
|
return error_mat, use_error
|
@@ -92,10 +92,10 @@ class FullAncillaAllocation(AnalysisPass):
|
|
92
92
|
|
93
93
|
if idle_physical_qubits:
|
94
94
|
if self.ancilla_name in dag.qregs:
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
95
|
+
qreg = QuantumRegister(
|
96
|
+
len(idle_physical_qubits),
|
97
|
+
name=f"{self.ancilla_name}{QuantumRegister.instances_count + 1}",
|
98
|
+
)
|
99
99
|
else:
|
100
100
|
qreg = QuantumRegister(len(idle_physical_qubits), name=self.ancilla_name)
|
101
101
|
|
@@ -39,7 +39,7 @@ from qiskit._accelerate.sabre import sabre_layout_and_routing, Heuristic, Neighb
|
|
39
39
|
from qiskit.transpiler.passes.routing.sabre_swap import _build_sabre_dag, _apply_sabre_result
|
40
40
|
from qiskit.transpiler.target import Target
|
41
41
|
from qiskit.transpiler.coupling import CouplingMap
|
42
|
-
from qiskit.utils
|
42
|
+
from qiskit.utils import default_num_processes
|
43
43
|
|
44
44
|
logger = logging.getLogger(__name__)
|
45
45
|
|
@@ -176,11 +176,11 @@ class SabreLayout(TransformationPass):
|
|
176
176
|
self.max_iterations = max_iterations
|
177
177
|
self.trials = swap_trials
|
178
178
|
if swap_trials is None:
|
179
|
-
self.swap_trials =
|
179
|
+
self.swap_trials = default_num_processes()
|
180
180
|
else:
|
181
181
|
self.swap_trials = swap_trials
|
182
182
|
if layout_trials is None:
|
183
|
-
self.layout_trials =
|
183
|
+
self.layout_trials = default_num_processes()
|
184
184
|
else:
|
185
185
|
self.layout_trials = layout_trials
|
186
186
|
self.skip_routing = skip_routing
|
@@ -315,6 +315,10 @@ class SabreLayout(TransformationPass):
|
|
315
315
|
mapped_dag.add_captured_var(var)
|
316
316
|
for var in dag.iter_declared_vars():
|
317
317
|
mapped_dag.add_declared_var(var)
|
318
|
+
for stretch in dag.iter_captured_stretches():
|
319
|
+
mapped_dag.add_captured_stretch(stretch)
|
320
|
+
for stretch in dag.iter_declared_stretches():
|
321
|
+
mapped_dag.add_declared_stretch(stretch)
|
318
322
|
mapped_dag.global_phase = dag.global_phase
|
319
323
|
self.property_set["original_qubit_indices"] = {
|
320
324
|
bit: index for index, bit in enumerate(dag.qubits)
|
@@ -24,7 +24,6 @@ from qiskit.transpiler.basepasses import AnalysisPass
|
|
24
24
|
from qiskit.transpiler.exceptions import TranspilerError
|
25
25
|
from qiskit.transpiler.passes.layout import vf2_utils
|
26
26
|
|
27
|
-
from qiskit.utils import deprecate_arg
|
28
27
|
|
29
28
|
logger = logging.getLogger(__name__)
|
30
29
|
|
@@ -74,16 +73,6 @@ class VF2Layout(AnalysisPass):
|
|
74
73
|
``vf2_avg_error_map`` key in the property set when :class:`~.VF2Layout` is run.
|
75
74
|
"""
|
76
75
|
|
77
|
-
@deprecate_arg(
|
78
|
-
name="properties",
|
79
|
-
since="1.4",
|
80
|
-
package_name="Qiskit",
|
81
|
-
removal_timeline="in Qiskit 2.0",
|
82
|
-
additional_msg="The BackendProperties data structure has been deprecated and will be "
|
83
|
-
"removed in Qiskit 2.0. The `target` input argument should be used instead. "
|
84
|
-
"You can use Target.from_configuration() to build the target from the properties "
|
85
|
-
"object, but in 2.0 you will need to generate a target directly.",
|
86
|
-
)
|
87
76
|
def __init__(
|
88
77
|
self,
|
89
78
|
coupling_map=None,
|
@@ -91,7 +80,6 @@ class VF2Layout(AnalysisPass):
|
|
91
80
|
seed=None,
|
92
81
|
call_limit=None,
|
93
82
|
time_limit=None,
|
94
|
-
properties=None,
|
95
83
|
max_trials=None,
|
96
84
|
target=None,
|
97
85
|
):
|
@@ -105,16 +93,13 @@ class VF2Layout(AnalysisPass):
|
|
105
93
|
call_limit (int): The number of state visits to attempt in each execution of
|
106
94
|
VF2.
|
107
95
|
time_limit (float): The total time limit in seconds to run ``VF2Layout``
|
108
|
-
properties (BackendProperties): The backend properties for the backend. If
|
109
|
-
:meth:`~qiskit.providers.models.BackendProperties.readout_error` is available
|
110
|
-
it is used to score the layout.
|
111
96
|
max_trials (int): The maximum number of trials to run VF2 to find
|
112
97
|
a layout. If this is not specified the number of trials will be limited
|
113
98
|
based on the number of edges in the interaction graph or the coupling graph
|
114
99
|
(whichever is larger) if no other limits are set. If set to a value <= 0 no
|
115
100
|
limit on the number of trials will be set.
|
116
101
|
target (Target): A target representing the backend device to run ``VF2Layout`` on.
|
117
|
-
If specified it will supersede a set value for
|
102
|
+
If specified it will supersede a set value for
|
118
103
|
``coupling_map`` if the :class:`.Target` contains connectivity constraints. If the value
|
119
104
|
of ``target`` models an ideal backend without any constraints then the value of
|
120
105
|
``coupling_map``
|
@@ -132,7 +117,6 @@ class VF2Layout(AnalysisPass):
|
|
132
117
|
self.coupling_map = target_coupling_map
|
133
118
|
else:
|
134
119
|
self.coupling_map = coupling_map
|
135
|
-
self.properties = properties
|
136
120
|
self.strict_direction = strict_direction
|
137
121
|
self.seed = seed
|
138
122
|
self.call_limit = call_limit
|
@@ -146,9 +130,7 @@ class VF2Layout(AnalysisPass):
|
|
146
130
|
raise TranspilerError("coupling_map or target must be specified.")
|
147
131
|
self.avg_error_map = self.property_set["vf2_avg_error_map"]
|
148
132
|
if self.avg_error_map is None:
|
149
|
-
self.avg_error_map = vf2_utils.build_average_error_map(
|
150
|
-
self.target, self.properties, self.coupling_map
|
151
|
-
)
|
133
|
+
self.avg_error_map = vf2_utils.build_average_error_map(self.target, self.coupling_map)
|
152
134
|
|
153
135
|
result = vf2_utils.build_interaction_graph(dag, self.strict_direction)
|
154
136
|
if result is None:
|