qiskit 1.3.0__cp39-abi3-win32.whl → 1.3.0b1__cp39-abi3-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qiskit/VERSION.txt +1 -1
- qiskit/__init__.py +1 -20
- qiskit/_accelerate.pyd +0 -0
- qiskit/assembler/assemble_schedules.py +0 -2
- qiskit/circuit/__init__.py +1 -44
- qiskit/circuit/_standard_gates_commutations.py +0 -585
- qiskit/circuit/barrier.py +0 -2
- qiskit/circuit/controlflow/builder.py +3 -3
- qiskit/circuit/controlflow/if_else.py +5 -13
- qiskit/circuit/controlflow/while_loop.py +2 -10
- qiskit/circuit/delay.py +3 -20
- qiskit/circuit/equivalence.py +214 -13
- qiskit/circuit/gate.py +1 -3
- qiskit/circuit/instruction.py +11 -32
- qiskit/circuit/instructionset.py +0 -2
- qiskit/circuit/library/__init__.py +14 -110
- qiskit/circuit/library/arithmetic/__init__.py +2 -9
- qiskit/circuit/library/arithmetic/adders/__init__.py +0 -1
- qiskit/circuit/library/arithmetic/adders/adder.py +2 -154
- qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +56 -20
- qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +1 -14
- qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +91 -21
- qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
- qiskit/circuit/library/arithmetic/multipliers/__init__.py +0 -1
- qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -8
- qiskit/circuit/library/arithmetic/multipliers/multiplier.py +3 -94
- qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +1 -8
- qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
- qiskit/circuit/library/basis_change/qft.py +38 -20
- qiskit/circuit/library/blueprintcircuit.py +0 -64
- qiskit/circuit/library/boolean_logic/__init__.py +4 -4
- qiskit/circuit/library/boolean_logic/inner_product.py +4 -81
- qiskit/circuit/library/boolean_logic/quantum_and.py +4 -107
- qiskit/circuit/library/boolean_logic/quantum_or.py +3 -107
- qiskit/circuit/library/boolean_logic/quantum_xor.py +3 -97
- qiskit/circuit/library/data_preparation/__init__.py +3 -6
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +29 -342
- qiskit/circuit/library/data_preparation/{_z_feature_map.py → z_feature_map.py} +34 -45
- qiskit/circuit/library/data_preparation/zz_feature_map.py +118 -0
- qiskit/circuit/library/fourier_checking.py +11 -72
- qiskit/circuit/library/generalized_gates/__init__.py +1 -1
- qiskit/circuit/library/generalized_gates/diagonal.py +51 -45
- qiskit/circuit/library/generalized_gates/gms.py +14 -67
- qiskit/circuit/library/generalized_gates/gr.py +4 -4
- qiskit/circuit/library/generalized_gates/isometry.py +2 -2
- qiskit/circuit/library/generalized_gates/linear_function.py +6 -12
- qiskit/circuit/library/generalized_gates/mcmt.py +107 -167
- qiskit/circuit/library/generalized_gates/permutation.py +6 -8
- qiskit/circuit/library/generalized_gates/rv.py +9 -8
- qiskit/circuit/library/graph_state.py +10 -93
- qiskit/circuit/library/grover_operator.py +2 -270
- qiskit/circuit/library/hidden_linear_function.py +20 -83
- qiskit/circuit/library/iqp.py +20 -99
- qiskit/circuit/library/n_local/__init__.py +7 -19
- qiskit/circuit/library/n_local/efficient_su2.py +5 -118
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +0 -259
- qiskit/circuit/library/n_local/excitation_preserving.py +6 -130
- qiskit/circuit/library/n_local/n_local.py +5 -406
- qiskit/circuit/library/n_local/pauli_two_design.py +4 -106
- qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -80
- qiskit/circuit/library/n_local/real_amplitudes.py +7 -127
- qiskit/circuit/library/n_local/two_local.py +7 -14
- qiskit/circuit/library/overlap.py +26 -91
- qiskit/circuit/library/pauli_evolution.py +15 -17
- qiskit/circuit/library/phase_estimation.py +4 -80
- qiskit/circuit/library/quantum_volume.py +20 -72
- qiskit/circuit/library/standard_gates/__init__.py +1 -20
- qiskit/circuit/library/standard_gates/dcx.py +1 -2
- qiskit/circuit/library/standard_gates/ecr.py +2 -2
- qiskit/circuit/library/standard_gates/h.py +3 -4
- qiskit/circuit/library/standard_gates/i.py +1 -2
- qiskit/circuit/library/standard_gates/iswap.py +2 -2
- qiskit/circuit/library/standard_gates/p.py +12 -20
- qiskit/circuit/library/standard_gates/r.py +1 -1
- qiskit/circuit/library/standard_gates/rx.py +3 -4
- qiskit/circuit/library/standard_gates/rxx.py +2 -2
- qiskit/circuit/library/standard_gates/ry.py +3 -4
- qiskit/circuit/library/standard_gates/ryy.py +2 -2
- qiskit/circuit/library/standard_gates/rz.py +12 -13
- qiskit/circuit/library/standard_gates/rzx.py +6 -6
- qiskit/circuit/library/standard_gates/rzz.py +1 -1
- qiskit/circuit/library/standard_gates/s.py +4 -4
- qiskit/circuit/library/standard_gates/swap.py +3 -3
- qiskit/circuit/library/standard_gates/sx.py +3 -4
- qiskit/circuit/library/standard_gates/t.py +2 -2
- qiskit/circuit/library/standard_gates/u.py +3 -11
- qiskit/circuit/library/standard_gates/u1.py +15 -65
- qiskit/circuit/library/standard_gates/u2.py +1 -4
- qiskit/circuit/library/standard_gates/u3.py +3 -31
- qiskit/circuit/library/standard_gates/x.py +5 -7
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -2
- qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -2
- qiskit/circuit/library/standard_gates/y.py +3 -4
- qiskit/circuit/library/standard_gates/z.py +3 -3
- qiskit/circuit/library/templates/clifford/clifford_2_1.py +8 -9
- qiskit/circuit/library/templates/clifford/clifford_2_2.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_2_3.py +7 -9
- qiskit/circuit/library/templates/clifford/clifford_2_4.py +8 -9
- qiskit/circuit/library/templates/clifford/clifford_3_1.py +8 -9
- qiskit/circuit/library/templates/clifford/clifford_4_1.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_4_2.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_4_3.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_4_4.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_5_1.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_6_1.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_6_2.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_6_3.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_6_4.py +8 -9
- qiskit/circuit/library/templates/clifford/clifford_6_5.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_8_1.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_8_2.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_8_3.py +9 -10
- qiskit/circuit/library/templates/nct/template_nct_2a_1.py +7 -9
- qiskit/circuit/library/templates/nct/template_nct_2a_2.py +8 -10
- qiskit/circuit/library/templates/nct/template_nct_2a_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_4a_1.py +14 -16
- qiskit/circuit/library/templates/nct/template_nct_4a_2.py +12 -14
- qiskit/circuit/library/templates/nct/template_nct_4a_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_4b_1.py +12 -14
- qiskit/circuit/library/templates/nct/template_nct_4b_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_5a_1.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_5a_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_5a_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_5a_4.py +9 -11
- qiskit/circuit/library/templates/nct/template_nct_6a_1.py +9 -11
- qiskit/circuit/library/templates/nct/template_nct_6a_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6a_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6a_4.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6b_1.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6b_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6c_1.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_7a_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_7b_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_7c_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_7d_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_7e_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_9a_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_9c_1.py +9 -11
- qiskit/circuit/library/templates/nct/template_nct_9c_10.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_11.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_12.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_4.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_5.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_6.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_7.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_8.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_9.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_1.py +9 -11
- qiskit/circuit/library/templates/nct/template_nct_9d_10.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_4.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_5.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_6.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_7.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_8.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_9.py +10 -12
- qiskit/circuit/library/templates/rzx/rzx_cy.py +10 -11
- qiskit/circuit/library/templates/rzx/rzx_xz.py +15 -16
- qiskit/circuit/library/templates/rzx/rzx_yz.py +10 -12
- qiskit/circuit/library/templates/rzx/rzx_zz1.py +20 -22
- qiskit/circuit/library/templates/rzx/rzx_zz2.py +15 -16
- qiskit/circuit/library/templates/rzx/rzx_zz3.py +15 -17
- qiskit/circuit/parameter.py +0 -4
- qiskit/circuit/parameterexpression.py +34 -167
- qiskit/circuit/quantumcircuit.py +126 -162
- qiskit/circuit/singleton.py +0 -2
- qiskit/circuit/store.py +0 -2
- qiskit/compiler/assembler.py +4 -17
- qiskit/compiler/scheduler.py +0 -2
- qiskit/compiler/sequencer.py +0 -2
- qiskit/compiler/transpiler.py +26 -81
- qiskit/converters/circuit_to_dag.py +2 -2
- qiskit/converters/circuit_to_dagdependency.py +1 -1
- qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
- qiskit/converters/circuit_to_instruction.py +1 -1
- qiskit/converters/dag_to_circuit.py +5 -7
- qiskit/converters/dag_to_dagdependency.py +1 -1
- qiskit/converters/dag_to_dagdependency_v2.py +1 -1
- qiskit/converters/dagdependency_to_circuit.py +1 -5
- qiskit/converters/dagdependency_to_dag.py +1 -6
- qiskit/dagcircuit/collect_blocks.py +3 -3
- qiskit/dagcircuit/dagdependency.py +5 -18
- qiskit/dagcircuit/dagdependency_v2.py +1 -1
- qiskit/dagcircuit/dagnode.py +2 -2
- qiskit/passmanager/__init__.py +2 -2
- qiskit/primitives/backend_estimator.py +2 -5
- qiskit/primitives/backend_sampler_v2.py +18 -61
- qiskit/primitives/base/base_estimator.py +2 -2
- qiskit/primitives/containers/data_bin.py +1 -9
- qiskit/primitives/statevector_sampler.py +1 -1
- qiskit/primitives/utils.py +1 -1
- qiskit/providers/__init__.py +3 -3
- qiskit/providers/backend.py +1 -12
- qiskit/providers/backend_compat.py +3 -23
- qiskit/providers/basic_provider/basic_simulator.py +2 -12
- qiskit/providers/fake_provider/fake_pulse_backend.py +1 -6
- qiskit/providers/fake_provider/generic_backend_v2.py +30 -46
- qiskit/providers/models/pulsedefaults.py +0 -2
- qiskit/pulse/builder.py +18 -59
- qiskit/pulse/calibration_entries.py +1 -4
- qiskit/pulse/channels.py +0 -2
- qiskit/pulse/exceptions.py +0 -2
- qiskit/pulse/instruction_schedule_map.py +6 -21
- qiskit/pulse/instructions/acquire.py +0 -2
- qiskit/pulse/instructions/delay.py +0 -2
- qiskit/pulse/instructions/directives.py +0 -8
- qiskit/pulse/instructions/frequency.py +0 -3
- qiskit/pulse/instructions/instruction.py +0 -2
- qiskit/pulse/instructions/phase.py +0 -3
- qiskit/pulse/instructions/play.py +0 -2
- qiskit/pulse/instructions/reference.py +0 -2
- qiskit/pulse/instructions/snapshot.py +0 -2
- qiskit/pulse/library/pulse.py +0 -2
- qiskit/pulse/library/symbolic_pulses.py +0 -28
- qiskit/pulse/library/waveform.py +0 -2
- qiskit/pulse/macros.py +1 -1
- qiskit/pulse/schedule.py +13 -12
- qiskit/pulse/transforms/alignments.py +3 -5
- qiskit/pulse/transforms/dag.py +0 -7
- qiskit/qasm2/export.py +3 -5
- qiskit/qasm2/parse.py +2 -46
- qiskit/qasm3/__init__.py +0 -1
- qiskit/qasm3/ast.py +15 -123
- qiskit/qasm3/exporter.py +77 -103
- qiskit/qobj/converters/pulse_instruction.py +4 -6
- qiskit/qpy/__init__.py +0 -181
- qiskit/qpy/binary_io/circuits.py +5 -20
- qiskit/qpy/binary_io/schedules.py +4 -3
- qiskit/qpy/binary_io/value.py +13 -310
- qiskit/qpy/common.py +2 -46
- qiskit/qpy/formats.py +0 -7
- qiskit/qpy/interface.py +4 -40
- qiskit/quantum_info/__init__.py +0 -4
- qiskit/quantum_info/operators/channel/transformations.py +21 -28
- qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
- qiskit/quantum_info/operators/operator.py +8 -54
- qiskit/quantum_info/operators/symplectic/base_pauli.py +19 -11
- qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
- qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
- qiskit/quantum_info/operators/symplectic/pauli.py +0 -2
- qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +2 -23
- qiskit/quantum_info/states/densitymatrix.py +5 -5
- qiskit/quantum_info/states/stabilizerstate.py +1 -1
- qiskit/quantum_info/states/statevector.py +6 -6
- qiskit/result/mitigation/base_readout_mitigator.py +1 -1
- qiskit/result/mitigation/correlated_readout_mitigator.py +1 -9
- qiskit/result/mitigation/local_readout_mitigator.py +1 -9
- qiskit/result/mitigation/utils.py +0 -57
- qiskit/scheduler/config.py +0 -2
- qiskit/scheduler/methods/basic.py +0 -3
- qiskit/scheduler/schedule_circuit.py +0 -2
- qiskit/scheduler/sequence.py +0 -2
- qiskit/synthesis/__init__.py +0 -25
- qiskit/synthesis/clifford/clifford_decompose_bm.py +2 -1
- qiskit/synthesis/clifford/clifford_decompose_greedy.py +2 -3
- qiskit/synthesis/clifford/clifford_decompose_layers.py +1 -2
- qiskit/synthesis/evolution/__init__.py +0 -1
- qiskit/synthesis/evolution/lie_trotter.py +42 -16
- qiskit/synthesis/evolution/product_formula.py +238 -165
- qiskit/synthesis/evolution/qdrift.py +29 -36
- qiskit/synthesis/evolution/suzuki_trotter.py +27 -87
- qiskit/synthesis/multi_controlled/__init__.py +0 -1
- qiskit/synthesis/qft/qft_decompose_full.py +1 -19
- qiskit/synthesis/qft/qft_decompose_lnn.py +1 -2
- qiskit/synthesis/stabilizer/stabilizer_decompose.py +1 -2
- qiskit/synthesis/two_qubit/two_qubit_decompose.py +63 -4
- qiskit/synthesis/two_qubit/weyl.py +97 -0
- qiskit/synthesis/unitary/qsd.py +5 -5
- qiskit/transpiler/__init__.py +14 -21
- qiskit/transpiler/basepasses.py +1 -1
- qiskit/transpiler/passes/__init__.py +0 -2
- qiskit/transpiler/passes/basis/basis_translator.py +565 -9
- qiskit/transpiler/passes/basis/decompose.py +12 -45
- qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
- qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
- qiskit/transpiler/passes/calibration/pulse_gate.py +2 -4
- qiskit/transpiler/passes/calibration/rx_builder.py +7 -11
- qiskit/transpiler/passes/calibration/rzx_builder.py +30 -46
- qiskit/transpiler/passes/layout/disjoint_utils.py +13 -15
- qiskit/transpiler/passes/layout/sabre_layout.py +2 -7
- qiskit/transpiler/passes/layout/sabre_pre_layout.py +0 -5
- qiskit/transpiler/passes/optimization/__init__.py +0 -1
- qiskit/transpiler/passes/optimization/collect_cliffords.py +3 -19
- qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
- qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
- qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
- qiskit/transpiler/passes/optimization/consolidate_blocks.py +131 -48
- qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +2 -4
- qiskit/transpiler/passes/optimization/elide_permutations.py +32 -9
- qiskit/transpiler/passes/optimization/inverse_cancellation.py +0 -2
- qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +11 -5
- qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
- qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
- qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
- qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
- qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
- qiskit/transpiler/passes/routing/sabre_swap.py +3 -7
- qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
- qiskit/transpiler/passes/scheduling/alap.py +1 -1
- qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
- qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
- qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -2
- qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
- qiskit/transpiler/passes/scheduling/asap.py +1 -1
- qiskit/transpiler/passes/scheduling/base_scheduler.py +12 -14
- qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +4 -9
- qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
- qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +5 -16
- qiskit/transpiler/passes/scheduling/padding/pad_delay.py +1 -4
- qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +2 -6
- qiskit/transpiler/passes/scheduling/time_unit_conversion.py +4 -9
- qiskit/transpiler/passes/synthesis/high_level_synthesis.py +99 -262
- qiskit/transpiler/passes/synthesis/hls_plugins.py +7 -638
- qiskit/transpiler/passes/synthesis/qubit_tracker.py +132 -0
- qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -55
- qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +56 -2
- qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -5
- qiskit/transpiler/passes/utils/gate_direction.py +275 -12
- qiskit/transpiler/passes/utils/gates_basis.py +30 -7
- qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +1 -2
- qiskit/transpiler/passmanager_config.py +4 -22
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +14 -40
- qiskit/transpiler/preset_passmanagers/common.py +3 -5
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +42 -125
- qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
- qiskit/transpiler/target.py +16 -74
- qiskit/visualization/circuit/_utils.py +2 -2
- qiskit/visualization/circuit/circuit_visualization.py +2 -3
- qiskit/visualization/circuit/matplotlib.py +1 -1
- qiskit/visualization/dag_visualization.py +1 -1
- qiskit/visualization/pass_manager_visualization.py +14 -3
- qiskit/visualization/pulse_v2/interface.py +1 -3
- qiskit/visualization/timeline/core.py +2 -25
- qiskit/visualization/timeline/interface.py +0 -12
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/METADATA +19 -20
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/RECORD +347 -358
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/WHEEL +1 -1
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/entry_points.txt +0 -19
- qiskit/circuit/library/data_preparation/_zz_feature_map.py +0 -150
- qiskit/circuit/twirling.py +0 -145
- qiskit/synthesis/arithmetic/__init__.py +0 -16
- qiskit/synthesis/arithmetic/adders/__init__.py +0 -17
- qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +0 -154
- qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +0 -103
- qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +0 -161
- qiskit/synthesis/arithmetic/multipliers/__init__.py +0 -16
- qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +0 -102
- qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +0 -99
- qiskit/synthesis/evolution/pauli_network.py +0 -80
- qiskit/synthesis/multi_controlled/mcmt_vchain.py +0 -52
- qiskit/transpiler/passes/optimization/remove_identity_equiv.py +0 -69
- qiskit/utils/deprecate_pulse.py +0 -119
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/top_level.txt +0 -0
@@ -17,13 +17,7 @@ Preset pass manager generation function
|
|
17
17
|
import copy
|
18
18
|
import warnings
|
19
19
|
|
20
|
-
from qiskit.circuit.controlflow import
|
21
|
-
CONTROL_FLOW_OP_NAMES,
|
22
|
-
IfElseOp,
|
23
|
-
WhileLoopOp,
|
24
|
-
ForLoopOp,
|
25
|
-
SwitchCaseOp,
|
26
|
-
)
|
20
|
+
from qiskit.circuit.controlflow import CONTROL_FLOW_OP_NAMES
|
27
21
|
from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping
|
28
22
|
from qiskit.circuit.quantumregister import Qubit
|
29
23
|
from qiskit.providers.backend import Backend
|
@@ -35,8 +29,6 @@ from qiskit.transpiler.layout import Layout
|
|
35
29
|
from qiskit.transpiler.passmanager_config import PassManagerConfig
|
36
30
|
from qiskit.transpiler.target import Target, target_to_backend_properties
|
37
31
|
from qiskit.transpiler.timing_constraints import TimingConstraints
|
38
|
-
from qiskit.utils import deprecate_arg
|
39
|
-
from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
|
40
32
|
|
41
33
|
from .level0 import level_0_pass_manager
|
42
34
|
from .level1 import level_1_pass_manager
|
@@ -44,33 +36,6 @@ from .level2 import level_2_pass_manager
|
|
44
36
|
from .level3 import level_3_pass_manager
|
45
37
|
|
46
38
|
|
47
|
-
@deprecate_arg(
|
48
|
-
name="instruction_durations",
|
49
|
-
since="1.3",
|
50
|
-
package_name="Qiskit",
|
51
|
-
removal_timeline="in Qiskit 2.0",
|
52
|
-
additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
|
53
|
-
"with defined instruction durations with "
|
54
|
-
"`Target.from_configuration(..., instruction_durations=...)`",
|
55
|
-
)
|
56
|
-
@deprecate_arg(
|
57
|
-
name="timing_constraints",
|
58
|
-
since="1.3",
|
59
|
-
package_name="Qiskit",
|
60
|
-
removal_timeline="in Qiskit 2.0",
|
61
|
-
additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
|
62
|
-
"with defined timing constraints with "
|
63
|
-
"`Target.from_configuration(..., timing_constraints=...)`",
|
64
|
-
)
|
65
|
-
@deprecate_arg(
|
66
|
-
name="backend_properties",
|
67
|
-
since="1.3",
|
68
|
-
package_name="Qiskit",
|
69
|
-
removal_timeline="in Qiskit 2.0",
|
70
|
-
additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
|
71
|
-
"with defined properties with Target.from_configuration(..., backend_properties=...)",
|
72
|
-
)
|
73
|
-
@deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None)
|
74
39
|
def generate_preset_pass_manager(
|
75
40
|
optimization_level=2,
|
76
41
|
backend=None,
|
@@ -157,7 +122,7 @@ def generate_preset_pass_manager(
|
|
157
122
|
and ``backend_properties``.
|
158
123
|
basis_gates (list): List of basis gate names to unroll to
|
159
124
|
(e.g: ``['u1', 'u2', 'u3', 'cx']``).
|
160
|
-
inst_map (InstructionScheduleMap):
|
125
|
+
inst_map (InstructionScheduleMap): Mapping object that maps gates to schedules.
|
161
126
|
If any user defined calibration is found in the map and this is used in a
|
162
127
|
circuit, transpiler attaches the custom gate definition to the circuit.
|
163
128
|
This enables one to flexibly override the low-level instruction
|
@@ -318,7 +283,6 @@ def generate_preset_pass_manager(
|
|
318
283
|
_skip_target = (
|
319
284
|
target is None
|
320
285
|
and backend is None
|
321
|
-
# Note: instruction_durations is deprecated and will be removed in 2.0 (no need for alternative)
|
322
286
|
and (basis_gates is None or coupling_map is None or instruction_durations is not None)
|
323
287
|
)
|
324
288
|
|
@@ -343,31 +307,23 @@ def generate_preset_pass_manager(
|
|
343
307
|
# Only parse backend properties when the target isn't skipped to
|
344
308
|
# preserve the former behavior of transpile.
|
345
309
|
backend_properties = _parse_backend_properties(backend_properties, backend)
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
)
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
instruction_durations=instruction_durations,
|
364
|
-
concurrent_measurements=(
|
365
|
-
backend.target.concurrent_measurements if backend is not None else None
|
366
|
-
),
|
367
|
-
dt=dt,
|
368
|
-
timing_constraints=timing_constraints,
|
369
|
-
custom_name_mapping=name_mapping,
|
370
|
-
)
|
310
|
+
# Build target from constraints.
|
311
|
+
target = Target.from_configuration(
|
312
|
+
basis_gates=basis_gates,
|
313
|
+
num_qubits=backend.num_qubits if backend is not None else None,
|
314
|
+
coupling_map=coupling_map,
|
315
|
+
# If the instruction map has custom gates, do not give as config, the information
|
316
|
+
# will be added to the target with update_from_instruction_schedule_map
|
317
|
+
inst_map=inst_map if inst_map and not inst_map.has_custom_gate() else None,
|
318
|
+
backend_properties=backend_properties,
|
319
|
+
instruction_durations=instruction_durations,
|
320
|
+
concurrent_measurements=(
|
321
|
+
backend.target.concurrent_measurements if backend is not None else None
|
322
|
+
),
|
323
|
+
dt=dt,
|
324
|
+
timing_constraints=timing_constraints,
|
325
|
+
custom_name_mapping=name_mapping,
|
326
|
+
)
|
371
327
|
|
372
328
|
# Update target with custom gate information. Note that this is an exception to the priority
|
373
329
|
# order (target > loose constraints), added to handle custom gates for scheduling passes.
|
@@ -383,7 +339,7 @@ def generate_preset_pass_manager(
|
|
383
339
|
if instruction_durations is None:
|
384
340
|
instruction_durations = target.durations()
|
385
341
|
if inst_map is None:
|
386
|
-
inst_map = target.
|
342
|
+
inst_map = target.instruction_schedule_map()
|
387
343
|
if timing_constraints is None:
|
388
344
|
timing_constraints = target.timing_constraints()
|
389
345
|
if backend_properties is None:
|
@@ -427,41 +383,30 @@ def generate_preset_pass_manager(
|
|
427
383
|
"qubits_initially_zero": qubits_initially_zero,
|
428
384
|
}
|
429
385
|
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
)
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
pm = level_1_pass_manager(pm_config)
|
446
|
-
elif optimization_level == 2:
|
447
|
-
pm = level_2_pass_manager(pm_config)
|
448
|
-
elif optimization_level == 3:
|
449
|
-
pm = level_3_pass_manager(pm_config)
|
450
|
-
else:
|
451
|
-
raise ValueError(f"Invalid optimization level {optimization_level}")
|
386
|
+
if backend is not None:
|
387
|
+
pm_options["_skip_target"] = _skip_target
|
388
|
+
pm_config = PassManagerConfig.from_backend(backend, **pm_options)
|
389
|
+
else:
|
390
|
+
pm_config = PassManagerConfig(**pm_options)
|
391
|
+
if optimization_level == 0:
|
392
|
+
pm = level_0_pass_manager(pm_config)
|
393
|
+
elif optimization_level == 1:
|
394
|
+
pm = level_1_pass_manager(pm_config)
|
395
|
+
elif optimization_level == 2:
|
396
|
+
pm = level_2_pass_manager(pm_config)
|
397
|
+
elif optimization_level == 3:
|
398
|
+
pm = level_3_pass_manager(pm_config)
|
399
|
+
else:
|
400
|
+
raise ValueError(f"Invalid optimization level {optimization_level}")
|
452
401
|
return pm
|
453
402
|
|
454
403
|
|
455
404
|
def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
|
405
|
+
name_mapping = {}
|
456
406
|
standard_gates = get_standard_gate_name_mapping()
|
457
|
-
# Add control flow gates by default to basis set
|
407
|
+
# Add control flow gates by default to basis set
|
458
408
|
default_gates = {"measure", "delay", "reset"}.union(CONTROL_FLOW_OP_NAMES)
|
459
|
-
|
460
|
-
"if_else": IfElseOp,
|
461
|
-
"while_loop": WhileLoopOp,
|
462
|
-
"for_loop": ForLoopOp,
|
463
|
-
"switch_case": SwitchCaseOp,
|
464
|
-
}
|
409
|
+
|
465
410
|
try:
|
466
411
|
instructions = set(basis_gates)
|
467
412
|
for name in default_gates:
|
@@ -476,16 +421,7 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
|
|
476
421
|
return None, name_mapping, skip_target
|
477
422
|
|
478
423
|
for inst in instructions:
|
479
|
-
if inst not in standard_gates
|
480
|
-
warnings.warn(
|
481
|
-
category=DeprecationWarning,
|
482
|
-
message=f"Providing non-standard gates ({inst}) through the ``basis_gates`` "
|
483
|
-
"argument is deprecated for both ``transpile`` and ``generate_preset_pass_manager`` "
|
484
|
-
"as of Qiskit 1.3.0. "
|
485
|
-
"It will be removed in Qiskit 2.0. The ``target`` parameter should be used instead. "
|
486
|
-
"You can build a target instance using ``Target.from_configuration()`` and provide "
|
487
|
-
"custom gate definitions with the ``custom_name_mapping`` argument.",
|
488
|
-
)
|
424
|
+
if inst not in standard_gates or inst not in default_gates:
|
489
425
|
skip_target = True
|
490
426
|
break
|
491
427
|
|
@@ -498,18 +434,7 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
|
|
498
434
|
|
499
435
|
# Check for custom instructions before removing calibrations
|
500
436
|
for inst in instructions:
|
501
|
-
if inst not in standard_gates
|
502
|
-
if inst not in backend.operation_names:
|
503
|
-
# do not raise warning when the custom instruction comes from the backend
|
504
|
-
# (common case with BasicSimulator)
|
505
|
-
warnings.warn(
|
506
|
-
category=DeprecationWarning,
|
507
|
-
message="Providing custom gates through the ``basis_gates`` argument is deprecated "
|
508
|
-
"for both ``transpile`` and ``generate_preset_pass_manager`` as of Qiskit 1.3.0. "
|
509
|
-
"It will be removed in Qiskit 2.0. The ``target`` parameter should be used instead. "
|
510
|
-
"You can build a target instance using ``Target.from_configuration()`` and provide"
|
511
|
-
"custom gate definitions with the ``custom_name_mapping`` argument.",
|
512
|
-
)
|
437
|
+
if inst not in standard_gates or inst not in default_gates:
|
513
438
|
skip_target = True
|
514
439
|
break
|
515
440
|
|
@@ -527,22 +452,14 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
|
|
527
452
|
def _parse_inst_map(inst_map, backend):
|
528
453
|
# try getting inst_map from user, else backend
|
529
454
|
if inst_map is None and backend is not None:
|
530
|
-
inst_map = backend.target.
|
455
|
+
inst_map = backend.target.instruction_schedule_map()
|
531
456
|
return inst_map
|
532
457
|
|
533
458
|
|
534
459
|
def _parse_backend_properties(backend_properties, backend):
|
535
460
|
# try getting backend_props from user, else backend
|
536
461
|
if backend_properties is None and backend is not None:
|
537
|
-
|
538
|
-
# filter target_to_backend_properties warning
|
539
|
-
warnings.filterwarnings(
|
540
|
-
"ignore",
|
541
|
-
category=DeprecationWarning,
|
542
|
-
message=".*``qiskit.transpiler.target.target_to_backend_properties\\(\\)``.*",
|
543
|
-
module="qiskit",
|
544
|
-
)
|
545
|
-
backend_properties = target_to_backend_properties(backend.target)
|
462
|
+
backend_properties = target_to_backend_properties(backend.target)
|
546
463
|
return backend_properties
|
547
464
|
|
548
465
|
|
@@ -145,7 +145,7 @@ subclass as a setuptools entry point in the package metadata. This can be done
|
|
145
145
|
an ``entry-points`` table in ``pyproject.toml`` for the plugin package with the necessary entry
|
146
146
|
points under the appropriate namespace for the stage your plugin is for. You can see the list of
|
147
147
|
stages, entry points, and expectations from the stage in :ref:`stage_table`. For example,
|
148
|
-
continuing from the example plugin above
|
148
|
+
continuing from the example plugin above::
|
149
149
|
|
150
150
|
.. code-block:: toml
|
151
151
|
|
qiskit/transpiler/target.py
CHANGED
@@ -57,7 +57,6 @@ from qiskit.exceptions import QiskitError
|
|
57
57
|
from qiskit.providers.backend import QubitProperties # pylint: disable=unused-import
|
58
58
|
from qiskit.providers.models.backendproperties import BackendProperties
|
59
59
|
from qiskit.utils import deprecate_func
|
60
|
-
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency, deprecate_pulse_arg
|
61
60
|
|
62
61
|
logger = logging.getLogger(__name__)
|
63
62
|
|
@@ -87,7 +86,6 @@ class InstructionProperties(BaseInstructionProperties):
|
|
87
86
|
cls, duration, error
|
88
87
|
)
|
89
88
|
|
90
|
-
@deprecate_pulse_arg("calibration", predicate=lambda cals: cals is not None)
|
91
89
|
def __init__(
|
92
90
|
self,
|
93
91
|
duration: float | None = None, # pylint: disable=unused-argument
|
@@ -101,14 +99,13 @@ class InstructionProperties(BaseInstructionProperties):
|
|
101
99
|
specified set of qubits
|
102
100
|
error: The average error rate for the instruction on the specified
|
103
101
|
set of qubits.
|
104
|
-
calibration:
|
102
|
+
calibration: The pulse representation of the instruction.
|
105
103
|
"""
|
106
104
|
super().__init__()
|
107
105
|
self._calibration: CalibrationEntry | None = None
|
108
|
-
self.
|
106
|
+
self.calibration = calibration
|
109
107
|
|
110
108
|
@property
|
111
|
-
@deprecate_pulse_dependency(is_property=True)
|
112
109
|
def calibration(self):
|
113
110
|
"""The pulse representation of the instruction.
|
114
111
|
|
@@ -136,24 +133,12 @@ class InstructionProperties(BaseInstructionProperties):
|
|
136
133
|
use own definition to compile the circuit down to the execution format.
|
137
134
|
|
138
135
|
"""
|
139
|
-
return self._calibration_prop
|
140
|
-
|
141
|
-
@calibration.setter
|
142
|
-
@deprecate_pulse_dependency(is_property=True)
|
143
|
-
def calibration(self, calibration: Schedule | ScheduleBlock | CalibrationEntry):
|
144
|
-
self._calibration_prop = calibration
|
145
|
-
|
146
|
-
@property
|
147
|
-
def _calibration_prop(self):
|
148
136
|
if self._calibration is None:
|
149
137
|
return None
|
150
|
-
|
151
|
-
warnings.simplefilter(action="ignore", category=DeprecationWarning)
|
152
|
-
# Clean this alternative path from deprecation warning emitted by `get_schedule`
|
153
|
-
return self._calibration.get_schedule()
|
138
|
+
return self._calibration.get_schedule()
|
154
139
|
|
155
|
-
@
|
156
|
-
def
|
140
|
+
@calibration.setter
|
141
|
+
def calibration(self, calibration: Schedule | ScheduleBlock | CalibrationEntry):
|
157
142
|
if isinstance(calibration, (Schedule, ScheduleBlock)):
|
158
143
|
new_entry = ScheduleDef()
|
159
144
|
new_entry.define(calibration, user_provided=True)
|
@@ -168,11 +153,11 @@ class InstructionProperties(BaseInstructionProperties):
|
|
168
153
|
)
|
169
154
|
|
170
155
|
def __getstate__(self) -> tuple:
|
171
|
-
return (super().__getstate__(), self.
|
156
|
+
return (super().__getstate__(), self.calibration, self._calibration)
|
172
157
|
|
173
158
|
def __setstate__(self, state: tuple):
|
174
159
|
super().__setstate__(state[0])
|
175
|
-
self.
|
160
|
+
self.calibration = state[1]
|
176
161
|
self._calibration = state[2]
|
177
162
|
|
178
163
|
|
@@ -462,7 +447,6 @@ class Target(BaseTarget):
|
|
462
447
|
self._instruction_durations = None
|
463
448
|
self._instruction_schedule_map = None
|
464
449
|
|
465
|
-
@deprecate_pulse_dependency
|
466
450
|
def update_from_instruction_schedule_map(self, inst_map, inst_name_map=None, error_dict=None):
|
467
451
|
"""Update the target from an instruction schedule map.
|
468
452
|
|
@@ -620,7 +604,6 @@ class Target(BaseTarget):
|
|
620
604
|
self.granularity, self.min_length, self.pulse_alignment, self.acquire_alignment
|
621
605
|
)
|
622
606
|
|
623
|
-
@deprecate_pulse_dependency
|
624
607
|
def instruction_schedule_map(self):
|
625
608
|
"""Return an :class:`~qiskit.pulse.InstructionScheduleMap` for the
|
626
609
|
instructions in the target with a pulse schedule defined.
|
@@ -629,17 +612,9 @@ class Target(BaseTarget):
|
|
629
612
|
InstructionScheduleMap: The instruction schedule map for the
|
630
613
|
instructions in this target with a pulse schedule defined.
|
631
614
|
"""
|
632
|
-
return self._get_instruction_schedule_map()
|
633
|
-
|
634
|
-
def _get_instruction_schedule_map(self):
|
635
615
|
if self._instruction_schedule_map is not None:
|
636
616
|
return self._instruction_schedule_map
|
637
|
-
|
638
|
-
warnings.simplefilter(action="ignore", category=DeprecationWarning)
|
639
|
-
# `InstructionScheduleMap` is deprecated in Qiskit 1.3 but we want this alternative
|
640
|
-
# path to be clean of deprecation warnings
|
641
|
-
out_inst_schedule_map = InstructionScheduleMap()
|
642
|
-
|
617
|
+
out_inst_schedule_map = InstructionScheduleMap()
|
643
618
|
for instruction, qargs in self._gate_map.items():
|
644
619
|
for qarg, properties in qargs.items():
|
645
620
|
# Directly getting CalibrationEntry not to invoke .get_schedule().
|
@@ -651,7 +626,6 @@ class Target(BaseTarget):
|
|
651
626
|
self._instruction_schedule_map = out_inst_schedule_map
|
652
627
|
return out_inst_schedule_map
|
653
628
|
|
654
|
-
@deprecate_pulse_dependency
|
655
629
|
def has_calibration(
|
656
630
|
self,
|
657
631
|
operation_name: str,
|
@@ -666,13 +640,6 @@ class Target(BaseTarget):
|
|
666
640
|
Returns:
|
667
641
|
Returns ``True`` if the calibration is supported and ``False`` if it isn't.
|
668
642
|
"""
|
669
|
-
return self._has_calibration(operation_name, qargs)
|
670
|
-
|
671
|
-
def _has_calibration(
|
672
|
-
self,
|
673
|
-
operation_name: str,
|
674
|
-
qargs: tuple[int, ...],
|
675
|
-
) -> bool:
|
676
643
|
qargs = tuple(qargs)
|
677
644
|
if operation_name not in self._gate_map:
|
678
645
|
return False
|
@@ -680,7 +647,6 @@ class Target(BaseTarget):
|
|
680
647
|
return False
|
681
648
|
return getattr(self._gate_map[operation_name][qargs], "_calibration", None) is not None
|
682
649
|
|
683
|
-
@deprecate_pulse_dependency
|
684
650
|
def get_calibration(
|
685
651
|
self,
|
686
652
|
operation_name: str,
|
@@ -702,16 +668,7 @@ class Target(BaseTarget):
|
|
702
668
|
Returns:
|
703
669
|
Calibrated pulse schedule of corresponding instruction.
|
704
670
|
"""
|
705
|
-
|
706
|
-
|
707
|
-
def _get_calibration(
|
708
|
-
self,
|
709
|
-
operation_name: str,
|
710
|
-
qargs: tuple[int, ...],
|
711
|
-
*args: ParameterValueType,
|
712
|
-
**kwargs: ParameterValueType,
|
713
|
-
) -> Schedule | ScheduleBlock:
|
714
|
-
if not self._has_calibration(operation_name, qargs):
|
671
|
+
if not self.has_calibration(operation_name, qargs):
|
715
672
|
raise KeyError(
|
716
673
|
f"Calibration of instruction {operation_name} for qubit {qargs} is not defined."
|
717
674
|
)
|
@@ -970,7 +927,6 @@ class Target(BaseTarget):
|
|
970
927
|
super().__setstate__(state["base"])
|
971
928
|
|
972
929
|
@classmethod
|
973
|
-
@deprecate_pulse_arg("inst_map")
|
974
930
|
def from_configuration(
|
975
931
|
cls,
|
976
932
|
basis_gates: list[str],
|
@@ -1009,7 +965,7 @@ class Target(BaseTarget):
|
|
1009
965
|
coupling_map: The coupling map representing connectivity constraints
|
1010
966
|
on the backend. If specified all gates from ``basis_gates`` will
|
1011
967
|
be supported on all qubits (or pairs of qubits).
|
1012
|
-
inst_map:
|
968
|
+
inst_map: The instruction schedule map representing the pulse
|
1013
969
|
:class:`~.Schedule` definitions for each instruction. If this
|
1014
970
|
is specified ``coupling_map`` must be specified. The
|
1015
971
|
``coupling_map`` is used as the source of truth for connectivity
|
@@ -1156,16 +1112,9 @@ class Target(BaseTarget):
|
|
1156
1112
|
if error is None and duration is None and calibration is None:
|
1157
1113
|
gate_properties[(qubit,)] = None
|
1158
1114
|
else:
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
category=DeprecationWarning,
|
1163
|
-
message=".*``calibration`` is deprecated as of Qiskit 1.3.*",
|
1164
|
-
module="qiskit",
|
1165
|
-
)
|
1166
|
-
gate_properties[(qubit,)] = InstructionProperties(
|
1167
|
-
duration=duration, error=error, calibration=calibration
|
1168
|
-
)
|
1115
|
+
gate_properties[(qubit,)] = InstructionProperties(
|
1116
|
+
duration=duration, error=error, calibration=calibration
|
1117
|
+
)
|
1169
1118
|
target.add_instruction(name_mapping[gate], properties=gate_properties, name=gate)
|
1170
1119
|
edges = list(coupling_map.get_edges())
|
1171
1120
|
for gate in two_qubit_gates:
|
@@ -1205,16 +1154,9 @@ class Target(BaseTarget):
|
|
1205
1154
|
if error is None and duration is None and calibration is None:
|
1206
1155
|
gate_properties[edge] = None
|
1207
1156
|
else:
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
category=DeprecationWarning,
|
1212
|
-
message=".*``calibration`` is deprecated as of Qiskit 1.3.*",
|
1213
|
-
module="qiskit",
|
1214
|
-
)
|
1215
|
-
gate_properties[edge] = InstructionProperties(
|
1216
|
-
duration=duration, error=error, calibration=calibration
|
1217
|
-
)
|
1157
|
+
gate_properties[edge] = InstructionProperties(
|
1158
|
+
duration=duration, error=error, calibration=calibration
|
1159
|
+
)
|
1218
1160
|
target.add_instruction(name_mapping[gate], properties=gate_properties, name=gate)
|
1219
1161
|
for gate in global_ideal_variable_width_gates:
|
1220
1162
|
target.add_instruction(name_mapping[gate], name=gate)
|
@@ -503,7 +503,7 @@ def _get_gate_span(qubits, node):
|
|
503
503
|
# type of op must be the only op in the layer
|
504
504
|
if isinstance(node.op, ControlFlowOp):
|
505
505
|
span = qubits
|
506
|
-
elif node.cargs or getattr(node, "condition", None):
|
506
|
+
elif node.cargs or getattr(node.op, "condition", None):
|
507
507
|
span = qubits[min_index : len(qubits)]
|
508
508
|
else:
|
509
509
|
span = qubits[min_index : max_index + 1]
|
@@ -582,7 +582,7 @@ class _LayerSpooler(list):
|
|
582
582
|
curr_index = index
|
583
583
|
last_insertable_index = -1
|
584
584
|
index_stop = -1
|
585
|
-
if (condition := getattr(node, "condition", None)) is not None:
|
585
|
+
if (condition := getattr(node.op, "condition", None)) is not None:
|
586
586
|
index_stop = max(
|
587
587
|
(self.measure_map[bit] for bit in condition_resources(condition).clbits),
|
588
588
|
default=index_stop,
|
@@ -191,12 +191,11 @@ def circuit_drawer(
|
|
191
191
|
.. plot::
|
192
192
|
:include-source:
|
193
193
|
|
194
|
-
from qiskit import QuantumCircuit
|
195
|
-
from qiskit.visualization import circuit_drawer
|
194
|
+
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
|
196
195
|
qc = QuantumCircuit(1, 1)
|
197
196
|
qc.h(0)
|
198
197
|
qc.measure(0, 0)
|
199
|
-
|
198
|
+
qc.draw(output='mpl', style={'backgroundcolor': '#EEEEEE'})
|
200
199
|
"""
|
201
200
|
image = None
|
202
201
|
expr_len = max(expr_len, 0)
|
@@ -135,7 +135,7 @@ class MatplotlibDrawer:
|
|
135
135
|
|
136
136
|
self._initial_state = initial_state
|
137
137
|
self._global_phase = self._circuit.global_phase
|
138
|
-
self._calibrations = self._circuit.
|
138
|
+
self._calibrations = self._circuit.calibrations
|
139
139
|
self._expr_len = expr_len
|
140
140
|
self._cregbundle = cregbundle
|
141
141
|
|
@@ -81,7 +81,7 @@ def dag_drawer(dag, scale=0.7, filename=None, style="color"):
|
|
81
81
|
``rustworkx`` package to draw the DAG.
|
82
82
|
|
83
83
|
Args:
|
84
|
-
dag (DAGCircuit
|
84
|
+
dag (DAGCircuit): The dag to draw.
|
85
85
|
scale (float): scaling factor
|
86
86
|
filename (str): file path to save image to (format inferred from name)
|
87
87
|
style (str): 'plain': B&W graph
|
@@ -58,12 +58,23 @@ def pass_manager_drawer(pass_manager, filename=None, style=None, raw=False):
|
|
58
58
|
Example:
|
59
59
|
.. code-block::
|
60
60
|
|
61
|
+
%matplotlib inline
|
61
62
|
from qiskit import QuantumCircuit
|
62
|
-
from qiskit.
|
63
|
+
from qiskit.compiler import transpile
|
64
|
+
from qiskit.transpiler import PassManager
|
63
65
|
from qiskit.visualization import pass_manager_drawer
|
66
|
+
from qiskit.transpiler.passes import Unroller
|
64
67
|
|
65
|
-
|
66
|
-
|
68
|
+
circ = QuantumCircuit(3)
|
69
|
+
circ.ccx(0, 1, 2)
|
70
|
+
circ.draw()
|
71
|
+
|
72
|
+
pass_ = Unroller(['u1', 'u2', 'u3', 'cx'])
|
73
|
+
pm = PassManager(pass_)
|
74
|
+
new_circ = pm.run(circ)
|
75
|
+
new_circ.draw(output='mpl')
|
76
|
+
|
77
|
+
pass_manager_drawer(pm, "passmanager.jpg")
|
67
78
|
"""
|
68
79
|
import pydot
|
69
80
|
|
@@ -28,11 +28,9 @@ from qiskit.visualization.exceptions import VisualizationError
|
|
28
28
|
from qiskit.visualization.pulse_v2 import core, device_info, stylesheet, types
|
29
29
|
from qiskit.exceptions import MissingOptionalLibraryError
|
30
30
|
from qiskit.utils import deprecate_arg
|
31
|
-
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
|
32
31
|
|
33
32
|
|
34
|
-
@
|
35
|
-
@deprecate_arg("show_barrier", new_alias="plot_barrier", since="1.1.0", pending=True)
|
33
|
+
@deprecate_arg("show_barriers", new_alias="plot_barriers", since="1.1.0", pending=True)
|
36
34
|
def draw(
|
37
35
|
program: Union[Waveform, SymbolicPulse, Schedule, ScheduleBlock],
|
38
36
|
style: Optional[Dict[str, Any]] = None,
|
@@ -58,7 +58,6 @@ from enum import Enum
|
|
58
58
|
import numpy as np
|
59
59
|
|
60
60
|
from qiskit import circuit
|
61
|
-
from qiskit.transpiler.target import Target
|
62
61
|
from qiskit.visualization.exceptions import VisualizationError
|
63
62
|
from qiskit.visualization.timeline import drawings, types
|
64
63
|
from qiskit.visualization.timeline.stylesheet import QiskitTimelineStyle
|
@@ -139,13 +138,11 @@ class DrawerCanvas:
|
|
139
138
|
self._collections[data.data_key] = data
|
140
139
|
|
141
140
|
# pylint: disable=cyclic-import
|
142
|
-
def load_program(self, program: circuit.QuantumCircuit
|
141
|
+
def load_program(self, program: circuit.QuantumCircuit):
|
143
142
|
"""Load quantum circuit and create drawing..
|
144
143
|
|
145
144
|
Args:
|
146
145
|
program: Scheduled circuit object to draw.
|
147
|
-
target: The target the circuit is scheduled for. This contains backend information
|
148
|
-
including the instruction durations used in scheduling.
|
149
146
|
|
150
147
|
Raises:
|
151
148
|
VisualizationError: When circuit is not scheduled.
|
@@ -183,30 +180,10 @@ class DrawerCanvas:
|
|
183
180
|
for bit_pos, bit in enumerate(bits):
|
184
181
|
if not isinstance(instruction.operation, not_gate_like):
|
185
182
|
# Generate draw object for gates
|
186
|
-
if target is not None:
|
187
|
-
duration = None
|
188
|
-
op_props = target.get(instruction.operation.name)
|
189
|
-
if op_props is not None:
|
190
|
-
inst_props = op_props.get(tuple(instruction.qubits))
|
191
|
-
if inst_props is not None:
|
192
|
-
duration = inst_props.getattr("duration")
|
193
|
-
|
194
|
-
if duration is None:
|
195
|
-
# Warn here because an incomplete target isn't obvious most of the time
|
196
|
-
warnings.warn(
|
197
|
-
"Target doesn't contain a duration for "
|
198
|
-
f"{instruction.operation.name} on {bit_pos}, this will error in "
|
199
|
-
"Qiskit 2.0.",
|
200
|
-
DeprecationWarning,
|
201
|
-
stacklevel=3,
|
202
|
-
)
|
203
|
-
duration = instruction.operation.duration
|
204
|
-
else:
|
205
|
-
duration = instruction.operation.duration
|
206
183
|
gate_source = types.ScheduledGate(
|
207
184
|
t0=t0,
|
208
185
|
operand=instruction.operation,
|
209
|
-
duration=duration,
|
186
|
+
duration=instruction.operation.duration,
|
210
187
|
bits=bits,
|
211
188
|
bit_position=bit_pos,
|
212
189
|
)
|
@@ -20,10 +20,8 @@ the configured canvas is passed to one of the plotter APIs to generate a visuali
|
|
20
20
|
"""
|
21
21
|
|
22
22
|
from typing import Optional, Dict, Any, List, Tuple
|
23
|
-
import warnings
|
24
23
|
|
25
24
|
from qiskit import circuit
|
26
|
-
from qiskit.transpiler.target import Target
|
27
25
|
from qiskit.exceptions import MissingOptionalLibraryError
|
28
26
|
from qiskit.visualization.exceptions import VisualizationError
|
29
27
|
from qiskit.visualization.timeline import types, core, stylesheet
|
@@ -45,7 +43,6 @@ def draw(
|
|
45
43
|
plotter: Optional[str] = types.Plotter.MPL.value,
|
46
44
|
axis: Optional[Any] = None,
|
47
45
|
filename: Optional[str] = None,
|
48
|
-
target: Optional[Target] = None,
|
49
46
|
*,
|
50
47
|
show_idle: Optional[bool] = None,
|
51
48
|
show_barriers: Optional[bool] = None,
|
@@ -84,7 +81,6 @@ def draw(
|
|
84
81
|
the plotters uses given `axis` instead of internally initializing a figure object.
|
85
82
|
This object format depends on the plotter. See plotters section for details.
|
86
83
|
filename: If provided the output image is dumped into a file under the filename.
|
87
|
-
target: The target for the backend the timeline is being generated for.
|
88
84
|
show_idle: DEPRECATED.
|
89
85
|
show_barriers: DEPRECATED.
|
90
86
|
|
@@ -365,14 +361,6 @@ def draw(
|
|
365
361
|
temp_style = stylesheet.QiskitTimelineStyle()
|
366
362
|
temp_style.update(style or stylesheet.IQXStandard())
|
367
363
|
|
368
|
-
if target is None:
|
369
|
-
warnings.warn(
|
370
|
-
"Target is not specified. In Qiskit 2.0.0 this will be required to get the duration of "
|
371
|
-
"instructions.",
|
372
|
-
PendingDeprecationWarning,
|
373
|
-
stacklevel=2,
|
374
|
-
)
|
375
|
-
|
376
364
|
# update control properties
|
377
365
|
if idle_wires is not None:
|
378
366
|
temp_style["formatter.control.show_idle"] = idle_wires
|