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
@@ -16,7 +16,6 @@ Matrix Operator class.
|
|
16
16
|
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
|
-
import cmath
|
20
19
|
import copy as _copy
|
21
20
|
import re
|
22
21
|
from numbers import Number
|
@@ -541,41 +540,11 @@ class Operator(LinearOp):
|
|
541
540
|
ret._op_shape = new_shape
|
542
541
|
return ret
|
543
542
|
|
544
|
-
def power(
|
545
|
-
self, n: float, branch_cut_rotation=cmath.pi * 1e-12, assume_unitary=False
|
546
|
-
) -> Operator:
|
543
|
+
def power(self, n: float) -> Operator:
|
547
544
|
"""Return the matrix power of the operator.
|
548
545
|
|
549
|
-
Non-integer powers of operators with an eigenvalue whose complex phase is :math:`\\pi` have
|
550
|
-
a branch cut in the complex plane, which makes the calculation of the principal root around
|
551
|
-
this cut subject to precision / differences in BLAS implementation. For example, the square
|
552
|
-
root of Pauli Y can return the :math:`\\pi/2` or :math:`-\\pi/2` Y rotation depending on
|
553
|
-
whether the -1 eigenvalue is found as ``complex(-1, tiny)`` or ``complex(-1, -tiny)``. Such
|
554
|
-
eigenvalues are really common in quantum information, so this function first phase-rotates
|
555
|
-
the input matrix to shift the branch cut to a far less common point. The underlying
|
556
|
-
numerical precision issues around the branch-cut point remain, if an operator has an
|
557
|
-
eigenvalue close to this phase. The magnitude of this rotation can be controlled with the
|
558
|
-
``branch_cut_rotation`` parameter.
|
559
|
-
|
560
|
-
The choice of ``branch_cut_rotation`` affects the principal root that is found. For
|
561
|
-
example, the square root of :class:`.ZGate` will be calculated as either :class:`.SGate` or
|
562
|
-
:class:`.SdgGate` depending on which way the rotation is done::
|
563
|
-
|
564
|
-
from qiskit.circuit import library
|
565
|
-
from qiskit.quantum_info import Operator
|
566
|
-
|
567
|
-
z_op = Operator(library.ZGate())
|
568
|
-
assert z_op.power(0.5, branch_cut_rotation=1e-3) == Operator(library.SGate())
|
569
|
-
assert z_op.power(0.5, branch_cut_rotation=-1e-3) == Operator(library.SdgGate())
|
570
|
-
|
571
546
|
Args:
|
572
547
|
n (float): the power to raise the matrix to.
|
573
|
-
branch_cut_rotation (float): The rotation angle to apply to the branch cut in the
|
574
|
-
complex plane. This shifts the branch cut away from the common point of :math:`-1`,
|
575
|
-
but can cause a different root to be selected as the principal root. The rotation
|
576
|
-
is anticlockwise, following the standard convention for complex phase.
|
577
|
-
assume_unitary (bool): if ``True``, the operator is assumed to be unitary. In this case,
|
578
|
-
for fractional powers we employ a faster implementation based on Schur's decomposition.
|
579
548
|
|
580
549
|
Returns:
|
581
550
|
Operator: the resulting operator ``O ** n``.
|
@@ -583,11 +552,6 @@ class Operator(LinearOp):
|
|
583
552
|
Raises:
|
584
553
|
QiskitError: if the input and output dimensions of the operator
|
585
554
|
are not equal.
|
586
|
-
|
587
|
-
.. note::
|
588
|
-
It is only safe to set the argument ``assume_unitary`` to ``True`` when the operator
|
589
|
-
is unitary (or, more generally, normal). Otherwise, the function will return an
|
590
|
-
incorrect output.
|
591
555
|
"""
|
592
556
|
if self.input_dims() != self.output_dims():
|
593
557
|
raise QiskitError("Can only power with input_dims = output_dims.")
|
@@ -597,23 +561,13 @@ class Operator(LinearOp):
|
|
597
561
|
else:
|
598
562
|
import scipy.linalg
|
599
563
|
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
decomposition_power = [pow(element, n) for element in decomposition_diagonal]
|
608
|
-
unitary_power = unitary @ np.diag(decomposition_power) @ unitary.conj().T
|
609
|
-
ret._data = cmath.rect(1, branch_cut_rotation * n) * unitary_power
|
610
|
-
else:
|
611
|
-
ret._data = cmath.rect(
|
612
|
-
1, branch_cut_rotation * n
|
613
|
-
) * scipy.linalg.fractional_matrix_power(
|
614
|
-
cmath.rect(1, -branch_cut_rotation) * self.data, n
|
615
|
-
)
|
616
|
-
|
564
|
+
# Experimentally, for fractional powers this seems to be 3x faster than
|
565
|
+
# calling scipy.linalg.fractional_matrix_power(self.data, n)
|
566
|
+
decomposition, unitary = scipy.linalg.schur(self.data, output="complex")
|
567
|
+
decomposition_diagonal = decomposition.diagonal()
|
568
|
+
decomposition_power = [pow(element, n) for element in decomposition_diagonal]
|
569
|
+
unitary_power = unitary @ np.diag(decomposition_power) @ unitary.conj().T
|
570
|
+
ret._data = unitary_power
|
617
571
|
return ret
|
618
572
|
|
619
573
|
def tensor(self, other: Operator) -> Operator:
|
@@ -33,8 +33,6 @@ if TYPE_CHECKING:
|
|
33
33
|
|
34
34
|
# utility for _to_matrix
|
35
35
|
_PARITY = np.array([-1 if bin(i).count("1") % 2 else 1 for i in range(256)], dtype=complex)
|
36
|
-
# Utility for `_to_label`
|
37
|
-
_TO_LABEL_CHARS = np.array([ord("I"), ord("X"), ord("Z"), ord("Y")], dtype=np.uint8)
|
38
36
|
|
39
37
|
|
40
38
|
class BasePauli(BaseOperator, AdjointMixin, MultiplyMixin):
|
@@ -186,7 +184,7 @@ class BasePauli(BaseOperator, AdjointMixin, MultiplyMixin):
|
|
186
184
|
return BasePauli(self._z, self._x, np.mod(self._phase + phase, 4))
|
187
185
|
|
188
186
|
def conjugate(self):
|
189
|
-
"""Return the
|
187
|
+
"""Return the conjugate of each Pauli in the list."""
|
190
188
|
complex_phase = np.mod(self._phase, 2)
|
191
189
|
if np.all(complex_phase == 0):
|
192
190
|
return self
|
@@ -498,15 +496,25 @@ class BasePauli(BaseOperator, AdjointMixin, MultiplyMixin):
|
|
498
496
|
the phase ``q`` for the coefficient :math:`(-i)^(q + x.z)`
|
499
497
|
for the label from the full Pauli group.
|
500
498
|
"""
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
499
|
+
num_qubits = z.size
|
500
|
+
phase = int(phase)
|
501
|
+
coeff_labels = {0: "", 1: "-i", 2: "-", 3: "i"}
|
502
|
+
label = ""
|
503
|
+
for i in range(num_qubits):
|
504
|
+
if not z[num_qubits - 1 - i]:
|
505
|
+
if not x[num_qubits - 1 - i]:
|
506
|
+
label += "I"
|
507
|
+
else:
|
508
|
+
label += "X"
|
509
|
+
elif not x[num_qubits - 1 - i]:
|
510
|
+
label += "Z"
|
511
|
+
else:
|
512
|
+
label += "Y"
|
513
|
+
if not group_phase:
|
514
|
+
phase -= 1
|
515
|
+
phase %= 4
|
508
516
|
if phase and full_group:
|
509
|
-
label =
|
517
|
+
label = coeff_labels[phase] + label
|
510
518
|
if return_phase:
|
511
519
|
return label, phase
|
512
520
|
return label
|
@@ -92,7 +92,7 @@ class Clifford(BaseOperator, AdjointMixin, Operation):
|
|
92
92
|
# Print the Clifford stabilizer rows
|
93
93
|
print(cliff.to_labels(mode="S"))
|
94
94
|
|
95
|
-
..
|
95
|
+
.. parsed-literal::
|
96
96
|
|
97
97
|
Clifford: Stabilizer = ['+XX', '+ZZ'], Destabilizer = ['+IZ', '+XI']
|
98
98
|
['+IZ', '+XI']
|
@@ -81,7 +81,7 @@ def _append_operation(clifford, operation, qargs=None):
|
|
81
81
|
else:
|
82
82
|
# assert isinstance(gate, Instruction)
|
83
83
|
name = gate.name
|
84
|
-
if getattr(gate, "
|
84
|
+
if getattr(gate, "condition", None) is not None:
|
85
85
|
raise QiskitError("Conditional gate is not a valid Clifford operation.")
|
86
86
|
|
87
87
|
# Apply gate if it is a Clifford basis gate
|
@@ -80,7 +80,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
|
|
80
80
|
pauli_list = PauliList.from_symplectic(z, x, phase)
|
81
81
|
print("4. ", pauli_list)
|
82
82
|
|
83
|
-
..
|
83
|
+
.. parsed-literal::
|
84
84
|
|
85
85
|
1. ['II', 'ZI', '-iYY']
|
86
86
|
2. ['iXI']
|
@@ -100,7 +100,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
|
|
100
100
|
print("List: ", repr(pauli_list[[0, 2]]))
|
101
101
|
print("Slice: ", repr(pauli_list[0:2]))
|
102
102
|
|
103
|
-
..
|
103
|
+
.. parsed-literal::
|
104
104
|
|
105
105
|
Integer: Pauli('ZZ')
|
106
106
|
List: PauliList(['XX', 'IZ'])
|
@@ -568,7 +568,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
|
|
568
568
|
print('Weight sorted')
|
569
569
|
print(srt)
|
570
570
|
|
571
|
-
..
|
571
|
+
.. parsed-literal::
|
572
572
|
|
573
573
|
Initial Ordering
|
574
574
|
['YX', 'ZZ', 'XZ', 'YI', 'YZ', 'II', 'XX', 'XI', 'XY', 'YY', 'IX', 'IZ',
|
@@ -603,7 +603,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
|
|
603
603
|
unique = pt.unique()
|
604
604
|
print(unique)
|
605
605
|
|
606
|
-
..
|
606
|
+
.. parsed-literal::
|
607
607
|
|
608
608
|
['X', 'Y', '-X', 'I', 'Z', 'iZ']
|
609
609
|
|
@@ -560,7 +560,7 @@ class SparsePauliOp(LinearOp):
|
|
560
560
|
print('Weight sorted')
|
561
561
|
print(srt)
|
562
562
|
|
563
|
-
..
|
563
|
+
.. parsed-literal::
|
564
564
|
|
565
565
|
Initial Ordering
|
566
566
|
SparsePauliOp(['XX', 'XX', 'XX', 'YI', 'II', 'XZ', 'XY', 'XI'],
|
@@ -629,7 +629,7 @@ class SparsePauliOp(LinearOp):
|
|
629
629
|
print('Weight sorted')
|
630
630
|
print(srt)
|
631
631
|
|
632
|
-
..
|
632
|
+
.. parsed-literal::
|
633
633
|
|
634
634
|
Initial Ordering
|
635
635
|
SparsePauliOp(['XX', 'XX', 'XX', 'YI', 'II', 'XZ', 'XY', 'XI'],
|
@@ -794,8 +794,6 @@ class SparsePauliOp(LinearOp):
|
|
794
794
|
|
795
795
|
.. code-block:: python
|
796
796
|
|
797
|
-
from qiskit.quantum_info import SparsePauliOp
|
798
|
-
|
799
797
|
# via tuples and the full Pauli string
|
800
798
|
op = SparsePauliOp.from_list([("XIIZI", 1), ("IYIIY", 2)])
|
801
799
|
|
@@ -860,8 +858,6 @@ class SparsePauliOp(LinearOp):
|
|
860
858
|
|
861
859
|
.. code-block:: python
|
862
860
|
|
863
|
-
from qiskit.quantum_info import SparsePauliOp
|
864
|
-
|
865
861
|
# via triples and local Paulis with indices
|
866
862
|
op = SparsePauliOp.from_sparse_list([("ZX", [1, 4], 1), ("YY", [0, 3], 2)], num_qubits=5)
|
867
863
|
|
@@ -935,14 +931,6 @@ class SparsePauliOp(LinearOp):
|
|
935
931
|
return labels
|
936
932
|
return labels.tolist()
|
937
933
|
|
938
|
-
def to_sparse_list(self):
|
939
|
-
"""Convert to a sparse Pauli list format with elements (pauli, qubits, coefficient)."""
|
940
|
-
pauli_labels = self.paulis.to_labels()
|
941
|
-
sparse_list = [
|
942
|
-
(*sparsify_label(label), coeff) for label, coeff in zip(pauli_labels, self.coeffs)
|
943
|
-
]
|
944
|
-
return sparse_list
|
945
|
-
|
946
934
|
def to_matrix(self, sparse: bool = False, force_serial: bool = False) -> np.ndarray:
|
947
935
|
"""Convert to a dense or sparse matrix.
|
948
936
|
|
@@ -1065,7 +1053,6 @@ class SparsePauliOp(LinearOp):
|
|
1065
1053
|
|
1066
1054
|
.. code-block:: python
|
1067
1055
|
|
1068
|
-
>>> from qiskit.quantum_info import SparsePauliOp
|
1069
1056
|
>>> op = SparsePauliOp.from_list([("XX", 2), ("YY", 1), ("IZ",2j), ("ZZ",1j)])
|
1070
1057
|
>>> op.group_commuting()
|
1071
1058
|
[SparsePauliOp(["IZ", "ZZ"], coeffs=[0.+2.j, 0.+1j]),
|
@@ -1184,13 +1171,5 @@ class SparsePauliOp(LinearOp):
|
|
1184
1171
|
return new_op.compose(self, qargs=layout)
|
1185
1172
|
|
1186
1173
|
|
1187
|
-
def sparsify_label(pauli_string):
|
1188
|
-
"""Return a sparse format of a Pauli string, e.g. "XIIIZ" -> ("XZ", [0, 4])."""
|
1189
|
-
qubits = [i for i, label in enumerate(reversed(pauli_string)) if label != "I"]
|
1190
|
-
sparse_label = "".join(pauli_string[~i] for i in qubits)
|
1191
|
-
|
1192
|
-
return sparse_label, qubits
|
1193
|
-
|
1194
|
-
|
1195
1174
|
# Update docstrings for API docs
|
1196
1175
|
generate_apidocs(SparsePauliOp)
|
@@ -461,7 +461,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
|
|
461
461
|
probs_qubit_1 = rho.probabilities([1])
|
462
462
|
print('Qubit-1 probs: {}'.format(probs_qubit_1))
|
463
463
|
|
464
|
-
..
|
464
|
+
.. parsed-literal::
|
465
465
|
|
466
466
|
probs: [0.5 0. 0.5 0. ]
|
467
467
|
Qubit-0 probs: [1. 0.]
|
@@ -485,7 +485,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
|
|
485
485
|
probs_swapped = rho.probabilities([1, 0])
|
486
486
|
print('Swapped probs: {}'.format(probs_swapped))
|
487
487
|
|
488
|
-
..
|
488
|
+
.. parsed-literal::
|
489
489
|
|
490
490
|
probs: [0.5 0. 0.5 0. ]
|
491
491
|
Swapped probs: [0.5 0.5 0. 0. ]
|
@@ -654,7 +654,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
|
|
654
654
|
rho = DensityMatrix.from_label('-0')
|
655
655
|
print(rho.to_dict())
|
656
656
|
|
657
|
-
..
|
657
|
+
.. parsed-literal::
|
658
658
|
|
659
659
|
{
|
660
660
|
'00|00': (0.4999999999999999+0j),
|
@@ -679,7 +679,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
|
|
679
679
|
rho = DensityMatrix(mat, dims=(3, 3))
|
680
680
|
print(rho.to_dict())
|
681
681
|
|
682
|
-
..
|
682
|
+
.. parsed-literal::
|
683
683
|
|
684
684
|
{'00|00': (0.25+0j), '10|10': (0.25+0j), '20|20': (0.25+0j), '22|22': (0.25+0j)}
|
685
685
|
|
@@ -698,7 +698,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
|
|
698
698
|
rho = DensityMatrix(mat, dims=(2, 10))
|
699
699
|
print(rho.to_dict())
|
700
700
|
|
701
|
-
..
|
701
|
+
.. parsed-literal::
|
702
702
|
|
703
703
|
{'00|00': (0.5+0j), '91|91': (0.5+0j)}
|
704
704
|
"""
|
@@ -54,7 +54,7 @@ class StabilizerState(QuantumState):
|
|
54
54
|
# Calculate expectation value of the StabilizerState
|
55
55
|
print (stab.expectation_value(Pauli('ZZ')))
|
56
56
|
|
57
|
-
..
|
57
|
+
.. parsed-literal::
|
58
58
|
|
59
59
|
StabilizerState(StabilizerTable: ['+XX', '+ZZ'])
|
60
60
|
{'00': 0.5, '11': 0.5}
|
@@ -476,7 +476,7 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
476
476
|
pauli_phase = (-1j) ** pauli.phase if pauli.phase else 1
|
477
477
|
|
478
478
|
if x_mask + z_mask == 0:
|
479
|
-
return pauli_phase * np.linalg.norm(self.data)
|
479
|
+
return pauli_phase * np.linalg.norm(self.data)
|
480
480
|
|
481
481
|
if x_mask == 0:
|
482
482
|
return pauli_phase * expval_pauli_no_x(self.data, self.num_qubits, z_mask)
|
@@ -554,7 +554,7 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
554
554
|
probs_qubit_1 = psi.probabilities([1])
|
555
555
|
print('Qubit-1 probs: {}'.format(probs_qubit_1))
|
556
556
|
|
557
|
-
..
|
557
|
+
.. parsed-literal::
|
558
558
|
|
559
559
|
probs: [0.5 0. 0.5 0. ]
|
560
560
|
Qubit-0 probs: [1. 0.]
|
@@ -578,7 +578,7 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
578
578
|
probs_swapped = psi.probabilities([1, 0])
|
579
579
|
print('Swapped probs: {}'.format(probs_swapped))
|
580
580
|
|
581
|
-
..
|
581
|
+
.. parsed-literal::
|
582
582
|
|
583
583
|
probs: [0.5 0. 0.5 0. ]
|
584
584
|
Swapped probs: [0.5 0.5 0. 0. ]
|
@@ -794,7 +794,7 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
794
794
|
psi = Statevector.from_label('-0')
|
795
795
|
print(psi.to_dict())
|
796
796
|
|
797
|
-
..
|
797
|
+
.. parsed-literal::
|
798
798
|
|
799
799
|
{'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}
|
800
800
|
|
@@ -812,7 +812,7 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
812
812
|
psi = Statevector(vec, dims=(3, 3))
|
813
813
|
print(psi.to_dict())
|
814
814
|
|
815
|
-
..
|
815
|
+
.. parsed-literal::
|
816
816
|
|
817
817
|
{'00': (0.7071067811865475+0j), '22': (0.7071067811865475+0j)}
|
818
818
|
|
@@ -831,7 +831,7 @@ class Statevector(QuantumState, TolerancesMixin):
|
|
831
831
|
psi = Statevector(vec, dims=(2, 10))
|
832
832
|
print(psi.to_dict())
|
833
833
|
|
834
|
-
..
|
834
|
+
.. parsed-literal::
|
835
835
|
|
836
836
|
{'00': (0.7071067811865475+0j), '91': (0.7071067811865475+0j)}
|
837
837
|
|
@@ -18,7 +18,6 @@ from typing import Optional, List, Tuple, Iterable, Callable, Union, Dict
|
|
18
18
|
import numpy as np
|
19
19
|
|
20
20
|
from qiskit.exceptions import QiskitError
|
21
|
-
from qiskit.utils.deprecation import deprecate_func
|
22
21
|
from ..distributions.quasi import QuasiDistribution
|
23
22
|
from ..counts import Counts
|
24
23
|
from .base_readout_mitigator import BaseReadoutMitigator
|
@@ -26,7 +25,7 @@ from .utils import counts_probability_vector, z_diagonal, str2diag
|
|
26
25
|
|
27
26
|
|
28
27
|
class CorrelatedReadoutMitigator(BaseReadoutMitigator):
|
29
|
-
"""
|
28
|
+
"""N-qubit readout error mitigator.
|
30
29
|
|
31
30
|
Mitigates :meth:`expectation_value` and :meth:`quasi_probabilities`.
|
32
31
|
The mitigation_matrix should be calibrated using qiskit experiments.
|
@@ -35,13 +34,6 @@ class CorrelatedReadoutMitigator(BaseReadoutMitigator):
|
|
35
34
|
:math:`2^N x 2^N` so the mitigation complexity is :math:`O(4^N)`.
|
36
35
|
"""
|
37
36
|
|
38
|
-
@deprecate_func(
|
39
|
-
since="1.3",
|
40
|
-
package_name="Qiskit",
|
41
|
-
removal_timeline="in Qiskit 2.0",
|
42
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
43
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
44
|
-
)
|
45
37
|
def __init__(self, assignment_matrix: np.ndarray, qubits: Optional[Iterable[int]] = None):
|
46
38
|
"""Initialize a CorrelatedReadoutMitigator
|
47
39
|
|
@@ -19,7 +19,6 @@ from typing import Optional, List, Tuple, Iterable, Callable, Union, Dict
|
|
19
19
|
import numpy as np
|
20
20
|
|
21
21
|
from qiskit.exceptions import QiskitError
|
22
|
-
from qiskit.utils.deprecation import deprecate_func
|
23
22
|
from ..distributions.quasi import QuasiDistribution
|
24
23
|
from ..counts import Counts
|
25
24
|
from .base_readout_mitigator import BaseReadoutMitigator
|
@@ -27,7 +26,7 @@ from .utils import counts_probability_vector, z_diagonal, str2diag
|
|
27
26
|
|
28
27
|
|
29
28
|
class LocalReadoutMitigator(BaseReadoutMitigator):
|
30
|
-
"""
|
29
|
+
"""1-qubit tensor product readout error mitigator.
|
31
30
|
|
32
31
|
Mitigates :meth:`expectation_value` and :meth:`quasi_probabilities`.
|
33
32
|
The mitigator should either be calibrated using qiskit experiments,
|
@@ -38,13 +37,6 @@ class LocalReadoutMitigator(BaseReadoutMitigator):
|
|
38
37
|
so it is more efficient than the :class:`CorrelatedReadoutMitigator` class.
|
39
38
|
"""
|
40
39
|
|
41
|
-
@deprecate_func(
|
42
|
-
since="1.3",
|
43
|
-
package_name="Qiskit",
|
44
|
-
removal_timeline="in Qiskit 2.0",
|
45
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
46
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
47
|
-
)
|
48
40
|
def __init__(
|
49
41
|
self,
|
50
42
|
assignment_matrices: Optional[List[np.ndarray]] = None,
|
@@ -19,20 +19,12 @@ from typing import Optional, List, Tuple, Dict
|
|
19
19
|
import numpy as np
|
20
20
|
|
21
21
|
from qiskit.exceptions import QiskitError
|
22
|
-
from qiskit.utils.deprecation import deprecate_func
|
23
22
|
from ..utils import marginal_counts
|
24
23
|
from ..counts import Counts
|
25
24
|
|
26
25
|
logger = logging.getLogger(__name__)
|
27
26
|
|
28
27
|
|
29
|
-
@deprecate_func(
|
30
|
-
since="1.3",
|
31
|
-
package_name="Qiskit",
|
32
|
-
removal_timeline="in Qiskit 2.0",
|
33
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
34
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
35
|
-
)
|
36
28
|
def z_diagonal(dim, dtype=float):
|
37
29
|
r"""Return the diagonal for the operator :math:`Z^\otimes n`"""
|
38
30
|
parity = np.zeros(dim, dtype=dtype)
|
@@ -41,13 +33,6 @@ def z_diagonal(dim, dtype=float):
|
|
41
33
|
return (-1) ** np.mod(parity, 2)
|
42
34
|
|
43
35
|
|
44
|
-
@deprecate_func(
|
45
|
-
since="1.3",
|
46
|
-
package_name="Qiskit",
|
47
|
-
removal_timeline="in Qiskit 2.0",
|
48
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
49
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
50
|
-
)
|
51
36
|
def expval_with_stddev(coeffs: np.ndarray, probs: np.ndarray, shots: int) -> Tuple[float, float]:
|
52
37
|
"""Compute expectation value and standard deviation.
|
53
38
|
Args:
|
@@ -75,13 +60,6 @@ def expval_with_stddev(coeffs: np.ndarray, probs: np.ndarray, shots: int) -> Tup
|
|
75
60
|
return [expval, calc_stddev]
|
76
61
|
|
77
62
|
|
78
|
-
@deprecate_func(
|
79
|
-
since="1.3",
|
80
|
-
package_name="Qiskit",
|
81
|
-
removal_timeline="in Qiskit 2.0",
|
82
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
83
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
84
|
-
)
|
85
63
|
def stddev(probs, shots):
|
86
64
|
"""Calculate stddev dict"""
|
87
65
|
ret = {}
|
@@ -91,13 +69,6 @@ def stddev(probs, shots):
|
|
91
69
|
return ret
|
92
70
|
|
93
71
|
|
94
|
-
@deprecate_func(
|
95
|
-
since="1.3",
|
96
|
-
package_name="Qiskit",
|
97
|
-
removal_timeline="in Qiskit 2.0",
|
98
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
99
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
100
|
-
)
|
101
72
|
def str2diag(string):
|
102
73
|
"""Transform diagonal from a string to a numpy array"""
|
103
74
|
chars = {
|
@@ -114,13 +85,6 @@ def str2diag(string):
|
|
114
85
|
return ret
|
115
86
|
|
116
87
|
|
117
|
-
@deprecate_func(
|
118
|
-
since="1.3",
|
119
|
-
package_name="Qiskit",
|
120
|
-
removal_timeline="in Qiskit 2.0",
|
121
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
122
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
123
|
-
)
|
124
88
|
def counts_to_vector(counts: Counts, num_qubits: int) -> Tuple[np.ndarray, int]:
|
125
89
|
"""Transforms Counts to a probability vector"""
|
126
90
|
vec = np.zeros(2**num_qubits, dtype=float)
|
@@ -132,13 +96,6 @@ def counts_to_vector(counts: Counts, num_qubits: int) -> Tuple[np.ndarray, int]:
|
|
132
96
|
return vec, shots
|
133
97
|
|
134
98
|
|
135
|
-
@deprecate_func(
|
136
|
-
since="1.3",
|
137
|
-
package_name="Qiskit",
|
138
|
-
removal_timeline="in Qiskit 2.0",
|
139
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
140
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
141
|
-
)
|
142
99
|
def remap_qubits(
|
143
100
|
vec: np.ndarray, num_qubits: int, qubits: Optional[List[int]] = None
|
144
101
|
) -> np.ndarray:
|
@@ -151,13 +108,6 @@ def remap_qubits(
|
|
151
108
|
return vec
|
152
109
|
|
153
110
|
|
154
|
-
@deprecate_func(
|
155
|
-
since="1.3",
|
156
|
-
package_name="Qiskit",
|
157
|
-
removal_timeline="in Qiskit 2.0",
|
158
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
159
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
160
|
-
)
|
161
111
|
def marganalize_counts(
|
162
112
|
counts: Counts,
|
163
113
|
qubit_index: Dict[int, int],
|
@@ -179,13 +129,6 @@ def marganalize_counts(
|
|
179
129
|
return counts
|
180
130
|
|
181
131
|
|
182
|
-
@deprecate_func(
|
183
|
-
since="1.3",
|
184
|
-
package_name="Qiskit",
|
185
|
-
removal_timeline="in Qiskit 2.0",
|
186
|
-
additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of "
|
187
|
-
"the https://github.com/Qiskit/qiskit-addon-mthree package.",
|
188
|
-
)
|
189
132
|
def counts_probability_vector(
|
190
133
|
counts: Counts,
|
191
134
|
qubit_index: Dict[int, int],
|
qiskit/scheduler/config.py
CHANGED
@@ -16,13 +16,11 @@ from typing import List
|
|
16
16
|
|
17
17
|
from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap
|
18
18
|
from qiskit.pulse.utils import format_meas_map
|
19
|
-
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
|
20
19
|
|
21
20
|
|
22
21
|
class ScheduleConfig:
|
23
22
|
"""Configuration for pulse scheduling."""
|
24
23
|
|
25
|
-
@deprecate_pulse_dependency(moving_to_dynamics=True)
|
26
24
|
def __init__(self, inst_map: InstructionScheduleMap, meas_map: List[List[int]], dt: float):
|
27
25
|
"""
|
28
26
|
Container for information needed to schedule a QuantumCircuit into a pulse Schedule.
|
@@ -23,10 +23,8 @@ from qiskit.pulse.schedule import Schedule
|
|
23
23
|
from qiskit.scheduler.config import ScheduleConfig
|
24
24
|
from qiskit.scheduler.lowering import lower_gates
|
25
25
|
from qiskit.providers import BackendV1, BackendV2
|
26
|
-
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
|
27
26
|
|
28
27
|
|
29
|
-
@deprecate_pulse_dependency(moving_to_dynamics=True)
|
30
28
|
def as_soon_as_possible(
|
31
29
|
circuit: QuantumCircuit,
|
32
30
|
schedule_config: ScheduleConfig,
|
@@ -80,7 +78,6 @@ def as_soon_as_possible(
|
|
80
78
|
return schedule
|
81
79
|
|
82
80
|
|
83
|
-
@deprecate_pulse_dependency(moving_to_dynamics=True)
|
84
81
|
def as_late_as_possible(
|
85
82
|
circuit: QuantumCircuit,
|
86
83
|
schedule_config: ScheduleConfig,
|
@@ -20,10 +20,8 @@ from qiskit.pulse.schedule import Schedule
|
|
20
20
|
from qiskit.scheduler.config import ScheduleConfig
|
21
21
|
from qiskit.scheduler.methods import as_soon_as_possible, as_late_as_possible
|
22
22
|
from qiskit.providers import BackendV1, BackendV2
|
23
|
-
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
|
24
23
|
|
25
24
|
|
26
|
-
@deprecate_pulse_dependency(moving_to_dynamics=True)
|
27
25
|
def schedule_circuit(
|
28
26
|
circuit: QuantumCircuit,
|
29
27
|
schedule_config: ScheduleConfig,
|
qiskit/scheduler/sequence.py
CHANGED
@@ -25,10 +25,8 @@ from qiskit.pulse.transforms import pad
|
|
25
25
|
from qiskit.scheduler.config import ScheduleConfig
|
26
26
|
from qiskit.scheduler.lowering import lower_gates
|
27
27
|
from qiskit.providers import BackendV1, BackendV2
|
28
|
-
from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
|
29
28
|
|
30
29
|
|
31
|
-
@deprecate_pulse_dependency(moving_to_dynamics=True)
|
32
30
|
def sequence(
|
33
31
|
scheduled_circuit: QuantumCircuit,
|
34
32
|
schedule_config: ScheduleConfig,
|